Chameleoon MAX
Orders
salesOrder
Description
One sales order, by our id or by the shop's (source and externalId). Null when there is no such order or the key may not see it.
Arguments
Returns
A sales order.
Our id.
The order's number. Null while a draft.
Where the order is in its life.
Accepted values 5
DRAFT-
Not yet confirmed.
CONFIRMED-
Confirmed: numbered and reserving stock.
COMPLETED-
Everything owed has shipped.
CANCELLED-
Cancelled.
MERGED-
Merged into another order.
Our id of the legal entity (the company) that sells it. Null only for an order without one.
The code of the source that placed it. Null for an order made here.
The source's id of the order.
The order number the customer saw in the shop.
A link to the order in the shop's administration.
When the customer placed it.
When it was confirmed, by this system's clock.
How much has left the warehouse.
Accepted values 3
UNFULFILLED-
Nothing has shipped.
PARTIALLY_FULFILLED-
Some has shipped.
FULFILLED-
Nothing is outstanding.
Whether it is paid.
Accepted values 7
UNPAID-
Nothing paid.
PENDING-
A payment is announced and not yet arrived.
AUTHORIZED-
A hold covers the order; no money yet.
PARTIALLY_PAID-
Part is paid.
PAID-
Paid in full.
PARTIALLY_REFUNDED-
Part was refunded.
REFUNDED-
Refunded in full.
ISO 4217 code of its currency.
Whether its prices include VAT: as its priced items say, or, with none, as its charges other than ROUNDING say. Null when neither has a price.
What is owed without VAT, cancelled quantity excluded.
The VAT on it.
What is owed including VAT.
What the customer has paid, less refunds.
The order-wide discount in percent, taken off every goods line after the line's own discount. lineTotal and the totals already apply it; charges are not discounted. Null when there is none.
The number of the invoice another system issued for this order (setSalesOrderInvoice). Null while there is none. A change of it is a transition of the order's events (see events); invoiceExternalId is not tracked there, so a change of it alone still publishes sales_order.changed, with no transition.
That system's own id of the invoice. Null while there is none.
Our id of the customer. Served to every key that reads the order.
Who ordered. Needs partner.read: without it null with FORBIDDEN_ROLE; outside the key's partner scope null with FORBIDDEN_SCOPE (extensions.scope PARTNER). An erased customer reads with name null.
Fields 13
A business partner: a customer, a supplier or both. Needs partner.read.
Our id.
Our code of the partner.
Their name. Null once the partner is erased.
The company registration number (IČO). Null when unknown, and once the partner is erased.
The tax id (DIČ). Null when unknown, and once the partner is erased.
The VAT id (IČ DPH). Null when unknown, and once the partner is erased.
The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.
The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.
Whether we sell to them.
Whether we buy from them.
The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of a partner's addresses of one kind.
The addresses with their cursors, the default first.
One address and its cursor.
The same addresses without cursors.
A postal address in a partner's address book. id names this VERSION: editing an address that a document pinned makes a new version with a new id, and the document keeps the old one.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many current addresses of this kind the partner has, capped at 10001: 10001 reads "10000 or more". 0 once the partner is erased.
The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of a partner's addresses of one kind.
The addresses with their cursors, the default first.
One address and its cursor.
The same addresses without cursors.
A postal address in a partner's address book. id names this VERSION: editing an address that a document pinned makes a new version with a new id, and the document keeps the old one.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many current addresses of this kind the partner has, capped at 10001: 10001 reads "10000 or more". 0 once the partner is erased.
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of a record's external references.
The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.
One reference and its cursor.
The same references without cursors.
An id another system knows a record by.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many references the record has.
The billing address version the order pinned, kept as it was. Needs partner.read and the customer in the key's partner scope (FORBIDDEN_ROLE / FORBIDDEN_SCOPE otherwise). Null once the customer is erased.
Fields 10
An address an order was sent to.
Our id of this address version.
Who receives it.
Street and number.
A second address line.
City.
Postal code.
Region or state.
ISO 3166-1 alpha-2 country code.
The phone the carrier calls.
The e-mail delivery notices go to.
The delivery address version the order pinned, guarded as billingAddress.
Fields 10
An address an order was sent to.
Our id of this address version.
Who receives it.
Street and number.
A second address line.
City.
Postal code.
Region or state.
ISO 3166-1 alpha-2 country code.
The phone the carrier calls.
The e-mail delivery notices go to.
The carrier's collection point, when delivered to one.
The delivery method in the shop's own words.
The normalized operational carrier. Null when none was selected or when the requested pair was UNKNOWN or UNVERIFIED; those failures are available in exceptions.
Fields 4
An operational route of the synchronized Chameleoon catalogue. carrierProfiles lists only the active ones; Shipment.carrier is the route a shipment was sent with, which the catalogue may since have deactivated or dropped (then its codes stand in for its names).
The Chameleoon courier id.
The courier's profile id.
The courier's synchronized display name.
The profile's synchronized display name. When the catalogue gives the profile none, the courier's name (the same value as name) -- never null, so the field stays as it was published.
How the customer intends to pay.
Accepted values 4
CARD-
By card.
BANK_TRANSFER-
By bank transfer.
CASH_ON_DELIVERY-
In cash to the courier.
CASH-
In cash at the counter.
The payment method in the shop's own words.
The e-mail the customer gave for this order. Guarded as billingAddress: needs partner.read and the partner scope; null once the customer is erased.
The phone the customer gave for this order, guarded as contactEmail.
Our id of the warehouse the order reserves from, when it has one.
That warehouse. Needs warehouse.read: without it null with FORBIDDEN_ROLE; outside the key's warehouse scope null with FORBIDDEN_SCOPE (extensions.scope WAREHOUSE).
What the customer wrote with the order. Null once the customer is erased.
The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's items and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of an order's items.
The items with their cursors.
Fields 2
One item and its cursor.
Where this item sits; pass as after (with first) or before (with last) to this order's items.
The same items without cursors.
Fields 24
One goods line of an order.
Our id.
The source's id of the line.
Our id of the product variant. Null while the line is not linked to one.
The product variant the line is linked to; null while it is not linked. Needs item.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission), and the rest is served.
One sellable variant of a product: what a document line moves. Needs item.read.
The variant's parent product; null while the line is not linked. Needs item.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission), and the rest is served.
A product: the parent of its variants. Needs item.read.
The SKU as the shop sent it -- or, for a line whose EAN several products carry and no sku was sent, that EAN.
The name as the customer saw it.
The variant's name as the customer saw it.
How many, in unit.
How many were cancelled, in unit. quantity less this is what the order still asks for.
The unit code. Null: the product's base unit.
The order line's snapshotted number of base units per unit. Use this, not today's catalogue factor, to compare line quantities with stock cards.
The final price of one unit, after the line's discount. Null while unpriced.
The price of one unit before the discount. Null when there is none.
The VAT rate in percent.
Whether unitPrice includes VAT. A line may differ from the order's pricesIncludeVat. Null while unpriced.
The line's total on its live quantity, net or gross as the order's pricesIncludeVat says. Null while unpriced.
What the customer chose about the line, in the order it was sent: a connection, paged with first/after or last/before (at most 250). Empty once the customer is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of an item's attributes.
How much stock is reserved for it now, in unit. Needs reservation.read: without it null with FORBIDDEN_ROLE.
How much has been picked for live consignments but not shipped, in unit. Picking consumes the reservation. Needs reservation.read: without it null with FORBIDDEN_ROLE.
How much is still to ship, in unit: ordered less shipped and cancelled.
The line warehouse by warehouse, by warehouse id: what each warehouse's consignments hold (reserved, picked) and have shipped, in unit. Sums to reserved and picked. Warehouses outside the key's scope are left out. Paged 1..250. Needs reservation.read: without it null with FORBIDDEN_ROLE at its path.
Whether the line names one of our products and can be reserved and shipped.
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this item's references and are refused anywhere else. externalId above is the oldest of them under the order's source. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a record's external references.
Where the page sits, and the cursors to the next and previous pages.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many items the order has, capped at 10001: 10001 reads "10000 or more".
Everything that is not goods, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's charges and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of an order's charges.
The charges with their cursors.
Fields 2
One charge and its cursor.
Where this charge sits; pass as after (with first) or before (with last) to this order's charges.
Something on an order that is not goods.
The same charges without cursors.
Fields 7
Something on an order that is not goods.
Our id.
What it is for.
Accepted values 5
DELIVERY-
Delivery.
PAYMENT-
A payment fee, e.g. for cash on delivery.
DISCOUNT-
A discount, sent positive and subtracted. One row per VAT rate.
ROUNDING-
The residue between the shop's total and ours, at most 1.00 either way.
OTHER-
Any other surcharge: insurance, gift wrap.
The shop's code of the charge.
Its name.
The whole amount, as sent. Positive for every kind but ROUNDING, whose residue may be negative; a DISCOUNT is positive and subtracted.
The VAT rate in percent.
Whether amount includes VAT. A charge may differ from the order's pricesIncludeVat.
Where the page sits, and the cursors to the next and previous pages.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many charges the order has, capped at 10001: 10001 reads "10000 or more".
Why no consignment of the order may proceed. Null when nothing stops it.
Fields 3
What stops an order.
A fixed code: NEEDS_REVIEW (the order has open exceptions), AWAITING_PAYMENT, SUSPECTED_FRAUD, INCORRECT_ADDRESS, CUSTOMER_REQUEST or OTHER. Read it as a string: more may be added.
What the person or the system wrote about it. A person's note reads null unless the key holds order.write; NEEDS_REVIEW's, which the system wrote, reads for every key.
When the order was stopped.
What the order was created with that needs a person, open and resolved, oldest first (by createdAt, then id): a connection, paged with first/after or last/before (at most 250). Empty when nothing did. Its cursors belong to this order's exceptions and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of an order's exceptions.
The exceptions with their cursors.
Fields 2
One exception and its cursor.
Where this exception sits; pass as after (with first) or before (with last) to this order's exceptions.
Something a record was created with that needs a person: what it is, where, and how it was settled.
The same exceptions without cursors.
Fields 9
Something a record was created with that needs a person: what it is, where, and how it was settled.
A fixed code, e.g. PAYMENT_METHOD_UNKNOWN. Read it as a string: more may be added.
The input it concerns, e.g. items[2].unit. Null when none.
What it is, for a person.
Machine detail as a JSON object, e.g. {"expected": "120.50", "actual": "120.49"}.
Our id of the order line it is on. Null when it is on the order itself.
What raised it: API, CSV_IMPORT or SYSTEM.
When it was raised.
When it was settled. Null while it is open.
How it was settled: RESOLVED_BY_USER, RESOLVED_BY_SYSTEM or UNBLOCKED. Null while it is open.
Where the page sits, and the cursors to the next and previous pages.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many exceptions the order has, capped at 10001: 10001 reads "10000 or more".
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's references and are refused anywhere else. source and externalId above are one of them: the one the request named, else the oldest. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of a record's external references.
The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.
Fields 2
One reference and its cursor.
Where this reference sits; pass as after (with first) or before (with last) to this record's externalRefs.
An id another system knows a record by.
The same references without cursors.
Fields 4
An id another system knows a record by.
The external source's code, e.g. SHOP -- the same string as SalesOrder.source.
The record's id in that system.
The parent's id in that system, when the id is unique only under it.
The number that system shows for the record, when one was recorded.
Where the page sits, and the cursors to the next and previous pages.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many references the record has.
The files attached to the order (attachDocument), oldest first: a connection, paged with first/after or last/before (at most 250); kinds narrows it to those kinds. A removed document is left out. Its cursors belong to this order's documents and are refused anywhere else. Needs integration.read and order.read. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
The documents with their cursors.
The same documents without cursors.
Fields 12
Accepted values 8
INVOICECREDIT_NOTEPROFORMA_INVOICEDELIVERY_NOTEPROOF_OF_DELIVERYORDER_CONFIRMATIONCONTRACTOTHER
The issuing system's own id of the document.
The document's number in the issuing system.
When its last version was added.
How many versions it has; the current one is the highest.
Where to download the current version: stable across versions, and the API key still needed. Null when the ERP has no public address configured.
Its versions, newest first: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this document's versions and are refused anywhere else. Null, with an error at its path, when its page cannot be read; the rest of the answer is served.
The order it is kept with. Null when the order is no longer in the key's sight.
A sales order.
Where the page sits, and the cursors to the next and previous pages.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Field arguments 5
Accepted values 8
INVOICECREDIT_NOTEPROFORMA_INVOICEDELIVERY_NOTEPROOF_OF_DELIVERYORDER_CONFIRMATIONCONTRACTOTHER
When the order's last event was published (see events). Null only for an order never published.
The invoices linked to the order, newest issued first (at most 250 a page). Needs invoice.read: without it null with FORBIDDEN_ROLE at its path; the rest of the answer is served.
Fields 4
The invoices linked to one order.
Fields 2
A mirrored invoice, advance invoice or credit note. Needs invoice.read.
Fields 71
A mirrored invoice, advance invoice or credit note. Needs invoice.read.
Our id.
Accepted values 2
ISSUED-
We invoiced a customer.
RECEIVED-
A supplier invoiced us.
Accepted values 3
INVOICEADVANCE-
An advance (proforma) invoice; not a tax document.
CREDIT_NOTE-
Corrects an invoice downwards. Its amounts are negative.
Accepted values 4
PENDINGCREATEDFAILEDREMOVED-
Deleted in the accounting system (removeInvoice); kept as evidence.
The code of the accounting system's source.
Our id of the legal entity it belongs to.
Accepted values 3
EXPLICIT-
The integration named it by code.
MATCHED-
Found by the IČO our side of the invoice prints.
DEFAULT-
The organisation's default company.
Our id of the partner: named, found by IČO or e-mail, or created from the invoice's party.
Accepted values 4
EXPLICIT-
The integration named it.
MATCHED-
Found by the party's IČO or e-mail.
CREATED-
Created from the invoice's party.
MANUAL-
A person chose it.
A person (or setInvoicePartner) may set or change the partner: none was found, or one was chosen by hand.
One side of the invoice as the accounting system printed it.
One side of the invoice as the accounting system printed it.
One side of the invoice as the accounting system printed it.
Accepted values 6
BANK_TRANSFERCASHCARDCASH_ON_DELIVERYOFFSETOTHER
The statutory VAT wording the accounting system printed ("Dodanie je oslobodené od dane podľa § 43 zákona o DPH").
Accepted values 5
UNPAIDPARTIALLY_PAIDPAIDOVERPAIDUNKNOWN-
The accounting system does not say.
Our id of the invoice a credit note corrects, when it is mirrored.
A note for colleagues; never printed.
The lines, by lineNo. A connection, at most 250 a page.
The VAT summary, the highest rate first.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
The order's carrier shipments, oldest first: live and cancelled, never one that did not reach the carrier. Requires shipment.read: null with FORBIDDEN_ROLE without it. Shipments outside the key's legal-entity or warehouse scope are left out.
Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward.
Fields 4
One page of an order's shipments.
The shipments with their cursors.
Fields 2
One shipment and its cursor.
Where this shipment sits; pass as after (with first) or before (with last) to this order's shipments.
A carrier shipment of a consignment, as the carrier accepted it.
The same shipments without cursors.
Fields 11
A carrier shipment of a consignment, as the carrier accepted it.
Its own number, e.g. ZAS-2026-00001.
Accepted values 2
CREATED-
The carrier accepted it; its shipping numbers are answered at this moment.
CANCELLED-
Cancelled before the carrier took it.
The carrier's shipping numbers (tracking numbers), in the carrier's order; empty when it answered none usable. They never arrive later: a CREATED shipment has every number it will have. A number finds the recipient's address at the carrier, so it requires partner.read and the shipment's customer in the key's partner scope: null with FORBIDDEN_ROLE or FORBIDDEN_SCOPE at this path without them, the rest of the shipment served. Null, without an error, once the customer is erased.
The carrier's tracking state, as the events feed carries it: PENDING, LABEL_CREATED, IN_TRANSIT, OUT_FOR_DELIVERY, READY_FOR_PICKUP, DELIVERED, RETURNED, FAILED or UNKNOWN. More codes may be added.
The carrier route it was sent with. Its names are the catalogue's; a route the catalogue no longer holds keeps its codes as names.
An operational route of the synchronized Chameleoon catalogue. carrierProfiles lists only the active ones; Shipment.carrier is the route a shipment was sent with, which the catalogue may since have deactivated or dropped (then its codes stand in for its names).
The sales order it ships. A bare id, which may name an order the key cannot open.
The consignment it ships. A bare id.
Its last event's version, as in the events feed. Null when this read and the last event disagree (a newer event is being published) or it has published none.
When its last event was published; null exactly when version is.
Where the page sits, and the cursors to the next and previous pages.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many shipments the order has, capped at 10001: 10001 reads "10000 or more".
Example
Query
query salesOrder($ref: SalesOrderRefInput!) {
salesOrder(ref: $ref) {
invoices(first: 10) {
totalCount
}
id
number
status
legalEntityId
source
externalId
externalNumber
sourceUrl
orderedAt
confirmedAt
fulfilmentStatus
paymentStatus
currencyCode
pricesIncludeVat
totalNet
totalVat
totalGross
paidAmount
discountPercent
invoiceNumber
invoiceExternalId
customerId
customer {
id
code
name
registrationId
taxId
vatId
}
billingAddress {
id
recipient
street
street2
city
postalCode
}
deliveryAddress {
id
recipient
street
street2
city
postalCode
}
pickupPoint {
code
name
}
sourceDeliveryMethod {
code
name
}
carrier {
code
profile
name
service
}
paymentMethod
sourcePaymentMethod {
code
name
}
contactEmail
contactPhone
preferredWarehouseId
preferredWarehouse {
id
code
name
archivedAt
}
note
items(first: 10) {
totalCount
}
charges(first: 10) {
totalCount
}
blocked {
reason
note
at
}
exceptions(first: 10) {
totalCount
}
externalRefs(first: 10) {
totalCount
}
documents(first: 10) {
totalCount
}
changedAt
shipments(first: 10) {
totalCount
}
}
}
Variables
{"ref": {"id": "00000000-0000-4000-8000-000000000001"}}
Response
{
"data": {
"salesOrder": {
"invoices": {"totalCount": 1},
"id": "00000000-0000-4000-8000-000000000001",
"number": "example",
"status": "DRAFT",
"legalEntityId": "00000000-0000-4000-8000-000000000001",
"source": "example",
"externalId": "example",
"externalNumber": "example",
"sourceUrl": "example",
"orderedAt": "2026-01-01T00:00:00Z",
"confirmedAt": "2026-01-01T00:00:00Z",
"fulfilmentStatus": "UNFULFILLED",
"paymentStatus": "UNPAID",
"currencyCode": "example",
"pricesIncludeVat": true,
"totalNet": "10.00",
"totalVat": "10.00",
"totalGross": "10.00",
"paidAmount": "10.00",
"discountPercent": "10.00",
"invoiceNumber": "example",
"invoiceExternalId": "example",
"customerId": "00000000-0000-4000-8000-000000000001",
"customer": {
"id": "00000000-0000-4000-8000-000000000001",
"code": "example",
"name": "example",
"registrationId": "example",
"taxId": "example",
"vatId": "example"
},
"billingAddress": {
"id": "00000000-0000-4000-8000-000000000001",
"recipient": "example",
"street": "example",
"street2": "example",
"city": "example",
"postalCode": "example"
},
"deliveryAddress": {
"id": "00000000-0000-4000-8000-000000000001",
"recipient": "example",
"street": "example",
"street2": "example",
"city": "example",
"postalCode": "example"
},
"pickupPoint": {"code": "example", "name": "example"},
"sourceDeliveryMethod": {"code": "example", "name": "example"},
"carrier": {
"code": "example",
"profile": "example",
"name": "example",
"service": "example"
},
"paymentMethod": "CARD",
"sourcePaymentMethod": {"code": "example", "name": "example"},
"contactEmail": "example",
"contactPhone": "example",
"preferredWarehouseId": "00000000-0000-4000-8000-000000000001",
"preferredWarehouse": {
"id": "00000000-0000-4000-8000-000000000001",
"code": "example",
"name": "example",
"archivedAt": "2026-01-01T00:00:00Z"
},
"note": "example",
"items": {"totalCount": 1},
"charges": {"totalCount": 1},
"blocked": {
"reason": "example",
"note": "example",
"at": "2026-01-01T00:00:00Z"
},
"exceptions": {"totalCount": 1},
"externalRefs": {"totalCount": 1},
"documents": {"totalCount": 1},
"changedAt": "2026-01-01T00:00:00Z",
"shipments": {"totalCount": 1}
}
}
}
salesOrders
Description
Orders, filtered, newest first by orderedAt (then number). For browsing and reconciling -- "every order from SHOP since yesterday", "every order waiting for review". There is no total count. Orders outside the key's legal-entity scope are left out, and so are drafts: an order the API creates is never one, and a draft can be discarded without a trace. Needs order.read and integration.read.
Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward; last alone is the oldest page. Every edge carries its own cursor. A page is priced at the number asked times one order's selection.
Arguments
Input fields 10
Which orders salesOrders returns. Every field narrows; an omitted one matches all.
Orders placed through this external source, by its code, matched ignoring case and surrounding spaces.
Orders in any of these states.
Accepted values 5
DRAFT-
Not yet confirmed.
CONFIRMED-
Confirmed: numbered and reserving stock.
COMPLETED-
Everything owed has shipped.
CANCELLED-
Cancelled.
MERGED-
Merged into another order.
Orders with any of these fulfilment states.
Accepted values 3
UNFULFILLED-
Nothing has shipped.
PARTIALLY_FULFILLED-
Some has shipped.
FULFILLED-
Nothing is outstanding.
Orders with any of these payment states.
Accepted values 7
UNPAID-
Nothing paid.
PENDING-
A payment is announced and not yet arrived.
AUTHORIZED-
A hold covers the order; no money yet.
PARTIALLY_PAID-
Part is paid.
PAID-
Paid in full.
PARTIALLY_REFUNDED-
Part was refunded.
REFUNDED-
Refunded in full.
True: only blocked orders. False: only orders nothing stops.
True: orders with an open exception -- the review queue. False: orders without one.
True: at least one linked goods line has live quantity not shipped and not held on a live consignment (reserved or picked). False: no such line. Unlinked lines need catalogue repair and are excluded. Needs reservation.read and an unrestricted warehouse scope so hidden warehouses cannot make an order appear short.
Orders short IN THIS WAREHOUSE: a linked goods line whose open quantity is more than what has shipped (from any warehouse) plus what this warehouse's live consignments hold (reserved or picked). Goods held in another warehouse do not count as covered here -- the question a workflow asks before moving goods into the warehouse orders are picked in. Needs reservation.read and the warehouse in the key's scope (FORBIDDEN_SCOPE otherwise). If one of the tenant's warehouses is never picked from, give the orders preferredWarehouseId: allocation then reserves in that warehouse only.
Orders placed at or after this instant.
Orders placed at or before this instant.
Returns
One page of salesOrders.
The orders with their cursors, newest first by orderedAt.
Fields 2
One order and its cursor.
Where this order sits; pass as after (with first) or before (with last).
Fields 44
A sales order.
Our id.
The order's number. Null while a draft.
Where the order is in its life.
Accepted values 5
DRAFT-
Not yet confirmed.
CONFIRMED-
Confirmed: numbered and reserving stock.
COMPLETED-
Everything owed has shipped.
CANCELLED-
Cancelled.
MERGED-
Merged into another order.
Our id of the legal entity (the company) that sells it. Null only for an order without one.
The code of the source that placed it. Null for an order made here.
The source's id of the order.
The order number the customer saw in the shop.
A link to the order in the shop's administration.
When the customer placed it.
When it was confirmed, by this system's clock.
How much has left the warehouse.
Accepted values 3
UNFULFILLED-
Nothing has shipped.
PARTIALLY_FULFILLED-
Some has shipped.
FULFILLED-
Nothing is outstanding.
Whether it is paid.
Accepted values 7
UNPAID-
Nothing paid.
PENDING-
A payment is announced and not yet arrived.
AUTHORIZED-
A hold covers the order; no money yet.
PARTIALLY_PAID-
Part is paid.
PAID-
Paid in full.
PARTIALLY_REFUNDED-
Part was refunded.
REFUNDED-
Refunded in full.
ISO 4217 code of its currency.
Whether its prices include VAT: as its priced items say, or, with none, as its charges other than ROUNDING say. Null when neither has a price.
What is owed without VAT, cancelled quantity excluded.
The VAT on it.
What is owed including VAT.
What the customer has paid, less refunds.
The order-wide discount in percent, taken off every goods line after the line's own discount. lineTotal and the totals already apply it; charges are not discounted. Null when there is none.
The number of the invoice another system issued for this order (setSalesOrderInvoice). Null while there is none. A change of it is a transition of the order's events (see events); invoiceExternalId is not tracked there, so a change of it alone still publishes sales_order.changed, with no transition.
That system's own id of the invoice. Null while there is none.
Our id of the customer. Served to every key that reads the order.
Who ordered. Needs partner.read: without it null with FORBIDDEN_ROLE; outside the key's partner scope null with FORBIDDEN_SCOPE (extensions.scope PARTNER). An erased customer reads with name null.
A business partner: a customer, a supplier or both. Needs partner.read.
The billing address version the order pinned, kept as it was. Needs partner.read and the customer in the key's partner scope (FORBIDDEN_ROLE / FORBIDDEN_SCOPE otherwise). Null once the customer is erased.
An address an order was sent to.
The delivery address version the order pinned, guarded as billingAddress.
An address an order was sent to.
The carrier's collection point, when delivered to one.
A carrier's collection point.
The delivery method in the shop's own words.
A method in the shop's own words.
The normalized operational carrier. Null when none was selected or when the requested pair was UNKNOWN or UNVERIFIED; those failures are available in exceptions.
An operational route of the synchronized Chameleoon catalogue. carrierProfiles lists only the active ones; Shipment.carrier is the route a shipment was sent with, which the catalogue may since have deactivated or dropped (then its codes stand in for its names).
How the customer intends to pay.
Accepted values 4
CARD-
By card.
BANK_TRANSFER-
By bank transfer.
CASH_ON_DELIVERY-
In cash to the courier.
CASH-
In cash at the counter.
The payment method in the shop's own words.
A method in the shop's own words.
The e-mail the customer gave for this order. Guarded as billingAddress: needs partner.read and the partner scope; null once the customer is erased.
The phone the customer gave for this order, guarded as contactEmail.
Our id of the warehouse the order reserves from, when it has one.
That warehouse. Needs warehouse.read: without it null with FORBIDDEN_ROLE; outside the key's warehouse scope null with FORBIDDEN_SCOPE (extensions.scope WAREHOUSE).
A warehouse. Needs warehouse.read.
What the customer wrote with the order. Null once the customer is erased.
The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's items and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of an order's items.
Everything that is not goods, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's charges and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of an order's charges.
Why no consignment of the order may proceed. Null when nothing stops it.
What stops an order.
What the order was created with that needs a person, open and resolved, oldest first (by createdAt, then id): a connection, paged with first/after or last/before (at most 250). Empty when nothing did. Its cursors belong to this order's exceptions and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of an order's exceptions.
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's references and are refused anywhere else. source and externalId above are one of them: the one the request named, else the oldest. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a record's external references.
The files attached to the order (attachDocument), oldest first: a connection, paged with first/after or last/before (at most 250); kinds narrows it to those kinds. A removed document is left out. Its cursors belong to this order's documents and are refused anywhere else. Needs integration.read and order.read. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Field arguments 5
Accepted values 8
INVOICECREDIT_NOTEPROFORMA_INVOICEDELIVERY_NOTEPROOF_OF_DELIVERYORDER_CONFIRMATIONCONTRACTOTHER
When the order's last event was published (see events). Null only for an order never published.
The invoices linked to the order, newest issued first (at most 250 a page). Needs invoice.read: without it null with FORBIDDEN_ROLE at its path; the rest of the answer is served.
The invoices linked to one order.
The order's carrier shipments, oldest first: live and cancelled, never one that did not reach the carrier. Requires shipment.read: null with FORBIDDEN_ROLE without it. Shipments outside the key's legal-entity or warehouse scope are left out.
Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward.
One page of an order's shipments.
The same orders without cursors.
Fields 44
A sales order.
Our id.
The order's number. Null while a draft.
Where the order is in its life.
Accepted values 5
DRAFT-
Not yet confirmed.
CONFIRMED-
Confirmed: numbered and reserving stock.
COMPLETED-
Everything owed has shipped.
CANCELLED-
Cancelled.
MERGED-
Merged into another order.
Our id of the legal entity (the company) that sells it. Null only for an order without one.
The code of the source that placed it. Null for an order made here.
The source's id of the order.
The order number the customer saw in the shop.
A link to the order in the shop's administration.
When the customer placed it.
When it was confirmed, by this system's clock.
How much has left the warehouse.
Accepted values 3
UNFULFILLED-
Nothing has shipped.
PARTIALLY_FULFILLED-
Some has shipped.
FULFILLED-
Nothing is outstanding.
Whether it is paid.
Accepted values 7
UNPAID-
Nothing paid.
PENDING-
A payment is announced and not yet arrived.
AUTHORIZED-
A hold covers the order; no money yet.
PARTIALLY_PAID-
Part is paid.
PAID-
Paid in full.
PARTIALLY_REFUNDED-
Part was refunded.
REFUNDED-
Refunded in full.
ISO 4217 code of its currency.
Whether its prices include VAT: as its priced items say, or, with none, as its charges other than ROUNDING say. Null when neither has a price.
What is owed without VAT, cancelled quantity excluded.
The VAT on it.
What is owed including VAT.
What the customer has paid, less refunds.
The order-wide discount in percent, taken off every goods line after the line's own discount. lineTotal and the totals already apply it; charges are not discounted. Null when there is none.
The number of the invoice another system issued for this order (setSalesOrderInvoice). Null while there is none. A change of it is a transition of the order's events (see events); invoiceExternalId is not tracked there, so a change of it alone still publishes sales_order.changed, with no transition.
That system's own id of the invoice. Null while there is none.
Our id of the customer. Served to every key that reads the order.
Who ordered. Needs partner.read: without it null with FORBIDDEN_ROLE; outside the key's partner scope null with FORBIDDEN_SCOPE (extensions.scope PARTNER). An erased customer reads with name null.
Fields 13
A business partner: a customer, a supplier or both. Needs partner.read.
Our id.
Our code of the partner.
Their name. Null once the partner is erased.
The company registration number (IČO). Null when unknown, and once the partner is erased.
The tax id (DIČ). Null when unknown, and once the partner is erased.
The VAT id (IČ DPH). Null when unknown, and once the partner is erased.
The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.
The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.
Whether we sell to them.
Whether we buy from them.
The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a partner's addresses of one kind.
The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a partner's addresses of one kind.
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a record's external references.
The billing address version the order pinned, kept as it was. Needs partner.read and the customer in the key's partner scope (FORBIDDEN_ROLE / FORBIDDEN_SCOPE otherwise). Null once the customer is erased.
Fields 10
An address an order was sent to.
Our id of this address version.
Who receives it.
Street and number.
A second address line.
City.
Postal code.
Region or state.
ISO 3166-1 alpha-2 country code.
The phone the carrier calls.
The e-mail delivery notices go to.
The delivery address version the order pinned, guarded as billingAddress.
Fields 10
An address an order was sent to.
Our id of this address version.
Who receives it.
Street and number.
A second address line.
City.
Postal code.
Region or state.
ISO 3166-1 alpha-2 country code.
The phone the carrier calls.
The e-mail delivery notices go to.
The carrier's collection point, when delivered to one.
The delivery method in the shop's own words.
The normalized operational carrier. Null when none was selected or when the requested pair was UNKNOWN or UNVERIFIED; those failures are available in exceptions.
Fields 4
An operational route of the synchronized Chameleoon catalogue. carrierProfiles lists only the active ones; Shipment.carrier is the route a shipment was sent with, which the catalogue may since have deactivated or dropped (then its codes stand in for its names).
The Chameleoon courier id.
The courier's profile id.
The courier's synchronized display name.
The profile's synchronized display name. When the catalogue gives the profile none, the courier's name (the same value as name) -- never null, so the field stays as it was published.
How the customer intends to pay.
Accepted values 4
CARD-
By card.
BANK_TRANSFER-
By bank transfer.
CASH_ON_DELIVERY-
In cash to the courier.
CASH-
In cash at the counter.
The payment method in the shop's own words.
The e-mail the customer gave for this order. Guarded as billingAddress: needs partner.read and the partner scope; null once the customer is erased.
The phone the customer gave for this order, guarded as contactEmail.
Our id of the warehouse the order reserves from, when it has one.
That warehouse. Needs warehouse.read: without it null with FORBIDDEN_ROLE; outside the key's warehouse scope null with FORBIDDEN_SCOPE (extensions.scope WAREHOUSE).
What the customer wrote with the order. Null once the customer is erased.
The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's items and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of an order's items.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many items the order has, capped at 10001: 10001 reads "10000 or more".
Everything that is not goods, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's charges and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of an order's charges.
The charges with their cursors.
One charge and its cursor.
The same charges without cursors.
Something on an order that is not goods.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many charges the order has, capped at 10001: 10001 reads "10000 or more".
Why no consignment of the order may proceed. Null when nothing stops it.
Fields 3
What stops an order.
A fixed code: NEEDS_REVIEW (the order has open exceptions), AWAITING_PAYMENT, SUSPECTED_FRAUD, INCORRECT_ADDRESS, CUSTOMER_REQUEST or OTHER. Read it as a string: more may be added.
What the person or the system wrote about it. A person's note reads null unless the key holds order.write; NEEDS_REVIEW's, which the system wrote, reads for every key.
When the order was stopped.
What the order was created with that needs a person, open and resolved, oldest first (by createdAt, then id): a connection, paged with first/after or last/before (at most 250). Empty when nothing did. Its cursors belong to this order's exceptions and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of an order's exceptions.
The exceptions with their cursors.
One exception and its cursor.
The same exceptions without cursors.
Something a record was created with that needs a person: what it is, where, and how it was settled.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many exceptions the order has, capped at 10001: 10001 reads "10000 or more".
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's references and are refused anywhere else. source and externalId above are one of them: the one the request named, else the oldest. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of a record's external references.
The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.
One reference and its cursor.
The same references without cursors.
An id another system knows a record by.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many references the record has.
The files attached to the order (attachDocument), oldest first: a connection, paged with first/after or last/before (at most 250); kinds narrows it to those kinds. A removed document is left out. Its cursors belong to this order's documents and are refused anywhere else. Needs integration.read and order.read. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
The documents with their cursors.
One document and its cursor.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Field arguments 5
Accepted values 8
INVOICECREDIT_NOTEPROFORMA_INVOICEDELIVERY_NOTEPROOF_OF_DELIVERYORDER_CONFIRMATIONCONTRACTOTHER
When the order's last event was published (see events). Null only for an order never published.
The invoices linked to the order, newest issued first (at most 250 a page). Needs invoice.read: without it null with FORBIDDEN_ROLE at its path; the rest of the answer is served.
Fields 4
The invoices linked to one order.
A mirrored invoice, advance invoice or credit note. Needs invoice.read.
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
The order's carrier shipments, oldest first: live and cancelled, never one that did not reach the carrier. Requires shipment.read: null with FORBIDDEN_ROLE without it. Shipments outside the key's legal-entity or warehouse scope are left out.
Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward.
Fields 4
One page of an order's shipments.
The shipments with their cursors.
One shipment and its cursor.
The same shipments without cursors.
A carrier shipment of a consignment, as the carrier accepted it.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many shipments the order has, capped at 10001: 10001 reads "10000 or more".
Where the page sits, and the cursors to the next and previous pages.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
Example
Query
query salesOrders($first: Int) {
salesOrders(first: $first) {
edges {
cursor
}
nodes {
id
number
status
legalEntityId
source
externalId
}
pageInfo {
hasNextPage
hasPreviousPage
startCursor
endCursor
}
}
}
Variables
{"first": 10}
Response
{
"data": {
"salesOrders": {
"edges": [{"cursor": "example"}],
"nodes": [
{
"id": "00000000-0000-4000-8000-000000000001",
"number": "example",
"status": "DRAFT",
"legalEntityId": "00000000-0000-4000-8000-000000000001",
"source": "example",
"externalId": "example"
}
],
"pageInfo": {
"hasNextPage": true,
"hasPreviousPage": true,
"startCursor": "example",
"endCursor": "example"
}
}
}
}
cancelSalesOrder
Description
Cancels the order and releases its stock; consignments still being prepared are called off with it. Repeats change nothing (changed: false). Payments are left as they are: a refund is recorded when the money moves.
CONFLICT once the warehouse has dispatched any of it, or when the order was merged into another or is still a draft -- a person handles those in the ERP. NOT_FOUND when there is no such order or the key may not see it.
An error whose path runs below this field while its result is in data is a field the key may not read, or a nested page that failed -- not a failed call: the order was cancelled, and changed is in data, so do not retry. Retry rules apply only when this field itself is null with an error at its own path.
Arguments
Returns
What markSalesOrderPaid, cancelSalesOrder or setSalesOrderInvoice did.
The order, as it now stands.
Fields 44
A sales order.
Our id.
The order's number. Null while a draft.
Where the order is in its life.
Accepted values 5
DRAFT-
Not yet confirmed.
CONFIRMED-
Confirmed: numbered and reserving stock.
COMPLETED-
Everything owed has shipped.
CANCELLED-
Cancelled.
MERGED-
Merged into another order.
Our id of the legal entity (the company) that sells it. Null only for an order without one.
The code of the source that placed it. Null for an order made here.
The source's id of the order.
The order number the customer saw in the shop.
A link to the order in the shop's administration.
When the customer placed it.
When it was confirmed, by this system's clock.
How much has left the warehouse.
Accepted values 3
UNFULFILLED-
Nothing has shipped.
PARTIALLY_FULFILLED-
Some has shipped.
FULFILLED-
Nothing is outstanding.
Whether it is paid.
Accepted values 7
UNPAID-
Nothing paid.
PENDING-
A payment is announced and not yet arrived.
AUTHORIZED-
A hold covers the order; no money yet.
PARTIALLY_PAID-
Part is paid.
PAID-
Paid in full.
PARTIALLY_REFUNDED-
Part was refunded.
REFUNDED-
Refunded in full.
ISO 4217 code of its currency.
Whether its prices include VAT: as its priced items say, or, with none, as its charges other than ROUNDING say. Null when neither has a price.
What is owed without VAT, cancelled quantity excluded.
The VAT on it.
What is owed including VAT.
What the customer has paid, less refunds.
The order-wide discount in percent, taken off every goods line after the line's own discount. lineTotal and the totals already apply it; charges are not discounted. Null when there is none.
The number of the invoice another system issued for this order (setSalesOrderInvoice). Null while there is none. A change of it is a transition of the order's events (see events); invoiceExternalId is not tracked there, so a change of it alone still publishes sales_order.changed, with no transition.
That system's own id of the invoice. Null while there is none.
Our id of the customer. Served to every key that reads the order.
Who ordered. Needs partner.read: without it null with FORBIDDEN_ROLE; outside the key's partner scope null with FORBIDDEN_SCOPE (extensions.scope PARTNER). An erased customer reads with name null.
Fields 13
A business partner: a customer, a supplier or both. Needs partner.read.
Our id.
Our code of the partner.
Their name. Null once the partner is erased.
The company registration number (IČO). Null when unknown, and once the partner is erased.
The tax id (DIČ). Null when unknown, and once the partner is erased.
The VAT id (IČ DPH). Null when unknown, and once the partner is erased.
The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.
The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.
Whether we sell to them.
Whether we buy from them.
The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a partner's addresses of one kind.
The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a partner's addresses of one kind.
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a record's external references.
The billing address version the order pinned, kept as it was. Needs partner.read and the customer in the key's partner scope (FORBIDDEN_ROLE / FORBIDDEN_SCOPE otherwise). Null once the customer is erased.
Fields 10
An address an order was sent to.
Our id of this address version.
Who receives it.
Street and number.
A second address line.
City.
Postal code.
Region or state.
ISO 3166-1 alpha-2 country code.
The phone the carrier calls.
The e-mail delivery notices go to.
The delivery address version the order pinned, guarded as billingAddress.
Fields 10
An address an order was sent to.
Our id of this address version.
Who receives it.
Street and number.
A second address line.
City.
Postal code.
Region or state.
ISO 3166-1 alpha-2 country code.
The phone the carrier calls.
The e-mail delivery notices go to.
The carrier's collection point, when delivered to one.
The delivery method in the shop's own words.
The normalized operational carrier. Null when none was selected or when the requested pair was UNKNOWN or UNVERIFIED; those failures are available in exceptions.
Fields 4
An operational route of the synchronized Chameleoon catalogue. carrierProfiles lists only the active ones; Shipment.carrier is the route a shipment was sent with, which the catalogue may since have deactivated or dropped (then its codes stand in for its names).
The Chameleoon courier id.
The courier's profile id.
The courier's synchronized display name.
The profile's synchronized display name. When the catalogue gives the profile none, the courier's name (the same value as name) -- never null, so the field stays as it was published.
How the customer intends to pay.
Accepted values 4
CARD-
By card.
BANK_TRANSFER-
By bank transfer.
CASH_ON_DELIVERY-
In cash to the courier.
CASH-
In cash at the counter.
The payment method in the shop's own words.
The e-mail the customer gave for this order. Guarded as billingAddress: needs partner.read and the partner scope; null once the customer is erased.
The phone the customer gave for this order, guarded as contactEmail.
Our id of the warehouse the order reserves from, when it has one.
That warehouse. Needs warehouse.read: without it null with FORBIDDEN_ROLE; outside the key's warehouse scope null with FORBIDDEN_SCOPE (extensions.scope WAREHOUSE).
What the customer wrote with the order. Null once the customer is erased.
The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's items and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of an order's items.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many items the order has, capped at 10001: 10001 reads "10000 or more".
Everything that is not goods, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's charges and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of an order's charges.
The charges with their cursors.
One charge and its cursor.
The same charges without cursors.
Something on an order that is not goods.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many charges the order has, capped at 10001: 10001 reads "10000 or more".
Why no consignment of the order may proceed. Null when nothing stops it.
Fields 3
What stops an order.
A fixed code: NEEDS_REVIEW (the order has open exceptions), AWAITING_PAYMENT, SUSPECTED_FRAUD, INCORRECT_ADDRESS, CUSTOMER_REQUEST or OTHER. Read it as a string: more may be added.
What the person or the system wrote about it. A person's note reads null unless the key holds order.write; NEEDS_REVIEW's, which the system wrote, reads for every key.
When the order was stopped.
What the order was created with that needs a person, open and resolved, oldest first (by createdAt, then id): a connection, paged with first/after or last/before (at most 250). Empty when nothing did. Its cursors belong to this order's exceptions and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of an order's exceptions.
The exceptions with their cursors.
One exception and its cursor.
The same exceptions without cursors.
Something a record was created with that needs a person: what it is, where, and how it was settled.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many exceptions the order has, capped at 10001: 10001 reads "10000 or more".
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's references and are refused anywhere else. source and externalId above are one of them: the one the request named, else the oldest. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of a record's external references.
The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.
One reference and its cursor.
The same references without cursors.
An id another system knows a record by.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many references the record has.
The files attached to the order (attachDocument), oldest first: a connection, paged with first/after or last/before (at most 250); kinds narrows it to those kinds. A removed document is left out. Its cursors belong to this order's documents and are refused anywhere else. Needs integration.read and order.read. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
The documents with their cursors.
One document and its cursor.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Field arguments 5
Accepted values 8
INVOICECREDIT_NOTEPROFORMA_INVOICEDELIVERY_NOTEPROOF_OF_DELIVERYORDER_CONFIRMATIONCONTRACTOTHER
When the order's last event was published (see events). Null only for an order never published.
The invoices linked to the order, newest issued first (at most 250 a page). Needs invoice.read: without it null with FORBIDDEN_ROLE at its path; the rest of the answer is served.
Fields 4
The invoices linked to one order.
A mirrored invoice, advance invoice or credit note. Needs invoice.read.
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
The order's carrier shipments, oldest first: live and cancelled, never one that did not reach the carrier. Requires shipment.read: null with FORBIDDEN_ROLE without it. Shipments outside the key's legal-entity or warehouse scope are left out.
Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward.
Fields 4
One page of an order's shipments.
The shipments with their cursors.
One shipment and its cursor.
The same shipments without cursors.
A carrier shipment of a consignment, as the carrier accepted it.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many shipments the order has, capped at 10001: 10001 reads "10000 or more".
False when the order already was as asked: the call was a repeat and changed nothing.
Example
Mutation
mutation cancelSalesOrder($ref: SalesOrderRefInput!) {
cancelSalesOrder(ref: $ref) {
salesOrder {
id
number
status
legalEntityId
source
externalId
}
changed
}
}
Variables
{"ref": {"id": "00000000-0000-4000-8000-000000000001"}}
Response
{
"data": {
"cancelSalesOrder": {
"salesOrder": {
"id": "00000000-0000-4000-8000-000000000001",
"number": "example",
"status": "DRAFT",
"legalEntityId": "00000000-0000-4000-8000-000000000001",
"source": "example",
"externalId": "example"
},
"changed": true
}
}
}
createSalesOrder
Description
Creates a CONFIRMED order in one transaction: the customer and their addresses are found or added, every item is resolved against the catalogue, the shop's prices are kept as sent, stock is reserved and what was paid is recorded. Either all of it happens or none of it.
Repeating it with the same source and externalId changes nothing and returns the existing order with created: false -- with the warning DUPLICATE_WITH_DIFFERENT_CONTENT when the repeat differs from the first call. Changes to a placed order are their own operations.
orderedAt is the shop's time; the order's number and confirmedAt are this system's clock.
Every input mistake that leaves nothing to store comes back at once, each a VALIDATION error naming its field, and nothing is created.
An order that can be stored but needs a person is created all the same: CONFIRMED, stock reserved, and blocked with the reason NEEDS_REVIEW until someone in the ERP looks at it. What needs the look is listed in the order's exceptions, and the same codes come back as warnings. These five block the order: PAYMENT_METHOD_UNKNOWN (paymentMethod not sent; BANK_TRANSFER is stored in its place), TOTAL_MISMATCH (expectedTotal differs from ours; our sums are kept), LINE_TOTAL_MISMATCH (an item's lineTotal differs from ours), UNIT_UNKNOWN (an item's unit is not one of its product's; the base unit is used) and PREFERRED_WAREHOUSE_IGNORED (preferredWarehouseId cannot be used; the order has no preference). PRODUCT_NOT_FOUND, PRODUCT_ARCHIVED, PRODUCT_AMBIGUOUS (several products carry the EAN; the line is kept unlinked for a person) and UNIT_NOT_VERIFIED are recorded as exceptions too, but do not block: an unlinked line is linked in the ERP. PRODUCT_AMBIGUOUS names the products' SKUs only in this call's warning, and only to a caller allowed to read the catalogue; the stored exception carries the EAN and how many products carry it (data ean, count), and a person finds the products by searching the EAN.
The other warnings are fixed codes as well: DUPLICATE_WITH_DIFFERENT_CONTENT, CUSTOMER_MATCHED_BY_REGISTRATION_ID, CUSTOMER_MATCHED_BY_EMAIL, CUSTOMER_MATCHED_SEVERAL, ITEM_CONVERTED_TO_CHARGE, ZERO_PRICE, ORIGINAL_PRICE_INCONSISTENT, PAYMENT_REFERENCE_TAKEN.
When carrier names a syntactically valid pair which is absent from a fresh authoritative Chameleoon catalogue, the order is still created CONFIRMED, blocked NEEDS_REVIEW, and carries the blocking exception and creation warning CARRIER_PROFILE_UNKNOWN. When the catalogue cannot be verified, CARRIER_PROFILE_UNVERIFIED is used instead. In both cases carrier reads null until a person repairs the order. Warnings describe this creation call only: an idempotent repeat returns created: false and does not replay them; read SalesOrder.exceptions for the durable problem.
An error whose path runs below this field while its result is in data is a field the key may not read, or a nested page that failed -- not a failed call: the order was placed, and created and warnings are in data, so do not retry. Retry rules apply only when this field itself is null with an error at its own path.
Arguments
Input fields 22
A shop order, as the shop knows it.
The code of an external source set up in this organisation. The API never creates one.
The shop's id of the order. With source, the key that makes a repeat safe.
The order number the customer sees.
A link to the order in the shop's administration.
The code of the legal entity that sells. Omitted: the organisation's default.
When the customer placed the order, by the shop's clock. Not before 2000, at most a day ahead.
ISO 4217 code of the order's currency, e.g. "EUR". Never converted.
Whether every unitPrice and charge amount includes VAT. ROUNDING always does.
The shop's total including VAT. When our total differs by a cent or more, the order is created with our sums and blocked for review, with the exception TOTAL_MISMATCH. Send a residue as a ROUNDING charge.
Who ordered.
Input fields 8
The customer: either id alone, or what the shop knows of them. A customer named by the shop is matched by externalId, then registration id, then e-mail, and created when nothing matches. An existing customer's details are never overwritten.
Our id of the customer. Nothing else may be sent with it.
The shop's id of the customer.
The person's name.
The company's name; when sent, it names a new customer.
The company registration number (IČO).
The VAT id (IČ DPH / DIČ).
The e-mail, also kept as the order's contact.
The phone, also kept as the order's contact.
The billing address.
Input fields 9
A postal address.
Who receives it, when not the customer.
Street and number.
A second address line.
City.
Postal code.
Region or state.
ISO 3166-1 alpha-2 country code.
The phone the carrier calls. Kept only on an address this order adds.
The e-mail delivery notices go to. Kept only on an address this order adds.
Where the goods go. Omitted: the billing address, unless a pickupPoint is given.
Input fields 9
A postal address.
Who receives it, when not the customer.
Street and number.
A second address line.
City.
Postal code.
Region or state.
ISO 3166-1 alpha-2 country code.
The phone the carrier calls. Kept only on an address this order adds.
The e-mail delivery notices go to. Kept only on an address this order adds.
The carrier's collection point the customer chose. Never added to the address book.
The delivery method as the shop names it.
The operational Chameleoon carrier and profile. Both are identifiers; names are derived from the synchronized catalogue. Omitted means no Chameleoon route was selected. Unknown or unverifiable pairs do not become normalized carrier data; see createSalesOrder warnings.
How the customer intends to pay. Omitted -- the shop's method is not mapped to one of ours: BANK_TRANSFER is stored as a placeholder and the order is blocked for review, with the exception PAYMENT_METHOD_UNKNOWN. Send paymentMethodName so the person can see what it was.
Accepted values 4
CARD-
By card.
BANK_TRANSFER-
By bank transfer.
CASH_ON_DELIVERY-
In cash to the courier.
CASH-
In cash at the counter.
The payment method as the shop names it.
Our id of the warehouse to reserve from. Omitted: any of the legal entity's warehouses. One that is unknown, archived or another company's is ignored and the order is blocked for review, with the exception PREFERRED_WAREHOUSE_IGNORED.
What the customer wrote with the order.
The goods. At least one.
Input fields 15
One goods line of a shop order.
The shop's id of the line, unique within the order.
What the line is. A SET is one priced line; its components are never sent.
Default: PRODUCT
Accepted values 3
PRODUCT-
A product.
SET-
A set, as one priced line.
GIFT-
A gift, which may be priced 0 without a warning.
The product, by exactly one key. Not found: the line is kept unlinked under its sku, with the warning PRODUCT_NOT_FOUND. Ambiguous (an EAN several products carry): kept unlinked under its sku, or under the EAN when no sku was sent, warning PRODUCT_AMBIGUOUS. A service becomes an OTHER charge.
A product, by exactly one key.
The shop's SKU. Required when the product is not found -- except for an EAN several products carry, where the line is kept under the EAN when no sku was sent.
The product's name as the customer saw it.
The variant's name as the customer saw it, e.g. "black, M".
How many, in unit. More than zero, at most three decimals.
A unit code of the product. Omitted: its base unit, or the unit of the EAN sent. One the product does not have: its base unit, and the order is blocked for review with the exception UNIT_UNKNOWN.
The final price of one unit, after this line's own discount. At most four decimals.
The price of one unit before the discount; the difference is kept as the discount.
The discount as the shop showed it. Informative only.
The VAT rate in percent, e.g. 23. At most two decimals.
The shop's total of the line, on the order's basis: gross when pricesIncludeVat, net otherwise. A cent or more from ours: the order is created with ours and blocked for review, with the exception LINE_TOTAL_MISMATCH on the line.
What the customer chose about the line: an engraving, a colour.
One choice the customer made about a line.
A note on the line.
Delivery, payment fees, discounts and rounding -- everything that is not goods.
Input fields 5
Anything on the order that is not goods.
What it is for.
Accepted values 5
DELIVERY-
Delivery.
PAYMENT-
A payment fee, e.g. for cash on delivery.
DISCOUNT-
A discount, sent positive and subtracted. One row per VAT rate.
ROUNDING-
The residue between the shop's total and ours, at most 1.00 either way.
OTHER-
Any other surcharge: insurance, gift wrap.
The shop's code of the charge.
Its name as the customer saw it.
The whole amount, net or gross as pricesIncludeVat says (ROUNDING: always gross). Never negative, except ROUNDING, which is at most 1.00 either way. A DISCOUNT is sent positive.
The VAT rate in percent. ROUNDING: 0.
Present: the order is paid in full. Absent: not (yet) paid.
Returns
What createSalesOrder did.
The order, as it now stands.
Fields 44
A sales order.
Our id.
The order's number. Null while a draft.
Where the order is in its life.
Accepted values 5
DRAFT-
Not yet confirmed.
CONFIRMED-
Confirmed: numbered and reserving stock.
COMPLETED-
Everything owed has shipped.
CANCELLED-
Cancelled.
MERGED-
Merged into another order.
Our id of the legal entity (the company) that sells it. Null only for an order without one.
The code of the source that placed it. Null for an order made here.
The source's id of the order.
The order number the customer saw in the shop.
A link to the order in the shop's administration.
When the customer placed it.
When it was confirmed, by this system's clock.
How much has left the warehouse.
Accepted values 3
UNFULFILLED-
Nothing has shipped.
PARTIALLY_FULFILLED-
Some has shipped.
FULFILLED-
Nothing is outstanding.
Whether it is paid.
Accepted values 7
UNPAID-
Nothing paid.
PENDING-
A payment is announced and not yet arrived.
AUTHORIZED-
A hold covers the order; no money yet.
PARTIALLY_PAID-
Part is paid.
PAID-
Paid in full.
PARTIALLY_REFUNDED-
Part was refunded.
REFUNDED-
Refunded in full.
ISO 4217 code of its currency.
Whether its prices include VAT: as its priced items say, or, with none, as its charges other than ROUNDING say. Null when neither has a price.
What is owed without VAT, cancelled quantity excluded.
The VAT on it.
What is owed including VAT.
What the customer has paid, less refunds.
The order-wide discount in percent, taken off every goods line after the line's own discount. lineTotal and the totals already apply it; charges are not discounted. Null when there is none.
The number of the invoice another system issued for this order (setSalesOrderInvoice). Null while there is none. A change of it is a transition of the order's events (see events); invoiceExternalId is not tracked there, so a change of it alone still publishes sales_order.changed, with no transition.
That system's own id of the invoice. Null while there is none.
Our id of the customer. Served to every key that reads the order.
Who ordered. Needs partner.read: without it null with FORBIDDEN_ROLE; outside the key's partner scope null with FORBIDDEN_SCOPE (extensions.scope PARTNER). An erased customer reads with name null.
Fields 13
A business partner: a customer, a supplier or both. Needs partner.read.
Our id.
Our code of the partner.
Their name. Null once the partner is erased.
The company registration number (IČO). Null when unknown, and once the partner is erased.
The tax id (DIČ). Null when unknown, and once the partner is erased.
The VAT id (IČ DPH). Null when unknown, and once the partner is erased.
The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.
The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.
Whether we sell to them.
Whether we buy from them.
The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a partner's addresses of one kind.
The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a partner's addresses of one kind.
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a record's external references.
The billing address version the order pinned, kept as it was. Needs partner.read and the customer in the key's partner scope (FORBIDDEN_ROLE / FORBIDDEN_SCOPE otherwise). Null once the customer is erased.
Fields 10
An address an order was sent to.
Our id of this address version.
Who receives it.
Street and number.
A second address line.
City.
Postal code.
Region or state.
ISO 3166-1 alpha-2 country code.
The phone the carrier calls.
The e-mail delivery notices go to.
The delivery address version the order pinned, guarded as billingAddress.
Fields 10
An address an order was sent to.
Our id of this address version.
Who receives it.
Street and number.
A second address line.
City.
Postal code.
Region or state.
ISO 3166-1 alpha-2 country code.
The phone the carrier calls.
The e-mail delivery notices go to.
The carrier's collection point, when delivered to one.
The delivery method in the shop's own words.
The normalized operational carrier. Null when none was selected or when the requested pair was UNKNOWN or UNVERIFIED; those failures are available in exceptions.
Fields 4
An operational route of the synchronized Chameleoon catalogue. carrierProfiles lists only the active ones; Shipment.carrier is the route a shipment was sent with, which the catalogue may since have deactivated or dropped (then its codes stand in for its names).
The Chameleoon courier id.
The courier's profile id.
The courier's synchronized display name.
The profile's synchronized display name. When the catalogue gives the profile none, the courier's name (the same value as name) -- never null, so the field stays as it was published.
How the customer intends to pay.
Accepted values 4
CARD-
By card.
BANK_TRANSFER-
By bank transfer.
CASH_ON_DELIVERY-
In cash to the courier.
CASH-
In cash at the counter.
The payment method in the shop's own words.
The e-mail the customer gave for this order. Guarded as billingAddress: needs partner.read and the partner scope; null once the customer is erased.
The phone the customer gave for this order, guarded as contactEmail.
Our id of the warehouse the order reserves from, when it has one.
That warehouse. Needs warehouse.read: without it null with FORBIDDEN_ROLE; outside the key's warehouse scope null with FORBIDDEN_SCOPE (extensions.scope WAREHOUSE).
What the customer wrote with the order. Null once the customer is erased.
The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's items and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of an order's items.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many items the order has, capped at 10001: 10001 reads "10000 or more".
Everything that is not goods, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's charges and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of an order's charges.
The charges with their cursors.
One charge and its cursor.
The same charges without cursors.
Something on an order that is not goods.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many charges the order has, capped at 10001: 10001 reads "10000 or more".
Why no consignment of the order may proceed. Null when nothing stops it.
Fields 3
What stops an order.
A fixed code: NEEDS_REVIEW (the order has open exceptions), AWAITING_PAYMENT, SUSPECTED_FRAUD, INCORRECT_ADDRESS, CUSTOMER_REQUEST or OTHER. Read it as a string: more may be added.
What the person or the system wrote about it. A person's note reads null unless the key holds order.write; NEEDS_REVIEW's, which the system wrote, reads for every key.
When the order was stopped.
What the order was created with that needs a person, open and resolved, oldest first (by createdAt, then id): a connection, paged with first/after or last/before (at most 250). Empty when nothing did. Its cursors belong to this order's exceptions and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of an order's exceptions.
The exceptions with their cursors.
One exception and its cursor.
The same exceptions without cursors.
Something a record was created with that needs a person: what it is, where, and how it was settled.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many exceptions the order has, capped at 10001: 10001 reads "10000 or more".
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's references and are refused anywhere else. source and externalId above are one of them: the one the request named, else the oldest. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of a record's external references.
The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.
One reference and its cursor.
The same references without cursors.
An id another system knows a record by.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many references the record has.
The files attached to the order (attachDocument), oldest first: a connection, paged with first/after or last/before (at most 250); kinds narrows it to those kinds. A removed document is left out. Its cursors belong to this order's documents and are refused anywhere else. Needs integration.read and order.read. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
The documents with their cursors.
One document and its cursor.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Field arguments 5
Accepted values 8
INVOICECREDIT_NOTEPROFORMA_INVOICEDELIVERY_NOTEPROOF_OF_DELIVERYORDER_CONFIRMATIONCONTRACTOTHER
When the order's last event was published (see events). Null only for an order never published.
The invoices linked to the order, newest issued first (at most 250 a page). Needs invoice.read: without it null with FORBIDDEN_ROLE at its path; the rest of the answer is served.
Fields 4
The invoices linked to one order.
A mirrored invoice, advance invoice or credit note. Needs invoice.read.
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
The order's carrier shipments, oldest first: live and cancelled, never one that did not reach the carrier. Requires shipment.read: null with FORBIDDEN_ROLE without it. Shipments outside the key's legal-entity or warehouse scope are left out.
Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward.
Fields 4
One page of an order's shipments.
The shipments with their cursors.
One shipment and its cursor.
The same shipments without cursors.
A carrier shipment of a consignment, as the carrier accepted it.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many shipments the order has, capped at 10001: 10001 reads "10000 or more".
False when the order had already been placed: the call was a repeat and changed nothing.
What happened that did not stop the order.
Example
Mutation
mutation createSalesOrder($input: CreateSalesOrderInput!) {
createSalesOrder(input: $input) {
salesOrder {
id
number
status
legalEntityId
source
externalId
}
created
warnings {
code
message
field
}
}
}
Variables
{
"input": {
"source": "example",
"externalId": "example",
"orderedAt": "2026-01-01T00:00:00Z",
"currencyCode": "example",
"pricesIncludeVat": true,
"customer": {"id": "00000000-0000-4000-8000-000000000001"},
"billingAddress": {
"street": "example",
"city": "example",
"postalCode": "example",
"countryCode": "example"
},
"items": [
{
"name": "example",
"quantity": "10.00",
"unitPrice": "10.00",
"vatPercent": "10.00"
}
]
}
}
Response
{
"data": {
"createSalesOrder": {
"salesOrder": {
"id": "00000000-0000-4000-8000-000000000001",
"number": "example",
"status": "DRAFT",
"legalEntityId": "00000000-0000-4000-8000-000000000001",
"source": "example",
"externalId": "example"
},
"created": true,
"warnings": [
{"code": "example", "message": "example", "field": "example"}
]
}
}
}
markSalesOrderPaid
Description
Marks the order paid in full: one settled payment for what is still owed, in the order's payment method. When the ERP has changed the order since, its total is the truth. Repeats change nothing (changed: false), as does a reference already settled as a payment on this order.
CONFLICT when the order is cancelled, merged or a draft; when a pending or authorized payment is recorded on it; when the reference is on this order under another status (a failed or voided payment, a refund) -- a person resolves those in the ERP; and when the reference belongs to another order, which the shop fixes by sending the right one. NOT_FOUND when there is no such order or the key may not see it.
An error whose path runs below this field while its result is in data is a field the key may not read, or a nested page that failed -- not a failed call: the payment was recorded, and changed is in data, so do not retry. Retry rules apply only when this field itself is null with an error at its own path.
Arguments
Returns
What markSalesOrderPaid, cancelSalesOrder or setSalesOrderInvoice did.
The order, as it now stands.
Fields 44
A sales order.
Our id.
The order's number. Null while a draft.
Where the order is in its life.
Accepted values 5
DRAFT-
Not yet confirmed.
CONFIRMED-
Confirmed: numbered and reserving stock.
COMPLETED-
Everything owed has shipped.
CANCELLED-
Cancelled.
MERGED-
Merged into another order.
Our id of the legal entity (the company) that sells it. Null only for an order without one.
The code of the source that placed it. Null for an order made here.
The source's id of the order.
The order number the customer saw in the shop.
A link to the order in the shop's administration.
When the customer placed it.
When it was confirmed, by this system's clock.
How much has left the warehouse.
Accepted values 3
UNFULFILLED-
Nothing has shipped.
PARTIALLY_FULFILLED-
Some has shipped.
FULFILLED-
Nothing is outstanding.
Whether it is paid.
Accepted values 7
UNPAID-
Nothing paid.
PENDING-
A payment is announced and not yet arrived.
AUTHORIZED-
A hold covers the order; no money yet.
PARTIALLY_PAID-
Part is paid.
PAID-
Paid in full.
PARTIALLY_REFUNDED-
Part was refunded.
REFUNDED-
Refunded in full.
ISO 4217 code of its currency.
Whether its prices include VAT: as its priced items say, or, with none, as its charges other than ROUNDING say. Null when neither has a price.
What is owed without VAT, cancelled quantity excluded.
The VAT on it.
What is owed including VAT.
What the customer has paid, less refunds.
The order-wide discount in percent, taken off every goods line after the line's own discount. lineTotal and the totals already apply it; charges are not discounted. Null when there is none.
The number of the invoice another system issued for this order (setSalesOrderInvoice). Null while there is none. A change of it is a transition of the order's events (see events); invoiceExternalId is not tracked there, so a change of it alone still publishes sales_order.changed, with no transition.
That system's own id of the invoice. Null while there is none.
Our id of the customer. Served to every key that reads the order.
Who ordered. Needs partner.read: without it null with FORBIDDEN_ROLE; outside the key's partner scope null with FORBIDDEN_SCOPE (extensions.scope PARTNER). An erased customer reads with name null.
Fields 13
A business partner: a customer, a supplier or both. Needs partner.read.
Our id.
Our code of the partner.
Their name. Null once the partner is erased.
The company registration number (IČO). Null when unknown, and once the partner is erased.
The tax id (DIČ). Null when unknown, and once the partner is erased.
The VAT id (IČ DPH). Null when unknown, and once the partner is erased.
The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.
The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.
Whether we sell to them.
Whether we buy from them.
The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a partner's addresses of one kind.
The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a partner's addresses of one kind.
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a record's external references.
The billing address version the order pinned, kept as it was. Needs partner.read and the customer in the key's partner scope (FORBIDDEN_ROLE / FORBIDDEN_SCOPE otherwise). Null once the customer is erased.
Fields 10
An address an order was sent to.
Our id of this address version.
Who receives it.
Street and number.
A second address line.
City.
Postal code.
Region or state.
ISO 3166-1 alpha-2 country code.
The phone the carrier calls.
The e-mail delivery notices go to.
The delivery address version the order pinned, guarded as billingAddress.
Fields 10
An address an order was sent to.
Our id of this address version.
Who receives it.
Street and number.
A second address line.
City.
Postal code.
Region or state.
ISO 3166-1 alpha-2 country code.
The phone the carrier calls.
The e-mail delivery notices go to.
The carrier's collection point, when delivered to one.
The delivery method in the shop's own words.
The normalized operational carrier. Null when none was selected or when the requested pair was UNKNOWN or UNVERIFIED; those failures are available in exceptions.
Fields 4
An operational route of the synchronized Chameleoon catalogue. carrierProfiles lists only the active ones; Shipment.carrier is the route a shipment was sent with, which the catalogue may since have deactivated or dropped (then its codes stand in for its names).
The Chameleoon courier id.
The courier's profile id.
The courier's synchronized display name.
The profile's synchronized display name. When the catalogue gives the profile none, the courier's name (the same value as name) -- never null, so the field stays as it was published.
How the customer intends to pay.
Accepted values 4
CARD-
By card.
BANK_TRANSFER-
By bank transfer.
CASH_ON_DELIVERY-
In cash to the courier.
CASH-
In cash at the counter.
The payment method in the shop's own words.
The e-mail the customer gave for this order. Guarded as billingAddress: needs partner.read and the partner scope; null once the customer is erased.
The phone the customer gave for this order, guarded as contactEmail.
Our id of the warehouse the order reserves from, when it has one.
That warehouse. Needs warehouse.read: without it null with FORBIDDEN_ROLE; outside the key's warehouse scope null with FORBIDDEN_SCOPE (extensions.scope WAREHOUSE).
What the customer wrote with the order. Null once the customer is erased.
The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's items and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of an order's items.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many items the order has, capped at 10001: 10001 reads "10000 or more".
Everything that is not goods, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's charges and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of an order's charges.
The charges with their cursors.
One charge and its cursor.
The same charges without cursors.
Something on an order that is not goods.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many charges the order has, capped at 10001: 10001 reads "10000 or more".
Why no consignment of the order may proceed. Null when nothing stops it.
Fields 3
What stops an order.
A fixed code: NEEDS_REVIEW (the order has open exceptions), AWAITING_PAYMENT, SUSPECTED_FRAUD, INCORRECT_ADDRESS, CUSTOMER_REQUEST or OTHER. Read it as a string: more may be added.
What the person or the system wrote about it. A person's note reads null unless the key holds order.write; NEEDS_REVIEW's, which the system wrote, reads for every key.
When the order was stopped.
What the order was created with that needs a person, open and resolved, oldest first (by createdAt, then id): a connection, paged with first/after or last/before (at most 250). Empty when nothing did. Its cursors belong to this order's exceptions and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of an order's exceptions.
The exceptions with their cursors.
One exception and its cursor.
The same exceptions without cursors.
Something a record was created with that needs a person: what it is, where, and how it was settled.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many exceptions the order has, capped at 10001: 10001 reads "10000 or more".
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's references and are refused anywhere else. source and externalId above are one of them: the one the request named, else the oldest. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of a record's external references.
The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.
One reference and its cursor.
The same references without cursors.
An id another system knows a record by.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many references the record has.
The files attached to the order (attachDocument), oldest first: a connection, paged with first/after or last/before (at most 250); kinds narrows it to those kinds. A removed document is left out. Its cursors belong to this order's documents and are refused anywhere else. Needs integration.read and order.read. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
The documents with their cursors.
One document and its cursor.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Field arguments 5
Accepted values 8
INVOICECREDIT_NOTEPROFORMA_INVOICEDELIVERY_NOTEPROOF_OF_DELIVERYORDER_CONFIRMATIONCONTRACTOTHER
When the order's last event was published (see events). Null only for an order never published.
The invoices linked to the order, newest issued first (at most 250 a page). Needs invoice.read: without it null with FORBIDDEN_ROLE at its path; the rest of the answer is served.
Fields 4
The invoices linked to one order.
A mirrored invoice, advance invoice or credit note. Needs invoice.read.
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
The order's carrier shipments, oldest first: live and cancelled, never one that did not reach the carrier. Requires shipment.read: null with FORBIDDEN_ROLE without it. Shipments outside the key's legal-entity or warehouse scope are left out.
Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward.
Fields 4
One page of an order's shipments.
The shipments with their cursors.
One shipment and its cursor.
The same shipments without cursors.
A carrier shipment of a consignment, as the carrier accepted it.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many shipments the order has, capped at 10001: 10001 reads "10000 or more".
False when the order already was as asked: the call was a repeat and changed nothing.
Example
Mutation
mutation markSalesOrderPaid($ref: SalesOrderRefInput!) {
markSalesOrderPaid(ref: $ref) {
salesOrder {
id
number
status
legalEntityId
source
externalId
}
changed
}
}
Variables
{"ref": {"id": "00000000-0000-4000-8000-000000000001"}}
Response
{
"data": {
"markSalesOrderPaid": {
"salesOrder": {
"id": "00000000-0000-4000-8000-000000000001",
"number": "example",
"status": "DRAFT",
"legalEntityId": "00000000-0000-4000-8000-000000000001",
"source": "example",
"externalId": "example"
},
"changed": true
}
}
}
setSalesOrderInvoice
Description
Records the invoice issued for this order in another system. Open on a confirmed or completed order. An omitted field is kept; null or blank clears it. Answers changed: false when nothing differs -- checked before expectedExternalId, so a retry after a lost answer is not a conflict.
Needs order.write. The history of the order records every change. A change of invoiceNumber is also a transition of the order's events; invoiceExternalId is not tracked there, so a change of it alone still publishes sales_order.changed, with no transition. The invoice's file is an INVOICE document attached to the order (attachDocument), read from documents -- its externalNumber is the invoice number, its downloadUrl the PDF.
CONFLICT with extensions.reason ORDER_STATUS when the order is a draft, cancelled or merged (judged first), and INVOICE_CHANGED when the order's invoice is not the expected one -- read the order again; nothing is written. VALIDATION (field invoice.number or invoice.externalId) for a number over 100 or an external id over 200 characters. NOT_FOUND when there is no such order or the key may not see it.
An error whose path runs below this field while its result is in data is a field the key may not read, or a nested page that failed -- not a failed call: the invoice was recorded, and changed is in data, so do not retry. Retry rules apply only when this field itself is null with an error at its own path.
Arguments
Input fields 3
The invoice issued for an order in another system. An omitted field is kept; null or blank clears it.
The invoice's number, at most 100 characters.
That system's own id of the invoice, at most 200 characters.
Compare-and-set. A value: the write happens only if the order's invoiceExternalId equals it. Null (or blank): only if the order has no invoice at all (number and external id both empty). Otherwise CONFLICT with extensions.reason INVOICE_CHANGED. Omitted: no check.
Returns
What markSalesOrderPaid, cancelSalesOrder or setSalesOrderInvoice did.
The order, as it now stands.
Fields 44
A sales order.
Our id.
The order's number. Null while a draft.
Where the order is in its life.
Accepted values 5
DRAFT-
Not yet confirmed.
CONFIRMED-
Confirmed: numbered and reserving stock.
COMPLETED-
Everything owed has shipped.
CANCELLED-
Cancelled.
MERGED-
Merged into another order.
Our id of the legal entity (the company) that sells it. Null only for an order without one.
The code of the source that placed it. Null for an order made here.
The source's id of the order.
The order number the customer saw in the shop.
A link to the order in the shop's administration.
When the customer placed it.
When it was confirmed, by this system's clock.
How much has left the warehouse.
Accepted values 3
UNFULFILLED-
Nothing has shipped.
PARTIALLY_FULFILLED-
Some has shipped.
FULFILLED-
Nothing is outstanding.
Whether it is paid.
Accepted values 7
UNPAID-
Nothing paid.
PENDING-
A payment is announced and not yet arrived.
AUTHORIZED-
A hold covers the order; no money yet.
PARTIALLY_PAID-
Part is paid.
PAID-
Paid in full.
PARTIALLY_REFUNDED-
Part was refunded.
REFUNDED-
Refunded in full.
ISO 4217 code of its currency.
Whether its prices include VAT: as its priced items say, or, with none, as its charges other than ROUNDING say. Null when neither has a price.
What is owed without VAT, cancelled quantity excluded.
The VAT on it.
What is owed including VAT.
What the customer has paid, less refunds.
The order-wide discount in percent, taken off every goods line after the line's own discount. lineTotal and the totals already apply it; charges are not discounted. Null when there is none.
The number of the invoice another system issued for this order (setSalesOrderInvoice). Null while there is none. A change of it is a transition of the order's events (see events); invoiceExternalId is not tracked there, so a change of it alone still publishes sales_order.changed, with no transition.
That system's own id of the invoice. Null while there is none.
Our id of the customer. Served to every key that reads the order.
Who ordered. Needs partner.read: without it null with FORBIDDEN_ROLE; outside the key's partner scope null with FORBIDDEN_SCOPE (extensions.scope PARTNER). An erased customer reads with name null.
Fields 13
A business partner: a customer, a supplier or both. Needs partner.read.
Our id.
Our code of the partner.
Their name. Null once the partner is erased.
The company registration number (IČO). Null when unknown, and once the partner is erased.
The tax id (DIČ). Null when unknown, and once the partner is erased.
The VAT id (IČ DPH). Null when unknown, and once the partner is erased.
The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.
The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.
Whether we sell to them.
Whether we buy from them.
The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a partner's addresses of one kind.
The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a partner's addresses of one kind.
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a record's external references.
The billing address version the order pinned, kept as it was. Needs partner.read and the customer in the key's partner scope (FORBIDDEN_ROLE / FORBIDDEN_SCOPE otherwise). Null once the customer is erased.
Fields 10
An address an order was sent to.
Our id of this address version.
Who receives it.
Street and number.
A second address line.
City.
Postal code.
Region or state.
ISO 3166-1 alpha-2 country code.
The phone the carrier calls.
The e-mail delivery notices go to.
The delivery address version the order pinned, guarded as billingAddress.
Fields 10
An address an order was sent to.
Our id of this address version.
Who receives it.
Street and number.
A second address line.
City.
Postal code.
Region or state.
ISO 3166-1 alpha-2 country code.
The phone the carrier calls.
The e-mail delivery notices go to.
The carrier's collection point, when delivered to one.
The delivery method in the shop's own words.
The normalized operational carrier. Null when none was selected or when the requested pair was UNKNOWN or UNVERIFIED; those failures are available in exceptions.
Fields 4
An operational route of the synchronized Chameleoon catalogue. carrierProfiles lists only the active ones; Shipment.carrier is the route a shipment was sent with, which the catalogue may since have deactivated or dropped (then its codes stand in for its names).
The Chameleoon courier id.
The courier's profile id.
The courier's synchronized display name.
The profile's synchronized display name. When the catalogue gives the profile none, the courier's name (the same value as name) -- never null, so the field stays as it was published.
How the customer intends to pay.
Accepted values 4
CARD-
By card.
BANK_TRANSFER-
By bank transfer.
CASH_ON_DELIVERY-
In cash to the courier.
CASH-
In cash at the counter.
The payment method in the shop's own words.
The e-mail the customer gave for this order. Guarded as billingAddress: needs partner.read and the partner scope; null once the customer is erased.
The phone the customer gave for this order, guarded as contactEmail.
Our id of the warehouse the order reserves from, when it has one.
That warehouse. Needs warehouse.read: without it null with FORBIDDEN_ROLE; outside the key's warehouse scope null with FORBIDDEN_SCOPE (extensions.scope WAREHOUSE).
What the customer wrote with the order. Null once the customer is erased.
The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's items and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of an order's items.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many items the order has, capped at 10001: 10001 reads "10000 or more".
Everything that is not goods, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's charges and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of an order's charges.
The charges with their cursors.
One charge and its cursor.
The same charges without cursors.
Something on an order that is not goods.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many charges the order has, capped at 10001: 10001 reads "10000 or more".
Why no consignment of the order may proceed. Null when nothing stops it.
Fields 3
What stops an order.
A fixed code: NEEDS_REVIEW (the order has open exceptions), AWAITING_PAYMENT, SUSPECTED_FRAUD, INCORRECT_ADDRESS, CUSTOMER_REQUEST or OTHER. Read it as a string: more may be added.
What the person or the system wrote about it. A person's note reads null unless the key holds order.write; NEEDS_REVIEW's, which the system wrote, reads for every key.
When the order was stopped.
What the order was created with that needs a person, open and resolved, oldest first (by createdAt, then id): a connection, paged with first/after or last/before (at most 250). Empty when nothing did. Its cursors belong to this order's exceptions and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of an order's exceptions.
The exceptions with their cursors.
One exception and its cursor.
The same exceptions without cursors.
Something a record was created with that needs a person: what it is, where, and how it was settled.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many exceptions the order has, capped at 10001: 10001 reads "10000 or more".
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's references and are refused anywhere else. source and externalId above are one of them: the one the request named, else the oldest. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of a record's external references.
The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.
One reference and its cursor.
The same references without cursors.
An id another system knows a record by.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many references the record has.
The files attached to the order (attachDocument), oldest first: a connection, paged with first/after or last/before (at most 250); kinds narrows it to those kinds. A removed document is left out. Its cursors belong to this order's documents and are refused anywhere else. Needs integration.read and order.read. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
The documents with their cursors.
One document and its cursor.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Field arguments 5
Accepted values 8
INVOICECREDIT_NOTEPROFORMA_INVOICEDELIVERY_NOTEPROOF_OF_DELIVERYORDER_CONFIRMATIONCONTRACTOTHER
When the order's last event was published (see events). Null only for an order never published.
The invoices linked to the order, newest issued first (at most 250 a page). Needs invoice.read: without it null with FORBIDDEN_ROLE at its path; the rest of the answer is served.
Fields 4
The invoices linked to one order.
A mirrored invoice, advance invoice or credit note. Needs invoice.read.
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
The order's carrier shipments, oldest first: live and cancelled, never one that did not reach the carrier. Requires shipment.read: null with FORBIDDEN_ROLE without it. Shipments outside the key's legal-entity or warehouse scope are left out.
Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward.
Fields 4
One page of an order's shipments.
The shipments with their cursors.
One shipment and its cursor.
The same shipments without cursors.
A carrier shipment of a consignment, as the carrier accepted it.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many shipments the order has, capped at 10001: 10001 reads "10000 or more".
False when the order already was as asked: the call was a repeat and changed nothing.
Example
Mutation
mutation setSalesOrderInvoice($ref: SalesOrderRefInput!, $invoice: SalesOrderInvoiceInput!) {
setSalesOrderInvoice(ref: $ref, invoice: $invoice) {
salesOrder {
id
number
status
legalEntityId
source
externalId
}
changed
}
}
Variables
{"ref": {"id": "00000000-0000-4000-8000-000000000001"}, "invoice": {}}
Response
{
"data": {
"setSalesOrderInvoice": {
"salesOrder": {
"id": "00000000-0000-4000-8000-000000000001",
"number": "example",
"status": "DRAFT",
"legalEntityId": "00000000-0000-4000-8000-000000000001",
"source": "example",
"externalId": "example"
},
"changed": true
}
}
}
Receipts
receiptAdvice
Description
One receipt advice, or null if absent or outside this key's scope. Needs integration.read and advice.read.
Arguments
Returns
PP-…, set when it opens; null on a DRAFT.
Accepted values 4
DELIVERY_NOTESUPPLIER_INVOICEOTHERPURCHASE_ORDER-
Drawn from a purchase order in the ERP. Never accepted on create or update.
Accepted values 4
DRAFT-
Being built in the ERP (an import still being matched). Has no number; never made here.
OPEN-
Expects its goods.
CLOSED-
Finished by a person once the differences were settled.
CANCELLED-
Called off before anything arrived. Keeps its number.
The status and what arrived combined. Read only when selected.
Accepted values 6
DRAFTAWAITING-
Open, and nothing has arrived on an open or completed receipt. A worker may already be scanning it into a draft receipt.
PARTIALLY_RECEIVED-
Open, something arrived, and a line is short past the tenant's receipt tolerance.
RECEIVED-
Open, and every line arrived within the tolerance (or over). Still open until a person closes it.
CLOSEDCANCELLED
The supplier. Needs partner.read: without it null with FORBIDDEN_ROLE at its path; the rest is served.
Fields 13
A business partner: a customer, a supplier or both. Needs partner.read.
Our id.
Our code of the partner.
Their name. Null once the partner is erased.
The company registration number (IČO). Null when unknown, and once the partner is erased.
The tax id (DIČ). Null when unknown, and once the partner is erased.
The VAT id (IČ DPH). Null when unknown, and once the partner is erased.
The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.
The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.
Whether we sell to them.
Whether we buy from them.
The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of a partner's addresses of one kind.
The addresses with their cursors, the default first.
One address and its cursor.
The same addresses without cursors.
A postal address in a partner's address book. id names this VERSION: editing an address that a document pinned makes a new version with a new id, and the document keeps the old one.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many current addresses of this kind the partner has, capped at 10001: 10001 reads "10000 or more". 0 once the partner is erased.
The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of a partner's addresses of one kind.
The addresses with their cursors, the default first.
One address and its cursor.
The same addresses without cursors.
A postal address in a partner's address book. id names this VERSION: editing an address that a document pinned makes a new version with a new id, and the document keeps the old one.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many current addresses of this kind the partner has, capped at 10001: 10001 reads "10000 or more". 0 once the partner is erased.
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of a record's external references.
The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.
One reference and its cursor.
The same references without cursors.
An id another system knows a record by.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many references the record has.
The warehouse the goods are coming into. Needs warehouse.read, as Receipt.warehouse.
The company the advice is filed under; null only on an older draft.
The announced lines, by line number. Page with first/after or last/before (1..250).
Fields 4
Fields 20
The product variant; null only on a DRAFT line the ERP has not matched yet.
The supplier's own code of the item.
The quantity as announced, in unit.
How many base units one unit held when the line was written.
What a person decided about the line's difference; null while nothing is decided.
Accepted values 5
SHORT_ACCEPTED-
Less arrived, and it is accepted.
OVER_ACCEPTED-
More arrived, and it is kept.
SHORT_CLAIMED-
Less arrived, and it is claimed from the supplier.
RETURNED-
It arrived and went back.
CANCELLED_REMAINDER-
The rest is not coming.
What arrived on open and completed receipts, in base units. Read only when selected.
What is still announced, in base units: baseQuantity less received, never below 0.
What is on draft receipts (scanned on a handheld or typed in the web), in base units: on its way in, not yet received.
Accepted values 3
AWAITINGPARTIALLY_RECEIVEDRECEIVED
The receipt lines that answered this line, on receipts that are not drafts, oldest first, paged 1..250. Needs receipt.read too: without it null with FORBIDDEN_ROLE at its path.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Text parameters in name order, paged with first/after or last/before (1..250).
Fields 4
Fields 2
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many parameters the record has (at most 32).
How far the work on the advice is, read off its receipts. A line is done when it arrived within the tolerance or its difference is settled. Batched per page.
Fields 7
How far the work on an instruction is, read off the documents executing it (linked by header or line; a CANCELLED one counts for nothing). Not a status and never a refusal: an instruction somebody is working on may still be changed. Times are the server's.
Lines with anything done or in progress.
Lines fully done: nothing remaining.
Lines with anything on a draft executing document (scanned or typed, not yet moved).
Lines still owed: remaining above zero while the instruction is OPEN; 0 once it is closed or cancelled.
Executing documents not finished: a draft (handheld or web) or an open continuous one. Above zero: somebody is working on it.
When the first linked executing document was created; null while nobody has started.
The latest change on a linked executing document or its scans; null while nobody has started.
The receipts answering the advice, newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Needs receipt.read too: without it null with FORBIDDEN_ROLE at its path. Filter them with the root receipts(filter: {receiptAdviceIds}).
Fields 4
Fields 2
One receipt and its cursor.
Where this receipt sits; pass as after (with first) or before (with last).
Fields 21
Goods that came into one warehouse.
The receipt's number. Every returned receipt has one.
Accepted values 3
OPEN-
Open: being received continuously. Its lines already applied are on stock and carry their value.
COMPLETED-
Completed. The events feed's
receipt.completed; inEvent.transitionsthe raw status code isPOSTED. CANCELLED-
Cancelled. Its lines net to zero: each line's value is 0.
The receipt's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again).
When the goods count as received.
How many times the completed receipt has been revised; 0 as completed.
The warehouse the goods came into. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission); outside the key's warehouse scope it is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served.
A warehouse. Needs warehouse.read.
The company the receipt belongs to; null when it belongs to none.
The supplier. Needs partner.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A supplier outside the key's partner scope is null with a FORBIDDEN_SCOPE error at its path (extensions.scope PARTNER). The rest is served. An erased supplier keeps its id and code, with name null.
A business partner: a customer, a supplier or both. Needs partner.read.
The receipt advice it answers; null for a receipt answering none. Needs advice.read: without it null with FORBIDDEN_ROLE at its path; outside the key's scope null. The rest is served.
The supplier's delivery note or invoice number.
The sum of the lines' values, without VAT; null while any line's costing is pending. A completed receipt can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
True while any line's costing is pending. A completed receipt can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this receipt's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a receipt's lines.
The records other systems made of this receipt (setReceiptExternalRef), at most one per source: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this receipt's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path.
One page of a record's external references.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Example
Query
query receiptAdvice($id: UUID!) {
receiptAdvice(id: $id) {
id
number
kind
status
state
supplierId
supplier {
id
code
name
registrationId
taxId
vatId
}
warehouseId
warehouse {
id
code
name
archivedAt
}
legalEntityId
supplierReference
advisedAt
expectedAt
currencyCode
pricesIncludeVat
note
openedAt
closedAt
cancelledAt
lines(first: 10) {
totalCount
}
parameters(first: 10) {
totalCount
}
progress {
linesStarted
linesDone
linesInProgress
linesRemaining
activeDocuments
startedAt
}
receipts(first: 10) {
totalCount
}
}
}
Variables
{"id": "00000000-0000-4000-8000-000000000001"}
Response
{
"data": {
"receiptAdvice": {
"id": "00000000-0000-4000-8000-000000000001",
"number": "example",
"kind": "DELIVERY_NOTE",
"status": "DRAFT",
"state": "DRAFT",
"supplierId": "00000000-0000-4000-8000-000000000001",
"supplier": {
"id": "00000000-0000-4000-8000-000000000001",
"code": "example",
"name": "example",
"registrationId": "example",
"taxId": "example",
"vatId": "example"
},
"warehouseId": "00000000-0000-4000-8000-000000000001",
"warehouse": {
"id": "00000000-0000-4000-8000-000000000001",
"code": "example",
"name": "example",
"archivedAt": "2026-01-01T00:00:00Z"
},
"legalEntityId": "00000000-0000-4000-8000-000000000001",
"supplierReference": "example",
"advisedAt": "2026-01-01T00:00:00Z",
"expectedAt": "2026-01-01T00:00:00Z",
"currencyCode": "example",
"pricesIncludeVat": true,
"note": "example",
"openedAt": "2026-01-01T00:00:00Z",
"closedAt": "2026-01-01T00:00:00Z",
"cancelledAt": "2026-01-01T00:00:00Z",
"lines": {"totalCount": 1},
"parameters": {"totalCount": 1},
"progress": {
"linesStarted": 1,
"linesDone": 1,
"linesInProgress": 1,
"linesRemaining": 1,
"activeDocuments": 1,
"startedAt": "2026-01-01T00:00:00Z"
},
"receipts": {"totalCount": 1}
}
}
}
receiptAdvices
Description
Receipt advices, newest advised first (advisedAt, then id), keyset paged: exactly one of first or last, 1 to 250. Drafts made in the ERP are listed too (status DRAFT, no number). Advices outside the key's warehouse, company or supplier scope are left out. Needs integration.read and advice.read.
Arguments
Input fields 15
A filter on receipt advice headers. Every supplied field narrows the result; an explicit empty list matches nothing. Each list holds at most 100 values.
Accepted values 4
DRAFT-
Being built in the ERP (an import still being matched). Has no number; never made here.
OPEN-
Expects its goods.
CLOSED-
Finished by a person once the differences were settled.
CANCELLED-
Called off before anything arrived. Keeps its number.
Accepted values 6
DRAFTAWAITING-
Open, and nothing has arrived on an open or completed receipt. A worker may already be scanning it into a draft receipt.
PARTIALLY_RECEIVED-
Open, something arrived, and a line is short past the tenant's receipt tolerance.
RECEIVED-
Open, and every line arrived within the tolerance (or over). Still open until a person closes it.
CLOSEDCANCELLED
Accepted values 4
DELIVERY_NOTESUPPLIER_INVOICEOTHERPURCHASE_ORDER-
Drawn from a purchase order in the ERP. Never accepted on create or update.
advisedAt at or after this instant.
advisedAt before this instant.
expectedAt at or after this instant (an advice with none never matches).
expectedAt at or before this instant.
The exact number or the supplier's reference.
Up to 8 exact name/value equalities combined with AND.
True: a receipt answering it is not finished (progress.activeDocuments > 0). False: none is.
True: work has started (progress.startedAt set). False: nobody has started.
The last activity is before this instant (advices nobody has started never match).
The last activity is at or after this instant.
Returns
Fields 2
Fields 23
PP-…, set when it opens; null on a DRAFT.
Accepted values 4
DELIVERY_NOTESUPPLIER_INVOICEOTHERPURCHASE_ORDER-
Drawn from a purchase order in the ERP. Never accepted on create or update.
Accepted values 4
DRAFT-
Being built in the ERP (an import still being matched). Has no number; never made here.
OPEN-
Expects its goods.
CLOSED-
Finished by a person once the differences were settled.
CANCELLED-
Called off before anything arrived. Keeps its number.
The status and what arrived combined. Read only when selected.
Accepted values 6
DRAFTAWAITING-
Open, and nothing has arrived on an open or completed receipt. A worker may already be scanning it into a draft receipt.
PARTIALLY_RECEIVED-
Open, something arrived, and a line is short past the tenant's receipt tolerance.
RECEIVED-
Open, and every line arrived within the tolerance (or over). Still open until a person closes it.
CLOSEDCANCELLED
The supplier. Needs partner.read: without it null with FORBIDDEN_ROLE at its path; the rest is served.
A business partner: a customer, a supplier or both. Needs partner.read.
The warehouse the goods are coming into. Needs warehouse.read, as Receipt.warehouse.
A warehouse. Needs warehouse.read.
The company the advice is filed under; null only on an older draft.
The announced lines, by line number. Page with first/after or last/before (1..250).
Text parameters in name order, paged with first/after or last/before (1..250).
How far the work on the advice is, read off its receipts. A line is done when it arrived within the tolerance or its difference is settled. Batched per page.
How far the work on an instruction is, read off the documents executing it (linked by header or line; a CANCELLED one counts for nothing). Not a status and never a refusal: an instruction somebody is working on may still be changed. Times are the server's.
The receipts answering the advice, newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Needs receipt.read too: without it null with FORBIDDEN_ROLE at its path. Filter them with the root receipts(filter: {receiptAdviceIds}).
Fields 23
PP-…, set when it opens; null on a DRAFT.
Accepted values 4
DELIVERY_NOTESUPPLIER_INVOICEOTHERPURCHASE_ORDER-
Drawn from a purchase order in the ERP. Never accepted on create or update.
Accepted values 4
DRAFT-
Being built in the ERP (an import still being matched). Has no number; never made here.
OPEN-
Expects its goods.
CLOSED-
Finished by a person once the differences were settled.
CANCELLED-
Called off before anything arrived. Keeps its number.
The status and what arrived combined. Read only when selected.
Accepted values 6
DRAFTAWAITING-
Open, and nothing has arrived on an open or completed receipt. A worker may already be scanning it into a draft receipt.
PARTIALLY_RECEIVED-
Open, something arrived, and a line is short past the tenant's receipt tolerance.
RECEIVED-
Open, and every line arrived within the tolerance (or over). Still open until a person closes it.
CLOSEDCANCELLED
The supplier. Needs partner.read: without it null with FORBIDDEN_ROLE at its path; the rest is served.
Fields 13
A business partner: a customer, a supplier or both. Needs partner.read.
Our id.
Our code of the partner.
Their name. Null once the partner is erased.
The company registration number (IČO). Null when unknown, and once the partner is erased.
The tax id (DIČ). Null when unknown, and once the partner is erased.
The VAT id (IČ DPH). Null when unknown, and once the partner is erased.
The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.
The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.
Whether we sell to them.
Whether we buy from them.
The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a partner's addresses of one kind.
The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a partner's addresses of one kind.
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a record's external references.
The warehouse the goods are coming into. Needs warehouse.read, as Receipt.warehouse.
The company the advice is filed under; null only on an older draft.
The announced lines, by line number. Page with first/after or last/before (1..250).
Fields 4
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Text parameters in name order, paged with first/after or last/before (1..250).
Fields 4
How many parameters the record has (at most 32).
How far the work on the advice is, read off its receipts. A line is done when it arrived within the tolerance or its difference is settled. Batched per page.
Fields 7
How far the work on an instruction is, read off the documents executing it (linked by header or line; a CANCELLED one counts for nothing). Not a status and never a refusal: an instruction somebody is working on may still be changed. Times are the server's.
Lines with anything done or in progress.
Lines fully done: nothing remaining.
Lines with anything on a draft executing document (scanned or typed, not yet moved).
Lines still owed: remaining above zero while the instruction is OPEN; 0 once it is closed or cancelled.
Executing documents not finished: a draft (handheld or web) or an open continuous one. Above zero: somebody is working on it.
When the first linked executing document was created; null while nobody has started.
The latest change on a linked executing document or its scans; null while nobody has started.
The receipts answering the advice, newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Needs receipt.read too: without it null with FORBIDDEN_ROLE at its path. Filter them with the root receipts(filter: {receiptAdviceIds}).
Fields 4
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
Example
Query
query receiptAdvices($first: Int) {
receiptAdvices(first: $first) {
edges {
cursor
}
nodes {
id
number
kind
status
state
supplierId
}
pageInfo {
hasNextPage
hasPreviousPage
startCursor
endCursor
}
}
}
Variables
{"first": 10}
Response
{
"data": {
"receiptAdvices": {
"edges": [{"cursor": "example"}],
"nodes": [
{
"id": "00000000-0000-4000-8000-000000000001",
"number": "example",
"kind": "DELIVERY_NOTE",
"status": "DRAFT",
"state": "DRAFT",
"supplierId": "00000000-0000-4000-8000-000000000001"
}
],
"pageInfo": {
"hasNextPage": true,
"hasPreviousPage": true,
"startCursor": "example",
"endCursor": "example"
}
}
}
}
receipts
Description
Receipts, filtered, newest first by effectiveAt (then by when they were created, then id). There is no total count. Drafts are never returned. Receipts outside the key's warehouse or legal-entity scope are left out. Needs integration.read and receipt.read.
filter.ids names at most 50 receipts; an id that does not exist, is not a receipt, is a draft or is outside the key's scope is simply not returned -- never an error.
Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward; last alone is the oldest page. Every edge carries its own cursor. A page is priced at the number asked times one receipt's selection.
Arguments
Input fields 7
Which receipts the query returns. Every field narrows; an omitted (or null) one matches all, and an empty list matches none.
These receipts, at most 50. Ids that are not returnable are simply absent.
Receipts in any of these states; all three when omitted.
Accepted values 3
OPEN-
Open: being received continuously. Its lines already applied are on stock and carry their value.
COMPLETED-
Completed. The events feed's
receipt.completed; inEvent.transitionsthe raw status code isPOSTED. CANCELLED-
Cancelled. Its lines net to zero: each line's value is 0.
Receipts into any of these warehouses. At most 50.
Receipts effective at or after this instant.
Receipts effective before this instant (exclusive).
Receipts with any of these origins.
Accepted values 3
MANUAL-
Entered directly, from nothing else.
ADVICE-
Received against an advice (a supplier's announced delivery).
STOCKTAKE-
A stocktake's surplus.
Receipts answering any of these receipt advices. At most 50.
Returns
One page of receipts.
The receipts with their cursors, newest first by effectiveAt.
Fields 2
One receipt and its cursor.
Where this receipt sits; pass as after (with first) or before (with last).
Fields 21
Goods that came into one warehouse.
The receipt's number. Every returned receipt has one.
Accepted values 3
OPEN-
Open: being received continuously. Its lines already applied are on stock and carry their value.
COMPLETED-
Completed. The events feed's
receipt.completed; inEvent.transitionsthe raw status code isPOSTED. CANCELLED-
Cancelled. Its lines net to zero: each line's value is 0.
The receipt's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again).
When the goods count as received.
How many times the completed receipt has been revised; 0 as completed.
The warehouse the goods came into. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission); outside the key's warehouse scope it is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served.
A warehouse. Needs warehouse.read.
The company the receipt belongs to; null when it belongs to none.
The supplier. Needs partner.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A supplier outside the key's partner scope is null with a FORBIDDEN_SCOPE error at its path (extensions.scope PARTNER). The rest is served. An erased supplier keeps its id and code, with name null.
A business partner: a customer, a supplier or both. Needs partner.read.
The receipt advice it answers; null for a receipt answering none. Needs advice.read: without it null with FORBIDDEN_ROLE at its path; outside the key's scope null. The rest is served.
The supplier's delivery note or invoice number.
The sum of the lines' values, without VAT; null while any line's costing is pending. A completed receipt can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
True while any line's costing is pending. A completed receipt can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this receipt's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a receipt's lines.
The records other systems made of this receipt (setReceiptExternalRef), at most one per source: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this receipt's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path.
One page of a record's external references.
The same receipts without cursors.
Fields 21
Goods that came into one warehouse.
The receipt's number. Every returned receipt has one.
Accepted values 3
OPEN-
Open: being received continuously. Its lines already applied are on stock and carry their value.
COMPLETED-
Completed. The events feed's
receipt.completed; inEvent.transitionsthe raw status code isPOSTED. CANCELLED-
Cancelled. Its lines net to zero: each line's value is 0.
The receipt's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again).
When the goods count as received.
How many times the completed receipt has been revised; 0 as completed.
The warehouse the goods came into. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission); outside the key's warehouse scope it is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served.
The company the receipt belongs to; null when it belongs to none.
The supplier. Needs partner.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A supplier outside the key's partner scope is null with a FORBIDDEN_SCOPE error at its path (extensions.scope PARTNER). The rest is served. An erased supplier keeps its id and code, with name null.
Fields 13
A business partner: a customer, a supplier or both. Needs partner.read.
Our id.
Our code of the partner.
Their name. Null once the partner is erased.
The company registration number (IČO). Null when unknown, and once the partner is erased.
The tax id (DIČ). Null when unknown, and once the partner is erased.
The VAT id (IČ DPH). Null when unknown, and once the partner is erased.
The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.
The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.
Whether we sell to them.
Whether we buy from them.
The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a partner's addresses of one kind.
The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a partner's addresses of one kind.
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a record's external references.
Fields 2
What a receipt was created from.
Accepted values 3
MANUAL-
Entered directly, from nothing else.
ADVICE-
Received against an advice (a supplier's announced delivery).
STOCKTAKE-
A stocktake's surplus.
The advice or stocktake; null for MANUAL.
The receipt advice it answers; null for a receipt answering none. Needs advice.read: without it null with FORBIDDEN_ROLE at its path; outside the key's scope null. The rest is served.
Fields 23
PP-…, set when it opens; null on a DRAFT.
Accepted values 4
DELIVERY_NOTESUPPLIER_INVOICEOTHERPURCHASE_ORDER-
Drawn from a purchase order in the ERP. Never accepted on create or update.
Accepted values 4
DRAFT-
Being built in the ERP (an import still being matched). Has no number; never made here.
OPEN-
Expects its goods.
CLOSED-
Finished by a person once the differences were settled.
CANCELLED-
Called off before anything arrived. Keeps its number.
The status and what arrived combined. Read only when selected.
Accepted values 6
DRAFTAWAITING-
Open, and nothing has arrived on an open or completed receipt. A worker may already be scanning it into a draft receipt.
PARTIALLY_RECEIVED-
Open, something arrived, and a line is short past the tenant's receipt tolerance.
RECEIVED-
Open, and every line arrived within the tolerance (or over). Still open until a person closes it.
CLOSEDCANCELLED
The supplier. Needs partner.read: without it null with FORBIDDEN_ROLE at its path; the rest is served.
A business partner: a customer, a supplier or both. Needs partner.read.
The warehouse the goods are coming into. Needs warehouse.read, as Receipt.warehouse.
A warehouse. Needs warehouse.read.
The company the advice is filed under; null only on an older draft.
The announced lines, by line number. Page with first/after or last/before (1..250).
Text parameters in name order, paged with first/after or last/before (1..250).
How far the work on the advice is, read off its receipts. A line is done when it arrived within the tolerance or its difference is settled. Batched per page.
How far the work on an instruction is, read off the documents executing it (linked by header or line; a CANCELLED one counts for nothing). Not a status and never a refusal: an instruction somebody is working on may still be changed. Times are the server's.
The receipts answering the advice, newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Needs receipt.read too: without it null with FORBIDDEN_ROLE at its path. Filter them with the root receipts(filter: {receiptAdviceIds}).
The supplier's delivery note or invoice number.
The sum of the lines' values, without VAT; null while any line's costing is pending. A completed receipt can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
True while any line's costing is pending. A completed receipt can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this receipt's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of a receipt's lines.
The lines with their cursors, by line number.
One line and its cursor.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many lines the receipt has, capped at 10001: 10001 reads "10000 or more".
The records other systems made of this receipt (setReceiptExternalRef), at most one per source: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this receipt's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path.
Fields 4
One page of a record's external references.
The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.
One reference and its cursor.
The same references without cursors.
An id another system knows a record by.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many references the record has.
Where the page sits, and the cursors to the next and previous pages.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
Example
Query
query receipts($first: Int) {
receipts(first: $first) {
edges {
cursor
}
nodes {
id
number
status
version
effectiveAt
completedAt
}
pageInfo {
hasNextPage
hasPreviousPage
startCursor
endCursor
}
}
}
Variables
{"first": 10}
Response
{
"data": {
"receipts": {
"edges": [{"cursor": "example"}],
"nodes": [
{
"id": "00000000-0000-4000-8000-000000000001",
"number": "example",
"status": "OPEN",
"version": 1,
"effectiveAt": "2026-01-01T00:00:00Z",
"completedAt": "2026-01-01T00:00:00Z"
}
],
"pageInfo": {
"hasNextPage": true,
"hasPreviousPage": true,
"startCursor": "example",
"endCursor": "example"
}
}
}
}
cancelReceiptAdvice
Description
Cancel an OPEN advice no receipt answers (a draft receipt included); it keeps its number. Same permissions as updateReceiptAdvice. Refused with CONFLICT otherwise: an advice goods arrived against is closed in the ERP once its differences are settled.
Arguments
Returns
PP-…, set when it opens; null on a DRAFT.
Accepted values 4
DELIVERY_NOTESUPPLIER_INVOICEOTHERPURCHASE_ORDER-
Drawn from a purchase order in the ERP. Never accepted on create or update.
Accepted values 4
DRAFT-
Being built in the ERP (an import still being matched). Has no number; never made here.
OPEN-
Expects its goods.
CLOSED-
Finished by a person once the differences were settled.
CANCELLED-
Called off before anything arrived. Keeps its number.
The status and what arrived combined. Read only when selected.
Accepted values 6
DRAFTAWAITING-
Open, and nothing has arrived on an open or completed receipt. A worker may already be scanning it into a draft receipt.
PARTIALLY_RECEIVED-
Open, something arrived, and a line is short past the tenant's receipt tolerance.
RECEIVED-
Open, and every line arrived within the tolerance (or over). Still open until a person closes it.
CLOSEDCANCELLED
The supplier. Needs partner.read: without it null with FORBIDDEN_ROLE at its path; the rest is served.
Fields 13
A business partner: a customer, a supplier or both. Needs partner.read.
Our id.
Our code of the partner.
Their name. Null once the partner is erased.
The company registration number (IČO). Null when unknown, and once the partner is erased.
The tax id (DIČ). Null when unknown, and once the partner is erased.
The VAT id (IČ DPH). Null when unknown, and once the partner is erased.
The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.
The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.
Whether we sell to them.
Whether we buy from them.
The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of a partner's addresses of one kind.
The addresses with their cursors, the default first.
One address and its cursor.
The same addresses without cursors.
A postal address in a partner's address book. id names this VERSION: editing an address that a document pinned makes a new version with a new id, and the document keeps the old one.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many current addresses of this kind the partner has, capped at 10001: 10001 reads "10000 or more". 0 once the partner is erased.
The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of a partner's addresses of one kind.
The addresses with their cursors, the default first.
One address and its cursor.
The same addresses without cursors.
A postal address in a partner's address book. id names this VERSION: editing an address that a document pinned makes a new version with a new id, and the document keeps the old one.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many current addresses of this kind the partner has, capped at 10001: 10001 reads "10000 or more". 0 once the partner is erased.
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of a record's external references.
The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.
One reference and its cursor.
The same references without cursors.
An id another system knows a record by.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many references the record has.
The warehouse the goods are coming into. Needs warehouse.read, as Receipt.warehouse.
The company the advice is filed under; null only on an older draft.
The announced lines, by line number. Page with first/after or last/before (1..250).
Fields 4
Fields 20
The product variant; null only on a DRAFT line the ERP has not matched yet.
The supplier's own code of the item.
The quantity as announced, in unit.
How many base units one unit held when the line was written.
What a person decided about the line's difference; null while nothing is decided.
Accepted values 5
SHORT_ACCEPTED-
Less arrived, and it is accepted.
OVER_ACCEPTED-
More arrived, and it is kept.
SHORT_CLAIMED-
Less arrived, and it is claimed from the supplier.
RETURNED-
It arrived and went back.
CANCELLED_REMAINDER-
The rest is not coming.
What arrived on open and completed receipts, in base units. Read only when selected.
What is still announced, in base units: baseQuantity less received, never below 0.
What is on draft receipts (scanned on a handheld or typed in the web), in base units: on its way in, not yet received.
Accepted values 3
AWAITINGPARTIALLY_RECEIVEDRECEIVED
The receipt lines that answered this line, on receipts that are not drafts, oldest first, paged 1..250. Needs receipt.read too: without it null with FORBIDDEN_ROLE at its path.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Text parameters in name order, paged with first/after or last/before (1..250).
Fields 4
Fields 2
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many parameters the record has (at most 32).
How far the work on the advice is, read off its receipts. A line is done when it arrived within the tolerance or its difference is settled. Batched per page.
Fields 7
How far the work on an instruction is, read off the documents executing it (linked by header or line; a CANCELLED one counts for nothing). Not a status and never a refusal: an instruction somebody is working on may still be changed. Times are the server's.
Lines with anything done or in progress.
Lines fully done: nothing remaining.
Lines with anything on a draft executing document (scanned or typed, not yet moved).
Lines still owed: remaining above zero while the instruction is OPEN; 0 once it is closed or cancelled.
Executing documents not finished: a draft (handheld or web) or an open continuous one. Above zero: somebody is working on it.
When the first linked executing document was created; null while nobody has started.
The latest change on a linked executing document or its scans; null while nobody has started.
The receipts answering the advice, newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Needs receipt.read too: without it null with FORBIDDEN_ROLE at its path. Filter them with the root receipts(filter: {receiptAdviceIds}).
Fields 4
Fields 2
One receipt and its cursor.
Where this receipt sits; pass as after (with first) or before (with last).
Fields 21
Goods that came into one warehouse.
The receipt's number. Every returned receipt has one.
Accepted values 3
OPEN-
Open: being received continuously. Its lines already applied are on stock and carry their value.
COMPLETED-
Completed. The events feed's
receipt.completed; inEvent.transitionsthe raw status code isPOSTED. CANCELLED-
Cancelled. Its lines net to zero: each line's value is 0.
The receipt's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again).
When the goods count as received.
How many times the completed receipt has been revised; 0 as completed.
The warehouse the goods came into. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission); outside the key's warehouse scope it is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served.
A warehouse. Needs warehouse.read.
The company the receipt belongs to; null when it belongs to none.
The supplier. Needs partner.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A supplier outside the key's partner scope is null with a FORBIDDEN_SCOPE error at its path (extensions.scope PARTNER). The rest is served. An erased supplier keeps its id and code, with name null.
A business partner: a customer, a supplier or both. Needs partner.read.
The receipt advice it answers; null for a receipt answering none. Needs advice.read: without it null with FORBIDDEN_ROLE at its path; outside the key's scope null. The rest is served.
The supplier's delivery note or invoice number.
The sum of the lines' values, without VAT; null while any line's costing is pending. A completed receipt can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
True while any line's costing is pending. A completed receipt can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this receipt's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a receipt's lines.
The records other systems made of this receipt (setReceiptExternalRef), at most one per source: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this receipt's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path.
One page of a record's external references.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Example
Mutation
mutation cancelReceiptAdvice($id: UUID!) {
cancelReceiptAdvice(id: $id) {
id
number
kind
status
state
supplierId
supplier {
id
code
name
registrationId
taxId
vatId
}
warehouseId
warehouse {
id
code
name
archivedAt
}
legalEntityId
supplierReference
advisedAt
expectedAt
currencyCode
pricesIncludeVat
note
openedAt
closedAt
cancelledAt
lines(first: 10) {
totalCount
}
parameters(first: 10) {
totalCount
}
progress {
linesStarted
linesDone
linesInProgress
linesRemaining
activeDocuments
startedAt
}
receipts(first: 10) {
totalCount
}
}
}
Variables
{"id": "00000000-0000-4000-8000-000000000001"}
Response
{
"data": {
"cancelReceiptAdvice": {
"id": "00000000-0000-4000-8000-000000000001",
"number": "example",
"kind": "DELIVERY_NOTE",
"status": "DRAFT",
"state": "DRAFT",
"supplierId": "00000000-0000-4000-8000-000000000001",
"supplier": {
"id": "00000000-0000-4000-8000-000000000001",
"code": "example",
"name": "example",
"registrationId": "example",
"taxId": "example",
"vatId": "example"
},
"warehouseId": "00000000-0000-4000-8000-000000000001",
"warehouse": {
"id": "00000000-0000-4000-8000-000000000001",
"code": "example",
"name": "example",
"archivedAt": "2026-01-01T00:00:00Z"
},
"legalEntityId": "00000000-0000-4000-8000-000000000001",
"supplierReference": "example",
"advisedAt": "2026-01-01T00:00:00Z",
"expectedAt": "2026-01-01T00:00:00Z",
"currencyCode": "example",
"pricesIncludeVat": true,
"note": "example",
"openedAt": "2026-01-01T00:00:00Z",
"closedAt": "2026-01-01T00:00:00Z",
"cancelledAt": "2026-01-01T00:00:00Z",
"lines": {"totalCount": 1},
"parameters": {"totalCount": 1},
"progress": {
"linesStarted": 1,
"linesDone": 1,
"linesInProgress": 1,
"linesRemaining": 1,
"activeDocuments": 1,
"startedAt": "2026-01-01T00:00:00Z"
},
"receipts": {"totalCount": 1}
}
}
}
createReceiptAdvice
Description
Create and open one receipt advice atomically: it is numbered (PP-) and expects its goods at once. A failed call creates no draft and takes no number. Every line names its product variant. The requestId makes a retry after a lost response safe: the same input returns created false, while different input returns CONFLICT with reason REQUEST_ID_REUSED. Needs integration.read and advice.write, with the warehouse, the company and the supplier in scope. The currency must be the warehouse's valuation currency (VALIDATION with reason CURRENCY_MISMATCH otherwise). A failed line names its index in extensions.addIndex.
Arguments
Input fields 12
An opaque, tenant-unique idempotency key, 1 to 128 bytes.
The one warehouse the goods are coming into.
Accepted values 4
DELIVERY_NOTESUPPLIER_INVOICEOTHERPURCHASE_ORDER-
Drawn from a purchase order in the ERP. Never accepted on create or update.
The supplier's delivery note or invoice number, to quote back.
The advice's own date, which its number's year is drawn from. Omitted: now.
When the goods are due.
ISO 4217. Omitted: the warehouse company's currency.
Whether the line prices include VAT. Omitted: false.
A note for the receiving desk.
One to 100 lines.
Input fields 11
Positive, in unit.
A unit the variant defines (a carton). Omitted: the item's base unit.
Per unit, in the advice's currency; with or without VAT as the advice says.
The batch the supplier's paperwork names; it prefills the receipt.
The expiry the paperwork names; its UTC date is kept.
The serial the paperwork names. A serial names one piece: the line's base quantity must be 1.
The supplier's own code of the item.
Up to 32 short text parameters, such as workflow_id and run_id.
Returns
False: a replay of an earlier call with the same requestId and input.
Fields 23
PP-…, set when it opens; null on a DRAFT.
Accepted values 4
DELIVERY_NOTESUPPLIER_INVOICEOTHERPURCHASE_ORDER-
Drawn from a purchase order in the ERP. Never accepted on create or update.
Accepted values 4
DRAFT-
Being built in the ERP (an import still being matched). Has no number; never made here.
OPEN-
Expects its goods.
CLOSED-
Finished by a person once the differences were settled.
CANCELLED-
Called off before anything arrived. Keeps its number.
The status and what arrived combined. Read only when selected.
Accepted values 6
DRAFTAWAITING-
Open, and nothing has arrived on an open or completed receipt. A worker may already be scanning it into a draft receipt.
PARTIALLY_RECEIVED-
Open, something arrived, and a line is short past the tenant's receipt tolerance.
RECEIVED-
Open, and every line arrived within the tolerance (or over). Still open until a person closes it.
CLOSEDCANCELLED
The supplier. Needs partner.read: without it null with FORBIDDEN_ROLE at its path; the rest is served.
Fields 13
A business partner: a customer, a supplier or both. Needs partner.read.
Our id.
Our code of the partner.
Their name. Null once the partner is erased.
The company registration number (IČO). Null when unknown, and once the partner is erased.
The tax id (DIČ). Null when unknown, and once the partner is erased.
The VAT id (IČ DPH). Null when unknown, and once the partner is erased.
The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.
The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.
Whether we sell to them.
Whether we buy from them.
The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a partner's addresses of one kind.
The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a partner's addresses of one kind.
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a record's external references.
The warehouse the goods are coming into. Needs warehouse.read, as Receipt.warehouse.
The company the advice is filed under; null only on an older draft.
The announced lines, by line number. Page with first/after or last/before (1..250).
Fields 4
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Text parameters in name order, paged with first/after or last/before (1..250).
Fields 4
How many parameters the record has (at most 32).
How far the work on the advice is, read off its receipts. A line is done when it arrived within the tolerance or its difference is settled. Batched per page.
Fields 7
How far the work on an instruction is, read off the documents executing it (linked by header or line; a CANCELLED one counts for nothing). Not a status and never a refusal: an instruction somebody is working on may still be changed. Times are the server's.
Lines with anything done or in progress.
Lines fully done: nothing remaining.
Lines with anything on a draft executing document (scanned or typed, not yet moved).
Lines still owed: remaining above zero while the instruction is OPEN; 0 once it is closed or cancelled.
Executing documents not finished: a draft (handheld or web) or an open continuous one. Above zero: somebody is working on it.
When the first linked executing document was created; null while nobody has started.
The latest change on a linked executing document or its scans; null while nobody has started.
The receipts answering the advice, newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Needs receipt.read too: without it null with FORBIDDEN_ROLE at its path. Filter them with the root receipts(filter: {receiptAdviceIds}).
Fields 4
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Example
Mutation
mutation createReceiptAdvice($input: CreateReceiptAdviceInput!) {
createReceiptAdvice(input: $input) {
created
advice {
id
number
kind
status
state
supplierId
}
}
}
Variables
{
"input": {
"requestId": "example",
"supplierId": "00000000-0000-4000-8000-000000000001",
"warehouseId": "00000000-0000-4000-8000-000000000001",
"kind": "DELIVERY_NOTE",
"lines": [
{"variantId": "00000000-0000-4000-8000-000000000001", "quantity": "10.00"}
]
}
}
Response
{
"data": {
"createReceiptAdvice": {
"created": true,
"advice": {
"id": "00000000-0000-4000-8000-000000000001",
"number": "example",
"kind": "DELIVERY_NOTE",
"status": "DRAFT",
"state": "DRAFT",
"supplierId": "00000000-0000-4000-8000-000000000001"
}
}
}
}
removeReceiptExternalRef
Description
Removes the receipt's reference in a source; changed: false when it had none. An archived source still answers. Permissions, NOT_FOUND and errors below this field as setReceiptExternalRef.
Returns
What setReceiptExternalRef and removeReceiptExternalRef answer.
The receipt, as it now stands.
Fields 21
Goods that came into one warehouse.
The receipt's number. Every returned receipt has one.
Accepted values 3
OPEN-
Open: being received continuously. Its lines already applied are on stock and carry their value.
COMPLETED-
Completed. The events feed's
receipt.completed; inEvent.transitionsthe raw status code isPOSTED. CANCELLED-
Cancelled. Its lines net to zero: each line's value is 0.
The receipt's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again).
When the goods count as received.
How many times the completed receipt has been revised; 0 as completed.
The warehouse the goods came into. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission); outside the key's warehouse scope it is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served.
The company the receipt belongs to; null when it belongs to none.
The supplier. Needs partner.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A supplier outside the key's partner scope is null with a FORBIDDEN_SCOPE error at its path (extensions.scope PARTNER). The rest is served. An erased supplier keeps its id and code, with name null.
Fields 13
A business partner: a customer, a supplier or both. Needs partner.read.
Our id.
Our code of the partner.
Their name. Null once the partner is erased.
The company registration number (IČO). Null when unknown, and once the partner is erased.
The tax id (DIČ). Null when unknown, and once the partner is erased.
The VAT id (IČ DPH). Null when unknown, and once the partner is erased.
The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.
The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.
Whether we sell to them.
Whether we buy from them.
The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a partner's addresses of one kind.
The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a partner's addresses of one kind.
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a record's external references.
Fields 2
What a receipt was created from.
Accepted values 3
MANUAL-
Entered directly, from nothing else.
ADVICE-
Received against an advice (a supplier's announced delivery).
STOCKTAKE-
A stocktake's surplus.
The advice or stocktake; null for MANUAL.
The receipt advice it answers; null for a receipt answering none. Needs advice.read: without it null with FORBIDDEN_ROLE at its path; outside the key's scope null. The rest is served.
Fields 23
PP-…, set when it opens; null on a DRAFT.
Accepted values 4
DELIVERY_NOTESUPPLIER_INVOICEOTHERPURCHASE_ORDER-
Drawn from a purchase order in the ERP. Never accepted on create or update.
Accepted values 4
DRAFT-
Being built in the ERP (an import still being matched). Has no number; never made here.
OPEN-
Expects its goods.
CLOSED-
Finished by a person once the differences were settled.
CANCELLED-
Called off before anything arrived. Keeps its number.
The status and what arrived combined. Read only when selected.
Accepted values 6
DRAFTAWAITING-
Open, and nothing has arrived on an open or completed receipt. A worker may already be scanning it into a draft receipt.
PARTIALLY_RECEIVED-
Open, something arrived, and a line is short past the tenant's receipt tolerance.
RECEIVED-
Open, and every line arrived within the tolerance (or over). Still open until a person closes it.
CLOSEDCANCELLED
The supplier. Needs partner.read: without it null with FORBIDDEN_ROLE at its path; the rest is served.
A business partner: a customer, a supplier or both. Needs partner.read.
The warehouse the goods are coming into. Needs warehouse.read, as Receipt.warehouse.
A warehouse. Needs warehouse.read.
The company the advice is filed under; null only on an older draft.
The announced lines, by line number. Page with first/after or last/before (1..250).
Text parameters in name order, paged with first/after or last/before (1..250).
How far the work on the advice is, read off its receipts. A line is done when it arrived within the tolerance or its difference is settled. Batched per page.
How far the work on an instruction is, read off the documents executing it (linked by header or line; a CANCELLED one counts for nothing). Not a status and never a refusal: an instruction somebody is working on may still be changed. Times are the server's.
The receipts answering the advice, newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Needs receipt.read too: without it null with FORBIDDEN_ROLE at its path. Filter them with the root receipts(filter: {receiptAdviceIds}).
The supplier's delivery note or invoice number.
The sum of the lines' values, without VAT; null while any line's costing is pending. A completed receipt can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
True while any line's costing is pending. A completed receipt can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this receipt's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of a receipt's lines.
The lines with their cursors, by line number.
One line and its cursor.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many lines the receipt has, capped at 10001: 10001 reads "10000 or more".
The records other systems made of this receipt (setReceiptExternalRef), at most one per source: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this receipt's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path.
Fields 4
One page of a record's external references.
The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.
One reference and its cursor.
The same references without cursors.
An id another system knows a record by.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many references the record has.
False when the call changed nothing: a repeat.
Example
Mutation
mutation removeReceiptExternalRef($id: UUID!, $source: String!) {
removeReceiptExternalRef(id: $id, source: $source) {
receipt {
id
number
status
version
effectiveAt
completedAt
}
changed
}
}
Variables
{"id": "00000000-0000-4000-8000-000000000001", "source": "example"}
Response
{
"data": {
"removeReceiptExternalRef": {
"receipt": {
"id": "00000000-0000-4000-8000-000000000001",
"number": "example",
"status": "OPEN",
"version": 1,
"effectiveAt": "2026-01-01T00:00:00Z",
"completedAt": "2026-01-01T00:00:00Z"
},
"changed": true
}
}
}
setReceiptExternalRef
Description
Records the receipt's one reference in a source: the record another system made of it (an OBERON note -- its GUID as externalId, its number as externalNumber). A different externalId replaces the receipt's earlier reference in that source; the same one with the same number is a repeat and answers changed: false. Writes no event and no revision of the receipt.
Needs integration.read, receipt.read and receipt.write, with the receipt in scope. NOT_FOUND when there is no such receipt, it is a draft or the key may not see it; NOT_FOUND with extensions.reason SOURCE_NOT_FOUND (field input.source) when there is no such source. CONFLICT with extensions.reason SOURCE_ARCHIVED for an archived source, REF_TAKEN when another receipt holds that externalId in the source. VALIDATION (field input.externalId or input.externalNumber) for a blank id or one too long.
An error whose path runs below this field while its result is in data is a field the key may not read, or a nested page that failed -- not a failed call: the reference was recorded, and changed is in data, so do not retry. Retry rules apply only when this field itself is null with an error at its own path.
Arguments
Input fields 3
The reference a receipt or an issue gets: the record another system made of it.
Returns
What setReceiptExternalRef and removeReceiptExternalRef answer.
The receipt, as it now stands.
Fields 21
Goods that came into one warehouse.
The receipt's number. Every returned receipt has one.
Accepted values 3
OPEN-
Open: being received continuously. Its lines already applied are on stock and carry their value.
COMPLETED-
Completed. The events feed's
receipt.completed; inEvent.transitionsthe raw status code isPOSTED. CANCELLED-
Cancelled. Its lines net to zero: each line's value is 0.
The receipt's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again).
When the goods count as received.
How many times the completed receipt has been revised; 0 as completed.
The warehouse the goods came into. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission); outside the key's warehouse scope it is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served.
The company the receipt belongs to; null when it belongs to none.
The supplier. Needs partner.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A supplier outside the key's partner scope is null with a FORBIDDEN_SCOPE error at its path (extensions.scope PARTNER). The rest is served. An erased supplier keeps its id and code, with name null.
Fields 13
A business partner: a customer, a supplier or both. Needs partner.read.
Our id.
Our code of the partner.
Their name. Null once the partner is erased.
The company registration number (IČO). Null when unknown, and once the partner is erased.
The tax id (DIČ). Null when unknown, and once the partner is erased.
The VAT id (IČ DPH). Null when unknown, and once the partner is erased.
The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.
The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.
Whether we sell to them.
Whether we buy from them.
The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a partner's addresses of one kind.
The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a partner's addresses of one kind.
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a record's external references.
Fields 2
What a receipt was created from.
Accepted values 3
MANUAL-
Entered directly, from nothing else.
ADVICE-
Received against an advice (a supplier's announced delivery).
STOCKTAKE-
A stocktake's surplus.
The advice or stocktake; null for MANUAL.
The receipt advice it answers; null for a receipt answering none. Needs advice.read: without it null with FORBIDDEN_ROLE at its path; outside the key's scope null. The rest is served.
Fields 23
PP-…, set when it opens; null on a DRAFT.
Accepted values 4
DELIVERY_NOTESUPPLIER_INVOICEOTHERPURCHASE_ORDER-
Drawn from a purchase order in the ERP. Never accepted on create or update.
Accepted values 4
DRAFT-
Being built in the ERP (an import still being matched). Has no number; never made here.
OPEN-
Expects its goods.
CLOSED-
Finished by a person once the differences were settled.
CANCELLED-
Called off before anything arrived. Keeps its number.
The status and what arrived combined. Read only when selected.
Accepted values 6
DRAFTAWAITING-
Open, and nothing has arrived on an open or completed receipt. A worker may already be scanning it into a draft receipt.
PARTIALLY_RECEIVED-
Open, something arrived, and a line is short past the tenant's receipt tolerance.
RECEIVED-
Open, and every line arrived within the tolerance (or over). Still open until a person closes it.
CLOSEDCANCELLED
The supplier. Needs partner.read: without it null with FORBIDDEN_ROLE at its path; the rest is served.
A business partner: a customer, a supplier or both. Needs partner.read.
The warehouse the goods are coming into. Needs warehouse.read, as Receipt.warehouse.
A warehouse. Needs warehouse.read.
The company the advice is filed under; null only on an older draft.
The announced lines, by line number. Page with first/after or last/before (1..250).
Text parameters in name order, paged with first/after or last/before (1..250).
How far the work on the advice is, read off its receipts. A line is done when it arrived within the tolerance or its difference is settled. Batched per page.
How far the work on an instruction is, read off the documents executing it (linked by header or line; a CANCELLED one counts for nothing). Not a status and never a refusal: an instruction somebody is working on may still be changed. Times are the server's.
The receipts answering the advice, newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Needs receipt.read too: without it null with FORBIDDEN_ROLE at its path. Filter them with the root receipts(filter: {receiptAdviceIds}).
The supplier's delivery note or invoice number.
The sum of the lines' values, without VAT; null while any line's costing is pending. A completed receipt can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
True while any line's costing is pending. A completed receipt can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this receipt's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of a receipt's lines.
The lines with their cursors, by line number.
One line and its cursor.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many lines the receipt has, capped at 10001: 10001 reads "10000 or more".
The records other systems made of this receipt (setReceiptExternalRef), at most one per source: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this receipt's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path.
Fields 4
One page of a record's external references.
The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.
One reference and its cursor.
The same references without cursors.
An id another system knows a record by.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many references the record has.
False when the call changed nothing: a repeat.
Example
Mutation
mutation setReceiptExternalRef($id: UUID!, $input: StockDocumentExternalRefInput!) {
setReceiptExternalRef(id: $id, input: $input) {
receipt {
id
number
status
version
effectiveAt
completedAt
}
changed
}
}
Variables
{
"id": "00000000-0000-4000-8000-000000000001",
"input": {"source": "example", "externalId": "example"}
}
Response
{
"data": {
"setReceiptExternalRef": {
"receipt": {
"id": "00000000-0000-4000-8000-000000000001",
"number": "example",
"status": "OPEN",
"version": 1,
"effectiveAt": "2026-01-01T00:00:00Z",
"completedAt": "2026-01-01T00:00:00Z"
},
"changed": true
}
}
}
updateReceiptAdvice
Description
Change an OPEN advice in one transaction, all or nothing: removeLineIds, updateLines and addLines in that order, then header terms, then parameters. A failed item names its list's index in extensions.removeIndex, updateIndex or addIndex. A line goods arrived against keeps its unit and may not drop below what arrived; a line whose difference is settled keeps its quantity; a line a receipt or a handheld scan answers cannot be removed; the advice keeps at least one line (judged after the whole call, CONFLICT with reason ADVICE_LAST_LINE). The supplier, the warehouse and the currency are fixed. A closed or cancelled advice is CONFLICT with reason ADVICE_NOT_OPEN. The requestId makes a retry after a lost response safe: the same requestId and input answers applied false with the advice as it is now (even if it has closed since), changing nothing; the same requestId with other input, or on another advice, is CONFLICT with reason REQUEST_ID_REUSED. AWAITING does not mean nobody works on it: a warehouse worker may already be scanning it into a draft receipt. Needs integration.read, advice.write and advice.read, with the advice in scope.
Arguments
Input fields 10
An opaque, tenant-unique idempotency key for this change, 1 to 128 bytes. A new key for every intended change.
Omitted: unchanged. Never PURCHASE_ORDER.
Accepted values 4
DELIVERY_NOTESUPPLIER_INVOICEOTHERPURCHASE_ORDER-
Drawn from a purchase order in the ERP. Never accepted on create or update.
Omitted: unchanged. Null: cleared.
Omitted: unchanged. Null is refused.
Omitted: unchanged. Null: cleared.
Omitted: unchanged. Null: cleared.
Up to 100 lines to remove.
Up to 100 line changes.
Input fields 11
One line's change: an omitted field is unchanged, a null one cleared.
Positive, in the line's unit (the new one when unit changes it). Omitted: unchanged.
Omitted: unchanged. Refused once goods arrived against the line in its unit.
Up to 100 new lines, as on create.
Input fields 11
Positive, in unit.
A unit the variant defines (a carton). Omitted: the item's base unit.
Per unit, in the advice's currency; with or without VAT as the advice says.
The batch the supplier's paperwork names; it prefills the receipt.
The expiry the paperwork names; its UTC date is kept.
The serial the paperwork names. A serial names one piece: the line's base quantity must be 1.
The supplier's own code of the item.
Input fields 2
Set and remove parameters by name in one atomic change; a name may occur once across both.
Up to 32 values to set; setting a current value changes nothing.
One parameter. Names are lowercase snake case, 1 to 64 characters; values 1 to 512 bytes of text.
Up to 32 names to remove; removing a missing name changes nothing.
Returns
True: this call changed the advice. False: a replay of an earlier call with the same requestId and input; nothing changed.
Fields 23
PP-…, set when it opens; null on a DRAFT.
Accepted values 4
DELIVERY_NOTESUPPLIER_INVOICEOTHERPURCHASE_ORDER-
Drawn from a purchase order in the ERP. Never accepted on create or update.
Accepted values 4
DRAFT-
Being built in the ERP (an import still being matched). Has no number; never made here.
OPEN-
Expects its goods.
CLOSED-
Finished by a person once the differences were settled.
CANCELLED-
Called off before anything arrived. Keeps its number.
The status and what arrived combined. Read only when selected.
Accepted values 6
DRAFTAWAITING-
Open, and nothing has arrived on an open or completed receipt. A worker may already be scanning it into a draft receipt.
PARTIALLY_RECEIVED-
Open, something arrived, and a line is short past the tenant's receipt tolerance.
RECEIVED-
Open, and every line arrived within the tolerance (or over). Still open until a person closes it.
CLOSEDCANCELLED
The supplier. Needs partner.read: without it null with FORBIDDEN_ROLE at its path; the rest is served.
Fields 13
A business partner: a customer, a supplier or both. Needs partner.read.
Our id.
Our code of the partner.
Their name. Null once the partner is erased.
The company registration number (IČO). Null when unknown, and once the partner is erased.
The tax id (DIČ). Null when unknown, and once the partner is erased.
The VAT id (IČ DPH). Null when unknown, and once the partner is erased.
The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.
The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.
Whether we sell to them.
Whether we buy from them.
The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a partner's addresses of one kind.
The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a partner's addresses of one kind.
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a record's external references.
The warehouse the goods are coming into. Needs warehouse.read, as Receipt.warehouse.
The company the advice is filed under; null only on an older draft.
The announced lines, by line number. Page with first/after or last/before (1..250).
Fields 4
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Text parameters in name order, paged with first/after or last/before (1..250).
Fields 4
How many parameters the record has (at most 32).
How far the work on the advice is, read off its receipts. A line is done when it arrived within the tolerance or its difference is settled. Batched per page.
Fields 7
How far the work on an instruction is, read off the documents executing it (linked by header or line; a CANCELLED one counts for nothing). Not a status and never a refusal: an instruction somebody is working on may still be changed. Times are the server's.
Lines with anything done or in progress.
Lines fully done: nothing remaining.
Lines with anything on a draft executing document (scanned or typed, not yet moved).
Lines still owed: remaining above zero while the instruction is OPEN; 0 once it is closed or cancelled.
Executing documents not finished: a draft (handheld or web) or an open continuous one. Above zero: somebody is working on it.
When the first linked executing document was created; null while nobody has started.
The latest change on a linked executing document or its scans; null while nobody has started.
The receipts answering the advice, newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Needs receipt.read too: without it null with FORBIDDEN_ROLE at its path. Filter them with the root receipts(filter: {receiptAdviceIds}).
Fields 4
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Example
Mutation
mutation updateReceiptAdvice($id: UUID!, $input: UpdateReceiptAdviceInput!) {
updateReceiptAdvice(id: $id, input: $input) {
applied
advice {
id
number
kind
status
state
supplierId
}
}
}
Variables
{
"id": "00000000-0000-4000-8000-000000000001",
"input": {"requestId": "example"}
}
Response
{
"data": {
"updateReceiptAdvice": {
"applied": true,
"advice": {
"id": "00000000-0000-4000-8000-000000000001",
"number": "example",
"kind": "DELIVERY_NOTE",
"status": "DRAFT",
"state": "DRAFT",
"supplierId": "00000000-0000-4000-8000-000000000001"
}
}
}
}
Transfers
transferAdvice
Description
One transfer advice, or null if absent or outside this key's scope. Needs integration.read and transferAdvice.read.
Arguments
Returns
Accepted values 4
DRAFTOPENCLOSEDCANCELLED
Accepted values 6
DRAFTAWAITING-
Open, and no open or posted transfer has moved goods against it. A worker may already be scanning it into a draft transfer.
IN_PROGRESSCOMPLETEDCLOSEDCANCELLED
The instructed lines, ordered by line number. Page with first/after or last/before (1..250).
Fields 4
Fields 14
The quantity as entered on the advice; public creation always uses the base unit.
Quantity moved by linked transfers, in base units.
Quantity still instructed, in base units; advice creation reserves none of it.
Quantity on draft transfers (scanned on a handheld or typed in the web), in base units: in progress, not yet moved.
The transfer lines that answered this line, on transfers that are not drafts, oldest first, paged 1..250. Needs transfer.read too: without it null with FORBIDDEN_ROLE at its path.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Text parameters in name order, paged with first/after or last/before (1..250). Needs transferAdvice.read.
Fields 4
Fields 2
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many parameters the record has (at most 32).
How far the work on the advice is. Needs transferAdvice.read. Batched per page.
Fields 7
How far the work on an instruction is, read off the documents executing it (linked by header or line; a CANCELLED one counts for nothing). Not a status and never a refusal: an instruction somebody is working on may still be changed. Times are the server's.
Lines with anything done or in progress.
Lines fully done: nothing remaining.
Lines with anything on a draft executing document (scanned or typed, not yet moved).
Lines still owed: remaining above zero while the instruction is OPEN; 0 once it is closed or cancelled.
Executing documents not finished: a draft (handheld or web) or an open continuous one. Above zero: somebody is working on it.
When the first linked executing document was created; null while nobody has started.
The latest change on a linked executing document or its scans; null while nobody has started.
The transfers executing the advice (linked by header or line), newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Filter by status with the root transfers(filter: {transferAdviceIds, statuses}). Needs transfer.read too: without it null with FORBIDDEN_ROLE at its path.
Fields 4
Fields 2
One transfer and its cursor.
Where this transfer sits; pass as after (with first) or before (with last).
Goods moved from one warehouse (or bin) to another.
Fields 20
Goods moved from one warehouse (or bin) to another.
The transfer's number. Every returned transfer has one.
Accepted values 3
OPEN-
Open: moved continuously. Its lines already applied are moved and carry their value.
COMPLETED-
Completed. The events feed's
transfer.completed; inEvent.transitionsthe raw status code isPOSTED. CANCELLED-
Cancelled. Its lines net to zero: each line's value is 0.
The transfer's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again).
When the goods count as moved.
How many times the completed transfer has been revised; 0 as completed.
The warehouse the goods left. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A warehouse outside the key's warehouse scope -- the far end of a transfer seen from its other end -- is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served.
A warehouse. Needs warehouse.read.
The warehouse the goods went to. Guarded as sourceWarehouse is.
A warehouse. Needs warehouse.read.
The company the transfer belongs to; null when it belongs to none.
What a transfer was created from.
The external reference the transfer was filed with.
What the goods carried were worth, without VAT, positive: the sum of the lines' values; null while any line's costing is pending. Inside one valuation area a transfer moves no value; between two areas it moves this much out of the source's and into the target's. A completed transfer can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
True while any line's costing is pending. A completed transfer can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this transfer's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a transfer's lines.
The transfer advices this transfer executes (linked by header or line; always its own two warehouses), newest issued first, paged 1..250. Needs transferAdvice.read: without it null with FORBIDDEN_ROLE at its path.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Example
Query
query transferAdvice($id: UUID!) {
transferAdvice(id: $id) {
id
number
status
state
sourceWarehouseId
targetWarehouseId
legalEntityId
issuedAt
plannedAt
reference
lines(first: 10) {
totalCount
}
parameters(first: 10) {
totalCount
}
progress {
linesStarted
linesDone
linesInProgress
linesRemaining
activeDocuments
startedAt
}
transfers(first: 10) {
totalCount
}
}
}
Variables
{"id": "00000000-0000-4000-8000-000000000001"}
Response
{
"data": {
"transferAdvice": {
"id": "00000000-0000-4000-8000-000000000001",
"number": "example",
"status": "DRAFT",
"state": "DRAFT",
"sourceWarehouseId": "00000000-0000-4000-8000-000000000001",
"targetWarehouseId": "00000000-0000-4000-8000-000000000001",
"legalEntityId": "00000000-0000-4000-8000-000000000001",
"issuedAt": "2026-01-01T00:00:00Z",
"plannedAt": "2026-01-01T00:00:00Z",
"reference": "example",
"lines": {"totalCount": 1},
"parameters": {"totalCount": 1},
"progress": {
"linesStarted": 1,
"linesDone": 1,
"linesInProgress": 1,
"linesRemaining": 1,
"activeDocuments": 1,
"startedAt": "2026-01-01T00:00:00Z"
},
"transfers": {"totalCount": 1}
}
}
}
transferAdvices
Description
Transfer advices, newest issued first, keyset paged. Needs integration.read and transferAdvice.read.
Arguments
Input fields 9
A filter on transfer advice headers. Every supplied field narrows the result.
Lifecycle statuses; an explicit empty list matches nothing.
Accepted values 4
DRAFTOPENCLOSEDCANCELLED
Derived work states; an explicit empty list matches nothing.
Accepted values 6
DRAFTAWAITING-
Open, and no open or posted transfer has moved goods against it. A worker may already be scanning it into a draft transfer.
IN_PROGRESSCOMPLETEDCLOSEDCANCELLED
Up to 8 exact name/value equalities combined with AND; an explicit empty list matches nothing.
True: an executing document is not finished (progress.activeDocuments > 0). False: none is.
True: work has started (progress.startedAt set). False: nobody has started.
The last activity is before this instant (advices nobody has started never match).
The last activity is at or after this instant.
Returns
Fields 2
Fields 14
Accepted values 4
DRAFTOPENCLOSEDCANCELLED
Accepted values 6
DRAFTAWAITING-
Open, and no open or posted transfer has moved goods against it. A worker may already be scanning it into a draft transfer.
IN_PROGRESSCOMPLETEDCLOSEDCANCELLED
The instructed lines, ordered by line number. Page with first/after or last/before (1..250).
Text parameters in name order, paged with first/after or last/before (1..250). Needs transferAdvice.read.
How far the work on the advice is. Needs transferAdvice.read. Batched per page.
How far the work on an instruction is, read off the documents executing it (linked by header or line; a CANCELLED one counts for nothing). Not a status and never a refusal: an instruction somebody is working on may still be changed. Times are the server's.
The transfers executing the advice (linked by header or line), newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Filter by status with the root transfers(filter: {transferAdviceIds, statuses}). Needs transfer.read too: without it null with FORBIDDEN_ROLE at its path.
Fields 14
Accepted values 4
DRAFTOPENCLOSEDCANCELLED
Accepted values 6
DRAFTAWAITING-
Open, and no open or posted transfer has moved goods against it. A worker may already be scanning it into a draft transfer.
IN_PROGRESSCOMPLETEDCLOSEDCANCELLED
The instructed lines, ordered by line number. Page with first/after or last/before (1..250).
Fields 4
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Text parameters in name order, paged with first/after or last/before (1..250). Needs transferAdvice.read.
Fields 4
How many parameters the record has (at most 32).
How far the work on the advice is. Needs transferAdvice.read. Batched per page.
Fields 7
How far the work on an instruction is, read off the documents executing it (linked by header or line; a CANCELLED one counts for nothing). Not a status and never a refusal: an instruction somebody is working on may still be changed. Times are the server's.
Lines with anything done or in progress.
Lines fully done: nothing remaining.
Lines with anything on a draft executing document (scanned or typed, not yet moved).
Lines still owed: remaining above zero while the instruction is OPEN; 0 once it is closed or cancelled.
Executing documents not finished: a draft (handheld or web) or an open continuous one. Above zero: somebody is working on it.
When the first linked executing document was created; null while nobody has started.
The latest change on a linked executing document or its scans; null while nobody has started.
The transfers executing the advice (linked by header or line), newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Filter by status with the root transfers(filter: {transferAdviceIds, statuses}). Needs transfer.read too: without it null with FORBIDDEN_ROLE at its path.
Fields 4
Goods moved from one warehouse (or bin) to another.
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
Example
Query
query transferAdvices($first: Int) {
transferAdvices(first: $first) {
edges {
cursor
}
nodes {
id
number
status
state
sourceWarehouseId
targetWarehouseId
}
pageInfo {
hasNextPage
hasPreviousPage
startCursor
endCursor
}
}
}
Variables
{"first": 10}
Response
{
"data": {
"transferAdvices": {
"edges": [{"cursor": "example"}],
"nodes": [
{
"id": "00000000-0000-4000-8000-000000000001",
"number": "example",
"status": "DRAFT",
"state": "DRAFT",
"sourceWarehouseId": "00000000-0000-4000-8000-000000000001",
"targetWarehouseId": "00000000-0000-4000-8000-000000000001"
}
],
"pageInfo": {
"hasNextPage": true,
"hasPreviousPage": true,
"startCursor": "example",
"endCursor": "example"
}
}
}
}
transfers
Description
Transfers, filtered, newest first by effectiveAt (then by when they were created, then id). There is no total count. Drafts are never returned. A transfer is returned when either of its warehouses is in the key's warehouse scope, and left out when neither is or its company is outside the key's legal-entity scope. Needs integration.read and transfer.read.
filter.ids names at most 50 transfers; an id that does not exist, is not a transfer, is a draft or is outside the key's scope is simply not returned -- never an error.
Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward; last alone is the oldest page. Every edge carries its own cursor. A page is priced at the number asked times one transfer's selection.
Arguments
Input fields 9
Which transfers the query returns. Every field narrows and they combine with AND; an omitted (or null) one matches all, and an empty list matches none.
These transfers, at most 50. Ids that are not returnable are simply absent.
Transfers in any of these states; all three when omitted.
Accepted values 3
OPEN-
Open: moved continuously. Its lines already applied are moved and carry their value.
COMPLETED-
Completed. The events feed's
transfer.completed; inEvent.transitionsthe raw status code isPOSTED. CANCELLED-
Cancelled. Its lines net to zero: each line's value is 0.
Transfers out of or into any of these warehouses (either end). At most 50.
Transfers out of any of these warehouses. At most 50.
Transfers into any of these warehouses. At most 50.
Transfers effective at or after this instant.
Transfers effective before this instant (exclusive).
Transfers with any of these origins.
Accepted values 2
STOCKTAKE-
A stocktake's relocation: goods counted in another bin than the books held them in.
MANUAL-
Entered directly, or against a transfer advice (see TransferLine.transferAdviceLineId).
Transfers executing any of these transfer advices (linked by header or line). At most 50. Needs transferAdvice.read.
Returns
One page of transfers.
The transfers with their cursors, newest first by effectiveAt.
Fields 2
One transfer and its cursor.
Where this transfer sits; pass as after (with first) or before (with last).
Fields 20
Goods moved from one warehouse (or bin) to another.
The transfer's number. Every returned transfer has one.
Accepted values 3
OPEN-
Open: moved continuously. Its lines already applied are moved and carry their value.
COMPLETED-
Completed. The events feed's
transfer.completed; inEvent.transitionsthe raw status code isPOSTED. CANCELLED-
Cancelled. Its lines net to zero: each line's value is 0.
The transfer's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again).
When the goods count as moved.
How many times the completed transfer has been revised; 0 as completed.
The warehouse the goods left. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A warehouse outside the key's warehouse scope -- the far end of a transfer seen from its other end -- is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served.
A warehouse. Needs warehouse.read.
The warehouse the goods went to. Guarded as sourceWarehouse is.
A warehouse. Needs warehouse.read.
The company the transfer belongs to; null when it belongs to none.
What a transfer was created from.
The external reference the transfer was filed with.
What the goods carried were worth, without VAT, positive: the sum of the lines' values; null while any line's costing is pending. Inside one valuation area a transfer moves no value; between two areas it moves this much out of the source's and into the target's. A completed transfer can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
True while any line's costing is pending. A completed transfer can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this transfer's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a transfer's lines.
The transfer advices this transfer executes (linked by header or line; always its own two warehouses), newest issued first, paged 1..250. Needs transferAdvice.read: without it null with FORBIDDEN_ROLE at its path.
The same transfers without cursors.
Fields 20
Goods moved from one warehouse (or bin) to another.
The transfer's number. Every returned transfer has one.
Accepted values 3
OPEN-
Open: moved continuously. Its lines already applied are moved and carry their value.
COMPLETED-
Completed. The events feed's
transfer.completed; inEvent.transitionsthe raw status code isPOSTED. CANCELLED-
Cancelled. Its lines net to zero: each line's value is 0.
The transfer's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again).
When the goods count as moved.
How many times the completed transfer has been revised; 0 as completed.
The warehouse the goods left. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A warehouse outside the key's warehouse scope -- the far end of a transfer seen from its other end -- is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served.
The warehouse the goods went to. Guarded as sourceWarehouse is.
The company the transfer belongs to; null when it belongs to none.
Fields 2
What a transfer was created from.
Accepted values 2
STOCKTAKE-
A stocktake's relocation: goods counted in another bin than the books held them in.
MANUAL-
Entered directly, or against a transfer advice (see TransferLine.transferAdviceLineId).
The stocktake; null for MANUAL.
The external reference the transfer was filed with.
What the goods carried were worth, without VAT, positive: the sum of the lines' values; null while any line's costing is pending. Inside one valuation area a transfer moves no value; between two areas it moves this much out of the source's and into the target's. A completed transfer can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
True while any line's costing is pending. A completed transfer can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this transfer's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of a transfer's lines.
The lines with their cursors, by line number.
One line and its cursor.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many lines the transfer has, capped at 10001: 10001 reads "10000 or more".
The transfer advices this transfer executes (linked by header or line; always its own two warehouses), newest issued first, paged 1..250. Needs transferAdvice.read: without it null with FORBIDDEN_ROLE at its path.
Fields 4
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Where the page sits, and the cursors to the next and previous pages.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
Example
Query
query transfers($first: Int) {
transfers(first: $first) {
edges {
cursor
}
nodes {
id
number
status
version
effectiveAt
completedAt
}
pageInfo {
hasNextPage
hasPreviousPage
startCursor
endCursor
}
}
}
Variables
{"first": 10}
Response
{
"data": {
"transfers": {
"edges": [{"cursor": "example"}],
"nodes": [
{
"id": "00000000-0000-4000-8000-000000000001",
"number": "example",
"status": "OPEN",
"version": 1,
"effectiveAt": "2026-01-01T00:00:00Z",
"completedAt": "2026-01-01T00:00:00Z"
}
],
"pageInfo": {
"hasNextPage": true,
"hasPreviousPage": true,
"startCursor": "example",
"endCursor": "example"
}
}
}
}
cancelTransferAdvice
Description
Cancel an OPEN advice nothing has moved against and no draft transfer links. Same permissions as updateTransferAdvice. Refused with CONFLICT and a reason otherwise.
Arguments
Returns
Accepted values 4
DRAFTOPENCLOSEDCANCELLED
Accepted values 6
DRAFTAWAITING-
Open, and no open or posted transfer has moved goods against it. A worker may already be scanning it into a draft transfer.
IN_PROGRESSCOMPLETEDCLOSEDCANCELLED
The instructed lines, ordered by line number. Page with first/after or last/before (1..250).
Fields 4
Fields 14
The quantity as entered on the advice; public creation always uses the base unit.
Quantity moved by linked transfers, in base units.
Quantity still instructed, in base units; advice creation reserves none of it.
Quantity on draft transfers (scanned on a handheld or typed in the web), in base units: in progress, not yet moved.
The transfer lines that answered this line, on transfers that are not drafts, oldest first, paged 1..250. Needs transfer.read too: without it null with FORBIDDEN_ROLE at its path.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Text parameters in name order, paged with first/after or last/before (1..250). Needs transferAdvice.read.
Fields 4
Fields 2
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many parameters the record has (at most 32).
How far the work on the advice is. Needs transferAdvice.read. Batched per page.
Fields 7
How far the work on an instruction is, read off the documents executing it (linked by header or line; a CANCELLED one counts for nothing). Not a status and never a refusal: an instruction somebody is working on may still be changed. Times are the server's.
Lines with anything done or in progress.
Lines fully done: nothing remaining.
Lines with anything on a draft executing document (scanned or typed, not yet moved).
Lines still owed: remaining above zero while the instruction is OPEN; 0 once it is closed or cancelled.
Executing documents not finished: a draft (handheld or web) or an open continuous one. Above zero: somebody is working on it.
When the first linked executing document was created; null while nobody has started.
The latest change on a linked executing document or its scans; null while nobody has started.
The transfers executing the advice (linked by header or line), newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Filter by status with the root transfers(filter: {transferAdviceIds, statuses}). Needs transfer.read too: without it null with FORBIDDEN_ROLE at its path.
Fields 4
Fields 2
One transfer and its cursor.
Where this transfer sits; pass as after (with first) or before (with last).
Goods moved from one warehouse (or bin) to another.
Fields 20
Goods moved from one warehouse (or bin) to another.
The transfer's number. Every returned transfer has one.
Accepted values 3
OPEN-
Open: moved continuously. Its lines already applied are moved and carry their value.
COMPLETED-
Completed. The events feed's
transfer.completed; inEvent.transitionsthe raw status code isPOSTED. CANCELLED-
Cancelled. Its lines net to zero: each line's value is 0.
The transfer's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again).
When the goods count as moved.
How many times the completed transfer has been revised; 0 as completed.
The warehouse the goods left. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A warehouse outside the key's warehouse scope -- the far end of a transfer seen from its other end -- is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served.
A warehouse. Needs warehouse.read.
The warehouse the goods went to. Guarded as sourceWarehouse is.
A warehouse. Needs warehouse.read.
The company the transfer belongs to; null when it belongs to none.
What a transfer was created from.
The external reference the transfer was filed with.
What the goods carried were worth, without VAT, positive: the sum of the lines' values; null while any line's costing is pending. Inside one valuation area a transfer moves no value; between two areas it moves this much out of the source's and into the target's. A completed transfer can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
True while any line's costing is pending. A completed transfer can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this transfer's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a transfer's lines.
The transfer advices this transfer executes (linked by header or line; always its own two warehouses), newest issued first, paged 1..250. Needs transferAdvice.read: without it null with FORBIDDEN_ROLE at its path.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Example
Mutation
mutation cancelTransferAdvice($id: UUID!) {
cancelTransferAdvice(id: $id) {
id
number
status
state
sourceWarehouseId
targetWarehouseId
legalEntityId
issuedAt
plannedAt
reference
lines(first: 10) {
totalCount
}
parameters(first: 10) {
totalCount
}
progress {
linesStarted
linesDone
linesInProgress
linesRemaining
activeDocuments
startedAt
}
transfers(first: 10) {
totalCount
}
}
}
Variables
{"id": "00000000-0000-4000-8000-000000000001"}
Response
{
"data": {
"cancelTransferAdvice": {
"id": "00000000-0000-4000-8000-000000000001",
"number": "example",
"status": "DRAFT",
"state": "DRAFT",
"sourceWarehouseId": "00000000-0000-4000-8000-000000000001",
"targetWarehouseId": "00000000-0000-4000-8000-000000000001",
"legalEntityId": "00000000-0000-4000-8000-000000000001",
"issuedAt": "2026-01-01T00:00:00Z",
"plannedAt": "2026-01-01T00:00:00Z",
"reference": "example",
"lines": {"totalCount": 1},
"parameters": {"totalCount": 1},
"progress": {
"linesStarted": 1,
"linesDone": 1,
"linesInProgress": 1,
"linesRemaining": 1,
"activeDocuments": 1,
"startedAt": "2026-01-01T00:00:00Z"
},
"transfers": {"totalCount": 1}
}
}
}
createTransferAdvice
Description
Create and open one transfer advice atomically. A failed call creates no draft or number. The requestId makes a retry after a lost response safe: the same input returns created false, while different input returns CONFLICT with reason REQUEST_ID_REUSED. Needs integration.read and transferAdvice.write, with both warehouses and the company in scope. The advice does not reserve or move stock. Equal source and target warehouses make a bin-to-bin advice inside one warehouse: every line then needs a targetLocationId.
Arguments
Input fields 7
An opaque, tenant-unique idempotency key, 1 to 128 bytes.
One to 100 positive-quantity lines. Quantities are in each variant's base unit.
Up to 32 short text parameters, such as workflow_id and run_id.
Returns
Fields 14
Accepted values 4
DRAFTOPENCLOSEDCANCELLED
Accepted values 6
DRAFTAWAITING-
Open, and no open or posted transfer has moved goods against it. A worker may already be scanning it into a draft transfer.
IN_PROGRESSCOMPLETEDCLOSEDCANCELLED
The instructed lines, ordered by line number. Page with first/after or last/before (1..250).
Fields 4
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Text parameters in name order, paged with first/after or last/before (1..250). Needs transferAdvice.read.
Fields 4
How many parameters the record has (at most 32).
How far the work on the advice is. Needs transferAdvice.read. Batched per page.
Fields 7
How far the work on an instruction is, read off the documents executing it (linked by header or line; a CANCELLED one counts for nothing). Not a status and never a refusal: an instruction somebody is working on may still be changed. Times are the server's.
Lines with anything done or in progress.
Lines fully done: nothing remaining.
Lines with anything on a draft executing document (scanned or typed, not yet moved).
Lines still owed: remaining above zero while the instruction is OPEN; 0 once it is closed or cancelled.
Executing documents not finished: a draft (handheld or web) or an open continuous one. Above zero: somebody is working on it.
When the first linked executing document was created; null while nobody has started.
The latest change on a linked executing document or its scans; null while nobody has started.
The transfers executing the advice (linked by header or line), newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Filter by status with the root transfers(filter: {transferAdviceIds, statuses}). Needs transfer.read too: without it null with FORBIDDEN_ROLE at its path.
Fields 4
Goods moved from one warehouse (or bin) to another.
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Example
Mutation
mutation createTransferAdvice($input: CreatePublicTransferAdviceInput!) {
createTransferAdvice(input: $input) {
created
advice {
id
number
status
state
sourceWarehouseId
targetWarehouseId
}
}
}
Variables
{
"input": {
"requestId": "example",
"sourceWarehouseId": "00000000-0000-4000-8000-000000000001",
"targetWarehouseId": "00000000-0000-4000-8000-000000000001",
"lines": [
{"variantId": "00000000-0000-4000-8000-000000000001", "quantity": "10.00"}
]
}
}
Response
{
"data": {
"createTransferAdvice": {
"created": true,
"advice": {
"id": "00000000-0000-4000-8000-000000000001",
"number": "example",
"status": "DRAFT",
"state": "DRAFT",
"sourceWarehouseId": "00000000-0000-4000-8000-000000000001",
"targetWarehouseId": "00000000-0000-4000-8000-000000000001"
}
}
}
}
updateTransferAdvice
Description
Change an OPEN advice in one transaction, all or nothing: header terms, then removeLineIds, updateLines and addLines in that order, then parameters. A failed item names its list's index in extensions.removeIndex, updateIndex or addIndex. A line that has moved goods keeps its product, bins and lot, and its quantity may not drop below what moved; a line a transfer links cannot be removed; the advice keeps at least one line (judged after the whole call). When every line has moved its quantity the advice closes. The requestId makes a retry after a lost response safe: the same requestId and input answers applied false with the advice as it is now (even if it has closed since), changing nothing; the same requestId with other input, or on another advice, is CONFLICT with reason REQUEST_ID_REUSED. AWAITING does not mean nobody works on it: a warehouse worker may already be scanning it into a draft transfer. Needs integration.read, transferAdvice.write and transferAdvice.read, with both warehouses and the company in scope.
Arguments
Input fields 7
An opaque, tenant-unique idempotency key for this change, 1 to 128 bytes. A new key for every intended change.
Omitted: unchanged. Null: cleared.
Omitted: unchanged. Null: cleared.
Up to 100 lines to remove.
Up to 100 line changes.
Input fields 6
In base units. Omitted: unchanged. A line entered in another unit refuses it (reason LINE_NOT_IN_BASE_UNIT).
Omitted: unchanged. Null: cleared.
Omitted: unchanged. Null: cleared (refused inside one warehouse).
Omitted: unchanged. Null: cleared.
Omitted: unchanged. Null: cleared.
Up to 100 new lines, base-unit quantities, as on create.
Input fields 2
Set and remove parameters by name in one atomic change; a name may occur once across both.
Up to 32 values to set; setting a current value changes nothing.
One parameter. Names are lowercase snake case, 1 to 64 characters; values 1 to 512 bytes of text.
Up to 32 names to remove; removing a missing name changes nothing.
Returns
True: this call changed the advice. False: a replay of an earlier call with the same requestId and input; nothing changed.
Fields 14
Accepted values 4
DRAFTOPENCLOSEDCANCELLED
Accepted values 6
DRAFTAWAITING-
Open, and no open or posted transfer has moved goods against it. A worker may already be scanning it into a draft transfer.
IN_PROGRESSCOMPLETEDCLOSEDCANCELLED
The instructed lines, ordered by line number. Page with first/after or last/before (1..250).
Fields 4
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Text parameters in name order, paged with first/after or last/before (1..250). Needs transferAdvice.read.
Fields 4
How many parameters the record has (at most 32).
How far the work on the advice is. Needs transferAdvice.read. Batched per page.
Fields 7
How far the work on an instruction is, read off the documents executing it (linked by header or line; a CANCELLED one counts for nothing). Not a status and never a refusal: an instruction somebody is working on may still be changed. Times are the server's.
Lines with anything done or in progress.
Lines fully done: nothing remaining.
Lines with anything on a draft executing document (scanned or typed, not yet moved).
Lines still owed: remaining above zero while the instruction is OPEN; 0 once it is closed or cancelled.
Executing documents not finished: a draft (handheld or web) or an open continuous one. Above zero: somebody is working on it.
When the first linked executing document was created; null while nobody has started.
The latest change on a linked executing document or its scans; null while nobody has started.
The transfers executing the advice (linked by header or line), newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Filter by status with the root transfers(filter: {transferAdviceIds, statuses}). Needs transfer.read too: without it null with FORBIDDEN_ROLE at its path.
Fields 4
Goods moved from one warehouse (or bin) to another.
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Example
Mutation
mutation updateTransferAdvice($id: UUID!, $input: UpdatePublicTransferAdviceInput!) {
updateTransferAdvice(id: $id, input: $input) {
applied
advice {
id
number
status
state
sourceWarehouseId
targetWarehouseId
}
}
}
Variables
{
"id": "00000000-0000-4000-8000-000000000001",
"input": {"requestId": "example"}
}
Response
{
"data": {
"updateTransferAdvice": {
"applied": true,
"advice": {
"id": "00000000-0000-4000-8000-000000000001",
"number": "example",
"status": "DRAFT",
"state": "DRAFT",
"sourceWarehouseId": "00000000-0000-4000-8000-000000000001",
"targetWarehouseId": "00000000-0000-4000-8000-000000000001"
}
}
}
}
Products
product
Description
One product, by our id or by its code (exact) -- exactly one of the two, else VALIDATION. Null when the tenant has none. Archived products are served. Needs integration.read and item.read.
Returns
A product: the parent of its variants. Needs item.read.
Our id.
Our code of the product.
Its name, as the catalogue keeps it (not translated).
The unit its stock is counted in.
The code of its VAT rate.
When it was archived; null while it is in use.
When it last changed: its own fields (an archive too), or one of its variants, their pack units or their codes. A price change (prices live on price lists) or a rename of an attribute or of one of its values does not move it. It is the start time of the transaction that wrote the change, so a change committed later can carry an earlier updatedAt than one already read: resume an incremental sync from the last updatedAt seen minus 10 minutes, and de-duplicate by id. A sync passes includeArchived: true -- archivedAt then tells a product is gone.
Every variant, archived included, the default first, then by SKU (by its bytes) and id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this product's variants and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of a product's variants.
The variants with their cursors, the default first.
Fields 2
One variant and its cursor.
Where this variant sits; pass as after (with first) or before (with last) to this product's variants.
One sellable variant of a product: what a document line moves. Needs item.read.
The same variants without cursors.
Fields 12
One sellable variant of a product: what a document line moves. Needs item.read.
Our id.
Its SKU: unique in the organisation, archived variants included.
The variant's axis values, e.g. Colour: black, in the product's axis order. Empty for a product without variants.
One axis value of a variant: the axis's name and the value's name.
Whether it is the product's default variant.
When it was archived; null while it is in use.
The base unit's GTIN-family code, the primary first, else the oldest; null when it has none.
Its codes (EAN, GTIN, manufacturer's, customs, internal), the primary first, then by kind, value and id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's codes and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a variant's codes.
Its alternate units (packs), by code: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's units and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a variant's units.
Its price on every live price list that has one, the company's default list first, then the other defaults, then by list code and id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's prices and are refused anywhere else. Needs price.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a variant's prices.
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a record's external references.
The product it is a variant of.
A product: the parent of its variants. Needs item.read.
Its cards in every warehouse the key may read, by warehouse. Needs stockCard.read.
Archived warehouses included, as stockCards. A connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's cards and are refused anywhere else. Null, with an error at its path, without stockCard.read or when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a product variant's stock cards.
Where the page sits, and the cursors to the next and previous pages.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many variants the product has, archived included, capped at 10001: 10001 reads "10000 or more".
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this product's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of a record's external references.
The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.
Fields 2
One reference and its cursor.
Where this reference sits; pass as after (with first) or before (with last) to this record's externalRefs.
An id another system knows a record by.
The same references without cursors.
Fields 4
An id another system knows a record by.
The external source's code, e.g. SHOP -- the same string as SalesOrder.source.
The record's id in that system.
The parent's id in that system, when the id is unique only under it.
The number that system shows for the record, when one was recorded.
Where the page sits, and the cursors to the next and previous pages.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many references the record has.
Example
Query
query product($id: UUID) {
product(id: $id) {
id
code
name
baseUnit
vatRateCode
archivedAt
updatedAt
variants(first: 10) {
totalCount
}
externalRefs(first: 10) {
totalCount
}
}
}
Variables
{"id": "00000000-0000-4000-8000-000000000001"}
Response
{
"data": {
"product": {
"id": "00000000-0000-4000-8000-000000000001",
"code": "example",
"name": "example",
"baseUnit": "example",
"vatRateCode": "example",
"archivedAt": "2026-01-01T00:00:00Z",
"updatedAt": "2026-01-01T00:00:00Z",
"variants": {"totalCount": 1},
"externalRefs": {"totalCount": 1}
}
}
}
products
Description
Products, by sortKey then id. Archived products only with filter.includeArchived. There is no total count. Needs integration.read and item.read.
Each list of the filter names at most 250 values; an empty list matches nothing.
Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward; last alone is the last page. Every edge carries its own cursor, which belongs to the sortKey it was read under. A page is priced at the number asked times one product's selection.
Arguments
Input fields 6
Which products products returns. Every field narrows; an omitted one matches all, an empty list none.
These products, at most 250.
Products with these codes (exact), at most 250.
Products having a variant (archived included) with one of these SKUs (exact), at most 250.
Products having a variant (archived included) carrying one of these codes -- EAN, GTIN, UPC, manufacturer's, customs or internal -- exact, at most 250.
Products whose updatedAt is at or after this instant -- for an incremental sync, with sortKey UPDATED_AT and includeArchived: true: an archive moves updatedAt, and archivedAt tells the product is gone -- without includeArchived a sync never sees it leave. updatedAt is the start time of the writing transaction, so resume from the last updatedAt seen minus 10 minutes and de-duplicate by id. Prices and a rename of an attribute or of one of its values do not move it.
Default: CODE
Accepted values 2
CODE-
By code.
UPDATED_AT-
By updatedAt, oldest first: with updatedFrom and includeArchived: true, the incremental sync (an archive moves updatedAt; archivedAt tells the product is gone). updatedAt is the start time of the writing transaction, so a change committed later can sort before one already read: resume from the last updatedAt seen minus 10 minutes and de-duplicate by id.
Returns
One page of products.
The products with their cursors, in the order asked.
Fields 2
One product and its cursor.
Where this product sits; pass as after (with first) or before (with last), under the same sortKey.
Fields 9
A product: the parent of its variants. Needs item.read.
Our id.
Our code of the product.
Its name, as the catalogue keeps it (not translated).
The unit its stock is counted in.
The code of its VAT rate.
When it was archived; null while it is in use.
When it last changed: its own fields (an archive too), or one of its variants, their pack units or their codes. A price change (prices live on price lists) or a rename of an attribute or of one of its values does not move it. It is the start time of the transaction that wrote the change, so a change committed later can carry an earlier updatedAt than one already read: resume an incremental sync from the last updatedAt seen minus 10 minutes, and de-duplicate by id. A sync passes includeArchived: true -- archivedAt then tells a product is gone.
Every variant, archived included, the default first, then by SKU (by its bytes) and id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this product's variants and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a product's variants.
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this product's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a record's external references.
The same products without cursors.
Fields 9
A product: the parent of its variants. Needs item.read.
Our id.
Our code of the product.
Its name, as the catalogue keeps it (not translated).
The unit its stock is counted in.
The code of its VAT rate.
When it was archived; null while it is in use.
When it last changed: its own fields (an archive too), or one of its variants, their pack units or their codes. A price change (prices live on price lists) or a rename of an attribute or of one of its values does not move it. It is the start time of the transaction that wrote the change, so a change committed later can carry an earlier updatedAt than one already read: resume an incremental sync from the last updatedAt seen minus 10 minutes, and de-duplicate by id. A sync passes includeArchived: true -- archivedAt then tells a product is gone.
Every variant, archived included, the default first, then by SKU (by its bytes) and id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this product's variants and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of a product's variants.
The variants with their cursors, the default first.
One variant and its cursor.
The same variants without cursors.
One sellable variant of a product: what a document line moves. Needs item.read.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many variants the product has, archived included, capped at 10001: 10001 reads "10000 or more".
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this product's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of a record's external references.
The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.
One reference and its cursor.
The same references without cursors.
An id another system knows a record by.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many references the record has.
Where the page sits, and the cursors to the next and previous pages.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
Example
Query
query products($first: Int) {
products(first: $first) {
edges {
cursor
}
nodes {
id
code
name
baseUnit
vatRateCode
archivedAt
}
pageInfo {
hasNextPage
hasPreviousPage
startCursor
endCursor
}
}
}
Variables
{"first": 10}
Response
{
"data": {
"products": {
"edges": [{"cursor": "example"}],
"nodes": [
{
"id": "00000000-0000-4000-8000-000000000001",
"code": "example",
"name": "example",
"baseUnit": "example",
"vatRateCode": "example",
"archivedAt": "2026-01-01T00:00:00Z"
}
],
"pageInfo": {
"hasNextPage": true,
"hasPreviousPage": true,
"startCursor": "example",
"endCursor": "example"
}
}
}
}
Inventory
locations
Description
Bins of the named warehouses, by warehouse, code, then id. Needs integration.read and position.read. A warehouse outside the key's warehouse, legal-entity or country scope is left out, as stockCards does. There is no total count.
Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward; last alone is the last page. Every edge carries its own cursor.
Arguments
Input fields 5
Every supplied field narrows the result; an explicit empty list matches nothing.
1 to 50 warehouses.
Exact codes, up to 250. A code is unique per warehouse and zone, so one code may name several bins.
True: bins reservations take from. False: bins nobody picks from.
Accepted values 7
STOCKRECEIVINGSHIPPINGQUARANTINETRANSITSCRAPPRODUCTION
Default false: archived bins are left out.
Returns
Fields 2
Fields 8
A bin (position) of a warehouse.
Accepted values 7
STOCKRECEIVINGSHIPPINGQUARANTINETRANSITSCRAPPRODUCTION
Whether reservations, and so picking, take from this bin.
The bin's zone code; null without a zone. Tells apart two bins with one code.
Fields 8
A bin (position) of a warehouse.
Accepted values 7
STOCKRECEIVINGSHIPPINGQUARANTINETRANSITSCRAPPRODUCTION
Whether reservations, and so picking, take from this bin.
The bin's zone code; null without a zone. Tells apart two bins with one code.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
Example
Query
query locations($filter: LocationFilter!, $first: Int) {
locations(filter: $filter, first: $first) {
edges {
cursor
}
nodes {
id
warehouseId
code
name
kind
pickable
}
pageInfo {
hasNextPage
hasPreviousPage
startCursor
endCursor
}
}
}
Variables
{
"filter": {"warehouseIds": ["00000000-0000-4000-8000-000000000001"]},
"first": 10
}
Response
{
"data": {
"locations": {
"edges": [{"cursor": "example"}],
"nodes": [
{
"id": "00000000-0000-4000-8000-000000000001",
"warehouseId": "00000000-0000-4000-8000-000000000001",
"code": "example",
"name": "example",
"kind": "STOCK",
"pickable": true
}
],
"pageInfo": {
"hasNextPage": true,
"hasPreviousPage": true,
"startCursor": "example",
"endCursor": "example"
}
}
}
}
stockCardChanges
Description
Real changes of stock cards, oldest first, forward from a cursor. Without after the answer is an empty page whose endCursor is the head ("now"): take it before a full export. Records of one card come in version order. warehouseIds and changed narrow on the server; the cursor moves past what they leave out. wait (0–25 s): when nothing is waiting, hold the answer until something is or the time is up. A cursor older than 30 days is VALIDATION with extensions.reason CURSOR_EXPIRED: export again and start without a cursor. Readable about 1–3 s after the stock write. Needs integration.read and stockCard.read.
A forward-only feed, as events: first is required, from 1 to 250; pass pageInfo.endCursor as after while pageInfo.hasNextPage is true, then keep polling with it. There is no last, no before and no total count. Its cursors are its own and bound to the key's organisation: an events cursor or another organisation's is VALIDATION at after. Records of warehouses outside the key's warehouse, legal-entity or country scope are left out silently. warehouseIds (at most 50) keeps the records of those warehouses, changed those with at least one of the figures named changed; an omitted (or null) list matches all, an empty one none. A page is priced at first times one record's selection.
wait is seconds, 0 (the default) to 25; outside is VALIDATION at wait. It waits only with after, and only when the page would be empty with hasNextPage false; it then answers as soon as a record it would show arrives, or with an empty page and an advanced endCursor when the time is up or the server is shutting down -- an empty answer is never an error: poll again with its endCursor. A key holds at most 4 waits open on one server (events' included); a further one waits the lesser of wait and 5 s without watching for records, then answers what is there by then.
Arguments
Accepted values 6
QUANTITYRESERVEDRESERVED_BY_SOURCEAVAILABLEADVISEDON_ORDER
Returns
One page of stock card changes.
The records with their cursors, oldest first.
Fields 2
One stock card change and its cursor.
Resume after this record: pass as after.
Fields 16
One real change of a stock card's figures. Needs stockCard.read. A change of a figure no record shows (e.g. a reservation moving between orders of one source) is not one.
Opaque and unique, increasing in the order records were written. Resume with a cursor, never with an id.
The warehouse's id.
The product variant's id.
The warehouse. Needs warehouse.read.
A warehouse. Needs warehouse.read.
The product variant. Needs item.read.
One sellable variant of a product: what a document line moves. Needs item.read.
1, 2, 3 … per card, without gaps. Compare with StockCard.version.
Accepted values 2
LIVE-
After a stock write.
SWEEP-
Found by the background check.
The figures after this change.
A stock card's figures, one number each.
The figures before this change; null when no earlier figures were known.
A stock card's figures, one number each.
The same records without cursors.
Fields 16
One real change of a stock card's figures. Needs stockCard.read. A change of a figure no record shows (e.g. a reservation moving between orders of one source) is not one.
Opaque and unique, increasing in the order records were written. Resume with a cursor, never with an id.
The warehouse's id.
The product variant's id.
The warehouse. Needs warehouse.read.
The product variant. Needs item.read.
Fields 12
One sellable variant of a product: what a document line moves. Needs item.read.
Our id.
Its SKU: unique in the organisation, archived variants included.
The variant's axis values, e.g. Colour: black, in the product's axis order. Empty for a product without variants.
One axis value of a variant: the axis's name and the value's name.
Whether it is the product's default variant.
When it was archived; null while it is in use.
The base unit's GTIN-family code, the primary first, else the oldest; null when it has none.
Its codes (EAN, GTIN, manufacturer's, customs, internal), the primary first, then by kind, value and id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's codes and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a variant's codes.
Its alternate units (packs), by code: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's units and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a variant's units.
Its price on every live price list that has one, the company's default list first, then the other defaults, then by list code and id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's prices and are refused anywhere else. Needs price.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a variant's prices.
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a record's external references.
The product it is a variant of.
A product: the parent of its variants. Needs item.read.
Its cards in every warehouse the key may read, by warehouse. Needs stockCard.read.
Archived warehouses included, as stockCards. A connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's cards and are refused anywhere else. Null, with an error at its path, without stockCard.read or when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a product variant's stock cards.
1, 2, 3 … per card, without gaps. Compare with StockCard.version.
Accepted values 2
LIVE-
After a stock write.
SWEEP-
Found by the background check.
The figures after this change.
Fields 6
A stock card's figures, one number each.
Physically in the warehouse: what its stock movements sum to.
Promised to orders, every batch.
reserved by the source of the owning order (null: an order without one); sums to reserved; by source, null first.
How much of a card's reserved quantity belongs to orders of one source.
What may still be promised — NOT quantity − reserved: blocked, quarantined and expired-under-policy batches and non-pickable bins are excluded.
On an open advice, not yet received.
On a sent purchase order no open advice announces yet; never overlaps advised.
The figures before this change; null when no earlier figures were known.
Fields 6
A stock card's figures, one number each.
Physically in the warehouse: what its stock movements sum to.
Promised to orders, every batch.
reserved by the source of the owning order (null: an order without one); sums to reserved; by source, null first.
How much of a card's reserved quantity belongs to orders of one source.
What may still be promised — NOT quantity − reserved: blocked, quarantined and expired-under-policy batches and non-pickable bins are excluded.
On an open advice, not yet received.
On a sent purchase order no open advice announces yet; never overlaps advised.
Example
Query
query stockCardChanges {
stockCardChanges {
edges {
cursor
}
nodes {
id
warehouseId
variantId
version
occurredAt
origin
}
pageInfo {
hasNextPage
endCursor
}
}
}
Response
{
"data": {
"stockCardChanges": {
"edges": [{"cursor": "example"}],
"nodes": [
{
"id": "00000000-0000-4000-8000-000000000001",
"warehouseId": "00000000-0000-4000-8000-000000000001",
"variantId": "00000000-0000-4000-8000-000000000001",
"version": 1,
"occurredAt": "2026-01-01T00:00:00Z",
"origin": "LIVE"
}
],
"pageInfo": {"hasNextPage": true, "endCursor": "example"}
}
}
}
stockCards
Description
Stock cards — one variant in one warehouse — with their current figures, by variant then warehouse. Full export: page to the end. After a feed page: variantIds (+ warehouseIds) for the other warehouses of a sum. A variant only on order or advised into a warehouse where it never had stock has no card there yet. Needs integration.read and stockCard.read.
Cards of warehouses outside the key's warehouse, legal-entity or country scope are left out; archived warehouses are included, exactly as warehouses lists them. There is no total count.
Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward; last alone is the last page. Every edge carries its own cursor. A page is priced at the number asked times one card's selection.
Arguments
Input fields 4
Which cards the query returns. Every field narrows; an omitted (or null) one matches all, and an empty list matches none.
Returns
One page of stock cards.
The cards with their cursors, by variant then warehouse.
Fields 2
One stock card and its cursor.
Where this card sits; pass as after (with first) or before (with last).
Fields 6
One variant in one warehouse, with its figures. Needs stockCard.read.
The warehouse's id.
The product variant's id.
The warehouse. Needs warehouse.read.
A warehouse. Needs warehouse.read.
The product variant. Needs item.read.
One sellable variant of a product: what a document line moves. Needs item.read.
1, 2, 3 … per card: the version of its latest change record; 0 before its first. Records of this card at or below it are already in figures: ignore them. For a second or two, the record just above it can carry figures older than the export's; the record after it heals that, so compare the figures, not only the versions.
The same cards without cursors.
Fields 6
One variant in one warehouse, with its figures. Needs stockCard.read.
The warehouse's id.
The product variant's id.
The warehouse. Needs warehouse.read.
The product variant. Needs item.read.
Fields 12
One sellable variant of a product: what a document line moves. Needs item.read.
Our id.
Its SKU: unique in the organisation, archived variants included.
The variant's axis values, e.g. Colour: black, in the product's axis order. Empty for a product without variants.
One axis value of a variant: the axis's name and the value's name.
Whether it is the product's default variant.
When it was archived; null while it is in use.
The base unit's GTIN-family code, the primary first, else the oldest; null when it has none.
Its codes (EAN, GTIN, manufacturer's, customs, internal), the primary first, then by kind, value and id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's codes and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a variant's codes.
Its alternate units (packs), by code: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's units and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a variant's units.
Its price on every live price list that has one, the company's default list first, then the other defaults, then by list code and id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's prices and are refused anywhere else. Needs price.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a variant's prices.
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a record's external references.
The product it is a variant of.
A product: the parent of its variants. Needs item.read.
Its cards in every warehouse the key may read, by warehouse. Needs stockCard.read.
Archived warehouses included, as stockCards. A connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's cards and are refused anywhere else. Null, with an error at its path, without stockCard.read or when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a product variant's stock cards.
Its figures now.
Fields 6
A stock card's figures, one number each.
Physically in the warehouse: what its stock movements sum to.
Promised to orders, every batch.
reserved by the source of the owning order (null: an order without one); sums to reserved; by source, null first.
How much of a card's reserved quantity belongs to orders of one source.
What may still be promised — NOT quantity − reserved: blocked, quarantined and expired-under-policy batches and non-pickable bins are excluded.
On an open advice, not yet received.
On a sent purchase order no open advice announces yet; never overlaps advised.
1, 2, 3 … per card: the version of its latest change record; 0 before its first. Records of this card at or below it are already in figures: ignore them. For a second or two, the record just above it can carry figures older than the export's; the record after it heals that, so compare the figures, not only the versions.
Where the page sits, and the cursors to the next and previous pages.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
Example
Query
query stockCards($first: Int) {
stockCards(first: $first) {
edges {
cursor
}
nodes {
warehouseId
variantId
version
}
pageInfo {
hasNextPage
hasPreviousPage
startCursor
endCursor
}
}
}
Variables
{"first": 10}
Response
{
"data": {
"stockCards": {
"edges": [{"cursor": "example"}],
"nodes": [
{
"warehouseId": "00000000-0000-4000-8000-000000000001",
"variantId": "00000000-0000-4000-8000-000000000001",
"version": 1
}
],
"pageInfo": {
"hasNextPage": true,
"hasPreviousPage": true,
"startCursor": "example",
"endCursor": "example"
}
}
}
}
stockQuants
Description
What lies in which bin of the named warehouses: one row per variant, bin and lot with stock, in base units, by bin, variant, then row. Needs integration.read, stockCard.read and position.read; lot and lotStatus also lot.read (without it null with FORBIDDEN_ROLE at their path, the rest served). Lots are returned whatever their status: read lotStatus and lot.expiresAt. Scope as stockCards. There is no total count.
Pass exactly one of first or last, from 1 to 250, as locations.
Arguments
Input fields 4
Every supplied field narrows the result; an explicit empty list matches nothing.
Returns
Fields 2
Fields 13
What one bin holds of one variant (and one lot, when the item tracks lots), in base units.
The lot; null without one. Needs lot.read.
The batch or serial number of a stock document's line.
The lot's status; null without a lot. Needs lot.read.
Accepted values 3
RELEASEDQUARANTINEBLOCKED
Reserved for orders on this bin and lot.
max(quantity − reserved, 0): what an issue or a transfer may take from here now. Not the card's available. A bin nobody picks from holds no reservations, so free is its whole quantity.
What open outbound instructions still plan to take from this bin and lot, in base units: the remaining of every OPEN transfer advice line naming it as source, whoever wrote the advice (issue advices will add to it when they exist). A line without a source bin, or without the lot of a lot-tracked quant, is not counted here. A plan holds nothing.
What may still be planned out of this bin and lot: max(free − plannedOut, 0). Plan new transfers from this, not from free, so two advices do not ask for the same goods.
Fields 13
What one bin holds of one variant (and one lot, when the item tracks lots), in base units.
The lot; null without one. Needs lot.read.
The lot's status; null without a lot. Needs lot.read.
Accepted values 3
RELEASEDQUARANTINEBLOCKED
Reserved for orders on this bin and lot.
max(quantity − reserved, 0): what an issue or a transfer may take from here now. Not the card's available. A bin nobody picks from holds no reservations, so free is its whole quantity.
What open outbound instructions still plan to take from this bin and lot, in base units: the remaining of every OPEN transfer advice line naming it as source, whoever wrote the advice (issue advices will add to it when they exist). A line without a source bin, or without the lot of a lot-tracked quant, is not counted here. A plan holds nothing.
What may still be planned out of this bin and lot: max(free − plannedOut, 0). Plan new transfers from this, not from free, so two advices do not ask for the same goods.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
Example
Query
query stockQuants($filter: StockQuantFilter!, $first: Int) {
stockQuants(filter: $filter, first: $first) {
edges {
cursor
}
nodes {
variantId
warehouseId
locationId
locationCode
pickable
lotId
}
pageInfo {
hasNextPage
hasPreviousPage
startCursor
endCursor
}
}
}
Variables
{
"filter": {"warehouseIds": ["00000000-0000-4000-8000-000000000001"]},
"first": 10
}
Response
{
"data": {
"stockQuants": {
"edges": [{"cursor": "example"}],
"nodes": [
{
"variantId": "00000000-0000-4000-8000-000000000001",
"warehouseId": "00000000-0000-4000-8000-000000000001",
"locationId": "00000000-0000-4000-8000-000000000001",
"locationCode": "example",
"pickable": true,
"lotId": "00000000-0000-4000-8000-000000000001"
}
],
"pageInfo": {
"hasNextPage": true,
"hasPreviousPage": true,
"startCursor": "example",
"endCursor": "example"
}
}
}
}
warehouses
Description
Warehouses the key may read, archived included, by code then id. Needs integration.read and warehouse.read. Warehouses outside the key's warehouse, legal-entity or country scope are left out. There is no total count.
Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward; last alone is the last page. Every edge carries its own cursor. A page is priced at the number asked times one warehouse's selection.
Returns
One page of warehouses.
The warehouses with their cursors, by code.
Fields 2
One warehouse and its cursor.
Where this warehouse sits; pass as after (with first) or before (with last).
The same warehouses without cursors.
Where the page sits, and the cursors to the next and previous pages.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
Example
Query
query warehouses($first: Int) {
warehouses(first: $first) {
edges {
cursor
}
nodes {
id
code
name
archivedAt
}
pageInfo {
hasNextPage
hasPreviousPage
startCursor
endCursor
}
}
}
Variables
{"first": 10}
Response
{
"data": {
"warehouses": {
"edges": [{"cursor": "example"}],
"nodes": [
{
"id": "00000000-0000-4000-8000-000000000001",
"code": "example",
"name": "example",
"archivedAt": "2026-01-01T00:00:00Z"
}
],
"pageInfo": {
"hasNextPage": true,
"hasPreviousPage": true,
"startCursor": "example",
"endCursor": "example"
}
}
}
}
Invoices
invoice
Description
One invoice. Null when there is none or the key may not see it. Needs invoice.read.
Arguments
Returns
A mirrored invoice, advance invoice or credit note. Needs invoice.read.
Our id.
Accepted values 2
ISSUED-
We invoiced a customer.
RECEIVED-
A supplier invoiced us.
Accepted values 3
INVOICEADVANCE-
An advance (proforma) invoice; not a tax document.
CREDIT_NOTE-
Corrects an invoice downwards. Its amounts are negative.
Accepted values 4
PENDINGCREATEDFAILEDREMOVED-
Deleted in the accounting system (removeInvoice); kept as evidence.
The code of the accounting system's source.
Our id of the legal entity it belongs to.
Accepted values 3
EXPLICIT-
The integration named it by code.
MATCHED-
Found by the IČO our side of the invoice prints.
DEFAULT-
The organisation's default company.
Our id of the partner: named, found by IČO or e-mail, or created from the invoice's party.
Accepted values 4
EXPLICIT-
The integration named it.
MATCHED-
Found by the party's IČO or e-mail.
CREATED-
Created from the invoice's party.
MANUAL-
A person chose it.
A person (or setInvoicePartner) may set or change the partner: none was found, or one was chosen by hand.
Fields 11
One side of the invoice as the accounting system printed it.
Fields 11
One side of the invoice as the accounting system printed it.
Fields 11
One side of the invoice as the accounting system printed it.
Accepted values 6
BANK_TRANSFERCASHCARDCASH_ON_DELIVERYOFFSETOTHER
The statutory VAT wording the accounting system printed ("Dodanie je oslobodené od dane podľa § 43 zákona o DPH").
Accepted values 5
UNPAIDPARTIALLY_PAIDPAIDOVERPAIDUNKNOWN-
The accounting system does not say.
Our id of the invoice a credit note corrects, when it is mirrored.
A note for colleagues; never printed.
The lines, by lineNo. A connection, at most 250 a page.
Fields 4
Fields 2
Fields 23
Accepted values 5
ITEMTEXTADVANCE_DEDUCTIONROUNDINGDISCOUNT
EXPLICIT when the integration named the variant, else the key that matched it (SUPPLIER_CODE, BARCODE, SKU, ...).
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
The VAT summary, the highest rate first.
Fields 4
Fields 2
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
Fields 4
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
Fields 4
Fields 2
Fields 5
Accepted values 5
SALES_ORDERPURCHASE_ORDERRECEIPTISSUE-
A stock issue (výdajka).
FULFILMENT-
A consignment of an order.
Our id of the order, purchase order, receipt, issue or consignment.
Accepted values 3
SYNC-
The integration sent it.
AUTO-
The ERP found it: the invoice's order number, that order's consignments.
MANUAL-
A person made it.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
Example
Query
query invoice($ref: InvoiceRefInput!) {
invoice(ref: $ref) {
id
direction
kind
status
failureReason
source
sourceDocumentType
sourceChangedAt
syncedAt
cancelled
number
variableSymbol
constantSymbol
specificSymbol
supplierNumber
orderNumber
issueDate
taxPointDate
dueDate
receivedDate
vatClaimDate
legalEntityId
legalEntityMatch
partnerId
partnerMatch
partnerEditable
seller {
name
street
city
postalCode
countryCode
registrationId
}
buyer {
name
street
city
postalCode
countryCode
registrationId
}
delivery {
name
street
city
postalCode
countryCode
registrationId
}
paymentMethod
paymentMethodName
bankAccountNumber
bankCode
bankName
iban
swift
currencyCode
exchangeRate
exchangeRateAmount
homeCurrencyCode
textBeforeItems
textAfterItems
printedNote
vatNote
reverseCharge
oss
totalNet
totalVat
totalGross
rounding
advancesDeducted
amountDue
totalNetHome
totalVatHome
totalGrossHome
paymentStatus
paidAmount
remainingAmount
paidAt
correctsInvoiceId
correctedNumber
correctedIssueDate
correctedTaxPointDate
correctionReason
internalNote
lines(first: 10) {
totalCount
}
vatSummary(first: 10) {
totalCount
}
settlements(first: 10) {
totalCount
}
links(first: 10) {
totalCount
}
createdAt
updatedAt
}
}
Variables
{"ref": {"id": "00000000-0000-4000-8000-000000000001"}}
Response
{
"data": {
"invoice": {
"id": "00000000-0000-4000-8000-000000000001",
"direction": "ISSUED",
"kind": "INVOICE",
"status": "PENDING",
"failureReason": "example",
"source": "example",
"sourceDocumentType": "example",
"sourceChangedAt": "2026-01-01T00:00:00Z",
"syncedAt": "2026-01-01T00:00:00Z",
"cancelled": true,
"number": "example",
"variableSymbol": "example",
"constantSymbol": "example",
"specificSymbol": "example",
"supplierNumber": "example",
"orderNumber": "example",
"issueDate": "2026-01-01T00:00:00Z",
"taxPointDate": "2026-01-01T00:00:00Z",
"dueDate": "2026-01-01T00:00:00Z",
"receivedDate": "2026-01-01T00:00:00Z",
"vatClaimDate": "2026-01-01T00:00:00Z",
"legalEntityId": "00000000-0000-4000-8000-000000000001",
"legalEntityMatch": "EXPLICIT",
"partnerId": "00000000-0000-4000-8000-000000000001",
"partnerMatch": "EXPLICIT",
"partnerEditable": true,
"seller": {
"name": "example",
"street": "example",
"city": "example",
"postalCode": "example",
"countryCode": "example",
"registrationId": "example"
},
"buyer": {
"name": "example",
"street": "example",
"city": "example",
"postalCode": "example",
"countryCode": "example",
"registrationId": "example"
},
"delivery": {
"name": "example",
"street": "example",
"city": "example",
"postalCode": "example",
"countryCode": "example",
"registrationId": "example"
},
"paymentMethod": "BANK_TRANSFER",
"paymentMethodName": "example",
"bankAccountNumber": "example",
"bankCode": "example",
"bankName": "example",
"iban": "example",
"swift": "example",
"currencyCode": "example",
"exchangeRate": "10.00",
"exchangeRateAmount": 1,
"homeCurrencyCode": "example",
"textBeforeItems": "example",
"textAfterItems": "example",
"printedNote": "example",
"vatNote": "example",
"reverseCharge": true,
"oss": true,
"totalNet": "10.00",
"totalVat": "10.00",
"totalGross": "10.00",
"rounding": "10.00",
"advancesDeducted": "10.00",
"amountDue": "10.00",
"totalNetHome": "10.00",
"totalVatHome": "10.00",
"totalGrossHome": "10.00",
"paymentStatus": "UNPAID",
"paidAmount": "10.00",
"remainingAmount": "10.00",
"paidAt": "2026-01-01T00:00:00Z",
"correctsInvoiceId": "00000000-0000-4000-8000-000000000001",
"correctedNumber": "example",
"correctedIssueDate": "2026-01-01T00:00:00Z",
"correctedTaxPointDate": "2026-01-01T00:00:00Z",
"correctionReason": "example",
"internalNote": "example",
"lines": {"totalCount": 1},
"vatSummary": {"totalCount": 1},
"settlements": {"totalCount": 1},
"links": {"totalCount": 1},
"createdAt": "2026-01-01T00:00:00Z",
"updatedAt": "2026-01-01T00:00:00Z"
}
}
}
invoices
Description
The invoices the key may read, newest issued first: a connection, paged with first/after or last/before (at most 250). Needs invoice.read.
Arguments
Input fields 13
Which invoices invoices returns. Every field narrows.
Accepted values 2
ISSUED-
We invoiced a customer.
RECEIVED-
A supplier invoiced us.
Accepted values 3
INVOICEADVANCE-
An advance (proforma) invoice; not a tax document.
CREDIT_NOTE-
Corrects an invoice downwards. Its amounts are negative.
Accepted values 4
PENDINGCREATEDFAILEDREMOVED-
Deleted in the accounting system (removeInvoice); kept as evidence.
Accepted values 5
UNPAIDPARTIALLY_PAIDPAIDOVERPAIDUNKNOWN-
The accounting system does not say.
Returns
Fields 2
Fields 71
A mirrored invoice, advance invoice or credit note. Needs invoice.read.
Our id.
Accepted values 2
ISSUED-
We invoiced a customer.
RECEIVED-
A supplier invoiced us.
Accepted values 3
INVOICEADVANCE-
An advance (proforma) invoice; not a tax document.
CREDIT_NOTE-
Corrects an invoice downwards. Its amounts are negative.
Accepted values 4
PENDINGCREATEDFAILEDREMOVED-
Deleted in the accounting system (removeInvoice); kept as evidence.
The code of the accounting system's source.
Our id of the legal entity it belongs to.
Accepted values 3
EXPLICIT-
The integration named it by code.
MATCHED-
Found by the IČO our side of the invoice prints.
DEFAULT-
The organisation's default company.
Our id of the partner: named, found by IČO or e-mail, or created from the invoice's party.
Accepted values 4
EXPLICIT-
The integration named it.
MATCHED-
Found by the party's IČO or e-mail.
CREATED-
Created from the invoice's party.
MANUAL-
A person chose it.
A person (or setInvoicePartner) may set or change the partner: none was found, or one was chosen by hand.
One side of the invoice as the accounting system printed it.
One side of the invoice as the accounting system printed it.
One side of the invoice as the accounting system printed it.
Accepted values 6
BANK_TRANSFERCASHCARDCASH_ON_DELIVERYOFFSETOTHER
The statutory VAT wording the accounting system printed ("Dodanie je oslobodené od dane podľa § 43 zákona o DPH").
Accepted values 5
UNPAIDPARTIALLY_PAIDPAIDOVERPAIDUNKNOWN-
The accounting system does not say.
Our id of the invoice a credit note corrects, when it is mirrored.
A note for colleagues; never printed.
The lines, by lineNo. A connection, at most 250 a page.
The VAT summary, the highest rate first.
Fields 71
A mirrored invoice, advance invoice or credit note. Needs invoice.read.
Our id.
Accepted values 2
ISSUED-
We invoiced a customer.
RECEIVED-
A supplier invoiced us.
Accepted values 3
INVOICEADVANCE-
An advance (proforma) invoice; not a tax document.
CREDIT_NOTE-
Corrects an invoice downwards. Its amounts are negative.
Accepted values 4
PENDINGCREATEDFAILEDREMOVED-
Deleted in the accounting system (removeInvoice); kept as evidence.
The code of the accounting system's source.
Our id of the legal entity it belongs to.
Accepted values 3
EXPLICIT-
The integration named it by code.
MATCHED-
Found by the IČO our side of the invoice prints.
DEFAULT-
The organisation's default company.
Our id of the partner: named, found by IČO or e-mail, or created from the invoice's party.
Accepted values 4
EXPLICIT-
The integration named it.
MATCHED-
Found by the party's IČO or e-mail.
CREATED-
Created from the invoice's party.
MANUAL-
A person chose it.
A person (or setInvoicePartner) may set or change the partner: none was found, or one was chosen by hand.
Fields 11
One side of the invoice as the accounting system printed it.
Fields 11
One side of the invoice as the accounting system printed it.
Fields 11
One side of the invoice as the accounting system printed it.
Accepted values 6
BANK_TRANSFERCASHCARDCASH_ON_DELIVERYOFFSETOTHER
The statutory VAT wording the accounting system printed ("Dodanie je oslobodené od dane podľa § 43 zákona o DPH").
Accepted values 5
UNPAIDPARTIALLY_PAIDPAIDOVERPAIDUNKNOWN-
The accounting system does not say.
Our id of the invoice a credit note corrects, when it is mirrored.
A note for colleagues; never printed.
The lines, by lineNo. A connection, at most 250 a page.
Fields 4
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
The VAT summary, the highest rate first.
Fields 4
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
Fields 4
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
Fields 4
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
Example
Query
query invoices($first: Int) {
invoices(first: $first) {
edges {
cursor
}
nodes {
id
direction
kind
status
failureReason
source
}
pageInfo {
hasNextPage
hasPreviousPage
startCursor
endCursor
}
}
}
Variables
{"first": 10}
Response
{
"data": {
"invoices": {
"edges": [{"cursor": "example"}],
"nodes": [
{
"id": "00000000-0000-4000-8000-000000000001",
"direction": "ISSUED",
"kind": "INVOICE",
"status": "PENDING",
"failureReason": "example",
"source": "example"
}
],
"pageInfo": {
"hasNextPage": true,
"hasPreviousPage": true,
"startCursor": "example",
"endCursor": "example"
}
}
}
}
linkInvoice
Description
Links the invoice to a document the key may see. Needs invoice.write.
Arguments
Input fields 2
Accepted values 5
SALES_ORDERPURCHASE_ORDERRECEIPTISSUE-
A stock issue (výdajka).
FULFILMENT-
A consignment of an order.
Our id of the order, purchase order or receipt.
Returns
A mirrored invoice, advance invoice or credit note. Needs invoice.read.
Our id.
Accepted values 2
ISSUED-
We invoiced a customer.
RECEIVED-
A supplier invoiced us.
Accepted values 3
INVOICEADVANCE-
An advance (proforma) invoice; not a tax document.
CREDIT_NOTE-
Corrects an invoice downwards. Its amounts are negative.
Accepted values 4
PENDINGCREATEDFAILEDREMOVED-
Deleted in the accounting system (removeInvoice); kept as evidence.
The code of the accounting system's source.
Our id of the legal entity it belongs to.
Accepted values 3
EXPLICIT-
The integration named it by code.
MATCHED-
Found by the IČO our side of the invoice prints.
DEFAULT-
The organisation's default company.
Our id of the partner: named, found by IČO or e-mail, or created from the invoice's party.
Accepted values 4
EXPLICIT-
The integration named it.
MATCHED-
Found by the party's IČO or e-mail.
CREATED-
Created from the invoice's party.
MANUAL-
A person chose it.
A person (or setInvoicePartner) may set or change the partner: none was found, or one was chosen by hand.
Fields 11
One side of the invoice as the accounting system printed it.
Fields 11
One side of the invoice as the accounting system printed it.
Fields 11
One side of the invoice as the accounting system printed it.
Accepted values 6
BANK_TRANSFERCASHCARDCASH_ON_DELIVERYOFFSETOTHER
The statutory VAT wording the accounting system printed ("Dodanie je oslobodené od dane podľa § 43 zákona o DPH").
Accepted values 5
UNPAIDPARTIALLY_PAIDPAIDOVERPAIDUNKNOWN-
The accounting system does not say.
Our id of the invoice a credit note corrects, when it is mirrored.
A note for colleagues; never printed.
The lines, by lineNo. A connection, at most 250 a page.
Fields 4
Fields 2
Fields 23
Accepted values 5
ITEMTEXTADVANCE_DEDUCTIONROUNDINGDISCOUNT
EXPLICIT when the integration named the variant, else the key that matched it (SUPPLIER_CODE, BARCODE, SKU, ...).
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
The VAT summary, the highest rate first.
Fields 4
Fields 2
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
Fields 4
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
Fields 4
Fields 2
Fields 5
Accepted values 5
SALES_ORDERPURCHASE_ORDERRECEIPTISSUE-
A stock issue (výdajka).
FULFILMENT-
A consignment of an order.
Our id of the order, purchase order, receipt, issue or consignment.
Accepted values 3
SYNC-
The integration sent it.
AUTO-
The ERP found it: the invoice's order number, that order's consignments.
MANUAL-
A person made it.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
Example
Mutation
mutation linkInvoice($ref: InvoiceRefInput!, $input: InvoiceLinkInput!) {
linkInvoice(ref: $ref, input: $input) {
id
direction
kind
status
failureReason
source
sourceDocumentType
sourceChangedAt
syncedAt
cancelled
number
variableSymbol
constantSymbol
specificSymbol
supplierNumber
orderNumber
issueDate
taxPointDate
dueDate
receivedDate
vatClaimDate
legalEntityId
legalEntityMatch
partnerId
partnerMatch
partnerEditable
seller {
name
street
city
postalCode
countryCode
registrationId
}
buyer {
name
street
city
postalCode
countryCode
registrationId
}
delivery {
name
street
city
postalCode
countryCode
registrationId
}
paymentMethod
paymentMethodName
bankAccountNumber
bankCode
bankName
iban
swift
currencyCode
exchangeRate
exchangeRateAmount
homeCurrencyCode
textBeforeItems
textAfterItems
printedNote
vatNote
reverseCharge
oss
totalNet
totalVat
totalGross
rounding
advancesDeducted
amountDue
totalNetHome
totalVatHome
totalGrossHome
paymentStatus
paidAmount
remainingAmount
paidAt
correctsInvoiceId
correctedNumber
correctedIssueDate
correctedTaxPointDate
correctionReason
internalNote
lines(first: 10) {
totalCount
}
vatSummary(first: 10) {
totalCount
}
settlements(first: 10) {
totalCount
}
links(first: 10) {
totalCount
}
createdAt
updatedAt
}
}
Variables
{
"ref": {"id": "00000000-0000-4000-8000-000000000001"},
"input": {
"type": "SALES_ORDER",
"targetId": "00000000-0000-4000-8000-000000000001"
}
}
Response
{
"data": {
"linkInvoice": {
"id": "00000000-0000-4000-8000-000000000001",
"direction": "ISSUED",
"kind": "INVOICE",
"status": "PENDING",
"failureReason": "example",
"source": "example",
"sourceDocumentType": "example",
"sourceChangedAt": "2026-01-01T00:00:00Z",
"syncedAt": "2026-01-01T00:00:00Z",
"cancelled": true,
"number": "example",
"variableSymbol": "example",
"constantSymbol": "example",
"specificSymbol": "example",
"supplierNumber": "example",
"orderNumber": "example",
"issueDate": "2026-01-01T00:00:00Z",
"taxPointDate": "2026-01-01T00:00:00Z",
"dueDate": "2026-01-01T00:00:00Z",
"receivedDate": "2026-01-01T00:00:00Z",
"vatClaimDate": "2026-01-01T00:00:00Z",
"legalEntityId": "00000000-0000-4000-8000-000000000001",
"legalEntityMatch": "EXPLICIT",
"partnerId": "00000000-0000-4000-8000-000000000001",
"partnerMatch": "EXPLICIT",
"partnerEditable": true,
"seller": {
"name": "example",
"street": "example",
"city": "example",
"postalCode": "example",
"countryCode": "example",
"registrationId": "example"
},
"buyer": {
"name": "example",
"street": "example",
"city": "example",
"postalCode": "example",
"countryCode": "example",
"registrationId": "example"
},
"delivery": {
"name": "example",
"street": "example",
"city": "example",
"postalCode": "example",
"countryCode": "example",
"registrationId": "example"
},
"paymentMethod": "BANK_TRANSFER",
"paymentMethodName": "example",
"bankAccountNumber": "example",
"bankCode": "example",
"bankName": "example",
"iban": "example",
"swift": "example",
"currencyCode": "example",
"exchangeRate": "10.00",
"exchangeRateAmount": 1,
"homeCurrencyCode": "example",
"textBeforeItems": "example",
"textAfterItems": "example",
"printedNote": "example",
"vatNote": "example",
"reverseCharge": true,
"oss": true,
"totalNet": "10.00",
"totalVat": "10.00",
"totalGross": "10.00",
"rounding": "10.00",
"advancesDeducted": "10.00",
"amountDue": "10.00",
"totalNetHome": "10.00",
"totalVatHome": "10.00",
"totalGrossHome": "10.00",
"paymentStatus": "UNPAID",
"paidAmount": "10.00",
"remainingAmount": "10.00",
"paidAt": "2026-01-01T00:00:00Z",
"correctsInvoiceId": "00000000-0000-4000-8000-000000000001",
"correctedNumber": "example",
"correctedIssueDate": "2026-01-01T00:00:00Z",
"correctedTaxPointDate": "2026-01-01T00:00:00Z",
"correctionReason": "example",
"internalNote": "example",
"lines": {"totalCount": 1},
"vatSummary": {"totalCount": 1},
"settlements": {"totalCount": 1},
"links": {"totalCount": 1},
"createdAt": "2026-01-01T00:00:00Z",
"updatedAt": "2026-01-01T00:00:00Z"
}
}
}
removeInvoice
Description
The document was deleted in the accounting system: REMOVED, kept as evidence. Needs invoice.sync.
Arguments
Returns
What syncInvoice or removeInvoice did.
Fields 71
A mirrored invoice, advance invoice or credit note. Needs invoice.read.
Our id.
Accepted values 2
ISSUED-
We invoiced a customer.
RECEIVED-
A supplier invoiced us.
Accepted values 3
INVOICEADVANCE-
An advance (proforma) invoice; not a tax document.
CREDIT_NOTE-
Corrects an invoice downwards. Its amounts are negative.
Accepted values 4
PENDINGCREATEDFAILEDREMOVED-
Deleted in the accounting system (removeInvoice); kept as evidence.
The code of the accounting system's source.
Our id of the legal entity it belongs to.
Accepted values 3
EXPLICIT-
The integration named it by code.
MATCHED-
Found by the IČO our side of the invoice prints.
DEFAULT-
The organisation's default company.
Our id of the partner: named, found by IČO or e-mail, or created from the invoice's party.
Accepted values 4
EXPLICIT-
The integration named it.
MATCHED-
Found by the party's IČO or e-mail.
CREATED-
Created from the invoice's party.
MANUAL-
A person chose it.
A person (or setInvoicePartner) may set or change the partner: none was found, or one was chosen by hand.
Fields 11
One side of the invoice as the accounting system printed it.
Fields 11
One side of the invoice as the accounting system printed it.
Fields 11
One side of the invoice as the accounting system printed it.
Accepted values 6
BANK_TRANSFERCASHCARDCASH_ON_DELIVERYOFFSETOTHER
The statutory VAT wording the accounting system printed ("Dodanie je oslobodené od dane podľa § 43 zákona o DPH").
Accepted values 5
UNPAIDPARTIALLY_PAIDPAIDOVERPAIDUNKNOWN-
The accounting system does not say.
Our id of the invoice a credit note corrects, when it is mirrored.
A note for colleagues; never printed.
The lines, by lineNo. A connection, at most 250 a page.
Fields 4
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
The VAT summary, the highest rate first.
Fields 4
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
Fields 4
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
Fields 4
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
False when nothing was written: the same document again, or a STALE one.
Accepted values 1
STALE-
Its sourceChangedAt is older than the one the ERP holds.
What the match did that the caller should know: a partner found by IČO, a line no code matched.
Example
Mutation
mutation removeInvoice($input: RemoveInvoiceInput!) {
removeInvoice(input: $input) {
invoice {
id
direction
kind
status
failureReason
source
}
changed
reason
warnings {
code
message
field
}
}
}
Variables
{"input": {"source": "example", "externalId": "example"}}
Response
{
"data": {
"removeInvoice": {
"invoice": {
"id": "00000000-0000-4000-8000-000000000001",
"direction": "ISSUED",
"kind": "INVOICE",
"status": "PENDING",
"failureReason": "example",
"source": "example"
},
"changed": true,
"reason": "STALE",
"warnings": [
{"code": "example", "message": "example", "field": "example"}
]
}
}
}
setInvoicePartner
Description
Sets the invoice's partner by hand -- only while none was found or one was chosen by hand (partnerEditable); otherwise CONFLICT with extensions.reason PARTNER_LOCKED. Needs invoice.write.
Arguments
Input fields 1
Our id of the partner; null clears it.
Returns
A mirrored invoice, advance invoice or credit note. Needs invoice.read.
Our id.
Accepted values 2
ISSUED-
We invoiced a customer.
RECEIVED-
A supplier invoiced us.
Accepted values 3
INVOICEADVANCE-
An advance (proforma) invoice; not a tax document.
CREDIT_NOTE-
Corrects an invoice downwards. Its amounts are negative.
Accepted values 4
PENDINGCREATEDFAILEDREMOVED-
Deleted in the accounting system (removeInvoice); kept as evidence.
The code of the accounting system's source.
Our id of the legal entity it belongs to.
Accepted values 3
EXPLICIT-
The integration named it by code.
MATCHED-
Found by the IČO our side of the invoice prints.
DEFAULT-
The organisation's default company.
Our id of the partner: named, found by IČO or e-mail, or created from the invoice's party.
Accepted values 4
EXPLICIT-
The integration named it.
MATCHED-
Found by the party's IČO or e-mail.
CREATED-
Created from the invoice's party.
MANUAL-
A person chose it.
A person (or setInvoicePartner) may set or change the partner: none was found, or one was chosen by hand.
Fields 11
One side of the invoice as the accounting system printed it.
Fields 11
One side of the invoice as the accounting system printed it.
Fields 11
One side of the invoice as the accounting system printed it.
Accepted values 6
BANK_TRANSFERCASHCARDCASH_ON_DELIVERYOFFSETOTHER
The statutory VAT wording the accounting system printed ("Dodanie je oslobodené od dane podľa § 43 zákona o DPH").
Accepted values 5
UNPAIDPARTIALLY_PAIDPAIDOVERPAIDUNKNOWN-
The accounting system does not say.
Our id of the invoice a credit note corrects, when it is mirrored.
A note for colleagues; never printed.
The lines, by lineNo. A connection, at most 250 a page.
Fields 4
Fields 2
Fields 23
Accepted values 5
ITEMTEXTADVANCE_DEDUCTIONROUNDINGDISCOUNT
EXPLICIT when the integration named the variant, else the key that matched it (SUPPLIER_CODE, BARCODE, SKU, ...).
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
The VAT summary, the highest rate first.
Fields 4
Fields 2
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
Fields 4
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
Fields 4
Fields 2
Fields 5
Accepted values 5
SALES_ORDERPURCHASE_ORDERRECEIPTISSUE-
A stock issue (výdajka).
FULFILMENT-
A consignment of an order.
Our id of the order, purchase order, receipt, issue or consignment.
Accepted values 3
SYNC-
The integration sent it.
AUTO-
The ERP found it: the invoice's order number, that order's consignments.
MANUAL-
A person made it.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
Example
Mutation
mutation setInvoicePartner($ref: InvoiceRefInput!, $input: SetInvoicePartnerInput!) {
setInvoicePartner(ref: $ref, input: $input) {
id
direction
kind
status
failureReason
source
sourceDocumentType
sourceChangedAt
syncedAt
cancelled
number
variableSymbol
constantSymbol
specificSymbol
supplierNumber
orderNumber
issueDate
taxPointDate
dueDate
receivedDate
vatClaimDate
legalEntityId
legalEntityMatch
partnerId
partnerMatch
partnerEditable
seller {
name
street
city
postalCode
countryCode
registrationId
}
buyer {
name
street
city
postalCode
countryCode
registrationId
}
delivery {
name
street
city
postalCode
countryCode
registrationId
}
paymentMethod
paymentMethodName
bankAccountNumber
bankCode
bankName
iban
swift
currencyCode
exchangeRate
exchangeRateAmount
homeCurrencyCode
textBeforeItems
textAfterItems
printedNote
vatNote
reverseCharge
oss
totalNet
totalVat
totalGross
rounding
advancesDeducted
amountDue
totalNetHome
totalVatHome
totalGrossHome
paymentStatus
paidAmount
remainingAmount
paidAt
correctsInvoiceId
correctedNumber
correctedIssueDate
correctedTaxPointDate
correctionReason
internalNote
lines(first: 10) {
totalCount
}
vatSummary(first: 10) {
totalCount
}
settlements(first: 10) {
totalCount
}
links(first: 10) {
totalCount
}
createdAt
updatedAt
}
}
Variables
{"ref": {"id": "00000000-0000-4000-8000-000000000001"}, "input": {}}
Response
{
"data": {
"setInvoicePartner": {
"id": "00000000-0000-4000-8000-000000000001",
"direction": "ISSUED",
"kind": "INVOICE",
"status": "PENDING",
"failureReason": "example",
"source": "example",
"sourceDocumentType": "example",
"sourceChangedAt": "2026-01-01T00:00:00Z",
"syncedAt": "2026-01-01T00:00:00Z",
"cancelled": true,
"number": "example",
"variableSymbol": "example",
"constantSymbol": "example",
"specificSymbol": "example",
"supplierNumber": "example",
"orderNumber": "example",
"issueDate": "2026-01-01T00:00:00Z",
"taxPointDate": "2026-01-01T00:00:00Z",
"dueDate": "2026-01-01T00:00:00Z",
"receivedDate": "2026-01-01T00:00:00Z",
"vatClaimDate": "2026-01-01T00:00:00Z",
"legalEntityId": "00000000-0000-4000-8000-000000000001",
"legalEntityMatch": "EXPLICIT",
"partnerId": "00000000-0000-4000-8000-000000000001",
"partnerMatch": "EXPLICIT",
"partnerEditable": true,
"seller": {
"name": "example",
"street": "example",
"city": "example",
"postalCode": "example",
"countryCode": "example",
"registrationId": "example"
},
"buyer": {
"name": "example",
"street": "example",
"city": "example",
"postalCode": "example",
"countryCode": "example",
"registrationId": "example"
},
"delivery": {
"name": "example",
"street": "example",
"city": "example",
"postalCode": "example",
"countryCode": "example",
"registrationId": "example"
},
"paymentMethod": "BANK_TRANSFER",
"paymentMethodName": "example",
"bankAccountNumber": "example",
"bankCode": "example",
"bankName": "example",
"iban": "example",
"swift": "example",
"currencyCode": "example",
"exchangeRate": "10.00",
"exchangeRateAmount": 1,
"homeCurrencyCode": "example",
"textBeforeItems": "example",
"textAfterItems": "example",
"printedNote": "example",
"vatNote": "example",
"reverseCharge": true,
"oss": true,
"totalNet": "10.00",
"totalVat": "10.00",
"totalGross": "10.00",
"rounding": "10.00",
"advancesDeducted": "10.00",
"amountDue": "10.00",
"totalNetHome": "10.00",
"totalVatHome": "10.00",
"totalGrossHome": "10.00",
"paymentStatus": "UNPAID",
"paidAmount": "10.00",
"remainingAmount": "10.00",
"paidAt": "2026-01-01T00:00:00Z",
"correctsInvoiceId": "00000000-0000-4000-8000-000000000001",
"correctedNumber": "example",
"correctedIssueDate": "2026-01-01T00:00:00Z",
"correctedTaxPointDate": "2026-01-01T00:00:00Z",
"correctionReason": "example",
"internalNote": "example",
"lines": {"totalCount": 1},
"vatSummary": {"totalCount": 1},
"settlements": {"totalCount": 1},
"links": {"totalCount": 1},
"createdAt": "2026-01-01T00:00:00Z",
"updatedAt": "2026-01-01T00:00:00Z"
}
}
}
syncInvoice
Description
Writes the accounting system's document into the ERP: creates it the first time, replaces every field below, the lines, the VAT summary and the settlements after. Needs invoice.sync. The internal note and the tags are never touched. kind and direction cannot change (CONFLICT KIND_CHANGED).
Arguments
Input fields 62
The whole document, as the accounting system holds it now.
The code of the accounting system's source; it must be of kind ERP.
The accounting system's own id of the document.
When the document last changed in the accounting system; an older write is STALE.
Accepted values 2
ISSUED-
We invoiced a customer.
RECEIVED-
A supplier invoiced us.
Accepted values 3
INVOICEADVANCE-
An advance (proforma) invoice; not a tax document.
CREDIT_NOTE-
Corrects an invoice downwards. Its amounts are negative.
The company it belongs to, by code. Omitted: the company whose IČO our side of the invoice prints (the seller of an issued invoice, the buyer of a received one), else the default.
The partner, when the integration knows it. Omitted, or an externalId nothing holds yet: found by the party's IČO, then e-mail (the oldest of several, with a warning), else created from the party -- the buyer of an issued invoice, the seller of a received one. A partner already on the invoice stays.
Default: false
Accepted values 6
BANK_TRANSFERCASHCARDCASH_ON_DELIVERYOFFSETOTHER
The home currency; the document's currency when omitted.
The statutory VAT wording printed on the document ("Dodanie je oslobodené od dane podľa § 43 zákona o DPH"); omitted clears it, like the other header texts.
Default: false
Default: false
Default: UNKNOWN
Accepted values 5
UNPAIDPARTIALLY_PAIDPAIDOVERPAIDUNKNOWN-
The accounting system does not say.
Null when the accounting system does not say.
On a credit note: the invoice it corrects. Unknown stays null; correctedNumber is kept.
Replaces every line.
Input fields 21
Unique within the invoice; the line's position when omitted.
Default: ITEM
Accepted values 5
ITEMTEXTADVANCE_DEDUCTIONROUNDINGDISCOUNT
The code the line names its goods by: the supplier's (received) or customer's (issued) code, or our SKU.
EAN/GTIN.
The maker's part number.
Default: false
Our id of the product variant. Without it the line is matched by code, barcode and manufacturer code.
On ADVANCE_DEDUCTION: the deducted advance. Unknown stays null.
Names one invoice: either id, or source together with externalId -- never both.
Replaces the VAT summary.
Replaces the settlements.
Input fields 5
Accepted values 2
ADVANCE_DEDUCTIONCREDIT_NOTE_OFFSET
The advance or credit note; unknown stays null and counterNumber is kept.
Names one invoice: either id, or source together with externalId -- never both.
Added, never removed.
Input fields 2
Accepted values 5
SALES_ORDERPURCHASE_ORDERRECEIPTISSUE-
A stock issue (výdajka).
FULFILMENT-
A consignment of an order.
A sales order by id or by its source id; a purchase order or a receipt by our id.
Names a partner or a sales order: our id, or its id in a source (the sync's own by default).
Returns
What syncInvoice or removeInvoice did.
Fields 71
A mirrored invoice, advance invoice or credit note. Needs invoice.read.
Our id.
Accepted values 2
ISSUED-
We invoiced a customer.
RECEIVED-
A supplier invoiced us.
Accepted values 3
INVOICEADVANCE-
An advance (proforma) invoice; not a tax document.
CREDIT_NOTE-
Corrects an invoice downwards. Its amounts are negative.
Accepted values 4
PENDINGCREATEDFAILEDREMOVED-
Deleted in the accounting system (removeInvoice); kept as evidence.
The code of the accounting system's source.
Our id of the legal entity it belongs to.
Accepted values 3
EXPLICIT-
The integration named it by code.
MATCHED-
Found by the IČO our side of the invoice prints.
DEFAULT-
The organisation's default company.
Our id of the partner: named, found by IČO or e-mail, or created from the invoice's party.
Accepted values 4
EXPLICIT-
The integration named it.
MATCHED-
Found by the party's IČO or e-mail.
CREATED-
Created from the invoice's party.
MANUAL-
A person chose it.
A person (or setInvoicePartner) may set or change the partner: none was found, or one was chosen by hand.
Fields 11
One side of the invoice as the accounting system printed it.
Fields 11
One side of the invoice as the accounting system printed it.
Fields 11
One side of the invoice as the accounting system printed it.
Accepted values 6
BANK_TRANSFERCASHCARDCASH_ON_DELIVERYOFFSETOTHER
The statutory VAT wording the accounting system printed ("Dodanie je oslobodené od dane podľa § 43 zákona o DPH").
Accepted values 5
UNPAIDPARTIALLY_PAIDPAIDOVERPAIDUNKNOWN-
The accounting system does not say.
Our id of the invoice a credit note corrects, when it is mirrored.
A note for colleagues; never printed.
The lines, by lineNo. A connection, at most 250 a page.
Fields 4
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
The VAT summary, the highest rate first.
Fields 4
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
Fields 4
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
Fields 4
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
False when nothing was written: the same document again, or a STALE one.
Accepted values 1
STALE-
Its sourceChangedAt is older than the one the ERP holds.
What the match did that the caller should know: a partner found by IČO, a line no code matched.
Example
Mutation
mutation syncInvoice($input: SyncInvoiceInput!) {
syncInvoice(input: $input) {
invoice {
id
direction
kind
status
failureReason
source
}
changed
reason
warnings {
code
message
field
}
}
}
Variables
{
"input": {
"source": "example",
"externalId": "example",
"direction": "ISSUED",
"kind": "INVOICE",
"number": "example",
"currencyCode": "example",
"totalNet": "10.00",
"totalVat": "10.00",
"totalGross": "10.00",
"amountDue": "10.00"
}
}
Response
{
"data": {
"syncInvoice": {
"invoice": {
"id": "00000000-0000-4000-8000-000000000001",
"direction": "ISSUED",
"kind": "INVOICE",
"status": "PENDING",
"failureReason": "example",
"source": "example"
},
"changed": true,
"reason": "STALE",
"warnings": [
{"code": "example", "message": "example", "field": "example"}
]
}
}
}
unlinkInvoice
Arguments
Input fields 2
Accepted values 5
SALES_ORDERPURCHASE_ORDERRECEIPTISSUE-
A stock issue (výdajka).
FULFILMENT-
A consignment of an order.
Our id of the order, purchase order or receipt.
Returns
A mirrored invoice, advance invoice or credit note. Needs invoice.read.
Our id.
Accepted values 2
ISSUED-
We invoiced a customer.
RECEIVED-
A supplier invoiced us.
Accepted values 3
INVOICEADVANCE-
An advance (proforma) invoice; not a tax document.
CREDIT_NOTE-
Corrects an invoice downwards. Its amounts are negative.
Accepted values 4
PENDINGCREATEDFAILEDREMOVED-
Deleted in the accounting system (removeInvoice); kept as evidence.
The code of the accounting system's source.
Our id of the legal entity it belongs to.
Accepted values 3
EXPLICIT-
The integration named it by code.
MATCHED-
Found by the IČO our side of the invoice prints.
DEFAULT-
The organisation's default company.
Our id of the partner: named, found by IČO or e-mail, or created from the invoice's party.
Accepted values 4
EXPLICIT-
The integration named it.
MATCHED-
Found by the party's IČO or e-mail.
CREATED-
Created from the invoice's party.
MANUAL-
A person chose it.
A person (or setInvoicePartner) may set or change the partner: none was found, or one was chosen by hand.
Fields 11
One side of the invoice as the accounting system printed it.
Fields 11
One side of the invoice as the accounting system printed it.
Fields 11
One side of the invoice as the accounting system printed it.
Accepted values 6
BANK_TRANSFERCASHCARDCASH_ON_DELIVERYOFFSETOTHER
The statutory VAT wording the accounting system printed ("Dodanie je oslobodené od dane podľa § 43 zákona o DPH").
Accepted values 5
UNPAIDPARTIALLY_PAIDPAIDOVERPAIDUNKNOWN-
The accounting system does not say.
Our id of the invoice a credit note corrects, when it is mirrored.
A note for colleagues; never printed.
The lines, by lineNo. A connection, at most 250 a page.
Fields 4
Fields 2
Fields 23
Accepted values 5
ITEMTEXTADVANCE_DEDUCTIONROUNDINGDISCOUNT
EXPLICIT when the integration named the variant, else the key that matched it (SUPPLIER_CODE, BARCODE, SKU, ...).
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
The VAT summary, the highest rate first.
Fields 4
Fields 2
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
Fields 4
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
Fields 4
Fields 2
Fields 5
Accepted values 5
SALES_ORDERPURCHASE_ORDERRECEIPTISSUE-
A stock issue (výdajka).
FULFILMENT-
A consignment of an order.
Our id of the order, purchase order, receipt, issue or consignment.
Accepted values 3
SYNC-
The integration sent it.
AUTO-
The ERP found it: the invoice's order number, that order's consignments.
MANUAL-
A person made it.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
Example
Mutation
mutation unlinkInvoice($ref: InvoiceRefInput!, $input: InvoiceLinkInput!) {
unlinkInvoice(ref: $ref, input: $input) {
id
direction
kind
status
failureReason
source
sourceDocumentType
sourceChangedAt
syncedAt
cancelled
number
variableSymbol
constantSymbol
specificSymbol
supplierNumber
orderNumber
issueDate
taxPointDate
dueDate
receivedDate
vatClaimDate
legalEntityId
legalEntityMatch
partnerId
partnerMatch
partnerEditable
seller {
name
street
city
postalCode
countryCode
registrationId
}
buyer {
name
street
city
postalCode
countryCode
registrationId
}
delivery {
name
street
city
postalCode
countryCode
registrationId
}
paymentMethod
paymentMethodName
bankAccountNumber
bankCode
bankName
iban
swift
currencyCode
exchangeRate
exchangeRateAmount
homeCurrencyCode
textBeforeItems
textAfterItems
printedNote
vatNote
reverseCharge
oss
totalNet
totalVat
totalGross
rounding
advancesDeducted
amountDue
totalNetHome
totalVatHome
totalGrossHome
paymentStatus
paidAmount
remainingAmount
paidAt
correctsInvoiceId
correctedNumber
correctedIssueDate
correctedTaxPointDate
correctionReason
internalNote
lines(first: 10) {
totalCount
}
vatSummary(first: 10) {
totalCount
}
settlements(first: 10) {
totalCount
}
links(first: 10) {
totalCount
}
createdAt
updatedAt
}
}
Variables
{
"ref": {"id": "00000000-0000-4000-8000-000000000001"},
"input": {
"type": "SALES_ORDER",
"targetId": "00000000-0000-4000-8000-000000000001"
}
}
Response
{
"data": {
"unlinkInvoice": {
"id": "00000000-0000-4000-8000-000000000001",
"direction": "ISSUED",
"kind": "INVOICE",
"status": "PENDING",
"failureReason": "example",
"source": "example",
"sourceDocumentType": "example",
"sourceChangedAt": "2026-01-01T00:00:00Z",
"syncedAt": "2026-01-01T00:00:00Z",
"cancelled": true,
"number": "example",
"variableSymbol": "example",
"constantSymbol": "example",
"specificSymbol": "example",
"supplierNumber": "example",
"orderNumber": "example",
"issueDate": "2026-01-01T00:00:00Z",
"taxPointDate": "2026-01-01T00:00:00Z",
"dueDate": "2026-01-01T00:00:00Z",
"receivedDate": "2026-01-01T00:00:00Z",
"vatClaimDate": "2026-01-01T00:00:00Z",
"legalEntityId": "00000000-0000-4000-8000-000000000001",
"legalEntityMatch": "EXPLICIT",
"partnerId": "00000000-0000-4000-8000-000000000001",
"partnerMatch": "EXPLICIT",
"partnerEditable": true,
"seller": {
"name": "example",
"street": "example",
"city": "example",
"postalCode": "example",
"countryCode": "example",
"registrationId": "example"
},
"buyer": {
"name": "example",
"street": "example",
"city": "example",
"postalCode": "example",
"countryCode": "example",
"registrationId": "example"
},
"delivery": {
"name": "example",
"street": "example",
"city": "example",
"postalCode": "example",
"countryCode": "example",
"registrationId": "example"
},
"paymentMethod": "BANK_TRANSFER",
"paymentMethodName": "example",
"bankAccountNumber": "example",
"bankCode": "example",
"bankName": "example",
"iban": "example",
"swift": "example",
"currencyCode": "example",
"exchangeRate": "10.00",
"exchangeRateAmount": 1,
"homeCurrencyCode": "example",
"textBeforeItems": "example",
"textAfterItems": "example",
"printedNote": "example",
"vatNote": "example",
"reverseCharge": true,
"oss": true,
"totalNet": "10.00",
"totalVat": "10.00",
"totalGross": "10.00",
"rounding": "10.00",
"advancesDeducted": "10.00",
"amountDue": "10.00",
"totalNetHome": "10.00",
"totalVatHome": "10.00",
"totalGrossHome": "10.00",
"paymentStatus": "UNPAID",
"paidAmount": "10.00",
"remainingAmount": "10.00",
"paidAt": "2026-01-01T00:00:00Z",
"correctsInvoiceId": "00000000-0000-4000-8000-000000000001",
"correctedNumber": "example",
"correctedIssueDate": "2026-01-01T00:00:00Z",
"correctedTaxPointDate": "2026-01-01T00:00:00Z",
"correctionReason": "example",
"internalNote": "example",
"lines": {"totalCount": 1},
"vatSummary": {"totalCount": 1},
"settlements": {"totalCount": 1},
"links": {"totalCount": 1},
"createdAt": "2026-01-01T00:00:00Z",
"updatedAt": "2026-01-01T00:00:00Z"
}
}
}
updateInvoice
Description
The internal note. Needs invoice.write.
Arguments
Input fields 1
Omitted keeps, null or blank clears.
Returns
A mirrored invoice, advance invoice or credit note. Needs invoice.read.
Our id.
Accepted values 2
ISSUED-
We invoiced a customer.
RECEIVED-
A supplier invoiced us.
Accepted values 3
INVOICEADVANCE-
An advance (proforma) invoice; not a tax document.
CREDIT_NOTE-
Corrects an invoice downwards. Its amounts are negative.
Accepted values 4
PENDINGCREATEDFAILEDREMOVED-
Deleted in the accounting system (removeInvoice); kept as evidence.
The code of the accounting system's source.
Our id of the legal entity it belongs to.
Accepted values 3
EXPLICIT-
The integration named it by code.
MATCHED-
Found by the IČO our side of the invoice prints.
DEFAULT-
The organisation's default company.
Our id of the partner: named, found by IČO or e-mail, or created from the invoice's party.
Accepted values 4
EXPLICIT-
The integration named it.
MATCHED-
Found by the party's IČO or e-mail.
CREATED-
Created from the invoice's party.
MANUAL-
A person chose it.
A person (or setInvoicePartner) may set or change the partner: none was found, or one was chosen by hand.
Fields 11
One side of the invoice as the accounting system printed it.
Fields 11
One side of the invoice as the accounting system printed it.
Fields 11
One side of the invoice as the accounting system printed it.
Accepted values 6
BANK_TRANSFERCASHCARDCASH_ON_DELIVERYOFFSETOTHER
The statutory VAT wording the accounting system printed ("Dodanie je oslobodené od dane podľa § 43 zákona o DPH").
Accepted values 5
UNPAIDPARTIALLY_PAIDPAIDOVERPAIDUNKNOWN-
The accounting system does not say.
Our id of the invoice a credit note corrects, when it is mirrored.
A note for colleagues; never printed.
The lines, by lineNo. A connection, at most 250 a page.
Fields 4
Fields 2
Fields 23
Accepted values 5
ITEMTEXTADVANCE_DEDUCTIONROUNDINGDISCOUNT
EXPLICIT when the integration named the variant, else the key that matched it (SUPPLIER_CODE, BARCODE, SKU, ...).
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
The VAT summary, the highest rate first.
Fields 4
Fields 2
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
Fields 4
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
Fields 4
Fields 2
Fields 5
Accepted values 5
SALES_ORDERPURCHASE_ORDERRECEIPTISSUE-
A stock issue (výdajka).
FULFILMENT-
A consignment of an order.
Our id of the order, purchase order, receipt, issue or consignment.
Accepted values 3
SYNC-
The integration sent it.
AUTO-
The ERP found it: the invoice's order number, that order's consignments.
MANUAL-
A person made it.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
Example
Mutation
mutation updateInvoice($ref: InvoiceRefInput!, $input: UpdateInvoiceInput!) {
updateInvoice(ref: $ref, input: $input) {
id
direction
kind
status
failureReason
source
sourceDocumentType
sourceChangedAt
syncedAt
cancelled
number
variableSymbol
constantSymbol
specificSymbol
supplierNumber
orderNumber
issueDate
taxPointDate
dueDate
receivedDate
vatClaimDate
legalEntityId
legalEntityMatch
partnerId
partnerMatch
partnerEditable
seller {
name
street
city
postalCode
countryCode
registrationId
}
buyer {
name
street
city
postalCode
countryCode
registrationId
}
delivery {
name
street
city
postalCode
countryCode
registrationId
}
paymentMethod
paymentMethodName
bankAccountNumber
bankCode
bankName
iban
swift
currencyCode
exchangeRate
exchangeRateAmount
homeCurrencyCode
textBeforeItems
textAfterItems
printedNote
vatNote
reverseCharge
oss
totalNet
totalVat
totalGross
rounding
advancesDeducted
amountDue
totalNetHome
totalVatHome
totalGrossHome
paymentStatus
paidAmount
remainingAmount
paidAt
correctsInvoiceId
correctedNumber
correctedIssueDate
correctedTaxPointDate
correctionReason
internalNote
lines(first: 10) {
totalCount
}
vatSummary(first: 10) {
totalCount
}
settlements(first: 10) {
totalCount
}
links(first: 10) {
totalCount
}
createdAt
updatedAt
}
}
Variables
{"ref": {"id": "00000000-0000-4000-8000-000000000001"}, "input": {}}
Response
{
"data": {
"updateInvoice": {
"id": "00000000-0000-4000-8000-000000000001",
"direction": "ISSUED",
"kind": "INVOICE",
"status": "PENDING",
"failureReason": "example",
"source": "example",
"sourceDocumentType": "example",
"sourceChangedAt": "2026-01-01T00:00:00Z",
"syncedAt": "2026-01-01T00:00:00Z",
"cancelled": true,
"number": "example",
"variableSymbol": "example",
"constantSymbol": "example",
"specificSymbol": "example",
"supplierNumber": "example",
"orderNumber": "example",
"issueDate": "2026-01-01T00:00:00Z",
"taxPointDate": "2026-01-01T00:00:00Z",
"dueDate": "2026-01-01T00:00:00Z",
"receivedDate": "2026-01-01T00:00:00Z",
"vatClaimDate": "2026-01-01T00:00:00Z",
"legalEntityId": "00000000-0000-4000-8000-000000000001",
"legalEntityMatch": "EXPLICIT",
"partnerId": "00000000-0000-4000-8000-000000000001",
"partnerMatch": "EXPLICIT",
"partnerEditable": true,
"seller": {
"name": "example",
"street": "example",
"city": "example",
"postalCode": "example",
"countryCode": "example",
"registrationId": "example"
},
"buyer": {
"name": "example",
"street": "example",
"city": "example",
"postalCode": "example",
"countryCode": "example",
"registrationId": "example"
},
"delivery": {
"name": "example",
"street": "example",
"city": "example",
"postalCode": "example",
"countryCode": "example",
"registrationId": "example"
},
"paymentMethod": "BANK_TRANSFER",
"paymentMethodName": "example",
"bankAccountNumber": "example",
"bankCode": "example",
"bankName": "example",
"iban": "example",
"swift": "example",
"currencyCode": "example",
"exchangeRate": "10.00",
"exchangeRateAmount": 1,
"homeCurrencyCode": "example",
"textBeforeItems": "example",
"textAfterItems": "example",
"printedNote": "example",
"vatNote": "example",
"reverseCharge": true,
"oss": true,
"totalNet": "10.00",
"totalVat": "10.00",
"totalGross": "10.00",
"rounding": "10.00",
"advancesDeducted": "10.00",
"amountDue": "10.00",
"totalNetHome": "10.00",
"totalVatHome": "10.00",
"totalGrossHome": "10.00",
"paymentStatus": "UNPAID",
"paidAmount": "10.00",
"remainingAmount": "10.00",
"paidAt": "2026-01-01T00:00:00Z",
"correctsInvoiceId": "00000000-0000-4000-8000-000000000001",
"correctedNumber": "example",
"correctedIssueDate": "2026-01-01T00:00:00Z",
"correctedTaxPointDate": "2026-01-01T00:00:00Z",
"correctionReason": "example",
"internalNote": "example",
"lines": {"totalCount": 1},
"vatSummary": {"totalCount": 1},
"settlements": {"totalCount": 1},
"links": {"totalCount": 1},
"createdAt": "2026-01-01T00:00:00Z",
"updatedAt": "2026-01-01T00:00:00Z"
}
}
}
Shipments
carrierProfiles
Description
Active Chameleoon carrier profiles for selecting an operational route. Ordered by carrier code, profile and a stable opaque tiebreaker. Requires integration.read. totalCount counts every active profile in this organisation, independently of the current cursor window.
Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward; last alone is the final page. Every edge carries its own cursor.
Returns
One keyset-cursor page of active carrier profiles.
Profiles with their cursors, ordered by code, profile and a stable opaque tiebreaker.
Fields 2
One profile and its cursor.
Where this profile sits; pass as after (with first) or before (with last).
Fields 4
An operational route of the synchronized Chameleoon catalogue. carrierProfiles lists only the active ones; Shipment.carrier is the route a shipment was sent with, which the catalogue may since have deactivated or dropped (then its codes stand in for its names).
The Chameleoon courier id.
The courier's profile id.
The courier's synchronized display name.
The profile's synchronized display name. When the catalogue gives the profile none, the courier's name (the same value as name) -- never null, so the field stays as it was published.
The same profiles without cursors.
Fields 4
An operational route of the synchronized Chameleoon catalogue. carrierProfiles lists only the active ones; Shipment.carrier is the route a shipment was sent with, which the catalogue may since have deactivated or dropped (then its codes stand in for its names).
The Chameleoon courier id.
The courier's profile id.
The courier's synchronized display name.
The profile's synchronized display name. When the catalogue gives the profile none, the courier's name (the same value as name) -- never null, so the field stays as it was published.
How many active profiles this organisation has across all pages.
Where this page sits in the active catalogue.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
Example
Query
query carrierProfiles($first: Int) {
carrierProfiles(first: $first) {
edges {
cursor
}
nodes {
code
profile
name
service
}
totalCount
pageInfo {
hasNextPage
hasPreviousPage
startCursor
endCursor
}
}
}
Variables
{"first": 10}
Response
{
"data": {
"carrierProfiles": {
"edges": [{"cursor": "example"}],
"nodes": [
{
"code": "example",
"profile": "example",
"name": "example",
"service": "example"
}
],
"totalCount": 1,
"pageInfo": {
"hasNextPage": true,
"hasPreviousPage": true,
"startCursor": "example",
"endCursor": "example"
}
}
}
}
shipment
Description
One carrier shipment by id -- the entityId of the shipment.* events. Requires integration.read and shipment.read. Null when it does not exist, is outside the key's legal-entity or warehouse scope, or never reached the carrier.
Arguments
Returns
A carrier shipment of a consignment, as the carrier accepted it.
Its own number, e.g. ZAS-2026-00001.
Accepted values 2
CREATED-
The carrier accepted it; its shipping numbers are answered at this moment.
CANCELLED-
Cancelled before the carrier took it.
The carrier's shipping numbers (tracking numbers), in the carrier's order; empty when it answered none usable. They never arrive later: a CREATED shipment has every number it will have. A number finds the recipient's address at the carrier, so it requires partner.read and the shipment's customer in the key's partner scope: null with FORBIDDEN_ROLE or FORBIDDEN_SCOPE at this path without them, the rest of the shipment served. Null, without an error, once the customer is erased.
The carrier's tracking state, as the events feed carries it: PENDING, LABEL_CREATED, IN_TRANSIT, OUT_FOR_DELIVERY, READY_FOR_PICKUP, DELIVERED, RETURNED, FAILED or UNKNOWN. More codes may be added.
The carrier route it was sent with. Its names are the catalogue's; a route the catalogue no longer holds keeps its codes as names.
Fields 4
An operational route of the synchronized Chameleoon catalogue. carrierProfiles lists only the active ones; Shipment.carrier is the route a shipment was sent with, which the catalogue may since have deactivated or dropped (then its codes stand in for its names).
The Chameleoon courier id.
The courier's profile id.
The courier's synchronized display name.
The profile's synchronized display name. When the catalogue gives the profile none, the courier's name (the same value as name) -- never null, so the field stays as it was published.
The sales order it ships. A bare id, which may name an order the key cannot open.
The consignment it ships. A bare id.
Its last event's version, as in the events feed. Null when this read and the last event disagree (a newer event is being published) or it has published none.
When its last event was published; null exactly when version is.
Example
Query
query shipment($id: UUID!) {
shipment(id: $id) {
id
number
status
numbers
trackingStatus
carrier {
code
profile
name
service
}
salesOrderId
fulfilmentId
version
createdAt
changedAt
}
}
Variables
{"id": "00000000-0000-4000-8000-000000000001"}
Response
{
"data": {
"shipment": {
"id": "00000000-0000-4000-8000-000000000001",
"number": "example",
"status": "CREATED",
"numbers": ["example"],
"trackingStatus": "example",
"carrier": {
"code": "example",
"profile": "example",
"name": "example",
"service": "example"
},
"salesOrderId": "00000000-0000-4000-8000-000000000001",
"fulfilmentId": "00000000-0000-4000-8000-000000000001",
"version": 1,
"createdAt": "2026-01-01T00:00:00Z",
"changedAt": "2026-01-01T00:00:00Z"
}
}
}
Issues
issues
Description
Issues, filtered, newest first by effectiveAt (then by when they were created, then id). There is no total count. Drafts are never returned. Issues outside the key's warehouse or legal-entity scope are left out. Needs integration.read and issue.read.
filter.ids names at most 50 issues; an id that does not exist, is not an issue, is a draft or is outside the key's scope is simply not returned -- never an error.
Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward; last alone is the oldest page. Every edge carries its own cursor. A page is priced at the number asked times one issue's selection.
Arguments
Input fields 6
Which issues the query returns. Every field narrows; an omitted (or null) one matches all, and an empty list matches none.
These issues, at most 50. Ids that are not returnable are simply absent.
Issues in any of these states; all three when omitted.
Accepted values 3
OPEN-
Open: issued continuously. Its lines already applied are off stock and carry their value.
COMPLETED-
Completed. The events feed's
issue.completed; inEvent.transitionsthe raw status code isPOSTED. CANCELLED-
Cancelled. Its lines net to zero: each line's value is 0.
Issues out of any of these warehouses. At most 50.
Issues effective at or after this instant.
Issues effective before this instant (exclusive).
Issues with any of these origins.
Accepted values 3
FULFILMENT-
A consignment's issue: the goods an order's consignment took, at dispatch or by picking. A picked consignment's issue is returned once it is completed, never while it is still open.
STOCKTAKE-
A stocktake's shortfall.
MANUAL-
Entered directly, from nothing else.
Returns
One page of issues.
The issues with their cursors, newest first by effectiveAt.
Fields 2
One issue and its cursor.
Where this issue sits; pass as after (with first) or before (with last).
Fields 20
Goods that left one warehouse.
The issue's number. Every returned issue has one.
Accepted values 3
OPEN-
Open: issued continuously. Its lines already applied are off stock and carry their value.
COMPLETED-
Completed. The events feed's
issue.completed; inEvent.transitionsthe raw status code isPOSTED. CANCELLED-
Cancelled. Its lines net to zero: each line's value is 0.
The issue's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again).
When the goods count as issued.
How many times the completed issue has been revised; 0 as completed.
The warehouse the goods left. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission); outside the key's warehouse scope it is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served.
A warehouse. Needs warehouse.read.
The company the issue belongs to; null when it belongs to none.
The partner the goods went to; null when the issue names none.
The partner. Needs partner.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A partner outside the key's partner scope is null with a FORBIDDEN_SCOPE error at its path (extensions.scope PARTNER). The rest is served. An erased partner keeps its id and code, with name null.
A business partner: a customer, a supplier or both. Needs partner.read.
The external reference the issue was filed with.
What the goods were worth, without VAT, positive: the sum of the lines' values; null while any line's costing is pending. A completed issue can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
True while any line's costing is pending. A completed issue can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this issue's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of an issue's lines.
The records other systems made of this issue (setIssueExternalRef), at most one per source: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this issue's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path.
One page of a record's external references.
The same issues without cursors.
Fields 20
Goods that left one warehouse.
The issue's number. Every returned issue has one.
Accepted values 3
OPEN-
Open: issued continuously. Its lines already applied are off stock and carry their value.
COMPLETED-
Completed. The events feed's
issue.completed; inEvent.transitionsthe raw status code isPOSTED. CANCELLED-
Cancelled. Its lines net to zero: each line's value is 0.
The issue's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again).
When the goods count as issued.
How many times the completed issue has been revised; 0 as completed.
The warehouse the goods left. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission); outside the key's warehouse scope it is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served.
The company the issue belongs to; null when it belongs to none.
The partner the goods went to; null when the issue names none.
The partner. Needs partner.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A partner outside the key's partner scope is null with a FORBIDDEN_SCOPE error at its path (extensions.scope PARTNER). The rest is served. An erased partner keeps its id and code, with name null.
Fields 13
A business partner: a customer, a supplier or both. Needs partner.read.
Our id.
Our code of the partner.
Their name. Null once the partner is erased.
The company registration number (IČO). Null when unknown, and once the partner is erased.
The tax id (DIČ). Null when unknown, and once the partner is erased.
The VAT id (IČ DPH). Null when unknown, and once the partner is erased.
The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.
The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.
Whether we sell to them.
Whether we buy from them.
The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a partner's addresses of one kind.
The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a partner's addresses of one kind.
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a record's external references.
Fields 2
What an issue was created from.
Accepted values 3
FULFILMENT-
A consignment's issue: the goods an order's consignment took, at dispatch or by picking. A picked consignment's issue is returned once it is completed, never while it is still open.
STOCKTAKE-
A stocktake's shortfall.
MANUAL-
Entered directly, from nothing else.
The consignment or stocktake; null for MANUAL.
The external reference the issue was filed with.
What the goods were worth, without VAT, positive: the sum of the lines' values; null while any line's costing is pending. A completed issue can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
True while any line's costing is pending. A completed issue can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this issue's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of an issue's lines.
The lines with their cursors, by line number.
One line and its cursor.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many lines the issue has, capped at 10001: 10001 reads "10000 or more".
The records other systems made of this issue (setIssueExternalRef), at most one per source: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this issue's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path.
Fields 4
One page of a record's external references.
The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.
One reference and its cursor.
The same references without cursors.
An id another system knows a record by.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many references the record has.
Where the page sits, and the cursors to the next and previous pages.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
Example
Query
query issues($first: Int) {
issues(first: $first) {
edges {
cursor
}
nodes {
id
number
status
version
effectiveAt
completedAt
}
pageInfo {
hasNextPage
hasPreviousPage
startCursor
endCursor
}
}
}
Variables
{"first": 10}
Response
{
"data": {
"issues": {
"edges": [{"cursor": "example"}],
"nodes": [
{
"id": "00000000-0000-4000-8000-000000000001",
"number": "example",
"status": "OPEN",
"version": 1,
"effectiveAt": "2026-01-01T00:00:00Z",
"completedAt": "2026-01-01T00:00:00Z"
}
],
"pageInfo": {
"hasNextPage": true,
"hasPreviousPage": true,
"startCursor": "example",
"endCursor": "example"
}
}
}
}
removeIssueExternalRef
Description
Removes the issue's reference in a source; changed: false when it had none. An archived source still answers. Permissions, NOT_FOUND and errors below this field as setIssueExternalRef.
Returns
What setIssueExternalRef and removeIssueExternalRef answer.
The issue, as it now stands.
Fields 20
Goods that left one warehouse.
The issue's number. Every returned issue has one.
Accepted values 3
OPEN-
Open: issued continuously. Its lines already applied are off stock and carry their value.
COMPLETED-
Completed. The events feed's
issue.completed; inEvent.transitionsthe raw status code isPOSTED. CANCELLED-
Cancelled. Its lines net to zero: each line's value is 0.
The issue's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again).
When the goods count as issued.
How many times the completed issue has been revised; 0 as completed.
The warehouse the goods left. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission); outside the key's warehouse scope it is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served.
The company the issue belongs to; null when it belongs to none.
The partner the goods went to; null when the issue names none.
The partner. Needs partner.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A partner outside the key's partner scope is null with a FORBIDDEN_SCOPE error at its path (extensions.scope PARTNER). The rest is served. An erased partner keeps its id and code, with name null.
Fields 13
A business partner: a customer, a supplier or both. Needs partner.read.
Our id.
Our code of the partner.
Their name. Null once the partner is erased.
The company registration number (IČO). Null when unknown, and once the partner is erased.
The tax id (DIČ). Null when unknown, and once the partner is erased.
The VAT id (IČ DPH). Null when unknown, and once the partner is erased.
The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.
The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.
Whether we sell to them.
Whether we buy from them.
The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a partner's addresses of one kind.
The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a partner's addresses of one kind.
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a record's external references.
Fields 2
What an issue was created from.
Accepted values 3
FULFILMENT-
A consignment's issue: the goods an order's consignment took, at dispatch or by picking. A picked consignment's issue is returned once it is completed, never while it is still open.
STOCKTAKE-
A stocktake's shortfall.
MANUAL-
Entered directly, from nothing else.
The consignment or stocktake; null for MANUAL.
The external reference the issue was filed with.
What the goods were worth, without VAT, positive: the sum of the lines' values; null while any line's costing is pending. A completed issue can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
True while any line's costing is pending. A completed issue can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this issue's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of an issue's lines.
The lines with their cursors, by line number.
One line and its cursor.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many lines the issue has, capped at 10001: 10001 reads "10000 or more".
The records other systems made of this issue (setIssueExternalRef), at most one per source: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this issue's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path.
Fields 4
One page of a record's external references.
The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.
One reference and its cursor.
The same references without cursors.
An id another system knows a record by.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many references the record has.
False when the call changed nothing: a repeat.
Example
Mutation
mutation removeIssueExternalRef($id: UUID!, $source: String!) {
removeIssueExternalRef(id: $id, source: $source) {
issue {
id
number
status
version
effectiveAt
completedAt
}
changed
}
}
Variables
{"id": "00000000-0000-4000-8000-000000000001", "source": "example"}
Response
{
"data": {
"removeIssueExternalRef": {
"issue": {
"id": "00000000-0000-4000-8000-000000000001",
"number": "example",
"status": "OPEN",
"version": 1,
"effectiveAt": "2026-01-01T00:00:00Z",
"completedAt": "2026-01-01T00:00:00Z"
},
"changed": true
}
}
}
setIssueExternalRef
Description
Records the issue's one reference in a source: the record another system made of it (an OBERON note -- its GUID as externalId, its number as externalNumber). A different externalId replaces the issue's earlier reference in that source; the same one with the same number is a repeat and answers changed: false. Writes no event and no revision of the issue.
Needs integration.read, issue.read and issue.write, with the issue in scope. NOT_FOUND when there is no such issue, it is a draft or the key may not see it; NOT_FOUND with extensions.reason SOURCE_NOT_FOUND (field input.source) when there is no such source. CONFLICT with extensions.reason SOURCE_ARCHIVED for an archived source, REF_TAKEN when another issue holds that externalId in the source. VALIDATION (field input.externalId or input.externalNumber) for a blank id or one too long.
An error whose path runs below this field while its result is in data is a field the key may not read, or a nested page that failed -- not a failed call: the reference was recorded, and changed is in data, so do not retry. Retry rules apply only when this field itself is null with an error at its own path.
Arguments
Input fields 3
The reference a receipt or an issue gets: the record another system made of it.
Returns
What setIssueExternalRef and removeIssueExternalRef answer.
The issue, as it now stands.
Fields 20
Goods that left one warehouse.
The issue's number. Every returned issue has one.
Accepted values 3
OPEN-
Open: issued continuously. Its lines already applied are off stock and carry their value.
COMPLETED-
Completed. The events feed's
issue.completed; inEvent.transitionsthe raw status code isPOSTED. CANCELLED-
Cancelled. Its lines net to zero: each line's value is 0.
The issue's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again).
When the goods count as issued.
How many times the completed issue has been revised; 0 as completed.
The warehouse the goods left. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission); outside the key's warehouse scope it is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served.
The company the issue belongs to; null when it belongs to none.
The partner the goods went to; null when the issue names none.
The partner. Needs partner.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A partner outside the key's partner scope is null with a FORBIDDEN_SCOPE error at its path (extensions.scope PARTNER). The rest is served. An erased partner keeps its id and code, with name null.
Fields 13
A business partner: a customer, a supplier or both. Needs partner.read.
Our id.
Our code of the partner.
Their name. Null once the partner is erased.
The company registration number (IČO). Null when unknown, and once the partner is erased.
The tax id (DIČ). Null when unknown, and once the partner is erased.
The VAT id (IČ DPH). Null when unknown, and once the partner is erased.
The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.
The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.
Whether we sell to them.
Whether we buy from them.
The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a partner's addresses of one kind.
The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a partner's addresses of one kind.
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a record's external references.
Fields 2
What an issue was created from.
Accepted values 3
FULFILMENT-
A consignment's issue: the goods an order's consignment took, at dispatch or by picking. A picked consignment's issue is returned once it is completed, never while it is still open.
STOCKTAKE-
A stocktake's shortfall.
MANUAL-
Entered directly, from nothing else.
The consignment or stocktake; null for MANUAL.
The external reference the issue was filed with.
What the goods were worth, without VAT, positive: the sum of the lines' values; null while any line's costing is pending. A completed issue can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
True while any line's costing is pending. A completed issue can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this issue's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of an issue's lines.
The lines with their cursors, by line number.
One line and its cursor.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many lines the issue has, capped at 10001: 10001 reads "10000 or more".
The records other systems made of this issue (setIssueExternalRef), at most one per source: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this issue's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path.
Fields 4
One page of a record's external references.
The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.
One reference and its cursor.
The same references without cursors.
An id another system knows a record by.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many references the record has.
False when the call changed nothing: a repeat.
Example
Mutation
mutation setIssueExternalRef($id: UUID!, $input: StockDocumentExternalRefInput!) {
setIssueExternalRef(id: $id, input: $input) {
issue {
id
number
status
version
effectiveAt
completedAt
}
changed
}
}
Variables
{
"id": "00000000-0000-4000-8000-000000000001",
"input": {"source": "example", "externalId": "example"}
}
Response
{
"data": {
"setIssueExternalRef": {
"issue": {
"id": "00000000-0000-4000-8000-000000000001",
"number": "example",
"status": "OPEN",
"version": 1,
"effectiveAt": "2026-01-01T00:00:00Z",
"completedAt": "2026-01-01T00:00:00Z"
},
"changed": true
}
}
}
Documents
document
Description
One document with its current version, or null if absent, removed or on an order outside this key's scope. Needs integration.read and order.read.
Arguments
Returns
Accepted values 8
INVOICECREDIT_NOTEPROFORMA_INVOICEDELIVERY_NOTEPROOF_OF_DELIVERYORDER_CONFIRMATIONCONTRACTOTHER
The issuing system's own id of the document.
The document's number in the issuing system.
When its last version was added.
How many versions it has; the current one is the highest.
The current version's file.
Where to download the current version: stable across versions, and the API key still needed. Null when the ERP has no public address configured.
Its versions, newest first: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this document's versions and are refused anywhere else. Null, with an error at its path, when its page cannot be read; the rest of the answer is served.
Fields 4
The versions with their cursors.
The same versions without cursors.
Fields 5
Counts from 1.
Where to download this version; the API key still needed. Null as Document.downloadUrl.
Where the page sits, and the cursors to the next and previous pages.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
The order it is kept with. Null when the order is no longer in the key's sight.
Fields 44
A sales order.
Our id.
The order's number. Null while a draft.
Where the order is in its life.
Accepted values 5
DRAFT-
Not yet confirmed.
CONFIRMED-
Confirmed: numbered and reserving stock.
COMPLETED-
Everything owed has shipped.
CANCELLED-
Cancelled.
MERGED-
Merged into another order.
Our id of the legal entity (the company) that sells it. Null only for an order without one.
The code of the source that placed it. Null for an order made here.
The source's id of the order.
The order number the customer saw in the shop.
A link to the order in the shop's administration.
When the customer placed it.
When it was confirmed, by this system's clock.
How much has left the warehouse.
Accepted values 3
UNFULFILLED-
Nothing has shipped.
PARTIALLY_FULFILLED-
Some has shipped.
FULFILLED-
Nothing is outstanding.
Whether it is paid.
Accepted values 7
UNPAID-
Nothing paid.
PENDING-
A payment is announced and not yet arrived.
AUTHORIZED-
A hold covers the order; no money yet.
PARTIALLY_PAID-
Part is paid.
PAID-
Paid in full.
PARTIALLY_REFUNDED-
Part was refunded.
REFUNDED-
Refunded in full.
ISO 4217 code of its currency.
Whether its prices include VAT: as its priced items say, or, with none, as its charges other than ROUNDING say. Null when neither has a price.
What is owed without VAT, cancelled quantity excluded.
The VAT on it.
What is owed including VAT.
What the customer has paid, less refunds.
The order-wide discount in percent, taken off every goods line after the line's own discount. lineTotal and the totals already apply it; charges are not discounted. Null when there is none.
The number of the invoice another system issued for this order (setSalesOrderInvoice). Null while there is none. A change of it is a transition of the order's events (see events); invoiceExternalId is not tracked there, so a change of it alone still publishes sales_order.changed, with no transition.
That system's own id of the invoice. Null while there is none.
Our id of the customer. Served to every key that reads the order.
Who ordered. Needs partner.read: without it null with FORBIDDEN_ROLE; outside the key's partner scope null with FORBIDDEN_SCOPE (extensions.scope PARTNER). An erased customer reads with name null.
Fields 13
A business partner: a customer, a supplier or both. Needs partner.read.
Our id.
Our code of the partner.
Their name. Null once the partner is erased.
The company registration number (IČO). Null when unknown, and once the partner is erased.
The tax id (DIČ). Null when unknown, and once the partner is erased.
The VAT id (IČ DPH). Null when unknown, and once the partner is erased.
The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.
The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.
Whether we sell to them.
Whether we buy from them.
The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a partner's addresses of one kind.
The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a partner's addresses of one kind.
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a record's external references.
The billing address version the order pinned, kept as it was. Needs partner.read and the customer in the key's partner scope (FORBIDDEN_ROLE / FORBIDDEN_SCOPE otherwise). Null once the customer is erased.
Fields 10
An address an order was sent to.
Our id of this address version.
Who receives it.
Street and number.
A second address line.
City.
Postal code.
Region or state.
ISO 3166-1 alpha-2 country code.
The phone the carrier calls.
The e-mail delivery notices go to.
The delivery address version the order pinned, guarded as billingAddress.
Fields 10
An address an order was sent to.
Our id of this address version.
Who receives it.
Street and number.
A second address line.
City.
Postal code.
Region or state.
ISO 3166-1 alpha-2 country code.
The phone the carrier calls.
The e-mail delivery notices go to.
The carrier's collection point, when delivered to one.
The delivery method in the shop's own words.
The normalized operational carrier. Null when none was selected or when the requested pair was UNKNOWN or UNVERIFIED; those failures are available in exceptions.
Fields 4
An operational route of the synchronized Chameleoon catalogue. carrierProfiles lists only the active ones; Shipment.carrier is the route a shipment was sent with, which the catalogue may since have deactivated or dropped (then its codes stand in for its names).
The Chameleoon courier id.
The courier's profile id.
The courier's synchronized display name.
The profile's synchronized display name. When the catalogue gives the profile none, the courier's name (the same value as name) -- never null, so the field stays as it was published.
How the customer intends to pay.
Accepted values 4
CARD-
By card.
BANK_TRANSFER-
By bank transfer.
CASH_ON_DELIVERY-
In cash to the courier.
CASH-
In cash at the counter.
The payment method in the shop's own words.
The e-mail the customer gave for this order. Guarded as billingAddress: needs partner.read and the partner scope; null once the customer is erased.
The phone the customer gave for this order, guarded as contactEmail.
Our id of the warehouse the order reserves from, when it has one.
That warehouse. Needs warehouse.read: without it null with FORBIDDEN_ROLE; outside the key's warehouse scope null with FORBIDDEN_SCOPE (extensions.scope WAREHOUSE).
What the customer wrote with the order. Null once the customer is erased.
The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's items and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of an order's items.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many items the order has, capped at 10001: 10001 reads "10000 or more".
Everything that is not goods, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's charges and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of an order's charges.
The charges with their cursors.
One charge and its cursor.
The same charges without cursors.
Something on an order that is not goods.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many charges the order has, capped at 10001: 10001 reads "10000 or more".
Why no consignment of the order may proceed. Null when nothing stops it.
Fields 3
What stops an order.
A fixed code: NEEDS_REVIEW (the order has open exceptions), AWAITING_PAYMENT, SUSPECTED_FRAUD, INCORRECT_ADDRESS, CUSTOMER_REQUEST or OTHER. Read it as a string: more may be added.
What the person or the system wrote about it. A person's note reads null unless the key holds order.write; NEEDS_REVIEW's, which the system wrote, reads for every key.
When the order was stopped.
What the order was created with that needs a person, open and resolved, oldest first (by createdAt, then id): a connection, paged with first/after or last/before (at most 250). Empty when nothing did. Its cursors belong to this order's exceptions and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of an order's exceptions.
The exceptions with their cursors.
One exception and its cursor.
The same exceptions without cursors.
Something a record was created with that needs a person: what it is, where, and how it was settled.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many exceptions the order has, capped at 10001: 10001 reads "10000 or more".
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's references and are refused anywhere else. source and externalId above are one of them: the one the request named, else the oldest. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
One page of a record's external references.
The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.
One reference and its cursor.
The same references without cursors.
An id another system knows a record by.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many references the record has.
The files attached to the order (attachDocument), oldest first: a connection, paged with first/after or last/before (at most 250); kinds narrows it to those kinds. A removed document is left out. Its cursors belong to this order's documents and are refused anywhere else. Needs integration.read and order.read. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Fields 4
The documents with their cursors.
One document and its cursor.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Field arguments 5
Accepted values 8
INVOICECREDIT_NOTEPROFORMA_INVOICEDELIVERY_NOTEPROOF_OF_DELIVERYORDER_CONFIRMATIONCONTRACTOTHER
When the order's last event was published (see events). Null only for an order never published.
The invoices linked to the order, newest issued first (at most 250 a page). Needs invoice.read: without it null with FORBIDDEN_ROLE at its path; the rest of the answer is served.
Fields 4
The invoices linked to one order.
A mirrored invoice, advance invoice or credit note. Needs invoice.read.
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
The order's carrier shipments, oldest first: live and cancelled, never one that did not reach the carrier. Requires shipment.read: null with FORBIDDEN_ROLE without it. Shipments outside the key's legal-entity or warehouse scope are left out.
Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward.
Fields 4
One page of an order's shipments.
The shipments with their cursors.
One shipment and its cursor.
The same shipments without cursors.
A carrier shipment of a consignment, as the carrier accepted it.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many shipments the order has, capped at 10001: 10001 reads "10000 or more".
Example
Query
query document($id: UUID!) {
document(id: $id) {
id
kind
title
externalId
externalNumber
createdAt
updatedAt
versionCount
file {
id
filename
contentType
size
sha256
}
downloadUrl
versions(first: 10) {
totalCount
}
salesOrder {
id
number
status
legalEntityId
source
externalId
}
}
}
Variables
{"id": "00000000-0000-4000-8000-000000000001"}
Response
{
"data": {
"document": {
"id": "00000000-0000-4000-8000-000000000001",
"kind": "INVOICE",
"title": "example",
"externalId": "example",
"externalNumber": "example",
"createdAt": "2026-01-01T00:00:00Z",
"updatedAt": "2026-01-01T00:00:00Z",
"versionCount": 1,
"file": {
"id": "00000000-0000-4000-8000-000000000001",
"filename": "example",
"contentType": "example",
"size": 1,
"sha256": "example"
},
"downloadUrl": "example",
"versions": {"totalCount": 1},
"salesOrder": {
"id": "00000000-0000-4000-8000-000000000001",
"number": "example",
"status": "DRAFT",
"legalEntityId": "00000000-0000-4000-8000-000000000001",
"source": "example",
"externalId": "example"
}
}
}
}
addDocumentVersion
Description
Make an uploaded file the document's next, and so current, version. The same bytes as the current version answer applied false and make no version. A removed document is CONFLICT with reason DOCUMENT_REMOVED; otherwise refused as attachDocument (ORDER_STATUS, FILE_ALREADY_ATTACHED, NOT_FOUND with field documentId or fileId, REQUEST_ID_REUSED). Needs integration.read and order.write, with the document's order in scope.
Arguments
Returns
True: this call made the version. False: a replay of an earlier call with the same requestId and input, or the same bytes as the current version; nothing changed.
Fields 12
Accepted values 8
INVOICECREDIT_NOTEPROFORMA_INVOICEDELIVERY_NOTEPROOF_OF_DELIVERYORDER_CONFIRMATIONCONTRACTOTHER
The issuing system's own id of the document.
The document's number in the issuing system.
When its last version was added.
How many versions it has; the current one is the highest.
The current version's file.
Where to download the current version: stable across versions, and the API key still needed. Null when the ERP has no public address configured.
Its versions, newest first: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this document's versions and are refused anywhere else. Null, with an error at its path, when its page cannot be read; the rest of the answer is served.
Fields 4
The versions with their cursors.
One version and its cursor.
The same versions without cursors.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
The order it is kept with. Null when the order is no longer in the key's sight.
Fields 44
A sales order.
Our id.
The order's number. Null while a draft.
Where the order is in its life.
Accepted values 5
DRAFT-
Not yet confirmed.
CONFIRMED-
Confirmed: numbered and reserving stock.
COMPLETED-
Everything owed has shipped.
CANCELLED-
Cancelled.
MERGED-
Merged into another order.
Our id of the legal entity (the company) that sells it. Null only for an order without one.
The code of the source that placed it. Null for an order made here.
The source's id of the order.
The order number the customer saw in the shop.
A link to the order in the shop's administration.
When the customer placed it.
When it was confirmed, by this system's clock.
How much has left the warehouse.
Accepted values 3
UNFULFILLED-
Nothing has shipped.
PARTIALLY_FULFILLED-
Some has shipped.
FULFILLED-
Nothing is outstanding.
Whether it is paid.
Accepted values 7
UNPAID-
Nothing paid.
PENDING-
A payment is announced and not yet arrived.
AUTHORIZED-
A hold covers the order; no money yet.
PARTIALLY_PAID-
Part is paid.
PAID-
Paid in full.
PARTIALLY_REFUNDED-
Part was refunded.
REFUNDED-
Refunded in full.
ISO 4217 code of its currency.
Whether its prices include VAT: as its priced items say, or, with none, as its charges other than ROUNDING say. Null when neither has a price.
What is owed without VAT, cancelled quantity excluded.
The VAT on it.
What is owed including VAT.
What the customer has paid, less refunds.
The order-wide discount in percent, taken off every goods line after the line's own discount. lineTotal and the totals already apply it; charges are not discounted. Null when there is none.
The number of the invoice another system issued for this order (setSalesOrderInvoice). Null while there is none. A change of it is a transition of the order's events (see events); invoiceExternalId is not tracked there, so a change of it alone still publishes sales_order.changed, with no transition.
That system's own id of the invoice. Null while there is none.
Our id of the customer. Served to every key that reads the order.
Who ordered. Needs partner.read: without it null with FORBIDDEN_ROLE; outside the key's partner scope null with FORBIDDEN_SCOPE (extensions.scope PARTNER). An erased customer reads with name null.
A business partner: a customer, a supplier or both. Needs partner.read.
The billing address version the order pinned, kept as it was. Needs partner.read and the customer in the key's partner scope (FORBIDDEN_ROLE / FORBIDDEN_SCOPE otherwise). Null once the customer is erased.
An address an order was sent to.
The delivery address version the order pinned, guarded as billingAddress.
An address an order was sent to.
The carrier's collection point, when delivered to one.
A carrier's collection point.
The delivery method in the shop's own words.
A method in the shop's own words.
The normalized operational carrier. Null when none was selected or when the requested pair was UNKNOWN or UNVERIFIED; those failures are available in exceptions.
An operational route of the synchronized Chameleoon catalogue. carrierProfiles lists only the active ones; Shipment.carrier is the route a shipment was sent with, which the catalogue may since have deactivated or dropped (then its codes stand in for its names).
How the customer intends to pay.
Accepted values 4
CARD-
By card.
BANK_TRANSFER-
By bank transfer.
CASH_ON_DELIVERY-
In cash to the courier.
CASH-
In cash at the counter.
The payment method in the shop's own words.
A method in the shop's own words.
The e-mail the customer gave for this order. Guarded as billingAddress: needs partner.read and the partner scope; null once the customer is erased.
The phone the customer gave for this order, guarded as contactEmail.
Our id of the warehouse the order reserves from, when it has one.
That warehouse. Needs warehouse.read: without it null with FORBIDDEN_ROLE; outside the key's warehouse scope null with FORBIDDEN_SCOPE (extensions.scope WAREHOUSE).
A warehouse. Needs warehouse.read.
What the customer wrote with the order. Null once the customer is erased.
The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's items and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of an order's items.
Everything that is not goods, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's charges and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of an order's charges.
Why no consignment of the order may proceed. Null when nothing stops it.
What stops an order.
What the order was created with that needs a person, open and resolved, oldest first (by createdAt, then id): a connection, paged with first/after or last/before (at most 250). Empty when nothing did. Its cursors belong to this order's exceptions and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of an order's exceptions.
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's references and are refused anywhere else. source and externalId above are one of them: the one the request named, else the oldest. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a record's external references.
The files attached to the order (attachDocument), oldest first: a connection, paged with first/after or last/before (at most 250); kinds narrows it to those kinds. A removed document is left out. Its cursors belong to this order's documents and are refused anywhere else. Needs integration.read and order.read. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Field arguments 5
Accepted values 8
INVOICECREDIT_NOTEPROFORMA_INVOICEDELIVERY_NOTEPROOF_OF_DELIVERYORDER_CONFIRMATIONCONTRACTOTHER
When the order's last event was published (see events). Null only for an order never published.
The invoices linked to the order, newest issued first (at most 250 a page). Needs invoice.read: without it null with FORBIDDEN_ROLE at its path; the rest of the answer is served.
The invoices linked to one order.
The order's carrier shipments, oldest first: live and cancelled, never one that did not reach the carrier. Requires shipment.read: null with FORBIDDEN_ROLE without it. Shipments outside the key's legal-entity or warehouse scope are left out.
Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward.
One page of an order's shipments.
Example
Mutation
mutation addDocumentVersion($input: AddDocumentVersionInput!) {
addDocumentVersion(input: $input) {
applied
document {
id
kind
title
externalId
externalNumber
createdAt
}
}
}
Variables
{
"input": {
"requestId": "example",
"documentId": "00000000-0000-4000-8000-000000000001",
"fileId": "00000000-0000-4000-8000-000000000001"
}
}
Response
{
"data": {
"addDocumentVersion": {
"applied": true,
"document": {
"id": "00000000-0000-4000-8000-000000000001",
"kind": "INVOICE",
"title": "example",
"externalId": "example",
"externalNumber": "example",
"createdAt": "2026-01-01T00:00:00Z"
}
}
}
}
attachDocument
Description
Attach an uploaded file to a sales order as a document of a kind, version 1 -- or, when an active document of the same kind on the order already has the externalId (else, without one, the externalNumber), as that document's next version. An INVOICE is bound to the order's invoice reference (setSalesOrderInvoice): an externalId or externalNumber left out is taken from it, and one that differs from it is CONFLICT with reason INVOICE_REFERENCE_MISMATCH and that field in extensions.field. The order must be CONFIRMED, COMPLETED or CANCELLED (CONFLICT with reason ORDER_STATUS otherwise). A file a version already took is CONFLICT with reason FILE_ALREADY_ATTACHED; a file that does not exist, or has expired is NOT_FOUND with extensions.field fileId, and an order out of sight NOT_FOUND with field salesOrder. The requestId makes a retry after a lost response safe: the same requestId and input answers applied false with the document as it is now, while other input is CONFLICT with reason REQUEST_ID_REUSED. Needs integration.read and order.write, with the order in scope.
Arguments
Input fields 8
An opaque, tenant-unique idempotency key, 1 to 128 bytes.
The upload's fileId (POST /api/v1/files).
The order the document is kept with.
Accepted values 8
INVOICECREDIT_NOTEPROFORMA_INVOICEDELIVERY_NOTEPROOF_OF_DELIVERYORDER_CONFIRMATIONCONTRACTOTHER
The issuing system's own id of the document, at most 200 characters.
The document's number in the issuing system, at most 100 characters.
At most 255 characters.
About this version, at most 2000 characters.
Returns
True: this call made the document or its new version. False: a replay of an earlier call with the same requestId and input, or the same bytes as the current version; nothing changed.
Fields 12
Accepted values 8
INVOICECREDIT_NOTEPROFORMA_INVOICEDELIVERY_NOTEPROOF_OF_DELIVERYORDER_CONFIRMATIONCONTRACTOTHER
The issuing system's own id of the document.
The document's number in the issuing system.
When its last version was added.
How many versions it has; the current one is the highest.
The current version's file.
Where to download the current version: stable across versions, and the API key still needed. Null when the ERP has no public address configured.
Its versions, newest first: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this document's versions and are refused anywhere else. Null, with an error at its path, when its page cannot be read; the rest of the answer is served.
Fields 4
The versions with their cursors.
One version and its cursor.
The same versions without cursors.
Where the page sits, and the cursors to the next and previous pages.
Where a page sits in its connection.
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
The order it is kept with. Null when the order is no longer in the key's sight.
Fields 44
A sales order.
Our id.
The order's number. Null while a draft.
Where the order is in its life.
Accepted values 5
DRAFT-
Not yet confirmed.
CONFIRMED-
Confirmed: numbered and reserving stock.
COMPLETED-
Everything owed has shipped.
CANCELLED-
Cancelled.
MERGED-
Merged into another order.
Our id of the legal entity (the company) that sells it. Null only for an order without one.
The code of the source that placed it. Null for an order made here.
The source's id of the order.
The order number the customer saw in the shop.
A link to the order in the shop's administration.
When the customer placed it.
When it was confirmed, by this system's clock.
How much has left the warehouse.
Accepted values 3
UNFULFILLED-
Nothing has shipped.
PARTIALLY_FULFILLED-
Some has shipped.
FULFILLED-
Nothing is outstanding.
Whether it is paid.
Accepted values 7
UNPAID-
Nothing paid.
PENDING-
A payment is announced and not yet arrived.
AUTHORIZED-
A hold covers the order; no money yet.
PARTIALLY_PAID-
Part is paid.
PAID-
Paid in full.
PARTIALLY_REFUNDED-
Part was refunded.
REFUNDED-
Refunded in full.
ISO 4217 code of its currency.
Whether its prices include VAT: as its priced items say, or, with none, as its charges other than ROUNDING say. Null when neither has a price.
What is owed without VAT, cancelled quantity excluded.
The VAT on it.
What is owed including VAT.
What the customer has paid, less refunds.
The order-wide discount in percent, taken off every goods line after the line's own discount. lineTotal and the totals already apply it; charges are not discounted. Null when there is none.
The number of the invoice another system issued for this order (setSalesOrderInvoice). Null while there is none. A change of it is a transition of the order's events (see events); invoiceExternalId is not tracked there, so a change of it alone still publishes sales_order.changed, with no transition.
That system's own id of the invoice. Null while there is none.
Our id of the customer. Served to every key that reads the order.
Who ordered. Needs partner.read: without it null with FORBIDDEN_ROLE; outside the key's partner scope null with FORBIDDEN_SCOPE (extensions.scope PARTNER). An erased customer reads with name null.
A business partner: a customer, a supplier or both. Needs partner.read.
The billing address version the order pinned, kept as it was. Needs partner.read and the customer in the key's partner scope (FORBIDDEN_ROLE / FORBIDDEN_SCOPE otherwise). Null once the customer is erased.
An address an order was sent to.
The delivery address version the order pinned, guarded as billingAddress.
An address an order was sent to.
The carrier's collection point, when delivered to one.
A carrier's collection point.
The delivery method in the shop's own words.
A method in the shop's own words.
The normalized operational carrier. Null when none was selected or when the requested pair was UNKNOWN or UNVERIFIED; those failures are available in exceptions.
An operational route of the synchronized Chameleoon catalogue. carrierProfiles lists only the active ones; Shipment.carrier is the route a shipment was sent with, which the catalogue may since have deactivated or dropped (then its codes stand in for its names).
How the customer intends to pay.
Accepted values 4
CARD-
By card.
BANK_TRANSFER-
By bank transfer.
CASH_ON_DELIVERY-
In cash to the courier.
CASH-
In cash at the counter.
The payment method in the shop's own words.
A method in the shop's own words.
The e-mail the customer gave for this order. Guarded as billingAddress: needs partner.read and the partner scope; null once the customer is erased.
The phone the customer gave for this order, guarded as contactEmail.
Our id of the warehouse the order reserves from, when it has one.
That warehouse. Needs warehouse.read: without it null with FORBIDDEN_ROLE; outside the key's warehouse scope null with FORBIDDEN_SCOPE (extensions.scope WAREHOUSE).
A warehouse. Needs warehouse.read.
What the customer wrote with the order. Null once the customer is erased.
The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's items and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of an order's items.
Everything that is not goods, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's charges and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of an order's charges.
Why no consignment of the order may proceed. Null when nothing stops it.
What stops an order.
What the order was created with that needs a person, open and resolved, oldest first (by createdAt, then id): a connection, paged with first/after or last/before (at most 250). Empty when nothing did. Its cursors belong to this order's exceptions and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of an order's exceptions.
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's references and are refused anywhere else. source and externalId above are one of them: the one the request named, else the oldest. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
One page of a record's external references.
The files attached to the order (attachDocument), oldest first: a connection, paged with first/after or last/before (at most 250); kinds narrows it to those kinds. A removed document is left out. Its cursors belong to this order's documents and are refused anywhere else. Needs integration.read and order.read. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Field arguments 5
Accepted values 8
INVOICECREDIT_NOTEPROFORMA_INVOICEDELIVERY_NOTEPROOF_OF_DELIVERYORDER_CONFIRMATIONCONTRACTOTHER
When the order's last event was published (see events). Null only for an order never published.
The invoices linked to the order, newest issued first (at most 250 a page). Needs invoice.read: without it null with FORBIDDEN_ROLE at its path; the rest of the answer is served.
The invoices linked to one order.
The order's carrier shipments, oldest first: live and cancelled, never one that did not reach the carrier. Requires shipment.read: null with FORBIDDEN_ROLE without it. Shipments outside the key's legal-entity or warehouse scope are left out.
Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward.
One page of an order's shipments.
Example
Mutation
mutation attachDocument($input: AttachDocumentInput!) {
attachDocument(input: $input) {
applied
document {
id
kind
title
externalId
externalNumber
createdAt
}
}
}
Variables
{
"input": {
"requestId": "example",
"fileId": "00000000-0000-4000-8000-000000000001",
"salesOrder": {"id": "00000000-0000-4000-8000-000000000001"},
"kind": "INVOICE"
}
}
Response
{
"data": {
"attachDocument": {
"applied": true,
"document": {
"id": "00000000-0000-4000-8000-000000000001",
"kind": "INVOICE",
"title": "example",
"externalId": "example",
"externalNumber": "example",
"createdAt": "2026-01-01T00:00:00Z"
}
}
}
}
removeDocument
Description
Remove a document: gone from every read and its download, its versions kept in the ERP. A document removed already is CONFLICT with reason DOCUMENT_REMOVED, except as the replay of the call that removed it, which answers applied false with the same documentId. The order must be CONFIRMED, COMPLETED or CANCELLED (ORDER_STATUS). Needs integration.read and order.write, with the document's order in scope.
Arguments
Returns
True: this call removed it. False: a replay of the call that did.
Example
Mutation
mutation removeDocument($input: RemoveDocumentInput!) {
removeDocument(input: $input) {
applied
documentId
}
}
Variables
{
"input": {
"requestId": "example",
"documentId": "00000000-0000-4000-8000-000000000001"
}
}
Response
{
"data": {
"removeDocument": {
"applied": true,
"documentId": "00000000-0000-4000-8000-000000000001"
}
}
}
Assets
asset
Description
One asset, or NOT_FOUND.
Arguments
Returns
A named image.
Accepted values 2
TENANT-
The organisation's:
tenant.<code>. COMPANY-
One company's (legal entity):
company.<code>.
The company of a COMPANY asset.
What a print template writes: company.logo.
Accepted values 3
LOGOSTAMPIMAGE
image/png or image/jpeg.
Served without authentication at publicUrl. Never a stamp.
Where an e-mail links a public asset; it changes when the image does. Null when not public.
Example
Query
query asset($id: UUID!) {
asset(id: $id) {
id
scope
legalEntityId
code
reference
name
kind
contentType
width
height
sizeBytes
isPublic
publicUrl
createdAt
updatedAt
}
}
Variables
{"id": "00000000-0000-4000-8000-000000000001"}
Response
{
"data": {
"asset": {
"id": "00000000-0000-4000-8000-000000000001",
"scope": "TENANT",
"legalEntityId": "00000000-0000-4000-8000-000000000001",
"code": "example",
"reference": "example",
"name": "example",
"kind": "LOGO",
"contentType": "example",
"width": 1,
"height": 1,
"sizeBytes": 1,
"isPublic": true,
"publicUrl": "example",
"createdAt": "2026-01-01T00:00:00Z",
"updatedAt": "2026-01-01T00:00:00Z"
}
}
}
assets
Description
The organisation's and the companies' assets, by scope and code.
Arguments
Input fields 3
Accepted values 2
TENANT-
The organisation's:
tenant.<code>. COMPANY-
One company's (legal entity):
company.<code>.
Accepted values 3
LOGOSTAMPIMAGE
Returns
The assets with their cursors, by scope and code.
Fields 2
Where this asset sits; pass as after (with first) or before (with last).
Fields 15
A named image.
Accepted values 2
TENANT-
The organisation's:
tenant.<code>. COMPANY-
One company's (legal entity):
company.<code>.
The company of a COMPANY asset.
What a print template writes: company.logo.
Accepted values 3
LOGOSTAMPIMAGE
image/png or image/jpeg.
Served without authentication at publicUrl. Never a stamp.
Where an e-mail links a public asset; it changes when the image does. Null when not public.
The same assets without cursors.
Fields 15
A named image.
Accepted values 2
TENANT-
The organisation's:
tenant.<code>. COMPANY-
One company's (legal entity):
company.<code>.
The company of a COMPANY asset.
What a print template writes: company.logo.
Accepted values 3
LOGOSTAMPIMAGE
image/png or image/jpeg.
Served without authentication at publicUrl. Never a stamp.
Where an e-mail links a public asset; it changes when the image does. Null when not public.
Where the page sits, and the cursors to the next and previous pages.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
Example
Query
query assets($first: Int) {
assets(first: $first) {
edges {
cursor
}
nodes {
id
scope
legalEntityId
code
reference
name
}
pageInfo {
hasNextPage
hasPreviousPage
startCursor
endCursor
}
}
}
Variables
{"first": 10}
Response
{
"data": {
"assets": {
"edges": [{"cursor": "example"}],
"nodes": [
{
"id": "00000000-0000-4000-8000-000000000001",
"scope": "TENANT",
"legalEntityId": "00000000-0000-4000-8000-000000000001",
"code": "example",
"reference": "example",
"name": "example"
}
],
"pageInfo": {
"hasNextPage": true,
"hasPreviousPage": true,
"startCursor": "example",
"endCursor": "example"
}
}
}
}
createAsset
Description
Name an uploaded image. A second asset with the same reference is CONFLICT with reason DUPLICATE_CODE; a file already used is CONFLICT with reason FILE_ALREADY_ATTACHED; a file that does not exist or has expired is NOT_FOUND with extensions.field fileId.
Arguments
Input fields 7
Accepted values 2
TENANT-
The organisation's:
tenant.<code>. COMPANY-
One company's (legal entity):
company.<code>.
Required for COMPANY, absent for TENANT.
1-40 lower-case letters, digits and hyphens, starting with a letter.
Accepted values 3
LOGOSTAMPIMAGE
An upload not yet used (POST /api/v1/assets/files).
Default: false
Returns
A named image.
Accepted values 2
TENANT-
The organisation's:
tenant.<code>. COMPANY-
One company's (legal entity):
company.<code>.
The company of a COMPANY asset.
What a print template writes: company.logo.
Accepted values 3
LOGOSTAMPIMAGE
image/png or image/jpeg.
Served without authentication at publicUrl. Never a stamp.
Where an e-mail links a public asset; it changes when the image does. Null when not public.
Example
Mutation
mutation createAsset($input: CreateAssetInput!) {
createAsset(input: $input) {
id
scope
legalEntityId
code
reference
name
kind
contentType
width
height
sizeBytes
isPublic
publicUrl
createdAt
updatedAt
}
}
Variables
{
"input": {
"scope": "TENANT",
"code": "example",
"name": "example",
"kind": "LOGO",
"fileId": "00000000-0000-4000-8000-000000000001"
}
}
Response
{
"data": {
"createAsset": {
"id": "00000000-0000-4000-8000-000000000001",
"scope": "TENANT",
"legalEntityId": "00000000-0000-4000-8000-000000000001",
"code": "example",
"reference": "example",
"name": "example",
"kind": "LOGO",
"contentType": "example",
"width": 1,
"height": 1,
"sizeBytes": 1,
"isPublic": true,
"publicUrl": "example",
"createdAt": "2026-01-01T00:00:00Z",
"updatedAt": "2026-01-01T00:00:00Z"
}
}
}
deleteAsset
Description
Delete the asset and its image. Answers the id.
Arguments
Input fields 1
Example
Mutation
mutation deleteAsset($input: DeleteAssetInput!) {
deleteAsset(input: $input)
}
Variables
{"input": {"id": "00000000-0000-4000-8000-000000000001"}}
Response
{"data": {"deleteAsset": "00000000-0000-4000-8000-000000000001"}}
replaceAssetFile
Description
Put a new uploaded image under the asset; the old one is deleted.
Arguments
Returns
A named image.
Accepted values 2
TENANT-
The organisation's:
tenant.<code>. COMPANY-
One company's (legal entity):
company.<code>.
The company of a COMPANY asset.
What a print template writes: company.logo.
Accepted values 3
LOGOSTAMPIMAGE
image/png or image/jpeg.
Served without authentication at publicUrl. Never a stamp.
Where an e-mail links a public asset; it changes when the image does. Null when not public.
Example
Mutation
mutation replaceAssetFile($input: ReplaceAssetFileInput!) {
replaceAssetFile(input: $input) {
id
scope
legalEntityId
code
reference
name
kind
contentType
width
height
sizeBytes
isPublic
publicUrl
createdAt
updatedAt
}
}
Variables
{
"input": {
"id": "00000000-0000-4000-8000-000000000001",
"fileId": "00000000-0000-4000-8000-000000000001"
}
}
Response
{
"data": {
"replaceAssetFile": {
"id": "00000000-0000-4000-8000-000000000001",
"scope": "TENANT",
"legalEntityId": "00000000-0000-4000-8000-000000000001",
"code": "example",
"reference": "example",
"name": "example",
"kind": "LOGO",
"contentType": "example",
"width": 1,
"height": 1,
"sizeBytes": 1,
"isPublic": true,
"publicUrl": "example",
"createdAt": "2026-01-01T00:00:00Z",
"updatedAt": "2026-01-01T00:00:00Z"
}
}
}
updateAsset
Arguments
Returns
A named image.
Accepted values 2
TENANT-
The organisation's:
tenant.<code>. COMPANY-
One company's (legal entity):
company.<code>.
The company of a COMPANY asset.
What a print template writes: company.logo.
Accepted values 3
LOGOSTAMPIMAGE
image/png or image/jpeg.
Served without authentication at publicUrl. Never a stamp.
Where an e-mail links a public asset; it changes when the image does. Null when not public.
Example
Mutation
mutation updateAsset($input: UpdateAssetInput!) {
updateAsset(input: $input) {
id
scope
legalEntityId
code
reference
name
kind
contentType
width
height
sizeBytes
isPublic
publicUrl
createdAt
updatedAt
}
}
Variables
{"input": {"id": "00000000-0000-4000-8000-000000000001"}}
Response
{
"data": {
"updateAsset": {
"id": "00000000-0000-4000-8000-000000000001",
"scope": "TENANT",
"legalEntityId": "00000000-0000-4000-8000-000000000001",
"code": "example",
"reference": "example",
"name": "example",
"kind": "LOGO",
"contentType": "example",
"width": 1,
"height": 1,
"sizeBytes": 1,
"isPublic": true,
"publicUrl": "example",
"createdAt": "2026-01-01T00:00:00Z",
"updatedAt": "2026-01-01T00:00:00Z"
}
}
}
Print templates
builtInPrintTemplate
Description
Ours, of a kind in a language (Slovak when that has none).
Arguments
Accepted values 15
SALES_ORDER-
One document per sales order.
SALES_ORDER_ITEMS-
One list of the lines of a selection of orders.
RECEIPT_ADVICE-
One document per receipt advice.
RECEIPT-
One document per receipt, an opening balance included.
ISSUE-
One document per issue.
TRANSFER_ADVICE-
One document per transfer advice.
TRANSFER-
One document per transfer.
RECEIPT_ADVICE_ITEMS-
One list of the lines of a selection of receipt advices.
RECEIPT_ITEMS-
One list of the lines of a selection of receipts.
ISSUE_ITEMS-
One list of the lines of a selection of issues.
TRANSFER_ADVICE_ITEMS-
One list of the lines of a selection of transfer advices.
TRANSFER_ITEMS-
One list of the lines of a selection of transfers.
INVOICE-
One document per issued invoice.
ADVANCE_INVOICE-
One document per issued advance invoice.
CREDIT_NOTE-
One document per issued credit note.
Returns
One of ours: what prints when the organisation has no template of its own.
Accepted values 15
SALES_ORDER-
One document per sales order.
SALES_ORDER_ITEMS-
One list of the lines of a selection of orders.
RECEIPT_ADVICE-
One document per receipt advice.
RECEIPT-
One document per receipt, an opening balance included.
ISSUE-
One document per issue.
TRANSFER_ADVICE-
One document per transfer advice.
TRANSFER-
One document per transfer.
RECEIPT_ADVICE_ITEMS-
One list of the lines of a selection of receipt advices.
RECEIPT_ITEMS-
One list of the lines of a selection of receipts.
ISSUE_ITEMS-
One list of the lines of a selection of issues.
TRANSFER_ADVICE_ITEMS-
One list of the lines of a selection of transfer advices.
TRANSFER_ITEMS-
One list of the lines of a selection of transfers.
INVOICE-
One document per issued invoice.
ADVANCE_INVOICE-
One document per issued advance invoice.
CREDIT_NOTE-
One document per issued credit note.
Accepted values 1
JSON-
The renderer's layout JSON.
Accepted values 1
PDF
The language it is in: the one asked for, Slovak when that has none.
Example
Query
query builtInPrintTemplate($kind: PrintTemplateKind!, $language: String!) {
builtInPrintTemplate(kind: $kind, language: $language) {
kind
syntax
output
language
body
}
}
Variables
{"kind": "SALES_ORDER", "language": "example"}
Response
{
"data": {
"builtInPrintTemplate": {
"kind": "SALES_ORDER",
"syntax": "JSON",
"output": "PDF",
"language": "example",
"body": "example"
}
}
}
printTemplate
Description
One template, or NOT_FOUND.
Arguments
Returns
An organisation's print template.
Accepted values 15
SALES_ORDER-
One document per sales order.
SALES_ORDER_ITEMS-
One list of the lines of a selection of orders.
RECEIPT_ADVICE-
One document per receipt advice.
RECEIPT-
One document per receipt, an opening balance included.
ISSUE-
One document per issue.
TRANSFER_ADVICE-
One document per transfer advice.
TRANSFER-
One document per transfer.
RECEIPT_ADVICE_ITEMS-
One list of the lines of a selection of receipt advices.
RECEIPT_ITEMS-
One list of the lines of a selection of receipts.
ISSUE_ITEMS-
One list of the lines of a selection of issues.
TRANSFER_ADVICE_ITEMS-
One list of the lines of a selection of transfer advices.
TRANSFER_ITEMS-
One list of the lines of a selection of transfers.
INVOICE-
One document per issued invoice.
ADVANCE_INVOICE-
One document per issued advance invoice.
CREDIT_NOTE-
One document per issued credit note.
Accepted values 1
JSON-
The renderer's layout JSON.
Accepted values 1
PDF
sk, cs or en: the readers it prints for.
The one its kind and language print with when a print names no template.
The template as written, verbatim (at most 512 KiB). Costs 50.
When it was archived; null while it is active.
Example
Query
query printTemplate($id: UUID!) {
printTemplate(id: $id) {
id
kind
syntax
output
language
name
isDefault
bodyBytes
body
archivedAt
createdAt
updatedAt
}
}
Variables
{"id": "00000000-0000-4000-8000-000000000001"}
Response
{
"data": {
"printTemplate": {
"id": "00000000-0000-4000-8000-000000000001",
"kind": "SALES_ORDER",
"syntax": "JSON",
"output": "PDF",
"language": "example",
"name": "example",
"isDefault": true,
"bodyBytes": 1,
"body": "example",
"archivedAt": "2026-01-01T00:00:00Z",
"createdAt": "2026-01-01T00:00:00Z",
"updatedAt": "2026-01-01T00:00:00Z"
}
}
}
printTemplates
Description
The organisation's templates, by kind, language and name. body costs 50 per template.
Arguments
Input fields 4
Accepted values 15
SALES_ORDER-
One document per sales order.
SALES_ORDER_ITEMS-
One list of the lines of a selection of orders.
RECEIPT_ADVICE-
One document per receipt advice.
RECEIPT-
One document per receipt, an opening balance included.
ISSUE-
One document per issue.
TRANSFER_ADVICE-
One document per transfer advice.
TRANSFER-
One document per transfer.
RECEIPT_ADVICE_ITEMS-
One list of the lines of a selection of receipt advices.
RECEIPT_ITEMS-
One list of the lines of a selection of receipts.
ISSUE_ITEMS-
One list of the lines of a selection of issues.
TRANSFER_ADVICE_ITEMS-
One list of the lines of a selection of transfer advices.
TRANSFER_ITEMS-
One list of the lines of a selection of transfers.
INVOICE-
One document per issued invoice.
ADVANCE_INVOICE-
One document per issued advance invoice.
CREDIT_NOTE-
One document per issued credit note.
A part of the name, any case and diacritics.
true lists the archived templates instead of the active ones.
Returns
The templates with their cursors, by kind, language and name.
Fields 2
Where this template sits; pass as after (with first) or before (with last).
Fields 12
An organisation's print template.
Accepted values 15
SALES_ORDER-
One document per sales order.
SALES_ORDER_ITEMS-
One list of the lines of a selection of orders.
RECEIPT_ADVICE-
One document per receipt advice.
RECEIPT-
One document per receipt, an opening balance included.
ISSUE-
One document per issue.
TRANSFER_ADVICE-
One document per transfer advice.
TRANSFER-
One document per transfer.
RECEIPT_ADVICE_ITEMS-
One list of the lines of a selection of receipt advices.
RECEIPT_ITEMS-
One list of the lines of a selection of receipts.
ISSUE_ITEMS-
One list of the lines of a selection of issues.
TRANSFER_ADVICE_ITEMS-
One list of the lines of a selection of transfer advices.
TRANSFER_ITEMS-
One list of the lines of a selection of transfers.
INVOICE-
One document per issued invoice.
ADVANCE_INVOICE-
One document per issued advance invoice.
CREDIT_NOTE-
One document per issued credit note.
Accepted values 1
JSON-
The renderer's layout JSON.
Accepted values 1
PDF
sk, cs or en: the readers it prints for.
The one its kind and language print with when a print names no template.
The template as written, verbatim (at most 512 KiB). Costs 50.
When it was archived; null while it is active.
The same templates without cursors.
Fields 12
An organisation's print template.
Accepted values 15
SALES_ORDER-
One document per sales order.
SALES_ORDER_ITEMS-
One list of the lines of a selection of orders.
RECEIPT_ADVICE-
One document per receipt advice.
RECEIPT-
One document per receipt, an opening balance included.
ISSUE-
One document per issue.
TRANSFER_ADVICE-
One document per transfer advice.
TRANSFER-
One document per transfer.
RECEIPT_ADVICE_ITEMS-
One list of the lines of a selection of receipt advices.
RECEIPT_ITEMS-
One list of the lines of a selection of receipts.
ISSUE_ITEMS-
One list of the lines of a selection of issues.
TRANSFER_ADVICE_ITEMS-
One list of the lines of a selection of transfer advices.
TRANSFER_ITEMS-
One list of the lines of a selection of transfers.
INVOICE-
One document per issued invoice.
ADVANCE_INVOICE-
One document per issued advance invoice.
CREDIT_NOTE-
One document per issued credit note.
Accepted values 1
JSON-
The renderer's layout JSON.
Accepted values 1
PDF
sk, cs or en: the readers it prints for.
The one its kind and language print with when a print names no template.
The template as written, verbatim (at most 512 KiB). Costs 50.
When it was archived; null while it is active.
Where the page sits, and the cursors to the next and previous pages.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
Example
Query
query printTemplates($first: Int) {
printTemplates(first: $first) {
edges {
cursor
}
nodes {
id
kind
syntax
output
language
name
}
pageInfo {
hasNextPage
hasPreviousPage
startCursor
endCursor
}
}
}
Variables
{"first": 10}
Response
{
"data": {
"printTemplates": {
"edges": [{"cursor": "example"}],
"nodes": [
{
"id": "00000000-0000-4000-8000-000000000001",
"kind": "SALES_ORDER",
"syntax": "JSON",
"output": "PDF",
"language": "example",
"name": "example"
}
],
"pageInfo": {
"hasNextPage": true,
"hasPreviousPage": true,
"startCursor": "example",
"endCursor": "example"
}
}
}
}
copyPrintTemplate
Description
Copy a template or one of ours under a new name; the copy is never the default.
Arguments
Input fields 3
Exactly one of id and builtIn.
Input fields 2
One of ours, by kind and language.
Accepted values 15
SALES_ORDER-
One document per sales order.
SALES_ORDER_ITEMS-
One list of the lines of a selection of orders.
RECEIPT_ADVICE-
One document per receipt advice.
RECEIPT-
One document per receipt, an opening balance included.
ISSUE-
One document per issue.
TRANSFER_ADVICE-
One document per transfer advice.
TRANSFER-
One document per transfer.
RECEIPT_ADVICE_ITEMS-
One list of the lines of a selection of receipt advices.
RECEIPT_ITEMS-
One list of the lines of a selection of receipts.
ISSUE_ITEMS-
One list of the lines of a selection of issues.
TRANSFER_ADVICE_ITEMS-
One list of the lines of a selection of transfer advices.
TRANSFER_ITEMS-
One list of the lines of a selection of transfers.
INVOICE-
One document per issued invoice.
ADVANCE_INVOICE-
One document per issued advance invoice.
CREDIT_NOTE-
One document per issued credit note.
The copy's name; when it is taken, " 2" … " 20" is appended.
Returns
An organisation's print template.
Accepted values 15
SALES_ORDER-
One document per sales order.
SALES_ORDER_ITEMS-
One list of the lines of a selection of orders.
RECEIPT_ADVICE-
One document per receipt advice.
RECEIPT-
One document per receipt, an opening balance included.
ISSUE-
One document per issue.
TRANSFER_ADVICE-
One document per transfer advice.
TRANSFER-
One document per transfer.
RECEIPT_ADVICE_ITEMS-
One list of the lines of a selection of receipt advices.
RECEIPT_ITEMS-
One list of the lines of a selection of receipts.
ISSUE_ITEMS-
One list of the lines of a selection of issues.
TRANSFER_ADVICE_ITEMS-
One list of the lines of a selection of transfer advices.
TRANSFER_ITEMS-
One list of the lines of a selection of transfers.
INVOICE-
One document per issued invoice.
ADVANCE_INVOICE-
One document per issued advance invoice.
CREDIT_NOTE-
One document per issued credit note.
Accepted values 1
JSON-
The renderer's layout JSON.
Accepted values 1
PDF
sk, cs or en: the readers it prints for.
The one its kind and language print with when a print names no template.
The template as written, verbatim (at most 512 KiB). Costs 50.
When it was archived; null while it is active.
Example
Mutation
mutation copyPrintTemplate($input: CopyPrintTemplateInput!) {
copyPrintTemplate(input: $input) {
id
kind
syntax
output
language
name
isDefault
bodyBytes
body
archivedAt
createdAt
updatedAt
}
}
Variables
{"input": {"name": "example"}}
Response
{
"data": {
"copyPrintTemplate": {
"id": "00000000-0000-4000-8000-000000000001",
"kind": "SALES_ORDER",
"syntax": "JSON",
"output": "PDF",
"language": "example",
"name": "example",
"isDefault": true,
"bodyBytes": 1,
"body": "example",
"archivedAt": "2026-01-01T00:00:00Z",
"createdAt": "2026-01-01T00:00:00Z",
"updatedAt": "2026-01-01T00:00:00Z"
}
}
}
createPrintTemplate
Description
Store a template. A second one of the same name, kind and language is CONFLICT with reason DUPLICATE_NAME; another write making a default at the same moment is CONFLICT DEFAULT_TAKEN.
Arguments
Input fields 5
Accepted values 15
SALES_ORDER-
One document per sales order.
SALES_ORDER_ITEMS-
One list of the lines of a selection of orders.
RECEIPT_ADVICE-
One document per receipt advice.
RECEIPT-
One document per receipt, an opening balance included.
ISSUE-
One document per issue.
TRANSFER_ADVICE-
One document per transfer advice.
TRANSFER-
One document per transfer.
RECEIPT_ADVICE_ITEMS-
One list of the lines of a selection of receipt advices.
RECEIPT_ITEMS-
One list of the lines of a selection of receipts.
ISSUE_ITEMS-
One list of the lines of a selection of issues.
TRANSFER_ADVICE_ITEMS-
One list of the lines of a selection of transfer advices.
TRANSFER_ITEMS-
One list of the lines of a selection of transfers.
INVOICE-
One document per issued invoice.
ADVANCE_INVOICE-
One document per issued advance invoice.
CREDIT_NOTE-
One document per issued credit note.
sk, cs or en.
1-120 characters, unique per kind and language.
At most 512 KiB.
Makes it the one its kind and language print with; the previous default stops being one.
Default: false
Returns
An organisation's print template.
Accepted values 15
SALES_ORDER-
One document per sales order.
SALES_ORDER_ITEMS-
One list of the lines of a selection of orders.
RECEIPT_ADVICE-
One document per receipt advice.
RECEIPT-
One document per receipt, an opening balance included.
ISSUE-
One document per issue.
TRANSFER_ADVICE-
One document per transfer advice.
TRANSFER-
One document per transfer.
RECEIPT_ADVICE_ITEMS-
One list of the lines of a selection of receipt advices.
RECEIPT_ITEMS-
One list of the lines of a selection of receipts.
ISSUE_ITEMS-
One list of the lines of a selection of issues.
TRANSFER_ADVICE_ITEMS-
One list of the lines of a selection of transfer advices.
TRANSFER_ITEMS-
One list of the lines of a selection of transfers.
INVOICE-
One document per issued invoice.
ADVANCE_INVOICE-
One document per issued advance invoice.
CREDIT_NOTE-
One document per issued credit note.
Accepted values 1
JSON-
The renderer's layout JSON.
Accepted values 1
PDF
sk, cs or en: the readers it prints for.
The one its kind and language print with when a print names no template.
The template as written, verbatim (at most 512 KiB). Costs 50.
When it was archived; null while it is active.
Example
Mutation
mutation createPrintTemplate($input: CreatePrintTemplateInput!) {
createPrintTemplate(input: $input) {
id
kind
syntax
output
language
name
isDefault
bodyBytes
body
archivedAt
createdAt
updatedAt
}
}
Variables
{
"input": {
"kind": "SALES_ORDER",
"language": "example",
"name": "example",
"body": "example"
}
}
Response
{
"data": {
"createPrintTemplate": {
"id": "00000000-0000-4000-8000-000000000001",
"kind": "SALES_ORDER",
"syntax": "JSON",
"output": "PDF",
"language": "example",
"name": "example",
"isDefault": true,
"bodyBytes": 1,
"body": "example",
"archivedAt": "2026-01-01T00:00:00Z",
"createdAt": "2026-01-01T00:00:00Z",
"updatedAt": "2026-01-01T00:00:00Z"
}
}
}
deletePrintTemplate
Description
Delete the template; deleting the default leaves ours to print. Answers the id.
Arguments
Input fields 1
Example
Mutation
mutation deletePrintTemplate($input: DeletePrintTemplateInput!) {
deletePrintTemplate(input: $input)
}
Variables
{"input": {"id": "00000000-0000-4000-8000-000000000001"}}
Response
{"data": {"deletePrintTemplate": "00000000-0000-4000-8000-000000000001"}}
setPrintTemplateArchived
Description
Archive or restore a template; archiving the default leaves ours to print. Restoring into a name an active template took is CONFLICT DUPLICATE_NAME.
Arguments
Returns
An organisation's print template.
Accepted values 15
SALES_ORDER-
One document per sales order.
SALES_ORDER_ITEMS-
One list of the lines of a selection of orders.
RECEIPT_ADVICE-
One document per receipt advice.
RECEIPT-
One document per receipt, an opening balance included.
ISSUE-
One document per issue.
TRANSFER_ADVICE-
One document per transfer advice.
TRANSFER-
One document per transfer.
RECEIPT_ADVICE_ITEMS-
One list of the lines of a selection of receipt advices.
RECEIPT_ITEMS-
One list of the lines of a selection of receipts.
ISSUE_ITEMS-
One list of the lines of a selection of issues.
TRANSFER_ADVICE_ITEMS-
One list of the lines of a selection of transfer advices.
TRANSFER_ITEMS-
One list of the lines of a selection of transfers.
INVOICE-
One document per issued invoice.
ADVANCE_INVOICE-
One document per issued advance invoice.
CREDIT_NOTE-
One document per issued credit note.
Accepted values 1
JSON-
The renderer's layout JSON.
Accepted values 1
PDF
sk, cs or en: the readers it prints for.
The one its kind and language print with when a print names no template.
The template as written, verbatim (at most 512 KiB). Costs 50.
When it was archived; null while it is active.
Example
Mutation
mutation setPrintTemplateArchived($input: SetPrintTemplateArchivedInput!) {
setPrintTemplateArchived(input: $input) {
id
kind
syntax
output
language
name
isDefault
bodyBytes
body
archivedAt
createdAt
updatedAt
}
}
Variables
{"input": {"id": "00000000-0000-4000-8000-000000000001", "archived": true}}
Response
{
"data": {
"setPrintTemplateArchived": {
"id": "00000000-0000-4000-8000-000000000001",
"kind": "SALES_ORDER",
"syntax": "JSON",
"output": "PDF",
"language": "example",
"name": "example",
"isDefault": true,
"bodyBytes": 1,
"body": "example",
"archivedAt": "2026-01-01T00:00:00Z",
"createdAt": "2026-01-01T00:00:00Z",
"updatedAt": "2026-01-01T00:00:00Z"
}
}
}
updatePrintTemplate
Arguments
Returns
An organisation's print template.
Accepted values 15
SALES_ORDER-
One document per sales order.
SALES_ORDER_ITEMS-
One list of the lines of a selection of orders.
RECEIPT_ADVICE-
One document per receipt advice.
RECEIPT-
One document per receipt, an opening balance included.
ISSUE-
One document per issue.
TRANSFER_ADVICE-
One document per transfer advice.
TRANSFER-
One document per transfer.
RECEIPT_ADVICE_ITEMS-
One list of the lines of a selection of receipt advices.
RECEIPT_ITEMS-
One list of the lines of a selection of receipts.
ISSUE_ITEMS-
One list of the lines of a selection of issues.
TRANSFER_ADVICE_ITEMS-
One list of the lines of a selection of transfer advices.
TRANSFER_ITEMS-
One list of the lines of a selection of transfers.
INVOICE-
One document per issued invoice.
ADVANCE_INVOICE-
One document per issued advance invoice.
CREDIT_NOTE-
One document per issued credit note.
Accepted values 1
JSON-
The renderer's layout JSON.
Accepted values 1
PDF
sk, cs or en: the readers it prints for.
The one its kind and language print with when a print names no template.
The template as written, verbatim (at most 512 KiB). Costs 50.
When it was archived; null while it is active.
Example
Mutation
mutation updatePrintTemplate($input: UpdatePrintTemplateInput!) {
updatePrintTemplate(input: $input) {
id
kind
syntax
output
language
name
isDefault
bodyBytes
body
archivedAt
createdAt
updatedAt
}
}
Variables
{"input": {"id": "00000000-0000-4000-8000-000000000001"}}
Response
{
"data": {
"updatePrintTemplate": {
"id": "00000000-0000-4000-8000-000000000001",
"kind": "SALES_ORDER",
"syntax": "JSON",
"output": "PDF",
"language": "example",
"name": "example",
"isDefault": true,
"bodyBytes": 1,
"body": "example",
"archivedAt": "2026-01-01T00:00:00Z",
"createdAt": "2026-01-01T00:00:00Z",
"updatedAt": "2026-01-01T00:00:00Z"
}
}
}
Integrations
errorReports
Description
Error reports, most recently seen first, paged with first/after or last/before (1..250). Today the filter names one record (subject). lastSeenAt moves when a report recurs, so a report that recurs while you page moves to the first page. Needs integration.read and the record's read permission (FORBIDDEN_ROLE naming it otherwise), with the record in the key's scope (NOT_FOUND with field filter.subject otherwise).
Arguments
Input fields 2
The record whose reports to read.
Input fields 2
Accepted values 1
STOCK_DOCUMENT-
A stock document of any kind: a receipt, an issue, a transfer, a return, ...
Keep these statuses, at least one; left out, every status, MUTED included.
Accepted values 3
OPENRESOLVEDMUTED-
Still counted, not shown as open.
Returns
Fields 2
Fields 13
The line it is about; null for the record as a whole. A line later removed from a posted or open document keeps its reports, so this may name a line the record no longer has.
Accepted values 3
OPENRESOLVEDMUTED-
Still counted, not shown as open.
Until when a MUTED report stays muted; null mutes it until a person unmutes it.
Whether a new occurrence reopened it after it was resolved.
The newest occurrence's statusCode.
The newest occurrence's message.
Fields 13
Fields 2
Accepted values 1
STOCK_DOCUMENT-
A stock document of any kind: a receipt, an issue, a transfer, a return, ...
The line it is about; null for the record as a whole. A line later removed from a posted or open document keeps its reports, so this may name a line the record no longer has.
Accepted values 3
OPENRESOLVEDMUTED-
Still counted, not shown as open.
Until when a MUTED report stays muted; null mutes it until a person unmutes it.
Whether a new occurrence reopened it after it was resolved.
The newest occurrence's statusCode.
The newest occurrence's message.
Fields 4
Where a page sits in its connection.
More items follow this page.
More items precede this page.
The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
The last edge's cursor; pass as after (with first) for the next page. Null when empty.
Example
Query
query errorReports($filter: ErrorReportFilter!, $first: Int) {
errorReports(filter: $filter, first: $first) {
edges {
cursor
}
nodes {
id
lineId
source
code
status
mutedUntil
}
pageInfo {
hasNextPage
hasPreviousPage
startCursor
endCursor
}
}
}
Variables
{
"filter": {
"subject": {
"type": "STOCK_DOCUMENT",
"id": "00000000-0000-4000-8000-000000000001"
}
},
"first": 10
}
Response
{
"data": {
"errorReports": {
"edges": [{"cursor": "example"}],
"nodes": [
{
"id": "00000000-0000-4000-8000-000000000001",
"lineId": "00000000-0000-4000-8000-000000000001",
"source": "example",
"code": "example",
"status": "OPEN",
"mutedUntil": "2026-01-01T00:00:00Z"
}
],
"pageInfo": {
"hasNextPage": true,
"hasPreviousPage": true,
"startCursor": "example",
"endCursor": "example"
}
}
}
}
events
Description
The event log: what happened to orders, receipts, issues, transfers, consignments, shipments, transfer advices, receipt advices, the documents attached to orders and mirrored invoices, read forward from a cursor. Oldest first; each entity's events come in version order. A forward-only change feed: pass pageInfo.endCursor as after while pageInfo.hasNextPage is true, then keep polling with it. There is no last, no before and no total count.
first is required, from 1 to 250. Every edge carries its own cursor.
Event types: sales_order.confirmed, sales_order.completed, sales_order.reopened, sales_order.cancelled, sales_order.merged, sales_order.changed; receipt.opened, receipt.completed, receipt.cancelled, receipt.revised, receipt.changed, and the same five for issue and transfer; fulfilment.created, fulfilment.shipped, fulfilment.cancelled, fulfilment.changed; shipment.created, shipment.changed, shipment.cancelled; transfer_advice.opened, transfer_advice.changed, transfer_advice.closed, transfer_advice.cancelled; receipt_advice.opened, receipt_advice.changed, receipt_advice.closed, receipt_advice.cancelled; document.attached, document.version_added, document.removed; invoice.created, invoice.changed. New types and enum values are added without notice: ignore what you do not know.
Needs integration.read. Entity types the key may not read are left out silently; naming one in types or entityTypes is FORBIDDEN_ROLE, and so is a key that may read none of them. A key confined to companies or warehouses sees only their events. A cursor older than 30 days is VALIDATION with extensions.reason CURSOR_EXPIRED: re-sync from the lists and start again without a cursor.
wait is seconds, 0 (the default) to 25; outside is VALIDATION at wait. It waits only with after, and only when the page would be empty with hasNextPage false; it then answers as soon as an event it would show arrives, or with an empty page and an advanced endCursor when the time is up or the server is shutting down -- an empty answer is never an error: poll again with its endCursor. A key holds at most 4 waits open on one server (stockCardChanges' included); a further one waits the lesser of wait and 5 s without watching for events, then answers what is there by then.
Arguments
Accepted values 10
SALES_ORDER-
A sales order. Needs order.read.
RECEIPT-
A stock receipt: goods into a warehouse. Needs receipt.read.
ISSUE-
A stock issue: goods out of a warehouse, by hand or for a consignment. Needs issue.read.
TRANSFER-
A stock transfer between two warehouses, seen from either end. Needs transfer.read.
FULFILMENT-
A consignment: what one dispatch of an order sends. Needs fulfilment.read and order.read.
SHIPMENT-
A carrier shipment, from the moment the carrier accepted it: shipment.created, then shipment.changed when its tracking status moves, shipment.cancelled. Needs shipment.read.
TRANSFER_ADVICE-
A transfer advice, from the moment it is opened: transfer_advice.opened, then .changed when a line is added, changed or removed or its planned date moves, .closed, .cancelled. The work on it is the transfers' own events. Needs transferAdvice.read.
RECEIPT_ADVICE-
A receipt advice, from the moment it is opened: receipt_advice.opened, then .changed when a line is added, changed (a settlement too) or removed or its expected date or supplier reference moves, .closed, .cancelled. What arrives against it is its receipts' own events. Needs advice.read.
DOCUMENT-
A document attached to a sales order: document.attached, then document.version_added when a new version becomes current, document.removed. The event names the document only: read document(id) for its order and versions. Seen where its order is. Needs order.read.
INVOICE-
A mirrored invoice, advance invoice or credit note: invoice.created, then invoice.changed. Needs invoice.read.
Returns
One page of events.
The events with their cursors.
Fields 2
One event and its cursor.
Resume after this event: pass as after.
Fields 9
Something that happened to one entity, in one transaction.
Opaque and unique, increasing in the order events were written -- not always the order the feed returns them. Resume with a cursor, never with an id.
One of the types listed on events.
Accepted values 10
SALES_ORDER-
A sales order. Needs order.read.
RECEIPT-
A stock receipt: goods into a warehouse. Needs receipt.read.
ISSUE-
A stock issue: goods out of a warehouse, by hand or for a consignment. Needs issue.read.
TRANSFER-
A stock transfer between two warehouses, seen from either end. Needs transfer.read.
FULFILMENT-
A consignment: what one dispatch of an order sends. Needs fulfilment.read and order.read.
SHIPMENT-
A carrier shipment, from the moment the carrier accepted it: shipment.created, then shipment.changed when its tracking status moves, shipment.cancelled. Needs shipment.read.
TRANSFER_ADVICE-
A transfer advice, from the moment it is opened: transfer_advice.opened, then .changed when a line is added, changed or removed or its planned date moves, .closed, .cancelled. The work on it is the transfers' own events. Needs transferAdvice.read.
RECEIPT_ADVICE-
A receipt advice, from the moment it is opened: receipt_advice.opened, then .changed when a line is added, changed (a settlement too) or removed or its expected date or supplier reference moves, .closed, .cancelled. What arrives against it is its receipts' own events. Needs advice.read.
DOCUMENT-
A document attached to a sales order: document.attached, then document.version_added when a new version becomes current, document.removed. The event names the document only: read document(id) for its order and versions. Seen where its order is. Needs order.read.
INVOICE-
A mirrored invoice, advance invoice or credit note: invoice.created, then invoice.changed. Needs invoice.read.
1, 2, 3 … per entity, without gaps. Order one entity's events by this.
Where a receipt, issue, transfer or shipment came from. Null for other entities, and for a shipment without a consignment. origin.id and origin.salesOrderId are given whatever else the key may read: bare ids, which may name records the key cannot open.
The tracked fields that changed, old and new, as strings: enum codes, "true"/"false", decimal integers; null for none. Orders track status, fulfilmentStatus, paymentStatus, blockedReason, isPriority, invoiceNumber, hasOpenExceptions; receipts, issues and transfers status and revision; attached documents status (ACTIVE, REMOVED) and versionNo (the current version's number); consignments status; shipments status and trackingStatus; transfer advices status, plannedAt, lineCount (the number of lines) and linesChangedAt (the latest change of a line still there): a line added or removed moves lineCount, a line changed or added moves linesChangedAt, and removing the most recently changed line moves it back -- compare, do not assume it only grows. Empty when only untracked data changed.
The same events without cursors.
Fields 9
Something that happened to one entity, in one transaction.
Opaque and unique, increasing in the order events were written -- not always the order the feed returns them. Resume with a cursor, never with an id.
One of the types listed on events.
Accepted values 10
SALES_ORDER-
A sales order. Needs order.read.
RECEIPT-
A stock receipt: goods into a warehouse. Needs receipt.read.
ISSUE-
A stock issue: goods out of a warehouse, by hand or for a consignment. Needs issue.read.
TRANSFER-
A stock transfer between two warehouses, seen from either end. Needs transfer.read.
FULFILMENT-
A consignment: what one dispatch of an order sends. Needs fulfilment.read and order.read.
SHIPMENT-
A carrier shipment, from the moment the carrier accepted it: shipment.created, then shipment.changed when its tracking status moves, shipment.cancelled. Needs shipment.read.
TRANSFER_ADVICE-
A transfer advice, from the moment it is opened: transfer_advice.opened, then .changed when a line is added, changed or removed or its planned date moves, .closed, .cancelled. The work on it is the transfers' own events. Needs transferAdvice.read.
RECEIPT_ADVICE-
A receipt advice, from the moment it is opened: receipt_advice.opened, then .changed when a line is added, changed (a settlement too) or removed or its expected date or supplier reference moves, .closed, .cancelled. What arrives against it is its receipts' own events. Needs advice.read.
DOCUMENT-
A document attached to a sales order: document.attached, then document.version_added when a new version becomes current, document.removed. The event names the document only: read document(id) for its order and versions. Seen where its order is. Needs order.read.
INVOICE-
A mirrored invoice, advance invoice or credit note: invoice.created, then invoice.changed. Needs invoice.read.
1, 2, 3 … per entity, without gaps. Order one entity's events by this.
Where a receipt, issue, transfer or shipment came from. Null for other entities, and for a shipment without a consignment. origin.id and origin.salesOrderId are given whatever else the key may read: bare ids, which may name records the key cannot open.
Fields 3
Accepted values 4
STOCKTAKEFULFILMENTADVICEMANUAL
The stocktake, consignment (a shipment's too) or advice. Null for MANUAL.
The consignment's sales order: set only when kind is FULFILMENT, on an issue or a shipment. Null on events published before this field existed.
The tracked fields that changed, old and new, as strings: enum codes, "true"/"false", decimal integers; null for none. Orders track status, fulfilmentStatus, paymentStatus, blockedReason, isPriority, invoiceNumber, hasOpenExceptions; receipts, issues and transfers status and revision; attached documents status (ACTIVE, REMOVED) and versionNo (the current version's number); consignments status; shipments status and trackingStatus; transfer advices status, plannedAt, lineCount (the number of lines) and linesChangedAt (the latest change of a line still there): a line added or removed moves lineCount, a line changed or added moves linesChangedAt, and removing the most recently changed line moves it back -- compare, do not assume it only grows. Empty when only untracked data changed.
Fields 2
Who caused the event.
Accepted values 5
USERAPI_KEYJOBIMPORTSYSTEM
Only to a key holding audit.read. A membership or key id, or a background job's kind (e.g. "sales.allocate_order").
Example
Query
query events {
events {
edges {
cursor
}
nodes {
id
type
entityType
entityId
version
occurredAt
}
pageInfo {
hasNextPage
endCursor
}
}
}
Response
{
"data": {
"events": {
"edges": [{"cursor": "example"}],
"nodes": [
{
"id": "00000000-0000-4000-8000-000000000001",
"type": "example",
"entityType": "SALES_ORDER",
"entityId": "00000000-0000-4000-8000-000000000001",
"version": 1,
"occurredAt": "2026-01-01T00:00:00Z"
}
],
"pageInfo": {"hasNextPage": true, "endCursor": "example"}
}
}
}
externalSource
Description
The external source with this code (case-insensitive); null when there is none. Needs integration.read.
Arguments
Returns
A system the ERP knows records from or sends them to, by its code.
The code an external reference names it by, e.g. OBERON.
ESHOP, ERP or OTHER; read it as a string.
An archived source takes no new references; its old ones can still be removed.
Example
Query
query externalSource($code: String!) {
externalSource(code: $code) {
code
name
kind
archived
}
}
Variables
{"code": "example"}
Response
{
"data": {
"externalSource": {
"code": "example",
"name": "example",
"kind": "example",
"archived": true
}
}
}
reportError
Description
Report that an outside system failed to do something with a record: one occurrence of the error, grouped with earlier ones of the same subject, lineId, source and code into one report (created OPEN; a RESOLVED one is reopened and marked regressed; a MUTED one stays muted). The ERP builds the link to the Integrations platform from integrationsTarget; send no URL.
Needs integration.read, errorReport.write and the read permission of the document's kind (receipt.read for a receipt; FORBIDDEN_ROLE naming it otherwise), with the document in the key's warehouse and company scope; a document that does not exist or is out of scope is NOT_FOUND with field subject, a lineId not on it NOT_FOUND with field lineId. A malformed field is VALIDATION with that field. The requestId makes a retry after a lost response safe for 7 days: the same requestId and input answers counted false and created false with the report as it is now (NOT_FOUND with field subject when its document has since been discarded), while different input is CONFLICT with reason REQUEST_ID_REUSED. After 7 days a requestId is forgotten and the same call counts as a new occurrence.
Arguments
Input fields 10
1 to 128 bytes; one per occurrence you report.
Input fields 2
Accepted values 1
STOCK_DOCUMENT-
A stock document of any kind: a receipt, an issue, a transfer, a return, ...
A line of the subject the error is about; null for the record as a whole.
The outside system, UPPER_SNAKE_CASE of 2 to 32 characters, e.g. OBERON.
Your code for the error, UPPER_SNAKE_CASE of 2 to 64 characters, e.g. EXPORT_REJECTED.
The outside system's status, e.g. the HTTP status it answered; 0 to 999.
The reason, as the outside system gave it; 1 to 2000 characters.
Machine detail as a JSON object, up to 8 KiB.
When it happened by your clock; defaults to when the ERP received it.
Input fields 4
Where in the Integrations platform this occurrence's technical detail is.
The workspace slug: lowercase letters, digits and hyphens, up to 63.
Accepted values 4
RUNRUN_ITEM-
An item of a run; parentId is the run.
WORKFLOW_RUNEVENT
The run's, run item's, workflow run's or event's id there, 1 to 128 bytes.
The run of a RUN_ITEM; refused for any other kind.
Returns
Fields 13
Fields 2
Accepted values 1
STOCK_DOCUMENT-
A stock document of any kind: a receipt, an issue, a transfer, a return, ...
The line it is about; null for the record as a whole. A line later removed from a posted or open document keeps its reports, so this may name a line the record no longer has.
Accepted values 3
OPENRESOLVEDMUTED-
Still counted, not shown as open.
Until when a MUTED report stays muted; null mutes it until a person unmutes it.
Whether a new occurrence reopened it after it was resolved.
The newest occurrence's statusCode.
The newest occurrence's message.
Whether this occurrence made the report.
False for a replay of a requestId already answered: nothing was counted.
Whether this occurrence reopened a RESOLVED report.
Example
Mutation
mutation reportError($input: ReportErrorInput!) {
reportError(input: $input) {
errorReport {
id
lineId
source
code
status
mutedUntil
}
created
counted
reopened
}
}
Variables
{
"input": {
"requestId": "example",
"subject": {
"type": "STOCK_DOCUMENT",
"id": "00000000-0000-4000-8000-000000000001"
},
"source": "example",
"code": "example",
"message": "example"
}
}
Response
{
"data": {
"reportError": {
"errorReport": {
"id": "00000000-0000-4000-8000-000000000001",
"lineId": "00000000-0000-4000-8000-000000000001",
"source": "example",
"code": "example",
"status": "OPEN",
"mutedUntil": "2026-01-01T00:00:00Z"
},
"created": true,
"counted": true,
"reopened": true
}
}
}
API access
apiKey
Description
The key you are calling with, as it applies right now -- bounded by its owner.
Returns
The calling key.
The key's id. Stays the same when its secret is rotated.
The name its administrators gave it.
The deployment the key was minted for.
Accepted values 2
LIVE-
Production.
TEST-
Every other deployment.
Effective: what the key was granted, bounded by what its owner holds now. Sorted.
Effective: the key's scopes intersected with its owner's, sorted by type, then value. Empty means unrestricted along every dimension; a dimension with no entry is unrestricted.
Fields 2
One value the key is limited to along one dimension.
The dimension: a warehouse, a legal entity, a country or a partner.
Accepted values 4
LEGAL_ENTITY-
A legal entity of the organisation.
WAREHOUSE-
A warehouse.
COUNTRY-
A country, by ISO 3166-1 alpha-2 code.
PARTNER-
A business partner.
A uuid for a warehouse, a legal entity or a partner; a country code for a country.
Example
Query
query apiKey {
apiKey {
id
name
environment
permissions
scopes {
type
value
}
}
}
Response
{
"data": {
"apiKey": {
"id": "00000000-0000-4000-8000-000000000001",
"name": "example",
"environment": "LIVE",
"permissions": ["example"],
"scopes": [{"type": "LEGAL_ENTITY", "value": "example"}]
}
}
}
status
Description
Is the API up and does your key work. Costs 1 point.
Returns
The API answering.
Always true: an API that is down does not answer.
The public schema version: "v1".
The server's clock, for a client to compare its own against.
Example
Query
query status {
status {
ok
version
serverTime
}
}
Response
{
"data": {
"status": {
"ok": true,
"version": "example",
"serverTime": "2026-01-01T00:00:00Z"
}
}
}
Objects
AddDocumentVersionResult
Address
Description
A postal address in a partner's address book. id names this VERSION: editing an address that a document pinned makes a new version with a new id, and the document keeps the old one.
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
Our id of this address version (not of the address across its edits). |
label - String
|
The partner's own name for it, e.g. Warehouse Nitra. |
isDefault - Boolean!
|
Whether it is the partner's default address of its kind. |
recipient - String
|
Who receives it. |
street - String!
|
Street and number. |
street2 - String
|
A second address line. |
city - String!
|
City. |
postalCode - String!
|
Postal code. |
region - String
|
Region or state. |
countryCode - String!
|
ISO 3166-1 alpha-2 country code. |
phone - String
|
The phone the carrier calls at this address. |
email - String
|
The e-mail delivery notices for this address go to. |
externalRefs - ExternalRefConnection
|
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this address's references and are refused anywhere else. They name this version: when the address is edited they move to the new one. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served. |
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"label": "xyz789",
"isDefault": true,
"recipient": "abc123",
"street": "abc123",
"street2": "xyz789",
"city": "xyz789",
"postalCode": "abc123",
"region": "xyz789",
"countryCode": "xyz789",
"phone": "xyz789",
"email": "xyz789",
"externalRefs": ExternalRefConnection
}
AddressConnection
Description
One page of a partner's addresses of one kind.
Fields
| Field Name | Description |
|---|---|
edges - [AddressEdge!]!
|
The addresses with their cursors, the default first. |
nodes - [Address!]!
|
The same addresses without cursors. |
pageInfo - PageInfo!
|
Where the page sits, and the cursors to the next and previous pages. |
totalCount - Int!
|
How many current addresses of this kind the partner has, capped at 10001: 10001 reads "10000 or more". 0 once the partner is erased. |
Example
{
"edges": [AddressEdge],
"nodes": [Address],
"pageInfo": PageInfo,
"totalCount": 987
}
AddressEdge
AdviceReceiptConnection
Fields
| Field Name | Description |
|---|---|
edges - [ReceiptEdge!]!
|
|
nodes - [Receipt!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected. |
Example
{
"edges": [ReceiptEdge],
"nodes": [Receipt],
"pageInfo": PageInfo,
"totalCount": 123
}
AdviceReceiptLineConnection
Fields
| Field Name | Description |
|---|---|
edges - [AdviceReceiptLineEdge!]!
|
|
nodes - [ReceiptLine!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected. |
Example
{
"edges": [AdviceReceiptLineEdge],
"nodes": [ReceiptLine],
"pageInfo": PageInfo,
"totalCount": 987
}
AdviceReceiptLineEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - ReceiptLine!
|
Example
{
"cursor": "abc123",
"node": ReceiptLine
}
AdviceTransferConnection
Fields
| Field Name | Description |
|---|---|
edges - [TransferEdge!]!
|
|
nodes - [Transfer!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected. |
Example
{
"edges": [TransferEdge],
"nodes": [Transfer],
"pageInfo": PageInfo,
"totalCount": 987
}
AdviceTransferLineConnection
Fields
| Field Name | Description |
|---|---|
edges - [AdviceTransferLineEdge!]!
|
|
nodes - [TransferLine!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected. |
Example
{
"edges": [AdviceTransferLineEdge],
"nodes": [TransferLine],
"pageInfo": PageInfo,
"totalCount": 987
}
AdviceTransferLineEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - TransferLine!
|
Example
{
"cursor": "xyz789",
"node": TransferLine
}
ApiKeyScope
Description
One value the key is limited to along one dimension.
Fields
| Field Name | Description |
|---|---|
type - ScopeType!
|
The dimension: a warehouse, a legal entity, a country or a partner. |
value - String!
|
A uuid for a warehouse, a legal entity or a partner; a country code for a country. |
Example
{"type": "LEGAL_ENTITY", "value": "xyz789"}
ApiKeySelf
Description
The calling key.
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
The key's id. Stays the same when its secret is rotated. |
name - String!
|
The name its administrators gave it. |
environment - ApiKeyEnvironment!
|
The deployment the key was minted for. |
permissions - [String!]!
|
Effective: what the key was granted, bounded by what its owner holds now. Sorted. |
scopes - [ApiKeyScope!]!
|
Effective: the key's scopes intersected with its owner's, sorted by type, then value. Empty means unrestricted along every dimension; a dimension with no entry is unrestricted. |
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"name": "xyz789",
"environment": "LIVE",
"permissions": ["xyz789"],
"scopes": [ApiKeyScope]
}
ApiStatus
Description
The API answering.
Example
{
"ok": false,
"version": "abc123",
"serverTime": "10:15:30Z"
}
ApiWarning
Description
Something the call did that the caller should know about, though it did not fail.
Example
{
"code": "abc123",
"message": "xyz789",
"field": "abc123"
}
Asset
Description
A named image.
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
|
scope - AssetScope!
|
|
legalEntityId - UUID
|
The company of a COMPANY asset. |
code - String!
|
|
reference - String!
|
What a print template writes: company.logo. |
name - String!
|
|
kind - AssetKind!
|
|
contentType - String!
|
image/png or image/jpeg.
|
width - Int!
|
|
height - Int!
|
|
sizeBytes - Int!
|
|
isPublic - Boolean!
|
Served without authentication at publicUrl. Never a stamp. |
publicUrl - String
|
Where an e-mail links a public asset; it changes when the image does. Null when not public. |
createdAt - Time!
|
|
updatedAt - Time!
|
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"scope": "TENANT",
"legalEntityId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"code": "xyz789",
"reference": "xyz789",
"name": "abc123",
"kind": "LOGO",
"contentType": "xyz789",
"width": 123,
"height": 987,
"sizeBytes": 123,
"isPublic": false,
"publicUrl": "abc123",
"createdAt": "10:15:30Z",
"updatedAt": "10:15:30Z"
}
AssetConnection
Fields
| Field Name | Description |
|---|---|
edges - [AssetEdge!]!
|
The assets with their cursors, by scope and code. |
nodes - [Asset!]!
|
The same assets without cursors. |
pageInfo - PageInfo!
|
Where the page sits, and the cursors to the next and previous pages. |
Example
{
"edges": [AssetEdge],
"nodes": [Asset],
"pageInfo": PageInfo
}
AssetEdge
AttachDocumentResult
Example
{"applied": true, "document": Document}
BuiltInPrintTemplate
Description
One of ours: what prints when the organisation has no template of its own.
Fields
| Field Name | Description |
|---|---|
kind - PrintTemplateKind!
|
|
syntax - PrintTemplateSyntax!
|
|
output - PrintTemplateOutput!
|
|
language - String!
|
The language it is in: the one asked for, Slovak when that has none. |
body - String!
|
Example
{
"kind": "SALES_ORDER",
"syntax": "JSON",
"output": "PDF",
"language": "xyz789",
"body": "xyz789"
}
CarrierProfile
Description
An operational route of the synchronized Chameleoon catalogue. carrierProfiles lists only the active ones; Shipment.carrier is the route a shipment was sent with, which the catalogue may since have deactivated or dropped (then its codes stand in for its names).
Fields
| Field Name | Description |
|---|---|
code - String!
|
The Chameleoon courier id. |
profile - String!
|
The courier's profile id. |
name - String!
|
The courier's synchronized display name. |
service - String!
|
The profile's synchronized display name. When the catalogue gives the profile none, the courier's name (the same value as name) -- never null, so the field stays as it was published. |
Example
{
"code": "abc123",
"profile": "xyz789",
"name": "xyz789",
"service": "xyz789"
}
CarrierProfileConnection
Description
One keyset-cursor page of active carrier profiles.
Fields
| Field Name | Description |
|---|---|
edges - [CarrierProfileEdge!]!
|
Profiles with their cursors, ordered by code, profile and a stable opaque tiebreaker. |
nodes - [CarrierProfile!]!
|
The same profiles without cursors. |
totalCount - Int!
|
How many active profiles this organisation has across all pages. |
pageInfo - PageInfo!
|
Where this page sits in the active catalogue. |
Example
{
"edges": [CarrierProfileEdge],
"nodes": [CarrierProfile],
"totalCount": 987,
"pageInfo": PageInfo
}
CarrierProfileEdge
Description
One profile and its cursor.
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
Where this profile sits; pass as after (with first) or before (with last). |
node - CarrierProfile!
|
Example
{
"cursor": "xyz789",
"node": CarrierProfile
}
CreatePublicTransferAdviceResult
Fields
| Field Name | Description |
|---|---|
created - Boolean!
|
|
advice - TransferAdvice!
|
Example
{"created": false, "advice": TransferAdvice}
CreateReceiptAdviceResult
Fields
| Field Name | Description |
|---|---|
created - Boolean!
|
False: a replay of an earlier call with the same requestId and input. |
advice - ReceiptAdvice!
|
Example
{"created": true, "advice": ReceiptAdvice}
CreateSalesOrderResult
Description
What createSalesOrder did.
Fields
| Field Name | Description |
|---|---|
salesOrder - SalesOrder!
|
The order, as it now stands. |
created - Boolean!
|
False when the order had already been placed: the call was a repeat and changed nothing. |
warnings - [ApiWarning!]!
|
What happened that did not stop the order. |
Example
{
"salesOrder": SalesOrder,
"created": false,
"warnings": [ApiWarning]
}
Document
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
|
kind - DocumentKind!
|
|
title - String
|
|
externalId - String
|
The issuing system's own id of the document. |
externalNumber - String
|
The document's number in the issuing system. |
createdAt - Time!
|
|
updatedAt - Time!
|
When its last version was added. |
versionCount - Int!
|
How many versions it has; the current one is the highest. |
file - DocumentFile!
|
The current version's file. |
downloadUrl - String
|
Where to download the current version: stable across versions, and the API key still needed. Null when the ERP has no public address configured. |
versions - DocumentVersionConnection
|
Its versions, newest first: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this document's versions and are refused anywhere else. Null, with an error at its path, when its page cannot be read; the rest of the answer is served. |
salesOrder - SalesOrder
|
The order it is kept with. Null when the order is no longer in the key's sight. |
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"kind": "INVOICE",
"title": "abc123",
"externalId": "xyz789",
"externalNumber": "abc123",
"createdAt": "10:15:30Z",
"updatedAt": "10:15:30Z",
"versionCount": 987,
"file": DocumentFile,
"downloadUrl": "xyz789",
"versions": DocumentVersionConnection,
"salesOrder": SalesOrder
}
DocumentConnection
Fields
| Field Name | Description |
|---|---|
edges - [DocumentEdge!]!
|
The documents with their cursors. |
nodes - [Document!]!
|
The same documents without cursors. |
pageInfo - PageInfo!
|
Where the page sits, and the cursors to the next and previous pages. |
totalCount - Int!
|
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected. |
Example
{
"edges": [DocumentEdge],
"nodes": [Document],
"pageInfo": PageInfo,
"totalCount": 987
}
DocumentEdge
DocumentFile
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"filename": "abc123",
"contentType": "xyz789",
"size": 123,
"sha256": "xyz789"
}
DocumentVersion
Fields
| Field Name | Description |
|---|---|
versionNo - Int!
|
Counts from 1. |
note - String
|
|
createdAt - Time!
|
|
file - DocumentFile!
|
|
downloadUrl - String
|
Where to download this version; the API key still needed. Null as Document.downloadUrl. |
Example
{
"versionNo": 123,
"note": "xyz789",
"createdAt": "10:15:30Z",
"file": DocumentFile,
"downloadUrl": "xyz789"
}
DocumentVersionConnection
Fields
| Field Name | Description |
|---|---|
edges - [DocumentVersionEdge!]!
|
The versions with their cursors. |
nodes - [DocumentVersion!]!
|
The same versions without cursors. |
pageInfo - PageInfo!
|
Where the page sits, and the cursors to the next and previous pages. |
totalCount - Int!
|
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected. |
Example
{
"edges": [DocumentVersionEdge],
"nodes": [DocumentVersion],
"pageInfo": PageInfo,
"totalCount": 123
}
DocumentVersionEdge
Description
One version and its cursor.
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - DocumentVersion!
|
Example
{
"cursor": "abc123",
"node": DocumentVersion
}
ErrorReport
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
|
subject - ErrorSubject!
|
|
lineId - UUID
|
The line it is about; null for the record as a whole. A line later removed from a posted or open document keeps its reports, so this may name a line the record no longer has. |
source - String!
|
|
code - String!
|
|
status - ErrorReportStatus!
|
|
mutedUntil - Time
|
Until when a MUTED report stays muted; null mutes it until a person unmutes it. |
regressed - Boolean!
|
Whether a new occurrence reopened it after it was resolved. |
occurrenceCount - Int!
|
|
firstSeenAt - Time!
|
|
lastSeenAt - Time!
|
|
lastStatusCode - Int
|
The newest occurrence's statusCode. |
lastMessage - String!
|
The newest occurrence's message. |
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"subject": ErrorSubject,
"lineId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"source": "xyz789",
"code": "xyz789",
"status": "OPEN",
"mutedUntil": "10:15:30Z",
"regressed": false,
"occurrenceCount": 123,
"firstSeenAt": "10:15:30Z",
"lastSeenAt": "10:15:30Z",
"lastStatusCode": 987,
"lastMessage": "abc123"
}
ErrorReportConnection
Fields
| Field Name | Description |
|---|---|
edges - [ErrorReportEdge!]!
|
|
nodes - [ErrorReport!]!
|
|
pageInfo - PageInfo!
|
Example
{
"edges": [ErrorReportEdge],
"nodes": [ErrorReport],
"pageInfo": PageInfo
}
ErrorReportEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - ErrorReport!
|
Example
{
"cursor": "xyz789",
"node": ErrorReport
}
ErrorSubject
Fields
| Field Name | Description |
|---|---|
type - ErrorSubjectType!
|
|
id - UUID!
|
Example
{
"type": "STOCK_DOCUMENT",
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
}
Event
Description
Something that happened to one entity, in one transaction.
Fields
| Field Name | Description |
|---|---|
id - ID!
|
Opaque and unique, increasing in the order events were written -- not always the order the feed returns them. Resume with a cursor, never with an id. |
type - String!
|
One of the types listed on events. |
entityType - EventEntityType!
|
|
entityId - UUID!
|
|
version - Int!
|
1, 2, 3 … per entity, without gaps. Order one entity's events by this. |
occurredAt - Time!
|
|
origin - EventOrigin
|
Where a receipt, issue, transfer or shipment came from. Null for other entities, and for a shipment without a consignment. origin.id and origin.salesOrderId are given whatever else the key may read: bare ids, which may name records the key cannot open. |
transitions - [EventTransition!]!
|
The tracked fields that changed, old and new, as strings: enum codes, "true"/"false", decimal integers; null for none. Orders track status, fulfilmentStatus, paymentStatus, blockedReason, isPriority, invoiceNumber, hasOpenExceptions; receipts, issues and transfers status and revision; attached documents status (ACTIVE, REMOVED) and versionNo (the current version's number); consignments status; shipments status and trackingStatus; transfer advices status, plannedAt, lineCount (the number of lines) and linesChangedAt (the latest change of a line still there): a line added or removed moves lineCount, a line changed or added moves linesChangedAt, and removing the most recently changed line moves it back -- compare, do not assume it only grows. Empty when only untracked data changed. |
actor - EventActor!
|
Example
{
"id": 4,
"type": "abc123",
"entityType": "SALES_ORDER",
"entityId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"version": 987,
"occurredAt": "10:15:30Z",
"origin": EventOrigin,
"transitions": [EventTransition],
"actor": EventActor
}
EventActor
Description
Who caused the event.
Fields
| Field Name | Description |
|---|---|
kind - EventActorKind!
|
|
id - String
|
Only to a key holding audit.read. A membership or key id, or a background job's kind (e.g. "sales.allocate_order"). |
Example
{"kind": "USER", "id": "abc123"}
EventConnection
Description
One page of events.
Fields
| Field Name | Description |
|---|---|
edges - [EventEdge!]!
|
The events with their cursors. |
nodes - [Event!]!
|
The same events without cursors. |
pageInfo - EventPageInfo!
|
Example
{
"edges": [EventEdge],
"nodes": [Event],
"pageInfo": EventPageInfo
}
EventEdge
EventOrigin
Fields
| Field Name | Description |
|---|---|
kind - EventOriginKind!
|
|
id - UUID
|
The stocktake, consignment (a shipment's too) or advice. Null for MANUAL. |
salesOrderId - UUID
|
The consignment's sales order: set only when kind is FULFILMENT, on an issue or a shipment. Null on events published before this field existed. |
Example
{
"kind": "STOCKTAKE",
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"salesOrderId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
}
EventPageInfo
Description
A forward-only feed's position.
Example
{"hasNextPage": true, "endCursor": "abc123"}
EventTransition
ExternalRef
Description
An id another system knows a record by.
Fields
| Field Name | Description |
|---|---|
source - String!
|
The external source's code, e.g. SHOP -- the same string as SalesOrder.source. |
externalId - String!
|
The record's id in that system. |
parentExternalId - String
|
The parent's id in that system, when the id is unique only under it. |
externalNumber - String
|
The number that system shows for the record, when one was recorded. |
Example
{
"source": "xyz789",
"externalId": "abc123",
"parentExternalId": "xyz789",
"externalNumber": "abc123"
}
ExternalRefConnection
Description
One page of a record's external references.
Fields
| Field Name | Description |
|---|---|
edges - [ExternalRefEdge!]!
|
The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id. |
nodes - [ExternalRef!]!
|
The same references without cursors. |
pageInfo - PageInfo!
|
Where the page sits, and the cursors to the next and previous pages. |
totalCount - Int!
|
How many references the record has. |
Example
{
"edges": [ExternalRefEdge],
"nodes": [ExternalRef],
"pageInfo": PageInfo,
"totalCount": 123
}
ExternalRefEdge
Description
One reference and its cursor.
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
Where this reference sits; pass as after (with first) or before (with last) to this record's externalRefs. |
node - ExternalRef!
|
Example
{
"cursor": "abc123",
"node": ExternalRef
}
ExternalSource
Description
A system the ERP knows records from or sends them to, by its code.
Example
{
"code": "abc123",
"name": "abc123",
"kind": "abc123",
"archived": true
}
InstructionProgress
Description
How far the work on an instruction is, read off the documents executing it (linked by header or line; a CANCELLED one counts for nothing). Not a status and never a refusal: an instruction somebody is working on may still be changed. Times are the server's.
Fields
| Field Name | Description |
|---|---|
linesStarted - Int!
|
Lines with anything done or in progress. |
linesDone - Int!
|
Lines fully done: nothing remaining. |
linesInProgress - Int!
|
Lines with anything on a draft executing document (scanned or typed, not yet moved). |
linesRemaining - Int!
|
Lines still owed: remaining above zero while the instruction is OPEN; 0 once it is closed or cancelled. |
activeDocuments - Int!
|
Executing documents not finished: a draft (handheld or web) or an open continuous one. Above zero: somebody is working on it. |
startedAt - Time
|
When the first linked executing document was created; null while nobody has started. |
lastActivityAt - Time
|
The latest change on a linked executing document or its scans; null while nobody has started. |
Example
{
"linesStarted": 123,
"linesDone": 987,
"linesInProgress": 123,
"linesRemaining": 123,
"activeDocuments": 987,
"startedAt": "10:15:30Z",
"lastActivityAt": "10:15:30Z"
}
Invoice
Description
A mirrored invoice, advance invoice or credit note. Needs invoice.read.
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
Our id. |
direction - InvoiceDirection!
|
|
kind - InvoiceKind!
|
|
status - InvoiceStatus!
|
|
failureReason - String
|
|
source - String!
|
The code of the accounting system's source. |
sourceDocumentType - String
|
|
sourceChangedAt - Time
|
|
syncedAt - Time
|
|
cancelled - Boolean!
|
|
number - String
|
|
variableSymbol - String
|
|
constantSymbol - String
|
|
specificSymbol - String
|
|
supplierNumber - String
|
|
orderNumber - String
|
|
issueDate - Time
|
|
taxPointDate - Time
|
|
dueDate - Time
|
|
receivedDate - Time
|
|
vatClaimDate - Time
|
|
legalEntityId - UUID!
|
Our id of the legal entity it belongs to. |
legalEntityMatch - InvoiceLegalEntityMatch!
|
|
partnerId - UUID
|
Our id of the partner: named, found by IČO or e-mail, or created from the invoice's party. |
partnerMatch - InvoicePartnerMatch
|
|
partnerEditable - Boolean!
|
A person (or setInvoicePartner) may set or change the partner: none was found, or one was chosen by hand. |
seller - InvoiceParty!
|
|
buyer - InvoiceParty!
|
|
delivery - InvoiceParty!
|
|
paymentMethod - InvoicePaymentMethod
|
|
paymentMethodName - String
|
|
bankAccountNumber - String
|
|
bankCode - String
|
|
bankName - String
|
|
iban - String
|
|
swift - String
|
|
currencyCode - String!
|
|
exchangeRate - Decimal
|
|
exchangeRateAmount - Int
|
|
homeCurrencyCode - String!
|
|
textBeforeItems - String
|
|
textAfterItems - String
|
|
printedNote - String
|
|
vatNote - String
|
The statutory VAT wording the accounting system printed ("Dodanie je oslobodené od dane podľa § 43 zákona o DPH"). |
reverseCharge - Boolean!
|
|
oss - Boolean!
|
|
totalNet - Decimal!
|
|
totalVat - Decimal!
|
|
totalGross - Decimal!
|
|
rounding - Decimal!
|
|
advancesDeducted - Decimal!
|
|
amountDue - Decimal!
|
|
totalNetHome - Decimal
|
|
totalVatHome - Decimal
|
|
totalGrossHome - Decimal
|
|
paymentStatus - InvoicePaymentStatus!
|
|
paidAmount - Decimal
|
|
remainingAmount - Decimal
|
|
paidAt - Time
|
|
correctsInvoiceId - UUID
|
Our id of the invoice a credit note corrects, when it is mirrored. |
correctedNumber - String
|
|
correctedIssueDate - Time
|
|
correctedTaxPointDate - Time
|
|
correctionReason - String
|
|
internalNote - String
|
A note for colleagues; never printed. |
lines - InvoiceLineConnection
|
The lines, by lineNo. A connection, at most 250 a page. |
vatSummary - InvoiceVatRowConnection
|
The VAT summary, the highest rate first. |
settlements - InvoiceSettlementConnection
|
|
links - InvoiceLinkConnection
|
|
createdAt - Time!
|
|
updatedAt - Time!
|
|
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"direction": "ISSUED",
"kind": "INVOICE",
"status": "PENDING",
"failureReason": "abc123",
"source": "abc123",
"sourceDocumentType": "xyz789",
"sourceChangedAt": "10:15:30Z",
"syncedAt": "10:15:30Z",
"cancelled": false,
"number": "abc123",
"variableSymbol": "xyz789",
"constantSymbol": "xyz789",
"specificSymbol": "abc123",
"supplierNumber": "xyz789",
"orderNumber": "xyz789",
"issueDate": "10:15:30Z",
"taxPointDate": "10:15:30Z",
"dueDate": "10:15:30Z",
"receivedDate": "10:15:30Z",
"vatClaimDate": "10:15:30Z",
"legalEntityId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"legalEntityMatch": "EXPLICIT",
"partnerId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"partnerMatch": "EXPLICIT",
"partnerEditable": false,
"seller": InvoiceParty,
"buyer": InvoiceParty,
"delivery": InvoiceParty,
"paymentMethod": "BANK_TRANSFER",
"paymentMethodName": "abc123",
"bankAccountNumber": "xyz789",
"bankCode": "abc123",
"bankName": "abc123",
"iban": "abc123",
"swift": "xyz789",
"currencyCode": "xyz789",
"exchangeRate": Decimal,
"exchangeRateAmount": 123,
"homeCurrencyCode": "abc123",
"textBeforeItems": "xyz789",
"textAfterItems": "xyz789",
"printedNote": "xyz789",
"vatNote": "xyz789",
"reverseCharge": false,
"oss": true,
"totalNet": Decimal,
"totalVat": Decimal,
"totalGross": Decimal,
"rounding": Decimal,
"advancesDeducted": Decimal,
"amountDue": Decimal,
"totalNetHome": Decimal,
"totalVatHome": Decimal,
"totalGrossHome": Decimal,
"paymentStatus": "UNPAID",
"paidAmount": Decimal,
"remainingAmount": Decimal,
"paidAt": "10:15:30Z",
"correctsInvoiceId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"correctedNumber": "xyz789",
"correctedIssueDate": "10:15:30Z",
"correctedTaxPointDate": "10:15:30Z",
"correctionReason": "abc123",
"internalNote": "xyz789",
"lines": InvoiceLineConnection,
"vatSummary": InvoiceVatRowConnection,
"settlements": InvoiceSettlementConnection,
"links": InvoiceLinkConnection,
"createdAt": "10:15:30Z",
"updatedAt": "10:15:30Z"
}
InvoiceConnection
Fields
| Field Name | Description |
|---|---|
edges - [InvoiceEdge!]!
|
|
nodes - [Invoice!]!
|
|
pageInfo - PageInfo!
|
Example
{
"edges": [InvoiceEdge],
"nodes": [Invoice],
"pageInfo": PageInfo
}
InvoiceEdge
InvoiceLine
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
|
lineNo - Int!
|
|
kind - InvoiceLineKind!
|
|
name - String!
|
|
code - String
|
|
barcode - String
|
|
manufacturerCode - String
|
|
quantity - Decimal
|
|
unit - String
|
|
unitPriceNet - Decimal
|
|
unitPriceGross - Decimal
|
|
pricesIncludeVat - Boolean!
|
|
vatPercent - Decimal
|
|
discountPercent - Decimal
|
|
totalNet - Decimal!
|
|
totalVat - Decimal!
|
|
totalGross - Decimal!
|
|
note - String
|
|
externalId - String
|
|
variantId - UUID
|
|
variantMatch - String
|
EXPLICIT when the integration named the variant, else the key that matched it (SUPPLIER_CODE, BARCODE, SKU, ...). |
advanceInvoiceId - UUID
|
|
salesOrderLineId - UUID
|
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"lineNo": 123,
"kind": "ITEM",
"name": "xyz789",
"code": "xyz789",
"barcode": "abc123",
"manufacturerCode": "abc123",
"quantity": Decimal,
"unit": "xyz789",
"unitPriceNet": Decimal,
"unitPriceGross": Decimal,
"pricesIncludeVat": true,
"vatPercent": Decimal,
"discountPercent": Decimal,
"totalNet": Decimal,
"totalVat": Decimal,
"totalGross": Decimal,
"note": "xyz789",
"externalId": "xyz789",
"variantId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"variantMatch": "xyz789",
"advanceInvoiceId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"salesOrderLineId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
}
InvoiceLineConnection
Fields
| Field Name | Description |
|---|---|
edges - [InvoiceLineEdge!]!
|
|
nodes - [InvoiceLine!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected. |
Example
{
"edges": [InvoiceLineEdge],
"nodes": [InvoiceLine],
"pageInfo": PageInfo,
"totalCount": 123
}
InvoiceLineEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - InvoiceLine!
|
Example
{
"cursor": "abc123",
"node": InvoiceLine
}
InvoiceLink
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
|
type - InvoiceLinkType!
|
|
targetId - UUID!
|
Our id of the order, purchase order, receipt, issue or consignment. |
origin - InvoiceLinkOrigin!
|
|
linkedAt - Time!
|
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"type": "SALES_ORDER",
"targetId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"origin": "SYNC",
"linkedAt": "10:15:30Z"
}
InvoiceLinkConnection
Fields
| Field Name | Description |
|---|---|
edges - [InvoiceLinkEdge!]!
|
|
nodes - [InvoiceLink!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected. |
Example
{
"edges": [InvoiceLinkEdge],
"nodes": [InvoiceLink],
"pageInfo": PageInfo,
"totalCount": 987
}
InvoiceLinkEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - InvoiceLink!
|
Example
{
"cursor": "xyz789",
"node": InvoiceLink
}
InvoiceParty
Description
One side of the invoice as the accounting system printed it.
Example
{
"name": "xyz789",
"street": "abc123",
"city": "xyz789",
"postalCode": "xyz789",
"countryCode": "xyz789",
"registrationId": "abc123",
"taxId": "xyz789",
"vatId": "xyz789",
"email": "abc123",
"phone": "abc123",
"web": "abc123"
}
InvoiceSettlement
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"kind": "ADVANCE_DEDUCTION",
"counterInvoiceId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"counterNumber": "abc123",
"amount": Decimal,
"settledOn": "10:15:30Z"
}
InvoiceSettlementConnection
Fields
| Field Name | Description |
|---|---|
edges - [InvoiceSettlementEdge!]!
|
|
nodes - [InvoiceSettlement!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected. |
Example
{
"edges": [InvoiceSettlementEdge],
"nodes": [InvoiceSettlement],
"pageInfo": PageInfo,
"totalCount": 123
}
InvoiceSettlementEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - InvoiceSettlement!
|
Example
{
"cursor": "xyz789",
"node": InvoiceSettlement
}
InvoiceSyncResult
Description
What syncInvoice or removeInvoice did.
Fields
| Field Name | Description |
|---|---|
invoice - Invoice!
|
|
changed - Boolean!
|
False when nothing was written: the same document again, or a STALE one. |
reason - InvoiceSyncReason
|
|
warnings - [ApiWarning!]!
|
What the match did that the caller should know: a partner found by IČO, a line no code matched. |
Example
{
"invoice": Invoice,
"changed": false,
"reason": "STALE",
"warnings": [ApiWarning]
}
InvoiceVatRow
Example
{
"vatPercent": Decimal,
"base": Decimal,
"vat": Decimal,
"gross": Decimal,
"baseHome": Decimal,
"vatHome": Decimal,
"grossHome": Decimal
}
InvoiceVatRowConnection
Fields
| Field Name | Description |
|---|---|
edges - [InvoiceVatRowEdge!]!
|
|
nodes - [InvoiceVatRow!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected. |
Example
{
"edges": [InvoiceVatRowEdge],
"nodes": [InvoiceVatRow],
"pageInfo": PageInfo,
"totalCount": 123
}
InvoiceVatRowEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - InvoiceVatRow!
|
Example
{
"cursor": "xyz789",
"node": InvoiceVatRow
}
Issue
Description
Goods that left one warehouse.
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
|
number - String!
|
The issue's number. Every returned issue has one. |
status - IssueStatus!
|
|
version - Int
|
The issue's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again). |
effectiveAt - Time!
|
When the goods count as issued. |
completedAt - Time
|
|
cancelledAt - Time
|
|
revision - Int!
|
How many times the completed issue has been revised; 0 as completed. |
warehouseId - UUID!
|
|
warehouse - Warehouse
|
The warehouse the goods left. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission); outside the key's warehouse scope it is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served. |
legalEntityId - UUID
|
The company the issue belongs to; null when it belongs to none. |
partnerId - UUID
|
The partner the goods went to; null when the issue names none. |
partner - Partner
|
The partner. Needs partner.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A partner outside the key's partner scope is null with a FORBIDDEN_SCOPE error at its path (extensions.scope PARTNER). The rest is served. An erased partner keeps its id and code, with name null. |
origin - IssueOrigin!
|
|
externalReference - String
|
The external reference the issue was filed with. |
currencyCode - String!
|
|
totalValue - Decimal
|
What the goods were worth, without VAT, positive: the sum of the lines' values; null while any line's costing is pending. A completed issue can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document. |
costingPending - Boolean!
|
True while any line's costing is pending. A completed issue can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document. |
lines - IssueLineConnection
|
The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this issue's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served. |
externalRefs - ExternalRefConnection
|
The records other systems made of this issue (setIssueExternalRef), at most one per source: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this issue's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. |
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"number": "abc123",
"status": "OPEN",
"version": 123,
"effectiveAt": "10:15:30Z",
"completedAt": "10:15:30Z",
"cancelledAt": "10:15:30Z",
"revision": 987,
"warehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"warehouse": Warehouse,
"legalEntityId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"partnerId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"partner": Partner,
"origin": IssueOrigin,
"externalReference": "abc123",
"currencyCode": "abc123",
"totalValue": Decimal,
"costingPending": false,
"lines": IssueLineConnection,
"externalRefs": ExternalRefConnection
}
IssueConnection
Description
One page of issues.
Fields
| Field Name | Description |
|---|---|
edges - [IssueEdge!]!
|
The issues with their cursors, newest first by effectiveAt. |
nodes - [Issue!]!
|
The same issues without cursors. |
pageInfo - PageInfo!
|
Where the page sits, and the cursors to the next and previous pages. |
Example
{
"edges": [IssueEdge],
"nodes": [Issue],
"pageInfo": PageInfo
}
IssueEdge
IssueExternalRefResult
IssueLine
Description
One product issued.
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
|
lineNo - Int!
|
|
productVariantId - UUID!
|
The product variant. |
productVariant - ProductVariant
|
The product variant the line moves. Needs item.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission), and the rest is served. |
product - Product
|
The variant's parent product. Needs item.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission), and the rest is served. |
quantity - Decimal!
|
The quantity in unit, as entered. |
unit - String!
|
|
baseQuantity - Decimal!
|
The quantity in baseUnit. |
baseUnit - String!
|
|
unitCost - Decimal
|
The cost the goods left at, per base unit, without VAT, positive: the valuation area's average. Null while costing is pending, on an exploded set line (its value is its components', which have no one price per set), and on a cancelled issue's lines. |
value - Decimal
|
What the line's goods were worth, without VAT, positive; null while costing is pending. A line of an OPEN issue not yet applied to stock has value null and costingPending false, and is not counted in totalValue. |
costingPending - Boolean!
|
True while any of the line's stock movements waits to be costed. False for a line of an OPEN issue not yet applied to stock. |
lot - Lot
|
The batch or serial number issued, when the product tracks one. |
locationCode - String
|
The location the goods were taken from, when the warehouse tracks locations. |
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"lineNo": 123,
"productVariantId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"productVariant": ProductVariant,
"product": Product,
"quantity": Decimal,
"unit": "xyz789",
"baseQuantity": Decimal,
"baseUnit": "xyz789",
"unitCost": Decimal,
"value": Decimal,
"costingPending": false,
"lot": Lot,
"locationCode": "abc123"
}
IssueLineConnection
Description
One page of an issue's lines.
Fields
| Field Name | Description |
|---|---|
edges - [IssueLineEdge!]!
|
The lines with their cursors, by line number. |
nodes - [IssueLine!]!
|
The same lines without cursors. |
pageInfo - PageInfo!
|
Where the page sits, and the cursors to the next and previous pages. |
totalCount - Int!
|
How many lines the issue has, capped at 10001: 10001 reads "10000 or more". |
Example
{
"edges": [IssueLineEdge],
"nodes": [IssueLine],
"pageInfo": PageInfo,
"totalCount": 123
}
IssueLineEdge
Description
One line and its cursor.
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
Where this line sits; pass as after (with first) or before (with last) to this issue's lines. |
node - IssueLine!
|
Example
{
"cursor": "xyz789",
"node": IssueLine
}
IssueOrigin
Description
What an issue was created from.
Fields
| Field Name | Description |
|---|---|
kind - IssueOriginKind!
|
|
id - UUID
|
The consignment or stocktake; null for MANUAL. |
Example
{
"kind": "FULFILMENT",
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
}
ItemAttribute
ItemAttributeConnection
Description
One page of an item's attributes.
Fields
| Field Name | Description |
|---|---|
edges - [ItemAttributeEdge!]!
|
The attributes with their cursors. |
nodes - [ItemAttribute!]!
|
The same attributes without cursors. |
pageInfo - PageInfo!
|
Where the page sits, and the cursors to the next and previous pages. |
totalCount - Int!
|
How many attributes the item has. |
Example
{
"edges": [ItemAttributeEdge],
"nodes": [ItemAttribute],
"pageInfo": PageInfo,
"totalCount": 123
}
ItemAttributeEdge
Description
One attribute and its cursor.
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
Where this attribute sits; pass as after (with first) or before (with last) to this item's attributes. |
node - ItemAttribute!
|
Example
{
"cursor": "xyz789",
"node": ItemAttribute
}
LinkedTransferAdviceConnection
Fields
| Field Name | Description |
|---|---|
edges - [TransferAdviceEdge!]!
|
|
nodes - [TransferAdvice!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected. |
Example
{
"edges": [TransferAdviceEdge],
"nodes": [TransferAdvice],
"pageInfo": PageInfo,
"totalCount": 987
}
Location
Description
A bin (position) of a warehouse.
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
|
warehouseId - UUID!
|
|
code - String!
|
|
name - String
|
|
kind - LocationKind!
|
|
pickable - Boolean!
|
Whether reservations, and so picking, take from this bin. |
zoneCode - String
|
The bin's zone code; null without a zone. Tells apart two bins with one code. |
archived - Boolean!
|
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"warehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"code": "xyz789",
"name": "xyz789",
"kind": "STOCK",
"pickable": false,
"zoneCode": "abc123",
"archived": true
}
LocationConnection
Fields
| Field Name | Description |
|---|---|
edges - [LocationEdge!]!
|
|
nodes - [Location!]!
|
|
pageInfo - PageInfo!
|
Example
{
"edges": [LocationEdge],
"nodes": [Location],
"pageInfo": PageInfo
}
LocationEdge
Lot
Description
The batch or serial number of a stock document's line.
Example
{
"number": "xyz789",
"serialNumber": "xyz789",
"expiresAt": "10:15:30Z"
}
Method
PageInfo
Description
Where a page sits in its connection.
Fields
| Field Name | Description |
|---|---|
hasNextPage - Boolean!
|
More items follow this page. |
hasPreviousPage - Boolean!
|
More items precede this page. |
startCursor - String
|
The first edge's cursor; pass as before (with last) for the previous page. Null when empty. |
endCursor - String
|
The last edge's cursor; pass as after (with first) for the next page. Null when empty. |
Example
{
"hasNextPage": true,
"hasPreviousPage": true,
"startCursor": "xyz789",
"endCursor": "xyz789"
}
Parameter
ParameterConnection
Fields
| Field Name | Description |
|---|---|
edges - [ParameterEdge!]!
|
|
nodes - [Parameter!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
How many parameters the record has (at most 32). |
Example
{
"edges": [ParameterEdge],
"nodes": [Parameter],
"pageInfo": PageInfo,
"totalCount": 123
}
ParameterEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - Parameter!
|
Example
{
"cursor": "xyz789",
"node": Parameter
}
Partner
Description
A business partner: a customer, a supplier or both. Needs partner.read.
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
Our id. |
code - String!
|
Our code of the partner. |
name - String
|
Their name. Null once the partner is erased. |
registrationId - String
|
The company registration number (IČO). Null when unknown, and once the partner is erased. |
taxId - String
|
The tax id (DIČ). Null when unknown, and once the partner is erased. |
vatId - String
|
The VAT id (IČ DPH). Null when unknown, and once the partner is erased. |
email - String
|
The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased. |
phone - String
|
The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased. |
isCustomer - Boolean!
|
Whether we sell to them. |
isSupplier - Boolean!
|
Whether we buy from them. |
billingAddresses - AddressConnection
|
The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served. |
deliveryAddresses - AddressConnection
|
The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served. |
externalRefs - ExternalRefConnection
|
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served. |
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"code": "xyz789",
"name": "xyz789",
"registrationId": "xyz789",
"taxId": "abc123",
"vatId": "xyz789",
"email": "xyz789",
"phone": "abc123",
"isCustomer": true,
"isSupplier": false,
"billingAddresses": AddressConnection,
"deliveryAddresses": AddressConnection,
"externalRefs": ExternalRefConnection
}
PickupPoint
PrintTemplate
Description
An organisation's print template.
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
|
kind - PrintTemplateKind!
|
|
syntax - PrintTemplateSyntax!
|
|
output - PrintTemplateOutput!
|
|
language - String!
|
sk, cs or en: the readers it prints for.
|
name - String!
|
|
isDefault - Boolean!
|
The one its kind and language print with when a print names no template. |
bodyBytes - Int!
|
|
body - String!
|
The template as written, verbatim (at most 512 KiB). Costs 50. |
archivedAt - Time
|
When it was archived; null while it is active. |
createdAt - Time!
|
|
updatedAt - Time!
|
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"kind": "SALES_ORDER",
"syntax": "JSON",
"output": "PDF",
"language": "xyz789",
"name": "xyz789",
"isDefault": false,
"bodyBytes": 987,
"body": "xyz789",
"archivedAt": "10:15:30Z",
"createdAt": "10:15:30Z",
"updatedAt": "10:15:30Z"
}
PrintTemplateConnection
Fields
| Field Name | Description |
|---|---|
edges - [PrintTemplateEdge!]!
|
The templates with their cursors, by kind, language and name. |
nodes - [PrintTemplate!]!
|
The same templates without cursors. |
pageInfo - PageInfo!
|
Where the page sits, and the cursors to the next and previous pages. |
Example
{
"edges": [PrintTemplateEdge],
"nodes": [PrintTemplate],
"pageInfo": PageInfo
}
PrintTemplateEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
Where this template sits; pass as after (with first) or before (with last). |
node - PrintTemplate!
|
Example
{
"cursor": "abc123",
"node": PrintTemplate
}
Product
Description
A product: the parent of its variants. Needs item.read.
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
Our id. |
code - String!
|
Our code of the product. |
name - String!
|
Its name, as the catalogue keeps it (not translated). |
baseUnit - String!
|
The unit its stock is counted in. |
vatRateCode - String!
|
The code of its VAT rate. |
archivedAt - Time
|
When it was archived; null while it is in use. |
updatedAt - Time!
|
When it last changed: its own fields (an archive too), or one of its variants, their pack units or their codes. A price change (prices live on price lists) or a rename of an attribute or of one of its values does not move it. It is the start time of the transaction that wrote the change, so a change committed later can carry an earlier updatedAt than one already read: resume an incremental sync from the last updatedAt seen minus 10 minutes, and de-duplicate by id. A sync passes includeArchived: true -- archivedAt then tells a product is gone. |
variants - ProductVariantConnection
|
Every variant, archived included, the default first, then by SKU (by its bytes) and id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this product's variants and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served. |
externalRefs - ExternalRefConnection
|
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this product's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served. |
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"code": "xyz789",
"name": "abc123",
"baseUnit": "xyz789",
"vatRateCode": "xyz789",
"archivedAt": "10:15:30Z",
"updatedAt": "10:15:30Z",
"variants": ProductVariantConnection,
"externalRefs": ExternalRefConnection
}
ProductCode
Description
One code of a variant: a barcode or another identifier it is known by.
Fields
| Field Name | Description |
|---|---|
kind - String!
|
EAN13, EAN8, EAN14, GTIN, UPC, MANUFACTURER, CUSTOMS or INTERNAL. Read it as a string. |
value - String!
|
The code itself, as stored. |
unit - String
|
The pack unit this code identifies; null for the base unit. |
isPrimary - Boolean!
|
Whether it is the variant's primary code. |
Example
{
"kind": "abc123",
"value": "xyz789",
"unit": "xyz789",
"isPrimary": false
}
ProductCodeConnection
Description
One page of a variant's codes.
Fields
| Field Name | Description |
|---|---|
edges - [ProductCodeEdge!]!
|
The codes with their cursors, the primary first. |
nodes - [ProductCode!]!
|
The same codes without cursors. |
pageInfo - PageInfo!
|
Where the page sits, and the cursors to the next and previous pages. |
totalCount - Int!
|
How many codes the variant has. |
Example
{
"edges": [ProductCodeEdge],
"nodes": [ProductCode],
"pageInfo": PageInfo,
"totalCount": 123
}
ProductCodeEdge
Description
One code and its cursor.
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
Where this code sits; pass as after (with first) or before (with last) to this variant's codes. |
node - ProductCode!
|
Example
{
"cursor": "xyz789",
"node": ProductCode
}
ProductConnection
Description
One page of products.
Fields
| Field Name | Description |
|---|---|
edges - [ProductEdge!]!
|
The products with their cursors, in the order asked. |
nodes - [Product!]!
|
The same products without cursors. |
pageInfo - PageInfo!
|
Where the page sits, and the cursors to the next and previous pages. |
Example
{
"edges": [ProductEdge],
"nodes": [Product],
"pageInfo": PageInfo
}
ProductEdge
ProductPrice
Description
The variant's price on one price list, per base unit.
Fields
| Field Name | Description |
|---|---|
priceListId - UUID!
|
The price list's id. |
priceListCode - String!
|
The price list's code. |
priceListName - String!
|
The price list's name. |
isDefault - Boolean!
|
Whether the list is the default of its currency. |
isCompanyDefault - Boolean!
|
Whether the list is THE default: the default list in the company's currency. |
currencyCode - String!
|
The list's currency (ISO 4217), the currency of net and gross. |
net - Decimal!
|
The price per base unit without VAT, in currencyCode. |
gross - Decimal!
|
The price per base unit with VAT, in currencyCode. |
vatPercent - Decimal!
|
The VAT rate applied: the product's rate in force in the list's country today. |
vatRateCode - String!
|
The code of the product's VAT rate. |
includesVat - Boolean!
|
Whether the list's prices are stated with VAT. |
Example
{
"priceListId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"priceListCode": "xyz789",
"priceListName": "xyz789",
"isDefault": true,
"isCompanyDefault": true,
"currencyCode": "xyz789",
"net": Decimal,
"gross": Decimal,
"vatPercent": Decimal,
"vatRateCode": "xyz789",
"includesVat": true
}
ProductPriceConnection
Description
One page of a variant's prices.
Fields
| Field Name | Description |
|---|---|
edges - [ProductPriceEdge!]!
|
The prices with their cursors, the company's default list first. |
nodes - [ProductPrice!]!
|
The same prices without cursors. |
pageInfo - PageInfo!
|
Where the page sits, and the cursors to the next and previous pages. |
totalCount - Int!
|
How many price lists price the variant. |
Example
{
"edges": [ProductPriceEdge],
"nodes": [ProductPrice],
"pageInfo": PageInfo,
"totalCount": 123
}
ProductPriceEdge
Description
One price and its cursor.
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
Where this price sits; pass as after (with first) or before (with last) to this variant's prices. |
node - ProductPrice!
|
Example
{
"cursor": "abc123",
"node": ProductPrice
}
ProductUnit
Description
One alternate unit of a variant: a pack of its base unit.
Example
{
"code": "xyz789",
"factor": Decimal,
"isSalesDefault": true,
"isPurchaseDefault": true
}
ProductUnitConnection
Description
One page of a variant's units.
Fields
| Field Name | Description |
|---|---|
edges - [ProductUnitEdge!]!
|
The units with their cursors, by code. |
nodes - [ProductUnit!]!
|
The same units without cursors. |
pageInfo - PageInfo!
|
Where the page sits, and the cursors to the next and previous pages. |
totalCount - Int!
|
How many units the variant has. |
Example
{
"edges": [ProductUnitEdge],
"nodes": [ProductUnit],
"pageInfo": PageInfo,
"totalCount": 123
}
ProductUnitEdge
Description
One unit and its cursor.
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
Where this unit sits; pass as after (with first) or before (with last) to this variant's units. |
node - ProductUnit!
|
Example
{
"cursor": "abc123",
"node": ProductUnit
}
ProductVariant
Description
One sellable variant of a product: what a document line moves. Needs item.read.
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
Our id. |
sku - String!
|
Its SKU: unique in the organisation, archived variants included. |
selectedOptions - [SelectedOption!]!
|
The variant's axis values, e.g. Colour: black, in the product's axis order. Empty for a product without variants. |
isDefault - Boolean!
|
Whether it is the product's default variant. |
archivedAt - Time
|
When it was archived; null while it is in use. |
ean - String
|
The base unit's GTIN-family code, the primary first, else the oldest; null when it has none. |
codes - ProductCodeConnection
|
Its codes (EAN, GTIN, manufacturer's, customs, internal), the primary first, then by kind, value and id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's codes and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served. |
units - ProductUnitConnection
|
Its alternate units (packs), by code: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's units and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served. |
prices - ProductPriceConnection
|
Its price on every live price list that has one, the company's default list first, then the other defaults, then by list code and id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's prices and are refused anywhere else. Needs price.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served. |
externalRefs - ExternalRefConnection
|
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served. |
product - Product!
|
The product it is a variant of. |
stockCards - ProductVariantStockCardConnection
|
Its cards in every warehouse the key may read, by warehouse. Needs stockCard.read. Archived warehouses included, as stockCards. A connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's cards and are refused anywhere else. Null, with an error at its path, without stockCard.read or when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served. |
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"sku": "abc123",
"selectedOptions": [SelectedOption],
"isDefault": false,
"archivedAt": "10:15:30Z",
"ean": "abc123",
"codes": ProductCodeConnection,
"units": ProductUnitConnection,
"prices": ProductPriceConnection,
"externalRefs": ExternalRefConnection,
"product": Product,
"stockCards": ProductVariantStockCardConnection
}
ProductVariantConnection
Description
One page of a product's variants.
Fields
| Field Name | Description |
|---|---|
edges - [ProductVariantEdge!]!
|
The variants with their cursors, the default first. |
nodes - [ProductVariant!]!
|
The same variants without cursors. |
pageInfo - PageInfo!
|
Where the page sits, and the cursors to the next and previous pages. |
totalCount - Int!
|
How many variants the product has, archived included, capped at 10001: 10001 reads "10000 or more". |
Example
{
"edges": [ProductVariantEdge],
"nodes": [ProductVariant],
"pageInfo": PageInfo,
"totalCount": 987
}
ProductVariantEdge
Description
One variant and its cursor.
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
Where this variant sits; pass as after (with first) or before (with last) to this product's variants. |
node - ProductVariant!
|
Example
{
"cursor": "xyz789",
"node": ProductVariant
}
ProductVariantStockCardConnection
Description
One page of a product variant's stock cards.
Fields
| Field Name | Description |
|---|---|
edges - [StockCardEdge!]!
|
The cards with their cursors, by warehouse. |
nodes - [StockCard!]!
|
The same cards without cursors. |
pageInfo - PageInfo!
|
Where the page sits, and the cursors to the next and previous pages. |
totalCount - Int!
|
How many cards the variant has in the warehouses the key may read, capped at 10001: 10001 reads "10000 or more". |
Example
{
"edges": [StockCardEdge],
"nodes": [StockCard],
"pageInfo": PageInfo,
"totalCount": 987
}
Receipt
Description
Goods that came into one warehouse.
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
|
number - String!
|
The receipt's number. Every returned receipt has one. |
status - ReceiptStatus!
|
|
version - Int
|
The receipt's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again). |
effectiveAt - Time!
|
When the goods count as received. |
completedAt - Time
|
|
cancelledAt - Time
|
|
revision - Int!
|
How many times the completed receipt has been revised; 0 as completed. |
warehouseId - UUID!
|
|
warehouse - Warehouse
|
The warehouse the goods came into. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission); outside the key's warehouse scope it is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served. |
legalEntityId - UUID
|
The company the receipt belongs to; null when it belongs to none. |
supplierId - UUID
|
|
supplier - Partner
|
The supplier. Needs partner.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A supplier outside the key's partner scope is null with a FORBIDDEN_SCOPE error at its path (extensions.scope PARTNER). The rest is served. An erased supplier keeps its id and code, with name null. |
origin - ReceiptOrigin!
|
|
receiptAdvice - ReceiptAdvice
|
The receipt advice it answers; null for a receipt answering none. Needs advice.read: without it null with FORBIDDEN_ROLE at its path; outside the key's scope null. The rest is served. |
externalReference - String
|
The supplier's delivery note or invoice number. |
currencyCode - String!
|
|
totalValue - Decimal
|
The sum of the lines' values, without VAT; null while any line's costing is pending. A completed receipt can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document. |
costingPending - Boolean!
|
True while any line's costing is pending. A completed receipt can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document. |
lines - ReceiptLineConnection
|
The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this receipt's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served. |
externalRefs - ExternalRefConnection
|
The records other systems made of this receipt (setReceiptExternalRef), at most one per source: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this receipt's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. |
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"number": "abc123",
"status": "OPEN",
"version": 123,
"effectiveAt": "10:15:30Z",
"completedAt": "10:15:30Z",
"cancelledAt": "10:15:30Z",
"revision": 123,
"warehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"warehouse": Warehouse,
"legalEntityId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"supplierId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"supplier": Partner,
"origin": ReceiptOrigin,
"receiptAdvice": ReceiptAdvice,
"externalReference": "xyz789",
"currencyCode": "xyz789",
"totalValue": Decimal,
"costingPending": true,
"lines": ReceiptLineConnection,
"externalRefs": ExternalRefConnection
}
ReceiptAdvice
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
|
number - String
|
PP-…, set when it opens; null on a DRAFT. |
kind - ReceiptAdviceKind!
|
|
status - ReceiptAdviceStatus!
|
|
state - ReceiptAdviceState!
|
The status and what arrived combined. Read only when selected. |
supplierId - UUID!
|
|
supplier - Partner
|
The supplier. Needs partner.read: without it null with FORBIDDEN_ROLE at its path; the rest is served. |
warehouseId - UUID!
|
|
warehouse - Warehouse
|
The warehouse the goods are coming into. Needs warehouse.read, as Receipt.warehouse. |
legalEntityId - UUID
|
The company the advice is filed under; null only on an older draft. |
supplierReference - String
|
|
advisedAt - Time!
|
|
expectedAt - Time
|
|
currencyCode - String!
|
|
pricesIncludeVat - Boolean!
|
|
note - String
|
|
openedAt - Time
|
|
closedAt - Time
|
|
cancelledAt - Time
|
|
lines - ReceiptAdviceLineConnection
|
The announced lines, by line number. Page with first/after or last/before (1..250). |
parameters - ParameterConnection
|
Text parameters in name order, paged with first/after or last/before (1..250). |
progress - InstructionProgress!
|
How far the work on the advice is, read off its receipts. A line is done when it arrived within the tolerance or its difference is settled. Batched per page. |
receipts - AdviceReceiptConnection
|
The receipts answering the advice, newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Needs receipt.read too: without it null with FORBIDDEN_ROLE at its path. Filter them with the root receipts(filter: {receiptAdviceIds}). |
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"number": "abc123",
"kind": "DELIVERY_NOTE",
"status": "DRAFT",
"state": "DRAFT",
"supplierId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"supplier": Partner,
"warehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"warehouse": Warehouse,
"legalEntityId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"supplierReference": "xyz789",
"advisedAt": "10:15:30Z",
"expectedAt": "10:15:30Z",
"currencyCode": "abc123",
"pricesIncludeVat": false,
"note": "abc123",
"openedAt": "10:15:30Z",
"closedAt": "10:15:30Z",
"cancelledAt": "10:15:30Z",
"lines": ReceiptAdviceLineConnection,
"parameters": ParameterConnection,
"progress": InstructionProgress,
"receipts": AdviceReceiptConnection
}
ReceiptAdviceConnection
Fields
| Field Name | Description |
|---|---|
edges - [ReceiptAdviceEdge!]!
|
|
nodes - [ReceiptAdvice!]!
|
|
pageInfo - PageInfo!
|
Example
{
"edges": [ReceiptAdviceEdge],
"nodes": [ReceiptAdvice],
"pageInfo": PageInfo
}
ReceiptAdviceEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - ReceiptAdvice!
|
Example
{
"cursor": "abc123",
"node": ReceiptAdvice
}
ReceiptAdviceLine
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
|
lineNo - Int!
|
|
variantId - UUID
|
The product variant; null only on a DRAFT line the ERP has not matched yet. |
supplierSku - String
|
The supplier's own code of the item. |
quantity - Decimal!
|
The quantity as announced, in unit. |
unit - String!
|
|
unitFactor - Decimal!
|
How many base units one unit held when the line was written. |
baseQuantity - Decimal!
|
|
unitPrice - Decimal
|
|
vatPercent - Decimal
|
|
expectedAt - Time
|
|
batchCode - String
|
|
expiresAt - Time
|
|
serialNumber - String
|
|
settlement - ReceiptAdviceLineSettlement
|
What a person decided about the line's difference; null while nothing is decided. |
received - Decimal!
|
What arrived on open and completed receipts, in base units. Read only when selected. |
remaining - Decimal!
|
What is still announced, in base units: baseQuantity less received, never below 0. |
inProgress - Decimal!
|
What is on draft receipts (scanned on a handheld or typed in the web), in base units: on its way in, not yet received. |
receiptStatus - ReceiptAdviceLineReceiptStatus!
|
|
receiptLines - AdviceReceiptLineConnection
|
The receipt lines that answered this line, on receipts that are not drafts, oldest first, paged 1..250. Needs receipt.read too: without it null with FORBIDDEN_ROLE at its path. |
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"lineNo": 987,
"variantId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"supplierSku": "abc123",
"quantity": Decimal,
"unit": "xyz789",
"unitFactor": Decimal,
"baseQuantity": Decimal,
"unitPrice": Decimal,
"vatPercent": Decimal,
"expectedAt": "10:15:30Z",
"batchCode": "xyz789",
"expiresAt": "10:15:30Z",
"serialNumber": "abc123",
"settlement": "SHORT_ACCEPTED",
"received": Decimal,
"remaining": Decimal,
"inProgress": Decimal,
"receiptStatus": "AWAITING",
"receiptLines": AdviceReceiptLineConnection
}
ReceiptAdviceLineConnection
Fields
| Field Name | Description |
|---|---|
edges - [ReceiptAdviceLineEdge!]!
|
|
nodes - [ReceiptAdviceLine!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected. |
Example
{
"edges": [ReceiptAdviceLineEdge],
"nodes": [ReceiptAdviceLine],
"pageInfo": PageInfo,
"totalCount": 987
}
ReceiptAdviceLineEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - ReceiptAdviceLine!
|
Example
{
"cursor": "xyz789",
"node": ReceiptAdviceLine
}
ReceiptConnection
Description
One page of receipts.
Fields
| Field Name | Description |
|---|---|
edges - [ReceiptEdge!]!
|
The receipts with their cursors, newest first by effectiveAt. |
nodes - [Receipt!]!
|
The same receipts without cursors. |
pageInfo - PageInfo!
|
Where the page sits, and the cursors to the next and previous pages. |
Example
{
"edges": [ReceiptEdge],
"nodes": [Receipt],
"pageInfo": PageInfo
}
ReceiptEdge
ReceiptExternalRefResult
ReceiptLine
Description
One product received.
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
|
lineNo - Int!
|
|
productVariantId - UUID!
|
The product variant. |
productVariant - ProductVariant
|
The product variant the line moves. Needs item.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission), and the rest is served. |
product - Product
|
The variant's parent product. Needs item.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission), and the rest is served. |
quantity - Decimal!
|
The quantity in unit, as entered. |
unit - String!
|
|
baseQuantity - Decimal!
|
The quantity in baseUnit. |
baseUnit - String!
|
|
unitCost - Decimal
|
The cost the goods entered at, per base unit, without VAT: the line's price, or the area average when it carries none (always the area average for STOCKTAKE; see origin.kind). Null while costing is pending, on an exploded set line (its value is its components', which have no one price per set), and on a cancelled receipt's lines. |
value - Decimal
|
The line's value, without VAT; null while costing is pending. A completed receipt can still be pending: read it again later. A line of an OPEN receipt not yet applied to stock has value null and costingPending false, and is not counted in totalValue. |
costingPending - Boolean!
|
True while any of the line's stock movements waits to be costed. A completed receipt can still be pending: read it again later. False for a line of an OPEN receipt not yet applied to stock (its value is null and it is not counted in totalValue). |
lot - Lot
|
The batch or serial number received, when the product tracks one. |
locationCode - String
|
The location the goods were put to, when the warehouse tracks locations. |
receiptAdviceLineId - UUID
|
The receipt advice line this line answers. Needs advice.read: without it null with FORBIDDEN_ROLE at its path. |
receiptAdviceLine - ReceiptAdviceLine
|
The receipt advice line this line answers. Needs advice.read: without it null with FORBIDDEN_ROLE at its path; outside the key's scope null. The rest is served. |
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"lineNo": 123,
"productVariantId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"productVariant": ProductVariant,
"product": Product,
"quantity": Decimal,
"unit": "abc123",
"baseQuantity": Decimal,
"baseUnit": "xyz789",
"unitCost": Decimal,
"value": Decimal,
"costingPending": false,
"lot": Lot,
"locationCode": "abc123",
"receiptAdviceLineId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"receiptAdviceLine": ReceiptAdviceLine
}
ReceiptLineConnection
Description
One page of a receipt's lines.
Fields
| Field Name | Description |
|---|---|
edges - [ReceiptLineEdge!]!
|
The lines with their cursors, by line number. |
nodes - [ReceiptLine!]!
|
The same lines without cursors. |
pageInfo - PageInfo!
|
Where the page sits, and the cursors to the next and previous pages. |
totalCount - Int!
|
How many lines the receipt has, capped at 10001: 10001 reads "10000 or more". |
Example
{
"edges": [ReceiptLineEdge],
"nodes": [ReceiptLine],
"pageInfo": PageInfo,
"totalCount": 123
}
ReceiptLineEdge
Description
One line and its cursor.
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
Where this line sits; pass as after (with first) or before (with last) to this receipt's lines. |
node - ReceiptLine!
|
Example
{
"cursor": "abc123",
"node": ReceiptLine
}
ReceiptOrigin
Description
What a receipt was created from.
Fields
| Field Name | Description |
|---|---|
kind - ReceiptOriginKind!
|
|
id - UUID
|
The advice or stocktake; null for MANUAL. |
Example
{
"kind": "MANUAL",
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
}
RecordException
Description
Something a record was created with that needs a person: what it is, where, and how it was settled.
Fields
| Field Name | Description |
|---|---|
code - String!
|
A fixed code, e.g. PAYMENT_METHOD_UNKNOWN. Read it as a string: more may be added. |
field - String
|
The input it concerns, e.g. items[2].unit. Null when none. |
message - String!
|
What it is, for a person. |
data - JSON
|
Machine detail as a JSON object, e.g. {"expected": "120.50", "actual": "120.49"}. |
lineId - UUID
|
Our id of the order line it is on. Null when it is on the order itself. |
origin - String!
|
What raised it: API, CSV_IMPORT or SYSTEM. |
createdAt - Time!
|
When it was raised. |
resolvedAt - Time
|
When it was settled. Null while it is open. |
resolution - String
|
How it was settled: RESOLVED_BY_USER, RESOLVED_BY_SYSTEM or UNBLOCKED. Null while it is open. |
Example
{
"code": "abc123",
"field": "xyz789",
"message": "abc123",
"data": {},
"lineId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"origin": "abc123",
"createdAt": "10:15:30Z",
"resolvedAt": "10:15:30Z",
"resolution": "abc123"
}
RecordExceptionConnection
Description
One page of an order's exceptions.
Fields
| Field Name | Description |
|---|---|
edges - [RecordExceptionEdge!]!
|
The exceptions with their cursors. |
nodes - [RecordException!]!
|
The same exceptions without cursors. |
pageInfo - PageInfo!
|
Where the page sits, and the cursors to the next and previous pages. |
totalCount - Int!
|
How many exceptions the order has, capped at 10001: 10001 reads "10000 or more". |
Example
{
"edges": [RecordExceptionEdge],
"nodes": [RecordException],
"pageInfo": PageInfo,
"totalCount": 987
}
RecordExceptionEdge
Description
One exception and its cursor.
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
Where this exception sits; pass as after (with first) or before (with last) to this order's exceptions. |
node - RecordException!
|
Example
{
"cursor": "xyz789",
"node": RecordException
}
RemoveDocumentResult
ReportErrorResult
Fields
| Field Name | Description |
|---|---|
errorReport - ErrorReport!
|
|
created - Boolean!
|
Whether this occurrence made the report. |
counted - Boolean!
|
False for a replay of a requestId already answered: nothing was counted. |
reopened - Boolean!
|
Whether this occurrence reopened a RESOLVED report. |
Example
{
"errorReport": ErrorReport,
"created": true,
"counted": true,
"reopened": true
}
SalesOrder
Description
A sales order.
Fields
| Field Name | Description |
|---|---|
invoices - SalesOrderInvoiceConnection
|
The invoices linked to the order, newest issued first (at most 250 a page). Needs invoice.read: without it null with FORBIDDEN_ROLE at its path; the rest of the answer is served. |
id - UUID!
|
Our id. |
number - String
|
The order's number. Null while a draft. |
status - SalesOrderStatus!
|
Where the order is in its life. |
legalEntityId - UUID
|
Our id of the legal entity (the company) that sells it. Null only for an order without one. |
source - String
|
The code of the source that placed it. Null for an order made here. |
externalId - String
|
The source's id of the order. |
externalNumber - String
|
The order number the customer saw in the shop. |
sourceUrl - String
|
A link to the order in the shop's administration. |
orderedAt - Time!
|
When the customer placed it. |
confirmedAt - Time
|
When it was confirmed, by this system's clock. |
fulfilmentStatus - SalesOrderFulfilmentStatus!
|
How much has left the warehouse. |
paymentStatus - SalesOrderPaymentStatus!
|
Whether it is paid. |
currencyCode - String!
|
ISO 4217 code of its currency. |
pricesIncludeVat - Boolean
|
Whether its prices include VAT: as its priced items say, or, with none, as its charges other than ROUNDING say. Null when neither has a price. |
totalNet - Decimal!
|
What is owed without VAT, cancelled quantity excluded. |
totalVat - Decimal!
|
The VAT on it. |
totalGross - Decimal!
|
What is owed including VAT. |
paidAmount - Decimal!
|
What the customer has paid, less refunds. |
discountPercent - Decimal
|
The order-wide discount in percent, taken off every goods line after the line's own discount. lineTotal and the totals already apply it; charges are not discounted. Null when there is none. |
invoiceNumber - String
|
The number of the invoice another system issued for this order (setSalesOrderInvoice). Null while there is none. A change of it is a transition of the order's events (see events); invoiceExternalId is not tracked there, so a change of it alone still publishes sales_order.changed, with no transition. |
invoiceExternalId - String
|
That system's own id of the invoice. Null while there is none. |
customerId - UUID!
|
Our id of the customer. Served to every key that reads the order. |
customer - Partner
|
Who ordered. Needs partner.read: without it null with FORBIDDEN_ROLE; outside the key's partner scope null with FORBIDDEN_SCOPE (extensions.scope PARTNER). An erased customer reads with name null. |
billingAddress - SalesOrderAddress
|
The billing address version the order pinned, kept as it was. Needs partner.read and the customer in the key's partner scope (FORBIDDEN_ROLE / FORBIDDEN_SCOPE otherwise). Null once the customer is erased. |
deliveryAddress - SalesOrderAddress
|
The delivery address version the order pinned, guarded as billingAddress. |
pickupPoint - PickupPoint
|
The carrier's collection point, when delivered to one. |
sourceDeliveryMethod - Method
|
The delivery method in the shop's own words. |
carrier - CarrierProfile
|
The normalized operational carrier. Null when none was selected or when the requested pair was UNKNOWN or UNVERIFIED; those failures are available in exceptions. |
paymentMethod - PaymentMethod!
|
How the customer intends to pay. |
sourcePaymentMethod - Method
|
The payment method in the shop's own words. |
contactEmail - String
|
The e-mail the customer gave for this order. Guarded as billingAddress: needs partner.read and the partner scope; null once the customer is erased. |
contactPhone - String
|
The phone the customer gave for this order, guarded as contactEmail. |
preferredWarehouseId - UUID
|
Our id of the warehouse the order reserves from, when it has one. |
preferredWarehouse - Warehouse
|
That warehouse. Needs warehouse.read: without it null with FORBIDDEN_ROLE; outside the key's warehouse scope null with FORBIDDEN_SCOPE (extensions.scope WAREHOUSE). |
note - String
|
What the customer wrote with the order. Null once the customer is erased. |
items - SalesOrderItemConnection
|
The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's items and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served. |
charges - SalesOrderChargeConnection
|
Everything that is not goods, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's charges and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served. |
blocked - SalesOrderBlock
|
Why no consignment of the order may proceed. Null when nothing stops it. |
exceptions - RecordExceptionConnection
|
What the order was created with that needs a person, open and resolved, oldest first (by createdAt, then id): a connection, paged with first/after or last/before (at most 250). Empty when nothing did. Its cursors belong to this order's exceptions and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served. |
externalRefs - ExternalRefConnection
|
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's references and are refused anywhere else. source and externalId above are one of them: the one the request named, else the oldest. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served. |
documents - DocumentConnection
|
The files attached to the order (attachDocument), oldest first: a connection, paged with first/after or last/before (at most 250); kinds narrows it to those kinds. A removed document is left out. Its cursors belong to this order's documents and are refused anywhere else. Needs integration.read and order.read. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served. |
Arguments |
|
changedAt - Time
|
When the order's last event was published (see events). Null only for an order never published. |
shipments - ShipmentConnection
|
The order's carrier shipments, oldest first: live and cancelled, never one that did not reach the carrier. Requires shipment.read: null with FORBIDDEN_ROLE without it. Shipments outside the key's legal-entity or warehouse scope are left out. Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward. |
Example
{
"invoices": SalesOrderInvoiceConnection,
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"number": "xyz789",
"status": "DRAFT",
"legalEntityId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"source": "abc123",
"externalId": "xyz789",
"externalNumber": "xyz789",
"sourceUrl": "abc123",
"orderedAt": "10:15:30Z",
"confirmedAt": "10:15:30Z",
"fulfilmentStatus": "UNFULFILLED",
"paymentStatus": "UNPAID",
"currencyCode": "abc123",
"pricesIncludeVat": true,
"totalNet": Decimal,
"totalVat": Decimal,
"totalGross": Decimal,
"paidAmount": Decimal,
"discountPercent": Decimal,
"invoiceNumber": "xyz789",
"invoiceExternalId": "xyz789",
"customerId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"customer": Partner,
"billingAddress": SalesOrderAddress,
"deliveryAddress": SalesOrderAddress,
"pickupPoint": PickupPoint,
"sourceDeliveryMethod": Method,
"carrier": CarrierProfile,
"paymentMethod": "CARD",
"sourcePaymentMethod": Method,
"contactEmail": "abc123",
"contactPhone": "xyz789",
"preferredWarehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"preferredWarehouse": Warehouse,
"note": "abc123",
"items": SalesOrderItemConnection,
"charges": SalesOrderChargeConnection,
"blocked": SalesOrderBlock,
"exceptions": RecordExceptionConnection,
"externalRefs": ExternalRefConnection,
"documents": DocumentConnection,
"changedAt": "10:15:30Z",
"shipments": ShipmentConnection
}
SalesOrderAddress
Description
An address an order was sent to.
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
Our id of this address version. |
recipient - String
|
Who receives it. |
street - String!
|
Street and number. |
street2 - String
|
A second address line. |
city - String!
|
City. |
postalCode - String!
|
Postal code. |
region - String
|
Region or state. |
countryCode - String!
|
ISO 3166-1 alpha-2 country code. |
phone - String
|
The phone the carrier calls. |
email - String
|
The e-mail delivery notices go to. |
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"recipient": "xyz789",
"street": "xyz789",
"street2": "xyz789",
"city": "abc123",
"postalCode": "abc123",
"region": "abc123",
"countryCode": "abc123",
"phone": "xyz789",
"email": "abc123"
}
SalesOrderBlock
Description
What stops an order.
Fields
| Field Name | Description |
|---|---|
reason - String!
|
A fixed code: NEEDS_REVIEW (the order has open exceptions), AWAITING_PAYMENT, SUSPECTED_FRAUD, INCORRECT_ADDRESS, CUSTOMER_REQUEST or OTHER. Read it as a string: more may be added. |
note - String
|
What the person or the system wrote about it. A person's note reads null unless the key holds order.write; NEEDS_REVIEW's, which the system wrote, reads for every key. |
at - Time!
|
When the order was stopped. |
Example
{
"reason": "xyz789",
"note": "abc123",
"at": "10:15:30Z"
}
SalesOrderChangeResult
Description
What markSalesOrderPaid, cancelSalesOrder or setSalesOrderInvoice did.
Fields
| Field Name | Description |
|---|---|
salesOrder - SalesOrder!
|
The order, as it now stands. |
changed - Boolean!
|
False when the order already was as asked: the call was a repeat and changed nothing. |
Example
{"salesOrder": SalesOrder, "changed": true}
SalesOrderCharge
Description
Something on an order that is not goods.
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
Our id. |
kind - ChargeKind!
|
What it is for. |
code - String
|
The shop's code of the charge. |
name - String!
|
Its name. |
amount - Decimal!
|
The whole amount, as sent. Positive for every kind but ROUNDING, whose residue may be negative; a DISCOUNT is positive and subtracted. |
vatPercent - Decimal!
|
The VAT rate in percent. |
pricesIncludeVat - Boolean!
|
Whether amount includes VAT. A charge may differ from the order's pricesIncludeVat. |
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"kind": "DELIVERY",
"code": "xyz789",
"name": "xyz789",
"amount": Decimal,
"vatPercent": Decimal,
"pricesIncludeVat": false
}
SalesOrderChargeConnection
Description
One page of an order's charges.
Fields
| Field Name | Description |
|---|---|
edges - [SalesOrderChargeEdge!]!
|
The charges with their cursors. |
nodes - [SalesOrderCharge!]!
|
The same charges without cursors. |
pageInfo - PageInfo!
|
Where the page sits, and the cursors to the next and previous pages. |
totalCount - Int!
|
How many charges the order has, capped at 10001: 10001 reads "10000 or more". |
Example
{
"edges": [SalesOrderChargeEdge],
"nodes": [SalesOrderCharge],
"pageInfo": PageInfo,
"totalCount": 123
}
SalesOrderChargeEdge
Description
One charge and its cursor.
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
Where this charge sits; pass as after (with first) or before (with last) to this order's charges. |
node - SalesOrderCharge!
|
Example
{
"cursor": "xyz789",
"node": SalesOrderCharge
}
SalesOrderConnection
Description
One page of salesOrders.
Fields
| Field Name | Description |
|---|---|
edges - [SalesOrderEdge!]!
|
The orders with their cursors, newest first by orderedAt. |
nodes - [SalesOrder!]!
|
The same orders without cursors. |
pageInfo - PageInfo!
|
Where the page sits, and the cursors to the next and previous pages. |
Example
{
"edges": [SalesOrderEdge],
"nodes": [SalesOrder],
"pageInfo": PageInfo
}
SalesOrderEdge
Description
One order and its cursor.
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
Where this order sits; pass as after (with first) or before (with last). |
node - SalesOrder!
|
Example
{
"cursor": "abc123",
"node": SalesOrder
}
SalesOrderInvoiceConnection
Description
The invoices linked to one order.
Fields
| Field Name | Description |
|---|---|
edges - [InvoiceEdge!]!
|
|
nodes - [Invoice!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected. |
Example
{
"edges": [InvoiceEdge],
"nodes": [Invoice],
"pageInfo": PageInfo,
"totalCount": 987
}
SalesOrderItem
Description
One goods line of an order.
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
Our id. |
externalId - String
|
The source's id of the line. |
productVariantId - UUID
|
Our id of the product variant. Null while the line is not linked to one. |
productVariant - ProductVariant
|
The product variant the line is linked to; null while it is not linked. Needs item.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission), and the rest is served. |
product - Product
|
The variant's parent product; null while the line is not linked. Needs item.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission), and the rest is served. |
sku - String
|
The SKU as the shop sent it -- or, for a line whose EAN several products carry and no sku was sent, that EAN. |
name - String
|
The name as the customer saw it. |
variantName - String
|
The variant's name as the customer saw it. |
quantity - Decimal!
|
How many, in unit. |
cancelledQuantity - Decimal!
|
How many were cancelled, in unit. quantity less this is what the order still asks for. |
unit - String
|
The unit code. Null: the product's base unit. |
unitFactor - Decimal!
|
The order line's snapshotted number of base units per unit. Use this, not today's catalogue factor, to compare line quantities with stock cards. |
unitPrice - Decimal
|
The final price of one unit, after the line's discount. Null while unpriced. |
originalUnitPrice - Decimal
|
The price of one unit before the discount. Null when there is none. |
vatPercent - Decimal
|
The VAT rate in percent. |
pricesIncludeVat - Boolean
|
Whether unitPrice includes VAT. A line may differ from the order's pricesIncludeVat. Null while unpriced. |
lineTotal - Decimal
|
The line's total on its live quantity, net or gross as the order's pricesIncludeVat says. Null while unpriced. |
attributes - ItemAttributeConnection
|
What the customer chose about the line, in the order it was sent: a connection, paged with first/after or last/before (at most 250). Empty once the customer is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served. |
reserved - Decimal
|
How much stock is reserved for it now, in unit. Needs reservation.read: without it null with FORBIDDEN_ROLE. |
picked - Decimal
|
How much has been picked for live consignments but not shipped, in unit. Picking consumes the reservation. Needs reservation.read: without it null with FORBIDDEN_ROLE. |
outstanding - Decimal!
|
How much is still to ship, in unit: ordered less shipped and cancelled. |
warehouses - SalesOrderItemWarehouseConnection
|
The line warehouse by warehouse, by warehouse id: what each warehouse's consignments hold (reserved, picked) and have shipped, in unit. Sums to reserved and picked. Warehouses outside the key's scope are left out. Paged 1..250. Needs reservation.read: without it null with FORBIDDEN_ROLE at its path. |
linked - Boolean!
|
Whether the line names one of our products and can be reserved and shipped. |
externalRefs - ExternalRefConnection
|
The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this item's references and are refused anywhere else. externalId above is the oldest of them under the order's source. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served. |
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"externalId": "xyz789",
"productVariantId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"productVariant": ProductVariant,
"product": Product,
"sku": "xyz789",
"name": "xyz789",
"variantName": "abc123",
"quantity": Decimal,
"cancelledQuantity": Decimal,
"unit": "abc123",
"unitFactor": Decimal,
"unitPrice": Decimal,
"originalUnitPrice": Decimal,
"vatPercent": Decimal,
"pricesIncludeVat": false,
"lineTotal": Decimal,
"attributes": ItemAttributeConnection,
"reserved": Decimal,
"picked": Decimal,
"outstanding": Decimal,
"warehouses": SalesOrderItemWarehouseConnection,
"linked": true,
"externalRefs": ExternalRefConnection
}
SalesOrderItemConnection
Description
One page of an order's items.
Fields
| Field Name | Description |
|---|---|
edges - [SalesOrderItemEdge!]!
|
The items with their cursors. |
nodes - [SalesOrderItem!]!
|
The same items without cursors. |
pageInfo - PageInfo!
|
Where the page sits, and the cursors to the next and previous pages. |
totalCount - Int!
|
How many items the order has, capped at 10001: 10001 reads "10000 or more". |
Example
{
"edges": [SalesOrderItemEdge],
"nodes": [SalesOrderItem],
"pageInfo": PageInfo,
"totalCount": 123
}
SalesOrderItemEdge
Description
One item and its cursor.
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
Where this item sits; pass as after (with first) or before (with last) to this order's items. |
node - SalesOrderItem!
|
Example
{
"cursor": "xyz789",
"node": SalesOrderItem
}
SalesOrderItemWarehouse
Description
What one order line has in one warehouse, in the line's unit.
Fields
| Field Name | Description |
|---|---|
warehouseId - UUID!
|
|
reserved - Decimal!
|
Reserved for it on this warehouse's live consignments. |
picked - Decimal!
|
Picked for it on this warehouse's live consignments, not yet shipped. |
held - Decimal!
|
reserved + picked: what this warehouse holds for the line. |
shipped - Decimal!
|
Shipped from this warehouse. |
Example
{
"warehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"reserved": Decimal,
"picked": Decimal,
"held": Decimal,
"shipped": Decimal
}
SalesOrderItemWarehouseConnection
Fields
| Field Name | Description |
|---|---|
edges - [SalesOrderItemWarehouseEdge!]!
|
|
nodes - [SalesOrderItemWarehouse!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
How many warehouses the line has figures in. |
Example
{
"edges": [SalesOrderItemWarehouseEdge],
"nodes": [SalesOrderItemWarehouse],
"pageInfo": PageInfo,
"totalCount": 123
}
SalesOrderItemWarehouseEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - SalesOrderItemWarehouse!
|
Example
{
"cursor": "abc123",
"node": SalesOrderItemWarehouse
}
SelectedOption
Shipment
Description
A carrier shipment of a consignment, as the carrier accepted it.
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
|
number - String!
|
Its own number, e.g. ZAS-2026-00001. |
status - ShipmentStatus!
|
|
numbers - [String!]
|
The carrier's shipping numbers (tracking numbers), in the carrier's order; empty when it answered none usable. They never arrive later: a CREATED shipment has every number it will have. A number finds the recipient's address at the carrier, so it requires partner.read and the shipment's customer in the key's partner scope: null with FORBIDDEN_ROLE or FORBIDDEN_SCOPE at this path without them, the rest of the shipment served. Null, without an error, once the customer is erased. |
trackingStatus - String!
|
The carrier's tracking state, as the events feed carries it: PENDING, LABEL_CREATED, IN_TRANSIT, OUT_FOR_DELIVERY, READY_FOR_PICKUP, DELIVERED, RETURNED, FAILED or UNKNOWN. More codes may be added. |
carrier - CarrierProfile!
|
The carrier route it was sent with. Its names are the catalogue's; a route the catalogue no longer holds keeps its codes as names. |
salesOrderId - UUID
|
The sales order it ships. A bare id, which may name an order the key cannot open. |
fulfilmentId - UUID
|
The consignment it ships. A bare id. |
version - Int
|
Its last event's version, as in the events feed. Null when this read and the last event disagree (a newer event is being published) or it has published none. |
createdAt - Time!
|
|
changedAt - Time
|
When its last event was published; null exactly when version is. |
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"number": "xyz789",
"status": "CREATED",
"numbers": ["abc123"],
"trackingStatus": "abc123",
"carrier": CarrierProfile,
"salesOrderId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"fulfilmentId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"version": 123,
"createdAt": "10:15:30Z",
"changedAt": "10:15:30Z"
}
ShipmentConnection
Description
One page of an order's shipments.
Fields
| Field Name | Description |
|---|---|
edges - [ShipmentEdge!]!
|
The shipments with their cursors. |
nodes - [Shipment!]!
|
The same shipments without cursors. |
pageInfo - PageInfo!
|
Where the page sits, and the cursors to the next and previous pages. |
totalCount - Int!
|
How many shipments the order has, capped at 10001: 10001 reads "10000 or more". |
Example
{
"edges": [ShipmentEdge],
"nodes": [Shipment],
"pageInfo": PageInfo,
"totalCount": 123
}
ShipmentEdge
StockCard
Description
One variant in one warehouse, with its figures. Needs stockCard.read.
Fields
| Field Name | Description |
|---|---|
warehouseId - UUID!
|
The warehouse's id. |
variantId - UUID!
|
The product variant's id. |
warehouse - Warehouse
|
The warehouse. Needs warehouse.read. |
productVariant - ProductVariant
|
The product variant. Needs item.read. |
figures - StockFigures!
|
Its figures now. |
version - Int!
|
1, 2, 3 … per card: the version of its latest change record; 0 before its first. Records of this card at or below it are already in figures: ignore them. For a second or two, the record just above it can carry figures older than the export's; the record after it heals that, so compare the figures, not only the versions. |
Example
{
"warehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"variantId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"warehouse": Warehouse,
"productVariant": ProductVariant,
"figures": StockFigures,
"version": 987
}
StockCardChange
Description
One real change of a stock card's figures. Needs stockCard.read. A change of a figure no record shows (e.g. a reservation moving between orders of one source) is not one.
Fields
| Field Name | Description |
|---|---|
id - ID!
|
Opaque and unique, increasing in the order records were written. Resume with a cursor, never with an id. |
warehouseId - UUID!
|
The warehouse's id. |
variantId - UUID!
|
The product variant's id. |
warehouse - Warehouse
|
The warehouse. Needs warehouse.read. |
productVariant - ProductVariant
|
The product variant. Needs item.read. |
version - Int!
|
1, 2, 3 … per card, without gaps. Compare with StockCard.version. |
occurredAt - Time!
|
|
origin - StockCardChangeOrigin!
|
|
quantityChanged - Boolean!
|
|
reservedChanged - Boolean!
|
|
reservedBySourceChanged - Boolean!
|
|
availableChanged - Boolean!
|
|
advisedChanged - Boolean!
|
|
onOrderChanged - Boolean!
|
|
current - StockFigures!
|
The figures after this change. |
previous - StockFigures
|
The figures before this change; null when no earlier figures were known. |
Example
{
"id": 4,
"warehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"variantId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"warehouse": Warehouse,
"productVariant": ProductVariant,
"version": 123,
"occurredAt": "10:15:30Z",
"origin": "LIVE",
"quantityChanged": true,
"reservedChanged": false,
"reservedBySourceChanged": false,
"availableChanged": true,
"advisedChanged": true,
"onOrderChanged": true,
"current": StockFigures,
"previous": StockFigures
}
StockCardChangeConnection
Description
One page of stock card changes.
Fields
| Field Name | Description |
|---|---|
edges - [StockCardChangeEdge!]!
|
The records with their cursors, oldest first. |
nodes - [StockCardChange!]!
|
The same records without cursors. |
pageInfo - EventPageInfo!
|
Example
{
"edges": [StockCardChangeEdge],
"nodes": [StockCardChange],
"pageInfo": EventPageInfo
}
StockCardChangeEdge
Description
One stock card change and its cursor.
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
Resume after this record: pass as after. |
node - StockCardChange!
|
Example
{
"cursor": "abc123",
"node": StockCardChange
}
StockCardConnection
Description
One page of stock cards.
Fields
| Field Name | Description |
|---|---|
edges - [StockCardEdge!]!
|
The cards with their cursors, by variant then warehouse. |
nodes - [StockCard!]!
|
The same cards without cursors. |
pageInfo - PageInfo!
|
Where the page sits, and the cursors to the next and previous pages. |
Example
{
"edges": [StockCardEdge],
"nodes": [StockCard],
"pageInfo": PageInfo
}
StockCardEdge
Description
One stock card and its cursor.
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
Where this card sits; pass as after (with first) or before (with last). |
node - StockCard!
|
Example
{
"cursor": "abc123",
"node": StockCard
}
StockFigures
Description
A stock card's figures, one number each.
Fields
| Field Name | Description |
|---|---|
quantity - Decimal!
|
Physically in the warehouse: what its stock movements sum to. |
reserved - Decimal!
|
Promised to orders, every batch. |
reservedBySource - [StockReservationBySource!]!
|
reserved by the source of the owning order (null: an order without one); sums to reserved; by source, null first. |
available - Decimal!
|
What may still be promised — NOT quantity − reserved: blocked, quarantined and expired-under-policy batches and non-pickable bins are excluded. |
advised - Decimal!
|
On an open advice, not yet received. |
onOrder - Decimal!
|
On a sent purchase order no open advice announces yet; never overlaps advised. |
Example
{
"quantity": Decimal,
"reserved": Decimal,
"reservedBySource": [StockReservationBySource],
"available": Decimal,
"advised": Decimal,
"onOrder": Decimal
}
StockQuant
Description
What one bin holds of one variant (and one lot, when the item tracks lots), in base units.
Fields
| Field Name | Description |
|---|---|
variantId - UUID!
|
|
warehouseId - UUID!
|
|
locationId - UUID!
|
|
locationCode - String!
|
|
pickable - Boolean!
|
|
lotId - UUID
|
|
lot - Lot
|
The lot; null without one. Needs lot.read. |
lotStatus - LotStatus
|
The lot's status; null without a lot. Needs lot.read. |
quantity - Decimal!
|
|
reserved - Decimal!
|
Reserved for orders on this bin and lot. |
free - Decimal!
|
max(quantity − reserved, 0): what an issue or a transfer may take from here now. Not the card's available. A bin nobody picks from holds no reservations, so free is its whole quantity. |
plannedOut - Decimal!
|
What open outbound instructions still plan to take from this bin and lot, in base units: the remaining of every OPEN transfer advice line naming it as source, whoever wrote the advice (issue advices will add to it when they exist). A line without a source bin, or without the lot of a lot-tracked quant, is not counted here. A plan holds nothing. |
unplanned - Decimal!
|
What may still be planned out of this bin and lot: max(free − plannedOut, 0). Plan new transfers from this, not from free, so two advices do not ask for the same goods. |
Example
{
"variantId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"warehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"locationId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"locationCode": "xyz789",
"pickable": true,
"lotId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"lot": Lot,
"lotStatus": "RELEASED",
"quantity": Decimal,
"reserved": Decimal,
"free": Decimal,
"plannedOut": Decimal,
"unplanned": Decimal
}
StockQuantConnection
Fields
| Field Name | Description |
|---|---|
edges - [StockQuantEdge!]!
|
|
nodes - [StockQuant!]!
|
|
pageInfo - PageInfo!
|
Example
{
"edges": [StockQuantEdge],
"nodes": [StockQuant],
"pageInfo": PageInfo
}
StockQuantEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - StockQuant!
|
Example
{
"cursor": "abc123",
"node": StockQuant
}
StockReservationBySource
Description
How much of a card's reserved quantity belongs to orders of one source.
Example
{
"source": "abc123",
"quantity": Decimal
}
Transfer
Description
Goods moved from one warehouse (or bin) to another.
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
|
number - String!
|
The transfer's number. Every returned transfer has one. |
status - TransferStatus!
|
|
version - Int
|
The transfer's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again). |
effectiveAt - Time!
|
When the goods count as moved. |
completedAt - Time
|
|
cancelledAt - Time
|
|
revision - Int!
|
How many times the completed transfer has been revised; 0 as completed. |
sourceWarehouseId - UUID!
|
|
sourceWarehouse - Warehouse
|
The warehouse the goods left. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A warehouse outside the key's warehouse scope -- the far end of a transfer seen from its other end -- is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served. |
targetWarehouseId - UUID!
|
|
targetWarehouse - Warehouse
|
The warehouse the goods went to. Guarded as sourceWarehouse is. |
legalEntityId - UUID
|
The company the transfer belongs to; null when it belongs to none. |
origin - TransferOrigin!
|
|
externalReference - String
|
The external reference the transfer was filed with. |
currencyCode - String!
|
|
totalValue - Decimal
|
What the goods carried were worth, without VAT, positive: the sum of the lines' values; null while any line's costing is pending. Inside one valuation area a transfer moves no value; between two areas it moves this much out of the source's and into the target's. A completed transfer can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document. |
costingPending - Boolean!
|
True while any line's costing is pending. A completed transfer can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document. |
lines - TransferLineConnection
|
The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this transfer's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served. |
transferAdvices - LinkedTransferAdviceConnection
|
The transfer advices this transfer executes (linked by header or line; always its own two warehouses), newest issued first, paged 1..250. Needs transferAdvice.read: without it null with FORBIDDEN_ROLE at its path. |
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"number": "abc123",
"status": "OPEN",
"version": 987,
"effectiveAt": "10:15:30Z",
"completedAt": "10:15:30Z",
"cancelledAt": "10:15:30Z",
"revision": 987,
"sourceWarehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"sourceWarehouse": Warehouse,
"targetWarehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"targetWarehouse": Warehouse,
"legalEntityId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"origin": TransferOrigin,
"externalReference": "abc123",
"currencyCode": "abc123",
"totalValue": Decimal,
"costingPending": false,
"lines": TransferLineConnection,
"transferAdvices": LinkedTransferAdviceConnection
}
TransferAdvice
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
|
number - String
|
|
status - TransferAdviceStatus!
|
|
state - TransferAdviceState!
|
|
sourceWarehouseId - UUID!
|
|
targetWarehouseId - UUID!
|
|
legalEntityId - UUID!
|
|
issuedAt - Time!
|
|
plannedAt - Time
|
|
reference - String
|
|
lines - TransferAdviceLineConnection
|
The instructed lines, ordered by line number. Page with first/after or last/before (1..250). |
parameters - ParameterConnection
|
Text parameters in name order, paged with first/after or last/before (1..250). Needs transferAdvice.read. |
progress - InstructionProgress!
|
How far the work on the advice is. Needs transferAdvice.read. Batched per page. |
transfers - AdviceTransferConnection
|
The transfers executing the advice (linked by header or line), newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Filter by status with the root transfers(filter: {transferAdviceIds, statuses}). Needs transfer.read too: without it null with FORBIDDEN_ROLE at its path. |
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"number": "abc123",
"status": "DRAFT",
"state": "DRAFT",
"sourceWarehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"targetWarehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"legalEntityId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"issuedAt": "10:15:30Z",
"plannedAt": "10:15:30Z",
"reference": "xyz789",
"lines": TransferAdviceLineConnection,
"parameters": ParameterConnection,
"progress": InstructionProgress,
"transfers": AdviceTransferConnection
}
TransferAdviceConnection
Fields
| Field Name | Description |
|---|---|
edges - [TransferAdviceEdge!]!
|
|
nodes - [TransferAdvice!]!
|
|
pageInfo - PageInfo!
|
Example
{
"edges": [TransferAdviceEdge],
"nodes": [TransferAdvice],
"pageInfo": PageInfo
}
TransferAdviceEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - TransferAdvice!
|
Example
{
"cursor": "xyz789",
"node": TransferAdvice
}
TransferAdviceLine
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
|
lineNo - Int!
|
|
variantId - UUID!
|
|
quantity - Decimal!
|
The quantity as entered on the advice; public creation always uses the base unit. |
unit - String!
|
|
unitFactor - Decimal!
|
|
baseQuantity - Decimal!
|
|
sourceLocationId - UUID
|
|
targetLocationId - UUID
|
|
lotId - UUID
|
|
moved - Decimal!
|
Quantity moved by linked transfers, in base units. |
remaining - Decimal!
|
Quantity still instructed, in base units; advice creation reserves none of it. |
inProgress - Decimal!
|
Quantity on draft transfers (scanned on a handheld or typed in the web), in base units: in progress, not yet moved. |
transferLines - AdviceTransferLineConnection
|
The transfer lines that answered this line, on transfers that are not drafts, oldest first, paged 1..250. Needs transfer.read too: without it null with FORBIDDEN_ROLE at its path. |
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"lineNo": 123,
"variantId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"quantity": Decimal,
"unit": "xyz789",
"unitFactor": Decimal,
"baseQuantity": Decimal,
"sourceLocationId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"targetLocationId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"lotId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"moved": Decimal,
"remaining": Decimal,
"inProgress": Decimal,
"transferLines": AdviceTransferLineConnection
}
TransferAdviceLineConnection
Fields
| Field Name | Description |
|---|---|
edges - [TransferAdviceLineEdge!]!
|
|
nodes - [TransferAdviceLine!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected. |
Example
{
"edges": [TransferAdviceLineEdge],
"nodes": [TransferAdviceLine],
"pageInfo": PageInfo,
"totalCount": 987
}
TransferAdviceLineEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - TransferAdviceLine!
|
Example
{
"cursor": "xyz789",
"node": TransferAdviceLine
}
TransferConnection
Description
One page of transfers.
Fields
| Field Name | Description |
|---|---|
edges - [TransferEdge!]!
|
The transfers with their cursors, newest first by effectiveAt. |
nodes - [Transfer!]!
|
The same transfers without cursors. |
pageInfo - PageInfo!
|
Where the page sits, and the cursors to the next and previous pages. |
Example
{
"edges": [TransferEdge],
"nodes": [Transfer],
"pageInfo": PageInfo
}
TransferEdge
TransferLine
Description
One product moved.
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
|
lineNo - Int!
|
|
productVariantId - UUID!
|
The product variant. |
productVariant - ProductVariant
|
The product variant the line moves. Needs item.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission), and the rest is served. |
product - Product
|
The variant's parent product. Needs item.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission), and the rest is served. |
quantity - Decimal!
|
The quantity in unit, as entered. |
unit - String!
|
|
baseQuantity - Decimal!
|
The quantity in baseUnit. |
baseUnit - String!
|
|
unitCost - Decimal
|
The cost the goods moved at, per base unit, without VAT, positive. Null while costing is pending, on an exploded set line, and on a cancelled transfer's lines. |
value - Decimal
|
What the line's goods were worth, without VAT, positive; null while costing is pending. Inside one valuation area this moves no value; between two it moves this much from the source's to the target's. A line of an OPEN transfer not yet applied has value null and costingPending false, and is not counted in totalValue. |
costingPending - Boolean!
|
True while any of the line's stock movements waits to be costed. False for a line of an OPEN transfer not yet applied. |
lot - Lot
|
The batch or serial number moved, when the product tracks one. |
sourceLocationCode - String
|
The location the goods were taken from; null when the source warehouse tracks no locations or lies outside the key's warehouse scope; with warehouse.read, sourceWarehouse answers FORBIDDEN_SCOPE in the second case. |
targetLocationCode - String
|
The location the goods were put to; null when the target warehouse tracks no locations or lies outside the key's warehouse scope; with warehouse.read, targetWarehouse answers FORBIDDEN_SCOPE in the second case. |
transferAdviceLineId - UUID
|
The transfer advice line this line answers; null on a direct line. Needs transferAdvice.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). |
transferAdviceLine - TransferAdviceLine
|
The transfer advice line this line answers, whole; null on a direct line. Needs transferAdvice.read, as transferAdviceLineId. |
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"lineNo": 123,
"productVariantId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"productVariant": ProductVariant,
"product": Product,
"quantity": Decimal,
"unit": "xyz789",
"baseQuantity": Decimal,
"baseUnit": "xyz789",
"unitCost": Decimal,
"value": Decimal,
"costingPending": true,
"lot": Lot,
"sourceLocationCode": "xyz789",
"targetLocationCode": "abc123",
"transferAdviceLineId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"transferAdviceLine": TransferAdviceLine
}
TransferLineConnection
Description
One page of a transfer's lines.
Fields
| Field Name | Description |
|---|---|
edges - [TransferLineEdge!]!
|
The lines with their cursors, by line number. |
nodes - [TransferLine!]!
|
The same lines without cursors. |
pageInfo - PageInfo!
|
Where the page sits, and the cursors to the next and previous pages. |
totalCount - Int!
|
How many lines the transfer has, capped at 10001: 10001 reads "10000 or more". |
Example
{
"edges": [TransferLineEdge],
"nodes": [TransferLine],
"pageInfo": PageInfo,
"totalCount": 987
}
TransferLineEdge
Description
One line and its cursor.
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
Where this line sits; pass as after (with first) or before (with last) to this transfer's lines. |
node - TransferLine!
|
Example
{
"cursor": "xyz789",
"node": TransferLine
}
TransferOrigin
Description
What a transfer was created from.
Fields
| Field Name | Description |
|---|---|
kind - TransferOriginKind!
|
|
id - UUID
|
The stocktake; null for MANUAL. |
Example
{
"kind": "STOCKTAKE",
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
}
UpdatePublicTransferAdviceResult
Fields
| Field Name | Description |
|---|---|
applied - Boolean!
|
True: this call changed the advice. False: a replay of an earlier call with the same requestId and input; nothing changed. |
advice - TransferAdvice!
|
Example
{"applied": false, "advice": TransferAdvice}
UpdateReceiptAdviceResult
Fields
| Field Name | Description |
|---|---|
applied - Boolean!
|
True: this call changed the advice. False: a replay of an earlier call with the same requestId and input; nothing changed. |
advice - ReceiptAdvice!
|
Example
{"applied": false, "advice": ReceiptAdvice}
Warehouse
Description
A warehouse. Needs warehouse.read.
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"code": "xyz789",
"name": "abc123",
"archivedAt": "10:15:30Z"
}
WarehouseConnection
Description
One page of warehouses.
Fields
| Field Name | Description |
|---|---|
edges - [WarehouseEdge!]!
|
The warehouses with their cursors, by code. |
nodes - [Warehouse!]!
|
The same warehouses without cursors. |
pageInfo - PageInfo!
|
Where the page sits, and the cursors to the next and previous pages. |
Example
{
"edges": [WarehouseEdge],
"nodes": [Warehouse],
"pageInfo": PageInfo
}
WarehouseEdge
Description
One warehouse and its cursor.
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
Where this warehouse sits; pass as after (with first) or before (with last). |
node - Warehouse!
|
Example
{
"cursor": "abc123",
"node": Warehouse
}
Inputs
AddDocumentVersionInput
Example
{
"requestId": "abc123",
"documentId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"fileId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"note": "abc123"
}
AddressInput
Description
A postal address.
Fields
| Input Field | Description |
|---|---|
recipient - String
|
Who receives it, when not the customer. |
street - String!
|
Street and number. |
street2 - String
|
A second address line. |
city - String!
|
City. |
postalCode - String!
|
Postal code. |
region - String
|
Region or state. |
countryCode - String!
|
ISO 3166-1 alpha-2 country code. |
phone - String
|
The phone the carrier calls. Kept only on an address this order adds. |
email - String
|
The e-mail delivery notices go to. Kept only on an address this order adds. |
Example
{
"recipient": "abc123",
"street": "abc123",
"street2": "abc123",
"city": "xyz789",
"postalCode": "abc123",
"region": "abc123",
"countryCode": "xyz789",
"phone": "abc123",
"email": "abc123"
}
AssetFilter
Fields
| Input Field | Description |
|---|---|
scope - AssetScope
|
|
legalEntityId - UUID
|
|
kind - AssetKind
|
Example
{
"scope": "TENANT",
"legalEntityId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"kind": "LOGO"
}
AttachDocumentInput
Fields
| Input Field | Description |
|---|---|
requestId - String!
|
An opaque, tenant-unique idempotency key, 1 to 128 bytes. |
fileId - UUID!
|
The upload's fileId (POST /api/v1/files). |
salesOrder - SalesOrderRefInput!
|
The order the document is kept with. |
kind - DocumentKind!
|
|
externalId - String
|
The issuing system's own id of the document, at most 200 characters. |
externalNumber - String
|
The document's number in the issuing system, at most 100 characters. |
title - String
|
At most 255 characters. |
note - String
|
About this version, at most 2000 characters. |
Example
{
"requestId": "xyz789",
"fileId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"salesOrder": SalesOrderRefInput,
"kind": "INVOICE",
"externalId": "xyz789",
"externalNumber": "abc123",
"title": "abc123",
"note": "abc123"
}
BuiltInPrintTemplateRef
Description
One of ours, by kind and language.
Fields
| Input Field | Description |
|---|---|
kind - PrintTemplateKind!
|
|
language - String!
|
Example
{
"kind": "SALES_ORDER",
"language": "xyz789"
}
CarrierProfileInput
CopyPrintTemplateInput
Description
Exactly one of id and builtIn.
Fields
| Input Field | Description |
|---|---|
id - UUID
|
|
builtIn - BuiltInPrintTemplateRef
|
|
name - String!
|
The copy's name; when it is taken, " 2" … " 20" is appended. |
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"builtIn": BuiltInPrintTemplateRef,
"name": "abc123"
}
CreateAssetInput
Fields
| Input Field | Description |
|---|---|
scope - AssetScope!
|
|
legalEntityId - UUID
|
Required for COMPANY, absent for TENANT. |
code - String!
|
1-40 lower-case letters, digits and hyphens, starting with a letter. |
name - String!
|
|
kind - AssetKind!
|
|
fileId - UUID!
|
An upload not yet used (POST /api/v1/assets/files). |
isPublic - Boolean
|
Example
{
"scope": "TENANT",
"legalEntityId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"code": "abc123",
"name": "abc123",
"kind": "LOGO",
"fileId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"isPublic": true
}
CreatePrintTemplateInput
Fields
| Input Field | Description |
|---|---|
kind - PrintTemplateKind!
|
|
language - String!
|
sk, cs or en.
|
name - String!
|
1-120 characters, unique per kind and language. |
body - String!
|
At most 512 KiB. |
isDefault - Boolean
|
Makes it the one its kind and language print with; the previous default stops being one. Default = false |
Example
{
"kind": "SALES_ORDER",
"language": "abc123",
"name": "abc123",
"body": "abc123",
"isDefault": false
}
CreatePublicTransferAdviceInput
Fields
| Input Field | Description |
|---|---|
requestId - String!
|
An opaque, tenant-unique idempotency key, 1 to 128 bytes. |
sourceWarehouseId - UUID!
|
|
targetWarehouseId - UUID!
|
|
plannedAt - Time
|
|
reference - String
|
|
lines - [PublicTransferAdviceLineInput!]!
|
One to 100 positive-quantity lines. Quantities are in each variant's base unit. |
parameters - [ParameterInput!]
|
Up to 32 short text parameters, such as workflow_id and run_id. |
Example
{
"requestId": "abc123",
"sourceWarehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"targetWarehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"plannedAt": "10:15:30Z",
"reference": "abc123",
"lines": [PublicTransferAdviceLineInput],
"parameters": [ParameterInput]
}
CreateReceiptAdviceInput
Fields
| Input Field | Description |
|---|---|
requestId - String!
|
An opaque, tenant-unique idempotency key, 1 to 128 bytes. |
supplierId - UUID!
|
|
warehouseId - UUID!
|
The one warehouse the goods are coming into. |
kind - ReceiptAdviceKind!
|
|
supplierReference - String
|
The supplier's delivery note or invoice number, to quote back. |
advisedAt - Time
|
The advice's own date, which its number's year is drawn from. Omitted: now. |
expectedAt - Time
|
When the goods are due. |
currencyCode - String
|
ISO 4217. Omitted: the warehouse company's currency. |
pricesIncludeVat - Boolean
|
Whether the line prices include VAT. Omitted: false. |
note - String
|
A note for the receiving desk. |
lines - [ReceiptAdviceLineInput!]!
|
One to 100 lines. |
parameters - [ParameterInput!]
|
Up to 32 short text parameters, such as workflow_id and run_id. |
Example
{
"requestId": "abc123",
"supplierId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"warehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"kind": "DELIVERY_NOTE",
"supplierReference": "abc123",
"advisedAt": "10:15:30Z",
"expectedAt": "10:15:30Z",
"currencyCode": "xyz789",
"pricesIncludeVat": true,
"note": "xyz789",
"lines": [ReceiptAdviceLineInput],
"parameters": [ParameterInput]
}
CreateSalesOrderInput
Description
A shop order, as the shop knows it.
Fields
| Input Field | Description |
|---|---|
source - String!
|
The code of an external source set up in this organisation. The API never creates one. |
externalId - String!
|
The shop's id of the order. With source, the key that makes a repeat safe. |
externalNumber - String
|
The order number the customer sees. |
sourceUrl - String
|
A link to the order in the shop's administration. |
legalEntity - String
|
The code of the legal entity that sells. Omitted: the organisation's default. |
orderedAt - Time!
|
When the customer placed the order, by the shop's clock. Not before 2000, at most a day ahead. |
currencyCode - String!
|
ISO 4217 code of the order's currency, e.g. "EUR". Never converted. |
pricesIncludeVat - Boolean!
|
Whether every unitPrice and charge amount includes VAT. ROUNDING always does. |
expectedTotal - Decimal
|
The shop's total including VAT. When our total differs by a cent or more, the order is created with our sums and blocked for review, with the exception TOTAL_MISMATCH. Send a residue as a ROUNDING charge. |
customer - CustomerInput!
|
Who ordered. |
billingAddress - AddressInput!
|
The billing address. |
deliveryAddress - AddressInput
|
Where the goods go. Omitted: the billing address, unless a pickupPoint is given. |
pickupPoint - PickupPointInput
|
The carrier's collection point the customer chose. Never added to the address book. |
deliveryMethod - MethodInput
|
The delivery method as the shop names it. |
carrier - CarrierProfileInput
|
The operational Chameleoon carrier and profile. Both are identifiers; names are derived from the synchronized catalogue. Omitted means no Chameleoon route was selected. Unknown or unverifiable pairs do not become normalized carrier data; see createSalesOrder warnings. |
paymentMethod - PaymentMethod
|
How the customer intends to pay. Omitted -- the shop's method is not mapped to one of ours: BANK_TRANSFER is stored as a placeholder and the order is blocked for review, with the exception PAYMENT_METHOD_UNKNOWN. Send paymentMethodName so the person can see what it was. |
paymentMethodName - MethodInput
|
The payment method as the shop names it. |
preferredWarehouseId - UUID
|
Our id of the warehouse to reserve from. Omitted: any of the legal entity's warehouses. One that is unknown, archived or another company's is ignored and the order is blocked for review, with the exception PREFERRED_WAREHOUSE_IGNORED. |
note - String
|
What the customer wrote with the order. |
items - [CreateSalesOrderItemInput!]!
|
The goods. At least one. |
charges - [SalesOrderChargeInput!]
|
Delivery, payment fees, discounts and rounding -- everything that is not goods. |
paid - SalesOrderPaidInput
|
Present: the order is paid in full. Absent: not (yet) paid. |
Example
{
"source": "abc123",
"externalId": "xyz789",
"externalNumber": "xyz789",
"sourceUrl": "abc123",
"legalEntity": "xyz789",
"orderedAt": "10:15:30Z",
"currencyCode": "xyz789",
"pricesIncludeVat": true,
"expectedTotal": Decimal,
"customer": CustomerInput,
"billingAddress": AddressInput,
"deliveryAddress": AddressInput,
"pickupPoint": PickupPointInput,
"deliveryMethod": MethodInput,
"carrier": CarrierProfileInput,
"paymentMethod": "CARD",
"paymentMethodName": MethodInput,
"preferredWarehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"note": "abc123",
"items": [CreateSalesOrderItemInput],
"charges": [SalesOrderChargeInput],
"paid": SalesOrderPaidInput
}
CreateSalesOrderItemInput
Description
One goods line of a shop order.
Fields
| Input Field | Description |
|---|---|
externalId - String
|
The shop's id of the line, unique within the order. |
kind - SalesOrderItemKind
|
What the line is. A SET is one priced line; its components are never sent. Default = PRODUCT |
product - ProductRefInput
|
The product, by exactly one key. Not found: the line is kept unlinked under its sku, with the warning PRODUCT_NOT_FOUND. Ambiguous (an EAN several products carry): kept unlinked under its sku, or under the EAN when no sku was sent, warning PRODUCT_AMBIGUOUS. A service becomes an OTHER charge. |
sku - String
|
The shop's SKU. Required when the product is not found -- except for an EAN several products carry, where the line is kept under the EAN when no sku was sent. |
name - String!
|
The product's name as the customer saw it. |
variantName - String
|
The variant's name as the customer saw it, e.g. "black, M". |
quantity - Decimal!
|
How many, in unit. More than zero, at most three decimals. |
unit - String
|
A unit code of the product. Omitted: its base unit, or the unit of the EAN sent. One the product does not have: its base unit, and the order is blocked for review with the exception UNIT_UNKNOWN. |
unitPrice - Decimal!
|
The final price of one unit, after this line's own discount. At most four decimals. |
originalUnitPrice - Decimal
|
The price of one unit before the discount; the difference is kept as the discount. |
discountPercent - Decimal
|
The discount as the shop showed it. Informative only. |
vatPercent - Decimal!
|
The VAT rate in percent, e.g. 23. At most two decimals. |
lineTotal - Decimal
|
The shop's total of the line, on the order's basis: gross when pricesIncludeVat, net otherwise. A cent or more from ours: the order is created with ours and blocked for review, with the exception LINE_TOTAL_MISMATCH on the line. |
attributes - [ItemAttributeInput!]
|
What the customer chose about the line: an engraving, a colour. |
note - String
|
A note on the line. |
Example
{
"externalId": "abc123",
"kind": "PRODUCT",
"product": ProductRefInput,
"sku": "xyz789",
"name": "xyz789",
"variantName": "abc123",
"quantity": Decimal,
"unit": "abc123",
"unitPrice": Decimal,
"originalUnitPrice": Decimal,
"discountPercent": Decimal,
"vatPercent": Decimal,
"lineTotal": Decimal,
"attributes": [ItemAttributeInput],
"note": "xyz789"
}
CustomerInput
Description
The customer: either id alone, or what the shop knows of them. A customer named by the shop is matched by externalId, then registration id, then e-mail, and created when nothing matches. An existing customer's details are never overwritten.
Fields
| Input Field | Description |
|---|---|
id - UUID
|
Our id of the customer. Nothing else may be sent with it. |
externalId - String
|
The shop's id of the customer. |
name - String
|
The person's name. |
companyName - String
|
The company's name; when sent, it names a new customer. |
registrationId - String
|
The company registration number (IČO). |
vatId - String
|
The VAT id (IČ DPH / DIČ). |
email - String
|
The e-mail, also kept as the order's contact. |
phone - String
|
The phone, also kept as the order's contact. |
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"externalId": "abc123",
"name": "abc123",
"companyName": "xyz789",
"registrationId": "abc123",
"vatId": "abc123",
"email": "xyz789",
"phone": "abc123"
}
DeleteAssetInput
Fields
| Input Field | Description |
|---|---|
id - UUID!
|
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
}
DeletePrintTemplateInput
Fields
| Input Field | Description |
|---|---|
id - UUID!
|
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
}
ErrorReportFilter
Fields
| Input Field | Description |
|---|---|
subject - ErrorSubjectInput!
|
The record whose reports to read. |
statuses - [ErrorReportStatus!]
|
Keep these statuses, at least one; left out, every status, MUTED included. |
Example
{"subject": ErrorSubjectInput, "statuses": ["OPEN"]}
ErrorSubjectInput
Fields
| Input Field | Description |
|---|---|
type - ErrorSubjectType!
|
|
id - UUID!
|
Example
{
"type": "STOCK_DOCUMENT",
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
}
IntegrationsTargetInput
Description
Where in the Integrations platform this occurrence's technical detail is.
Fields
| Input Field | Description |
|---|---|
workspace - String!
|
The workspace slug: lowercase letters, digits and hyphens, up to 63. |
kind - IntegrationsTargetKind!
|
|
id - String!
|
The run's, run item's, workflow run's or event's id there, 1 to 128 bytes. |
parentId - String
|
The run of a RUN_ITEM; refused for any other kind. |
Example
{
"workspace": "xyz789",
"kind": "RUN",
"id": "abc123",
"parentId": "abc123"
}
InvoiceFilter
Description
Which invoices invoices returns. Every field narrows.
Fields
| Input Field | Description |
|---|---|
direction - InvoiceDirection
|
|
kinds - [InvoiceKind!]
|
|
statuses - [InvoiceStatus!]
|
|
paymentStatuses - [InvoicePaymentStatus!]
|
|
overdue - Boolean
|
|
partnerId - UUID
|
|
legalEntityId - UUID
|
|
salesOrderId - UUID
|
|
issueDateFrom - Time
|
|
issueDateTo - Time
|
|
dueDateFrom - Time
|
|
dueDateTo - Time
|
|
search - String
|
Example
{
"direction": "ISSUED",
"kinds": ["INVOICE"],
"statuses": ["PENDING"],
"paymentStatuses": ["UNPAID"],
"overdue": true,
"partnerId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"legalEntityId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"salesOrderId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"issueDateFrom": "10:15:30Z",
"issueDateTo": "10:15:30Z",
"dueDateFrom": "10:15:30Z",
"dueDateTo": "10:15:30Z",
"search": "abc123"
}
InvoiceLineInput
Fields
| Input Field | Description |
|---|---|
lineNo - Int
|
Unique within the invoice; the line's position when omitted. |
kind - InvoiceLineKind
|
|
name - String!
|
|
code - String
|
The code the line names its goods by: the supplier's (received) or customer's (issued) code, or our SKU. |
barcode - String
|
EAN/GTIN. |
manufacturerCode - String
|
The maker's part number. |
quantity - Decimal
|
|
unit - String
|
|
unitPriceNet - Decimal
|
|
unitPriceGross - Decimal
|
|
pricesIncludeVat - Boolean
|
|
vatPercent - Decimal
|
|
discountPercent - Decimal
|
|
totalNet - Decimal!
|
|
totalVat - Decimal!
|
|
totalGross - Decimal!
|
|
note - String
|
|
externalId - String
|
|
variantId - UUID
|
Our id of the product variant. Without it the line is matched by code, barcode and manufacturer code. |
advanceInvoice - InvoiceRefInput
|
On ADVANCE_DEDUCTION: the deducted advance. Unknown stays null. |
salesOrderLineId - UUID
|
Example
{
"lineNo": 123,
"kind": "ITEM",
"name": "abc123",
"code": "abc123",
"barcode": "xyz789",
"manufacturerCode": "abc123",
"quantity": Decimal,
"unit": "abc123",
"unitPriceNet": Decimal,
"unitPriceGross": Decimal,
"pricesIncludeVat": false,
"vatPercent": Decimal,
"discountPercent": Decimal,
"totalNet": Decimal,
"totalVat": Decimal,
"totalGross": Decimal,
"note": "abc123",
"externalId": "abc123",
"variantId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"advanceInvoice": InvoiceRefInput,
"salesOrderLineId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
}
InvoiceLinkInput
Fields
| Input Field | Description |
|---|---|
type - InvoiceLinkType!
|
|
targetId - UUID!
|
Our id of the order, purchase order or receipt. |
Example
{
"type": "SALES_ORDER",
"targetId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
}
InvoiceLinkTargetInput
Fields
| Input Field | Description |
|---|---|
type - InvoiceLinkType!
|
|
ref - InvoiceRecordRefInput!
|
A sales order by id or by its source id; a purchase order or a receipt by our id. |
Example
{"type": "SALES_ORDER", "ref": InvoiceRecordRefInput}
InvoicePartyInput
Example
{
"name": "abc123",
"street": "xyz789",
"city": "xyz789",
"postalCode": "abc123",
"countryCode": "xyz789",
"registrationId": "abc123",
"taxId": "abc123",
"vatId": "abc123",
"email": "xyz789",
"phone": "abc123",
"web": "xyz789"
}
InvoiceRecordRefInput
InvoiceRefInput
Description
Names one invoice: either id, or source together with externalId -- never both.
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"source": "abc123",
"externalId": "xyz789"
}
InvoiceSettlementInput
Fields
| Input Field | Description |
|---|---|
kind - InvoiceSettlementKind!
|
|
counterInvoice - InvoiceRefInput
|
The advance or credit note; unknown stays null and counterNumber is kept. |
counterNumber - String
|
|
amount - Decimal!
|
|
settledOn - Time
|
Example
{
"kind": "ADVANCE_DEDUCTION",
"counterInvoice": InvoiceRefInput,
"counterNumber": "abc123",
"amount": Decimal,
"settledOn": "10:15:30Z"
}
InvoiceVatRowInput
Example
{
"vatPercent": Decimal,
"base": Decimal,
"vat": Decimal,
"gross": Decimal,
"baseHome": Decimal,
"vatHome": Decimal,
"grossHome": Decimal
}
IssueFilter
Description
Which issues the query returns. Every field narrows; an omitted (or null) one matches all, and an empty list matches none.
Fields
| Input Field | Description |
|---|---|
ids - [UUID!]
|
These issues, at most 50. Ids that are not returnable are simply absent. |
statuses - [IssueStatus!]
|
Issues in any of these states; all three when omitted. |
warehouseIds - [UUID!]
|
Issues out of any of these warehouses. At most 50. |
effectiveFrom - Time
|
Issues effective at or after this instant. |
effectiveTo - Time
|
Issues effective before this instant (exclusive). |
origins - [IssueOriginKind!]
|
Issues with any of these origins. |
Example
{
"ids": [
"4c4efadc-fa25-44b2-b302-a0229e5a7e96"
],
"statuses": ["OPEN"],
"warehouseIds": [
"4c4efadc-fa25-44b2-b302-a0229e5a7e96"
],
"effectiveFrom": "10:15:30Z",
"effectiveTo": "10:15:30Z",
"origins": ["FULFILMENT"]
}
ItemAttributeInput
LocationFilter
Description
Every supplied field narrows the result; an explicit empty list matches nothing.
Fields
| Input Field | Description |
|---|---|
warehouseIds - [UUID!]!
|
1 to 50 warehouses. |
codes - [String!]
|
Exact codes, up to 250. A code is unique per warehouse and zone, so one code may name several bins. |
pickable - Boolean
|
True: bins reservations take from. False: bins nobody picks from. |
kinds - [LocationKind!]
|
|
includeArchived - Boolean
|
Default false: archived bins are left out. |
Example
{
"warehouseIds": [
"4c4efadc-fa25-44b2-b302-a0229e5a7e96"
],
"codes": ["abc123"],
"pickable": false,
"kinds": ["STOCK"],
"includeArchived": false
}
MethodInput
ParameterInput
PickupPointInput
PrintTemplateFilter
Fields
| Input Field | Description |
|---|---|
kind - PrintTemplateKind
|
|
language - String
|
|
search - String
|
A part of the name, any case and diacritics. |
archived - Boolean
|
true lists the archived templates instead of the active ones. |
Example
{
"kind": "SALES_ORDER",
"language": "abc123",
"search": "abc123",
"archived": false
}
ProductFilter
Description
Which products products returns. Every field narrows; an omitted one matches all, an empty list none.
Fields
| Input Field | Description |
|---|---|
ids - [UUID!]
|
These products, at most 250. |
codes - [String!]
|
Products with these codes (exact), at most 250. |
skus - [String!]
|
Products having a variant (archived included) with one of these SKUs (exact), at most 250. |
barcodes - [String!]
|
Products having a variant (archived included) carrying one of these codes -- EAN, GTIN, UPC, manufacturer's, customs or internal -- exact, at most 250. |
updatedFrom - Time
|
Products whose updatedAt is at or after this instant -- for an incremental sync, with sortKey UPDATED_AT and includeArchived: true: an archive moves updatedAt, and archivedAt tells the product is gone -- without includeArchived a sync never sees it leave. updatedAt is the start time of the writing transaction, so resume from the last updatedAt seen minus 10 minutes and de-duplicate by id. Prices and a rename of an attribute or of one of its values do not move it. |
includeArchived - Boolean
|
True: archived products too. Default false. Default = false |
Example
{
"ids": [
"4c4efadc-fa25-44b2-b302-a0229e5a7e96"
],
"codes": ["xyz789"],
"skus": ["xyz789"],
"barcodes": ["xyz789"],
"updatedFrom": "10:15:30Z",
"includeArchived": true
}
ProductRefInput
Description
A product, by exactly one key.
Fields
| Input Field | Description |
|---|---|
id - UUID
|
Our id of the product variant. |
externalId - String
|
The source's id of the variant. |
sku - String
|
Our SKU, exact and case-sensitive. |
ean - String
|
A barcode; one on a packaging unit also sets the line's unit. Several products may share one; then nothing is picked (PRODUCT_AMBIGUOUS). |
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"externalId": "abc123",
"sku": "abc123",
"ean": "xyz789"
}
PublicTransferAdviceLineInput
Example
{
"variantId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"quantity": Decimal,
"sourceLocationId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"targetLocationId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"lotId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"note": "xyz789"
}
PublicTransferAdviceLineUpdate
Fields
| Input Field | Description |
|---|---|
lineId - UUID!
|
|
quantity - Decimal
|
In base units. Omitted: unchanged. A line entered in another unit refuses it (reason LINE_NOT_IN_BASE_UNIT). |
sourceLocationId - UUID
|
Omitted: unchanged. Null: cleared. |
targetLocationId - UUID
|
Omitted: unchanged. Null: cleared (refused inside one warehouse). |
lotId - UUID
|
Omitted: unchanged. Null: cleared. |
note - String
|
Omitted: unchanged. Null: cleared. |
Example
{
"lineId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"quantity": Decimal,
"sourceLocationId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"targetLocationId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"lotId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"note": "xyz789"
}
ReceiptAdviceFilter
Description
A filter on receipt advice headers. Every supplied field narrows the result; an explicit empty list matches nothing. Each list holds at most 100 values.
Fields
| Input Field | Description |
|---|---|
statuses - [ReceiptAdviceStatus!]
|
|
states - [ReceiptAdviceState!]
|
|
warehouseIds - [UUID!]
|
|
supplierIds - [UUID!]
|
|
kinds - [ReceiptAdviceKind!]
|
|
advisedFrom - Time
|
advisedAt at or after this instant. |
advisedTo - Time
|
advisedAt before this instant. |
expectedFrom - Time
|
expectedAt at or after this instant (an advice with none never matches). |
expectedTo - Time
|
expectedAt at or before this instant. |
code - String
|
The exact number or the supplier's reference. |
parameters - [ParameterInput!]
|
Up to 8 exact name/value equalities combined with AND. |
hasActiveDocuments - Boolean
|
True: a receipt answering it is not finished (progress.activeDocuments > 0). False: none is. |
started - Boolean
|
True: work has started (progress.startedAt set). False: nobody has started. |
lastActivityBefore - Time
|
The last activity is before this instant (advices nobody has started never match). |
lastActivityAfter - Time
|
The last activity is at or after this instant. |
Example
{
"statuses": ["DRAFT"],
"states": ["DRAFT"],
"warehouseIds": [
"4c4efadc-fa25-44b2-b302-a0229e5a7e96"
],
"supplierIds": [
"4c4efadc-fa25-44b2-b302-a0229e5a7e96"
],
"kinds": ["DELIVERY_NOTE"],
"advisedFrom": "10:15:30Z",
"advisedTo": "10:15:30Z",
"expectedFrom": "10:15:30Z",
"expectedTo": "10:15:30Z",
"code": "xyz789",
"parameters": [ParameterInput],
"hasActiveDocuments": true,
"started": true,
"lastActivityBefore": "10:15:30Z",
"lastActivityAfter": "10:15:30Z"
}
ReceiptAdviceLineInput
Fields
| Input Field | Description |
|---|---|
variantId - UUID!
|
|
quantity - Decimal!
|
Positive, in unit. |
unit - String
|
A unit the variant defines (a carton). Omitted: the item's base unit. |
unitPrice - Decimal
|
Per unit, in the advice's currency; with or without VAT as the advice says. |
vatPercent - Decimal
|
|
expectedAt - Time
|
|
batchCode - String
|
The batch the supplier's paperwork names; it prefills the receipt. |
expiresAt - Time
|
The expiry the paperwork names; its UTC date is kept. |
serialNumber - String
|
The serial the paperwork names. A serial names one piece: the line's base quantity must be 1. |
supplierSku - String
|
The supplier's own code of the item. |
note - String
|
Example
{
"variantId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"quantity": Decimal,
"unit": "abc123",
"unitPrice": Decimal,
"vatPercent": Decimal,
"expectedAt": "10:15:30Z",
"batchCode": "abc123",
"expiresAt": "10:15:30Z",
"serialNumber": "abc123",
"supplierSku": "xyz789",
"note": "abc123"
}
ReceiptAdviceLineUpdate
Description
One line's change: an omitted field is unchanged, a null one cleared.
Fields
| Input Field | Description |
|---|---|
lineId - UUID!
|
|
quantity - Decimal
|
Positive, in the line's unit (the new one when unit changes it). Omitted: unchanged. |
unit - String
|
Omitted: unchanged. Refused once goods arrived against the line in its unit. |
unitPrice - Decimal
|
|
vatPercent - Decimal
|
|
expectedAt - Time
|
|
batchCode - String
|
|
expiresAt - Time
|
|
serialNumber - String
|
|
supplierSku - String
|
|
note - String
|
Example
{
"lineId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"quantity": Decimal,
"unit": "abc123",
"unitPrice": Decimal,
"vatPercent": Decimal,
"expectedAt": "10:15:30Z",
"batchCode": "abc123",
"expiresAt": "10:15:30Z",
"serialNumber": "xyz789",
"supplierSku": "xyz789",
"note": "xyz789"
}
ReceiptFilter
Description
Which receipts the query returns. Every field narrows; an omitted (or null) one matches all, and an empty list matches none.
Fields
| Input Field | Description |
|---|---|
ids - [UUID!]
|
These receipts, at most 50. Ids that are not returnable are simply absent. |
statuses - [ReceiptStatus!]
|
Receipts in any of these states; all three when omitted. |
warehouseIds - [UUID!]
|
Receipts into any of these warehouses. At most 50. |
effectiveFrom - Time
|
Receipts effective at or after this instant. |
effectiveTo - Time
|
Receipts effective before this instant (exclusive). |
origins - [ReceiptOriginKind!]
|
Receipts with any of these origins. |
receiptAdviceIds - [UUID!]
|
Receipts answering any of these receipt advices. At most 50. |
Example
{
"ids": [
"4c4efadc-fa25-44b2-b302-a0229e5a7e96"
],
"statuses": ["OPEN"],
"warehouseIds": [
"4c4efadc-fa25-44b2-b302-a0229e5a7e96"
],
"effectiveFrom": "10:15:30Z",
"effectiveTo": "10:15:30Z",
"origins": ["MANUAL"],
"receiptAdviceIds": [
"4c4efadc-fa25-44b2-b302-a0229e5a7e96"
]
}
RemoveDocumentInput
RemoveInvoiceInput
ReplaceAssetFileInput
ReportErrorInput
Fields
| Input Field | Description |
|---|---|
requestId - String!
|
1 to 128 bytes; one per occurrence you report. |
subject - ErrorSubjectInput!
|
|
lineId - UUID
|
A line of the subject the error is about; null for the record as a whole. |
source - String!
|
The outside system, UPPER_SNAKE_CASE of 2 to 32 characters, e.g. OBERON. |
code - String!
|
Your code for the error, UPPER_SNAKE_CASE of 2 to 64 characters, e.g. EXPORT_REJECTED. |
statusCode - Int
|
The outside system's status, e.g. the HTTP status it answered; 0 to 999. |
message - String!
|
The reason, as the outside system gave it; 1 to 2000 characters. |
details - JSON
|
Machine detail as a JSON object, up to 8 KiB. |
occurredAt - Time
|
When it happened by your clock; defaults to when the ERP received it. |
integrationsTarget - IntegrationsTargetInput
|
Example
{
"requestId": "abc123",
"subject": ErrorSubjectInput,
"lineId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"source": "xyz789",
"code": "xyz789",
"statusCode": 987,
"message": "xyz789",
"details": {},
"occurredAt": "10:15:30Z",
"integrationsTarget": IntegrationsTargetInput
}
SalesOrderChargeInput
Description
Anything on the order that is not goods.
Fields
| Input Field | Description |
|---|---|
kind - ChargeKind!
|
What it is for. |
code - String
|
The shop's code of the charge. |
name - String!
|
Its name as the customer saw it. |
amount - Decimal!
|
The whole amount, net or gross as pricesIncludeVat says (ROUNDING: always gross). Never negative, except ROUNDING, which is at most 1.00 either way. A DISCOUNT is sent positive. |
vatPercent - Decimal!
|
The VAT rate in percent. ROUNDING: 0. |
Example
{
"kind": "DELIVERY",
"code": "xyz789",
"name": "abc123",
"amount": Decimal,
"vatPercent": Decimal
}
SalesOrderFilter
Description
Which orders salesOrders returns. Every field narrows; an omitted one matches all.
Fields
| Input Field | Description |
|---|---|
source - String
|
Orders placed through this external source, by its code, matched ignoring case and surrounding spaces. |
statuses - [SalesOrderStatus!]
|
Orders in any of these states. |
fulfilmentStatuses - [SalesOrderFulfilmentStatus!]
|
Orders with any of these fulfilment states. |
paymentStatuses - [SalesOrderPaymentStatus!]
|
Orders with any of these payment states. |
blocked - Boolean
|
True: only blocked orders. False: only orders nothing stops. |
hasOpenExceptions - Boolean
|
True: orders with an open exception -- the review queue. False: orders without one. |
hasUnreservedItems - Boolean
|
True: at least one linked goods line has live quantity not shipped and not held on a live consignment (reserved or picked). False: no such line. Unlinked lines need catalogue repair and are excluded. Needs reservation.read and an unrestricted warehouse scope so hidden warehouses cannot make an order appear short. |
unreservedInWarehouseId - UUID
|
Orders short IN THIS WAREHOUSE: a linked goods line whose open quantity is more than what has shipped (from any warehouse) plus what this warehouse's live consignments hold (reserved or picked). Goods held in another warehouse do not count as covered here -- the question a workflow asks before moving goods into the warehouse orders are picked in. Needs reservation.read and the warehouse in the key's scope (FORBIDDEN_SCOPE otherwise). If one of the tenant's warehouses is never picked from, give the orders preferredWarehouseId: allocation then reserves in that warehouse only. |
orderedFrom - Time
|
Orders placed at or after this instant. |
orderedTo - Time
|
Orders placed at or before this instant. |
Example
{
"source": "abc123",
"statuses": ["DRAFT"],
"fulfilmentStatuses": ["UNFULFILLED"],
"paymentStatuses": ["UNPAID"],
"blocked": false,
"hasOpenExceptions": false,
"hasUnreservedItems": true,
"unreservedInWarehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"orderedFrom": "10:15:30Z",
"orderedTo": "10:15:30Z"
}
SalesOrderInvoiceInput
Description
The invoice issued for an order in another system. An omitted field is kept; null or blank clears it.
Fields
| Input Field | Description |
|---|---|
number - String
|
The invoice's number, at most 100 characters. |
externalId - String
|
That system's own id of the invoice, at most 200 characters. |
expectedExternalId - String
|
Compare-and-set. A value: the write happens only if the order's invoiceExternalId equals it. Null (or blank): only if the order has no invoice at all (number and external id both empty). Otherwise CONFLICT with extensions.reason INVOICE_CHANGED. Omitted: no check. |
Example
{
"number": "abc123",
"externalId": "xyz789",
"expectedExternalId": "xyz789"
}
SalesOrderPaidInput
Description
The order is paid in full.
Example
{
"paidAt": "10:15:30Z",
"reference": "abc123"
}
SalesOrderRefInput
Description
Names one order: either id, or source together with externalId -- never both.
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"source": "abc123",
"externalId": "xyz789"
}
SetInvoicePartnerInput
Fields
| Input Field | Description |
|---|---|
partnerId - UUID
|
Our id of the partner; null clears it. |
Example
{
"partnerId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
}
SetParametersInput
Description
Set and remove parameters by name in one atomic change; a name may occur once across both.
Fields
| Input Field | Description |
|---|---|
set - [ParameterInput!]
|
Up to 32 values to set; setting a current value changes nothing. |
remove - [String!]
|
Up to 32 names to remove; removing a missing name changes nothing. |
Example
{
"set": [ParameterInput],
"remove": ["xyz789"]
}
SetPrintTemplateArchivedInput
StockCardFilter
Description
Which cards the query returns. Every field narrows; an omitted (or null) one matches all, and an empty list matches none.
Example
{
"warehouseIds": [
"4c4efadc-fa25-44b2-b302-a0229e5a7e96"
],
"warehouseCodes": ["abc123"],
"variantIds": [
"4c4efadc-fa25-44b2-b302-a0229e5a7e96"
],
"skus": ["abc123"]
}
StockDocumentExternalRefInput
Description
The reference a receipt or an issue gets: the record another system made of it.
Example
{
"source": "abc123",
"externalId": "abc123",
"externalNumber": "xyz789"
}
StockQuantFilter
Description
Every supplied field narrows the result; an explicit empty list matches nothing.
Example
{
"warehouseIds": [
"4c4efadc-fa25-44b2-b302-a0229e5a7e96"
],
"variantIds": [
"4c4efadc-fa25-44b2-b302-a0229e5a7e96"
],
"locationIds": [
"4c4efadc-fa25-44b2-b302-a0229e5a7e96"
],
"pickable": false
}
SyncInvoiceInput
Description
The whole document, as the accounting system holds it now.
Fields
| Input Field | Description |
|---|---|
source - String!
|
The code of the accounting system's source; it must be of kind ERP. |
externalId - String!
|
The accounting system's own id of the document. |
sourceChangedAt - Time
|
When the document last changed in the accounting system; an older write is STALE. |
direction - InvoiceDirection!
|
|
kind - InvoiceKind!
|
|
legalEntity - String
|
The company it belongs to, by code. Omitted: the company whose IČO our side of the invoice prints (the seller of an issued invoice, the buyer of a received one), else the default. |
partner - InvoiceRecordRefInput
|
The partner, when the integration knows it. Omitted, or an externalId nothing holds yet: found by the party's IČO, then e-mail (the oldest of several, with a warning), else created from the party -- the buyer of an issued invoice, the seller of a received one. A partner already on the invoice stays. |
sourceDocumentType - String
|
|
cancelled - Boolean
|
|
number - String!
|
|
variableSymbol - String
|
|
constantSymbol - String
|
|
specificSymbol - String
|
|
supplierNumber - String
|
|
orderNumber - String
|
|
issueDate - Time
|
|
taxPointDate - Time
|
|
dueDate - Time
|
|
receivedDate - Time
|
|
vatClaimDate - Time
|
|
seller - InvoicePartyInput
|
|
buyer - InvoicePartyInput
|
|
delivery - InvoicePartyInput
|
|
paymentMethod - InvoicePaymentMethod
|
|
paymentMethodName - String
|
|
bankAccountNumber - String
|
|
bankCode - String
|
|
bankName - String
|
|
iban - String
|
|
swift - String
|
|
currencyCode - String!
|
|
exchangeRate - Decimal
|
|
exchangeRateAmount - Int
|
|
homeCurrencyCode - String
|
The home currency; the document's currency when omitted. |
textBeforeItems - String
|
|
textAfterItems - String
|
|
printedNote - String
|
|
vatNote - String
|
The statutory VAT wording printed on the document ("Dodanie je oslobodené od dane podľa § 43 zákona o DPH"); omitted clears it, like the other header texts. |
reverseCharge - Boolean
|
|
oss - Boolean
|
|
totalNet - Decimal!
|
|
totalVat - Decimal!
|
|
totalGross - Decimal!
|
|
rounding - Decimal
|
|
advancesDeducted - Decimal
|
|
amountDue - Decimal!
|
|
totalNetHome - Decimal
|
|
totalVatHome - Decimal
|
|
totalGrossHome - Decimal
|
|
paymentStatus - InvoicePaymentStatus
|
|
paidAmount - Decimal
|
Null when the accounting system does not say. |
remainingAmount - Decimal
|
|
paidAt - Time
|
|
correctsInvoice - InvoiceRefInput
|
On a credit note: the invoice it corrects. Unknown stays null; correctedNumber is kept. |
correctedNumber - String
|
|
correctedIssueDate - Time
|
|
correctedTaxPointDate - Time
|
|
correctionReason - String
|
|
lines - [InvoiceLineInput!]
|
Replaces every line. |
vatSummary - [InvoiceVatRowInput!]
|
Replaces the VAT summary. |
settlements - [InvoiceSettlementInput!]
|
Replaces the settlements. |
links - [InvoiceLinkTargetInput!]
|
Added, never removed. |
Example
{
"source": "abc123",
"externalId": "abc123",
"sourceChangedAt": "10:15:30Z",
"direction": "ISSUED",
"kind": "INVOICE",
"legalEntity": "xyz789",
"partner": InvoiceRecordRefInput,
"sourceDocumentType": "xyz789",
"cancelled": false,
"number": "xyz789",
"variableSymbol": "xyz789",
"constantSymbol": "abc123",
"specificSymbol": "xyz789",
"supplierNumber": "xyz789",
"orderNumber": "xyz789",
"issueDate": "10:15:30Z",
"taxPointDate": "10:15:30Z",
"dueDate": "10:15:30Z",
"receivedDate": "10:15:30Z",
"vatClaimDate": "10:15:30Z",
"seller": InvoicePartyInput,
"buyer": InvoicePartyInput,
"delivery": InvoicePartyInput,
"paymentMethod": "BANK_TRANSFER",
"paymentMethodName": "xyz789",
"bankAccountNumber": "xyz789",
"bankCode": "abc123",
"bankName": "abc123",
"iban": "xyz789",
"swift": "xyz789",
"currencyCode": "abc123",
"exchangeRate": Decimal,
"exchangeRateAmount": 987,
"homeCurrencyCode": "xyz789",
"textBeforeItems": "xyz789",
"textAfterItems": "abc123",
"printedNote": "xyz789",
"vatNote": "xyz789",
"reverseCharge": false,
"oss": true,
"totalNet": Decimal,
"totalVat": Decimal,
"totalGross": Decimal,
"rounding": Decimal,
"advancesDeducted": Decimal,
"amountDue": Decimal,
"totalNetHome": Decimal,
"totalVatHome": Decimal,
"totalGrossHome": Decimal,
"paymentStatus": "UNPAID",
"paidAmount": Decimal,
"remainingAmount": Decimal,
"paidAt": "10:15:30Z",
"correctsInvoice": InvoiceRefInput,
"correctedNumber": "abc123",
"correctedIssueDate": "10:15:30Z",
"correctedTaxPointDate": "10:15:30Z",
"correctionReason": "xyz789",
"lines": [InvoiceLineInput],
"vatSummary": [InvoiceVatRowInput],
"settlements": [InvoiceSettlementInput],
"links": [InvoiceLinkTargetInput]
}
TransferAdviceFilter
Description
A filter on transfer advice headers. Every supplied field narrows the result.
Fields
| Input Field | Description |
|---|---|
statuses - [TransferAdviceStatus!]
|
Lifecycle statuses; an explicit empty list matches nothing. |
states - [TransferAdviceState!]
|
Derived work states; an explicit empty list matches nothing. |
sourceWarehouseIds - [UUID!]
|
|
targetWarehouseIds - [UUID!]
|
|
parameters - [ParameterInput!]
|
Up to 8 exact name/value equalities combined with AND; an explicit empty list matches nothing. |
hasActiveDocuments - Boolean
|
True: an executing document is not finished (progress.activeDocuments > 0). False: none is. |
started - Boolean
|
True: work has started (progress.startedAt set). False: nobody has started. |
lastActivityBefore - Time
|
The last activity is before this instant (advices nobody has started never match). |
lastActivityAfter - Time
|
The last activity is at or after this instant. |
Example
{
"statuses": ["DRAFT"],
"states": ["DRAFT"],
"sourceWarehouseIds": [
"4c4efadc-fa25-44b2-b302-a0229e5a7e96"
],
"targetWarehouseIds": [
"4c4efadc-fa25-44b2-b302-a0229e5a7e96"
],
"parameters": [ParameterInput],
"hasActiveDocuments": true,
"started": false,
"lastActivityBefore": "10:15:30Z",
"lastActivityAfter": "10:15:30Z"
}
TransferFilter
Description
Which transfers the query returns. Every field narrows and they combine with AND; an omitted (or null) one matches all, and an empty list matches none.
Fields
| Input Field | Description |
|---|---|
ids - [UUID!]
|
These transfers, at most 50. Ids that are not returnable are simply absent. |
statuses - [TransferStatus!]
|
Transfers in any of these states; all three when omitted. |
warehouseIds - [UUID!]
|
Transfers out of or into any of these warehouses (either end). At most 50. |
sourceWarehouseIds - [UUID!]
|
Transfers out of any of these warehouses. At most 50. |
targetWarehouseIds - [UUID!]
|
Transfers into any of these warehouses. At most 50. |
effectiveFrom - Time
|
Transfers effective at or after this instant. |
effectiveTo - Time
|
Transfers effective before this instant (exclusive). |
origins - [TransferOriginKind!]
|
Transfers with any of these origins. |
transferAdviceIds - [UUID!]
|
Transfers executing any of these transfer advices (linked by header or line). At most 50. Needs transferAdvice.read. |
Example
{
"ids": [
"4c4efadc-fa25-44b2-b302-a0229e5a7e96"
],
"statuses": ["OPEN"],
"warehouseIds": [
"4c4efadc-fa25-44b2-b302-a0229e5a7e96"
],
"sourceWarehouseIds": [
"4c4efadc-fa25-44b2-b302-a0229e5a7e96"
],
"targetWarehouseIds": [
"4c4efadc-fa25-44b2-b302-a0229e5a7e96"
],
"effectiveFrom": "10:15:30Z",
"effectiveTo": "10:15:30Z",
"origins": ["STOCKTAKE"],
"transferAdviceIds": [
"4c4efadc-fa25-44b2-b302-a0229e5a7e96"
]
}
UpdateAssetInput
UpdateInvoiceInput
Fields
| Input Field | Description |
|---|---|
internalNote - String
|
Omitted keeps, null or blank clears. |
Example
{"internalNote": "abc123"}
UpdatePrintTemplateInput
Example
{
"id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
"name": "xyz789",
"language": "abc123",
"body": "xyz789",
"isDefault": false
}
UpdatePublicTransferAdviceInput
Fields
| Input Field | Description |
|---|---|
requestId - String!
|
An opaque, tenant-unique idempotency key for this change, 1 to 128 bytes. A new key for every intended change. |
plannedAt - Time
|
Omitted: unchanged. Null: cleared. |
reference - String
|
Omitted: unchanged. Null: cleared. |
removeLineIds - [UUID!]
|
Up to 100 lines to remove. |
updateLines - [PublicTransferAdviceLineUpdate!]
|
Up to 100 line changes. |
addLines - [PublicTransferAdviceLineInput!]
|
Up to 100 new lines, base-unit quantities, as on create. |
parameters - SetParametersInput
|
Example
{
"requestId": "xyz789",
"plannedAt": "10:15:30Z",
"reference": "abc123",
"removeLineIds": [
"4c4efadc-fa25-44b2-b302-a0229e5a7e96"
],
"updateLines": [PublicTransferAdviceLineUpdate],
"addLines": [PublicTransferAdviceLineInput],
"parameters": SetParametersInput
}
UpdateReceiptAdviceInput
Fields
| Input Field | Description |
|---|---|
requestId - String!
|
An opaque, tenant-unique idempotency key for this change, 1 to 128 bytes. A new key for every intended change. |
kind - ReceiptAdviceKind
|
Omitted: unchanged. Never PURCHASE_ORDER. |
supplierReference - String
|
Omitted: unchanged. Null: cleared. |
advisedAt - Time
|
Omitted: unchanged. Null is refused. |
expectedAt - Time
|
Omitted: unchanged. Null: cleared. |
note - String
|
Omitted: unchanged. Null: cleared. |
removeLineIds - [UUID!]
|
Up to 100 lines to remove. |
updateLines - [ReceiptAdviceLineUpdate!]
|
Up to 100 line changes. |
addLines - [ReceiptAdviceLineInput!]
|
Up to 100 new lines, as on create. |
parameters - SetParametersInput
|
Example
{
"requestId": "abc123",
"kind": "DELIVERY_NOTE",
"supplierReference": "abc123",
"advisedAt": "10:15:30Z",
"expectedAt": "10:15:30Z",
"note": "abc123",
"removeLineIds": [
"4c4efadc-fa25-44b2-b302-a0229e5a7e96"
],
"updateLines": [ReceiptAdviceLineUpdate],
"addLines": [ReceiptAdviceLineInput],
"parameters": SetParametersInput
}
Enums
ApiKeyEnvironment
Description
Which deployment a key belongs to. A test key never authenticates against a live server.
Values
| Enum Value | Description |
|---|---|
|
|
Production. |
|
|
Every other deployment. |
Example
"LIVE"
AssetKind
Description
What an asset is. Read it as a string: more may be added.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"LOGO"
AssetScope
Description
Whose an asset is.
Values
| Enum Value | Description |
|---|---|
|
|
The organisation's: tenant.<code>. |
|
|
One company's (legal entity): company.<code>. |
Example
"TENANT"
ChargeKind
Description
What a charge is for.
Values
| Enum Value | Description |
|---|---|
|
|
Delivery. |
|
|
A payment fee, e.g. for cash on delivery. |
|
|
A discount, sent positive and subtracted. One row per VAT rate. |
|
|
The residue between the shop's total and ours, at most 1.00 either way. |
|
|
Any other surcharge: insurance, gift wrap. |
Example
"DELIVERY"
DocumentKind
Description
What a document is. Read it as a string: more may be added.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"INVOICE"
ErrorReportStatus
Description
Where a report stands. Only a person changes it, in the ERP; a new occurrence reopens RESOLVED, and a MUTED one once its mutedUntil has passed. AN OPEN ENUM: more statuses may arrive.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Still counted, not shown as open. |
Example
"OPEN"
ErrorSubjectType
Description
The kind of record a report is on. AN OPEN ENUM: more kinds of record arrive.
Values
| Enum Value | Description |
|---|---|
|
|
A stock document of any kind: a receipt, an issue, a transfer, a return, ... |
Example
"STOCK_DOCUMENT"
EventActorKind
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"USER"
EventEntityType
Description
What an event happened to.
Values
| Enum Value | Description |
|---|---|
|
|
A sales order. Needs order.read. |
|
|
A stock receipt: goods into a warehouse. Needs receipt.read. |
|
|
A stock issue: goods out of a warehouse, by hand or for a consignment. Needs issue.read. |
|
|
A stock transfer between two warehouses, seen from either end. Needs transfer.read. |
|
|
A consignment: what one dispatch of an order sends. Needs fulfilment.read and order.read. |
|
|
A carrier shipment, from the moment the carrier accepted it: shipment.created, then shipment.changed when its tracking status moves, shipment.cancelled. Needs shipment.read. |
|
|
A transfer advice, from the moment it is opened: transfer_advice.opened, then .changed when a line is added, changed or removed or its planned date moves, .closed, .cancelled. The work on it is the transfers' own events. Needs transferAdvice.read. |
|
|
A receipt advice, from the moment it is opened: receipt_advice.opened, then .changed when a line is added, changed (a settlement too) or removed or its expected date or supplier reference moves, .closed, .cancelled. What arrives against it is its receipts' own events. Needs advice.read. |
|
|
A document attached to a sales order: document.attached, then document.version_added when a new version becomes current, document.removed. The event names the document only: read document(id) for its order and versions. Seen where its order is. Needs order.read. |
|
|
A mirrored invoice, advance invoice or credit note: invoice.created, then invoice.changed. Needs invoice.read. |
Example
"SALES_ORDER"
EventOriginKind
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"STOCKTAKE"
IntegrationsTargetKind
Description
What an occurrence points at in the Chameleoon Integrations platform.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
An item of a run; parentId is the run. |
|
|
|
|
|
Example
"RUN"
InvoiceDirection
Description
Which way an invoice goes.
Values
| Enum Value | Description |
|---|---|
|
|
We invoiced a customer. |
|
|
A supplier invoiced us. |
Example
"ISSUED"
InvoiceKind
Description
What the document is.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
An advance (proforma) invoice; not a tax document. |
|
|
Corrects an invoice downwards. Its amounts are negative. |
Example
"INVOICE"
InvoiceLegalEntityMatch
Description
How an invoice's company was found.
Values
| Enum Value | Description |
|---|---|
|
|
The integration named it by code. |
|
|
Found by the IČO our side of the invoice prints. |
|
|
The organisation's default company. |
Example
"EXPLICIT"
InvoiceLineKind
Description
What one line of the document is.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"ITEM"
InvoiceLinkOrigin
Description
Who made a link.
Values
| Enum Value | Description |
|---|---|
|
|
The integration sent it. |
|
|
The ERP found it: the invoice's order number, that order's consignments. |
|
|
A person made it. |
Example
"SYNC"
InvoiceLinkType
Description
An ERP document an invoice belongs to.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
A stock issue (výdajka). |
|
|
A consignment of an order. |
Example
"SALES_ORDER"
InvoicePartnerMatch
Description
How an invoice's partner was found.
Values
| Enum Value | Description |
|---|---|
|
|
The integration named it. |
|
|
Found by the party's IČO or e-mail. |
|
|
Created from the invoice's party. |
|
|
A person chose it. |
Example
"EXPLICIT"
InvoicePaymentMethod
Description
The way the invoice is to be paid, normalised; paymentMethodName is the system's own label.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"BANK_TRANSFER"
InvoicePaymentStatus
Description
How much of the invoice is paid, as the accounting system says.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The accounting system does not say. |
Example
"UNPAID"
InvoiceSettlementKind
Description
What reduced an invoice's amount due.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"ADVANCE_DEDUCTION"
InvoiceStatus
Description
Where the document stands with the accounting system.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Deleted in the accounting system (removeInvoice); kept as evidence. |
Example
"PENDING"
InvoiceSyncReason
Description
Why a sync wrote nothing.
Values
| Enum Value | Description |
|---|---|
|
|
Its sourceChangedAt is older than the one the ERP holds. |
Example
"STALE"
IssueOriginKind
Description
What an issue was created from, with the events feed's precedence: the same as Event.origin.
Values
| Enum Value | Description |
|---|---|
|
|
A consignment's issue: the goods an order's consignment took, at dispatch or by picking. A picked consignment's issue is returned once it is completed, never while it is still open. |
|
|
A stocktake's shortfall. |
|
|
Entered directly, from nothing else. |
Example
"FULFILMENT"
IssueStatus
Description
Where an issue stands. Drafts are never returned.
Values
| Enum Value | Description |
|---|---|
|
|
Open: issued continuously. Its lines already applied are off stock and carry their value. |
|
|
Completed. The events feed's issue.completed; in Event.transitions the raw status code is POSTED. |
|
|
Cancelled. Its lines net to zero: each line's value is 0. |
Example
"OPEN"
LocationKind
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"STOCK"
LotStatus
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"RELEASED"
PaymentMethod
Description
How the customer pays.
Values
| Enum Value | Description |
|---|---|
|
|
By card. |
|
|
By bank transfer. |
|
|
In cash to the courier. |
|
|
In cash at the counter. |
Example
"CARD"
PrintTemplateKind
Description
The data contract a template is written against. Read it as a string: more may be added.
Values
| Enum Value | Description |
|---|---|
|
|
One document per sales order. |
|
|
One list of the lines of a selection of orders. |
|
|
One document per receipt advice. |
|
|
One document per receipt, an opening balance included. |
|
|
One document per issue. |
|
|
One document per transfer advice. |
|
|
One document per transfer. |
|
|
One list of the lines of a selection of receipt advices. |
|
|
One list of the lines of a selection of receipts. |
|
|
One list of the lines of a selection of issues. |
|
|
One list of the lines of a selection of transfer advices. |
|
|
One list of the lines of a selection of transfers. |
|
|
One document per issued invoice. |
|
|
One document per issued advance invoice. |
|
|
One document per issued credit note. |
Example
"SALES_ORDER"
PrintTemplateOutput
Description
What a template produces. Read it as a string: more may be added.
Values
| Enum Value | Description |
|---|---|
|
|
Example
"PDF"
PrintTemplateSyntax
Description
What a template is written in. Read it as a string: more may be added.
Values
| Enum Value | Description |
|---|---|
|
|
The renderer's layout JSON. |
Example
"JSON"
ProductSortKey
Description
How products are ordered; the id breaks a tie.
Values
| Enum Value | Description |
|---|---|
|
|
By code. |
|
|
By updatedAt, oldest first: with updatedFrom and includeArchived: true, the incremental sync (an archive moves updatedAt; archivedAt tells the product is gone). updatedAt is the start time of the writing transaction, so a change committed later can sort before one already read: resume from the last updatedAt seen minus 10 minutes and de-duplicate by id. |
Example
"CODE"
ReceiptAdviceKind
Description
What the advice's document is. A purchase order's advice is drawn from the order in the ERP.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Drawn from a purchase order in the ERP. Never accepted on create or update. |
Example
"DELIVERY_NOTE"
ReceiptAdviceLineReceiptStatus
Description
Where one line stands: what arrived against it, within the tenant's receipt tolerance.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"AWAITING"
ReceiptAdviceLineSettlement
Description
What a person decided about a line's difference.
Values
| Enum Value | Description |
|---|---|
|
|
Less arrived, and it is accepted. |
|
|
More arrived, and it is kept. |
|
|
Less arrived, and it is claimed from the supplier. |
|
|
It arrived and went back. |
|
|
The rest is not coming. |
Example
"SHORT_ACCEPTED"
ReceiptAdviceState
Description
Where the advice stands, its status and what arrived combined. Derived, never stored.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Open, and nothing has arrived on an open or completed receipt. A worker may already be scanning it into a draft receipt. |
|
|
Open, something arrived, and a line is short past the tenant's receipt tolerance. |
|
|
Open, and every line arrived within the tolerance (or over). Still open until a person closes it. |
|
|
|
|
|
Example
"DRAFT"
ReceiptAdviceStatus
Values
| Enum Value | Description |
|---|---|
|
|
Being built in the ERP (an import still being matched). Has no number; never made here. |
|
|
Expects its goods. |
|
|
Finished by a person once the differences were settled. |
|
|
Called off before anything arrived. Keeps its number. |
Example
"DRAFT"
ReceiptOriginKind
Description
What a receipt was created from.
Values
| Enum Value | Description |
|---|---|
|
|
Entered directly, from nothing else. |
|
|
Received against an advice (a supplier's announced delivery). |
|
|
A stocktake's surplus. |
Example
"MANUAL"
ReceiptStatus
Description
Where a receipt stands. Drafts are never returned.
Values
| Enum Value | Description |
|---|---|
|
|
Open: being received continuously. Its lines already applied are on stock and carry their value. |
|
|
Completed. The events feed's receipt.completed; in Event.transitions the raw status code is POSTED. |
|
|
Cancelled. Its lines net to zero: each line's value is 0. |
Example
"OPEN"
SalesOrderFulfilmentStatus
Description
How much of an order has left the warehouse.
Values
| Enum Value | Description |
|---|---|
|
|
Nothing has shipped. |
|
|
Some has shipped. |
|
|
Nothing is outstanding. |
Example
"UNFULFILLED"
SalesOrderItemKind
Description
What a goods line is.
Values
| Enum Value | Description |
|---|---|
|
|
A product. |
|
|
A set, as one priced line. |
|
|
A gift, which may be priced 0 without a warning. |
Example
"PRODUCT"
SalesOrderPaymentStatus
Description
Whether an order is paid, from its payments against its total.
Values
| Enum Value | Description |
|---|---|
|
|
Nothing paid. |
|
|
A payment is announced and not yet arrived. |
|
|
A hold covers the order; no money yet. |
|
|
Part is paid. |
|
|
Paid in full. |
|
|
Part was refunded. |
|
|
Refunded in full. |
Example
"UNPAID"
SalesOrderStatus
Description
Where an order is in its life.
Values
| Enum Value | Description |
|---|---|
|
|
Not yet confirmed. |
|
|
Confirmed: numbered and reserving stock. |
|
|
Everything owed has shipped. |
|
|
Cancelled. |
|
|
Merged into another order. |
Example
"DRAFT"
ScopeType
Description
A dimension along which a key's view is narrowed.
Values
| Enum Value | Description |
|---|---|
|
|
A legal entity of the organisation. |
|
|
A warehouse. |
|
|
A country, by ISO 3166-1 alpha-2 code. |
|
|
A business partner. |
Example
"LEGAL_ENTITY"
ShipmentStatus
Description
Where a shipment stands at the carrier. More values may be added: ignore what you do not know.
Values
| Enum Value | Description |
|---|---|
|
|
The carrier accepted it; its shipping numbers are answered at this moment. |
|
|
Cancelled before the carrier took it. |
Example
"CREATED"
StockCardChangeOrigin
Description
How a change of a stock card was found.
Values
| Enum Value | Description |
|---|---|
|
|
After a stock write. |
|
|
Found by the background check. |
Example
"LIVE"
StockFigure
Description
A figure of a stock card, as stockCardChanges names what changed.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"QUANTITY"
TransferAdviceState
Description
The progress of the instruction, derived from the transfers that answer it.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Open, and no open or posted transfer has moved goods against it. A worker may already be scanning it into a draft transfer. |
|
|
|
|
|
|
|
|
|
|
|
Example
"DRAFT"
TransferAdviceStatus
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"DRAFT"
TransferOriginKind
Description
What a transfer was created from, with the events feed's precedence: the same as Event.origin.
Values
| Enum Value | Description |
|---|---|
|
|
A stocktake's relocation: goods counted in another bin than the books held them in. |
|
|
Entered directly, or against a transfer advice (see TransferLine.transferAdviceLineId). |
Example
"STOCKTAKE"
TransferStatus
Description
Where a transfer stands. Drafts are never returned.
Values
| Enum Value | Description |
|---|---|
|
|
Open: moved continuously. Its lines already applied are moved and carry their value. |
|
|
Completed. The events feed's transfer.completed; in Event.transitions the raw status code is POSTED. |
|
|
Cancelled. Its lines net to zero: each line's value is 0. |
Example
"OPEN"
Scalars
Boolean
Description
The Boolean scalar type represents true or false.
Decimal
Description
An exact decimal number, sent and returned as a JSON string ("12.30") so no digit is lost to a float. A JSON number is accepted on input.
Example
Decimal
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"
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
JSON
Description
Any JSON value, sent as itself.
Example
{}
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"
Time
Description
An instant, RFC 3339 in UTC.
Example
"10:15:30Z"
UUID
Description
A UUID in its canonical text form.
Example
"4c4efadc-fa25-44b2-b302-a0229e5a7e96"