schema {
query: Query
mutation: Mutation
}
type Query {
apiVersionPreview: String! @cost(weight: "10")
}
"Mutation collection of the Production domain"
type Mutation {
apiVersionPreview: String! @cost(weight: "10")
}
"A value a button asks for before it runs."
type ActionParameter {
"The name of the parameter."
name: String!
"The text shown."
label: String!
"A further text."
description: String
"The type of the value."
valueType: SettingValueType!
"Whether the parameter needs a value."
isRequired: Boolean!
"The value to start with."
defaultValue: SettingValue
"For a choice: the options."
options: [ChoiceOption!]!
}
"Adds an image to a category by the address of the image: the file is fetched, stored in the blob storage and assigned to the category at the end of the order of every named sales channel. Uploading a file stays with the image API; this is the shortcut for an image that is reachable on the web. Only publicly reachable http and https addresses are accepted; addresses in private networks, redirects to them and responses that take too long are refused (errorCode is IMAGE_URL_NOT_REACHABLE). The first image of a sales channel becomes its main image. - Response"
type AddCategoryImageFromUrlCommandResponse {
"The ID of the new image in the blob storage."
blobIdentifier: UUID!
}
"A type of additional cost on incoming invoices, for example freight, customs or insurance. Shared by all incoming invoices."
type AdditionalCostType {
"The ID of the additional cost type."
id: ID!
"Name of the type, unique."
name: String!
"Whether costs of this type are part of the amount payable to the supplier of the invoice. False for costs paid to third parties, such as freight invoiced by a carrier."
isPayableToSupplier: Boolean!
"Whether costs of this type are added to the purchase price of the items when the invoice is posted."
affectsPurchasePrice: Boolean!
"Whether costs of this type are on an incoming invoice, deleted invoices included. A type in use cannot be deleted, and its two flags cannot change."
isInUse: Boolean!
}
"Adds the counted quantity of an item to the inventory of a standard warehouse. The item must keep stock of its own: bills of materials, variation parents and items whose stock is kept per variation cannot be counted. For an item managed by batch number, best-before date or serial number, add one count per batch number and best-before date, or per serial number. The stock is changed only when the inventory of the warehouse is finished. Send an Idempotency-Key header to make retries safe. - Response"
type AddToInventoryCountCommandResponse {
"The ID of the newly added inventory count."
inventoryCountId: ID!
}
"An advance shipping notice: what a supplier announces to ship for one purchase order, in packages and line items. Receiving the goods is done on the purchase order ('ReceivePurchaseOrderGoods'), not on the notice."
type AdvanceShippingNotice {
"The ID of the advance shipping notice."
id: ID!
"The ID of the purchase order the notice belongs to. It cannot be changed."
purchaseOrderId: ID!
"The ID of the supplier of the purchase order."
supplierId: ID!
"The number of the notice, unique within its purchase order."
number: String!
"When the delivery is expected."
expectedDeliveryDate: DateTime
"When the notice was created."
createdAt: DateTime!
"A note on the notice. The ERP stores it without full Unicode support: characters it cannot store are replaced, typically by '?'."
note: String
"The packages, ordered by package number; empty when there are none."
packages: [AdvanceShippingNoticePackage!]!
"The line items; empty when there are none."
lineItems: [AdvanceShippingNoticeLineItem!]!
}
"Whether one action is allowed for an advance shipping notice. Keys today: UPDATE, DELETE, ADD_PACKAGE, ADD_LINE_ITEM."
type AdvanceShippingNoticeActionAvailability {
"The key of the action, for example DELETE. A client that does not know a key ignores the entry."
actionId: String!
"Whether the action is allowed right now."
isAllowed: Boolean!
"The reasons why it is not, empty when it is allowed."
blockers: [AdvanceShippingNoticeActionBlocker!]!
}
"A reason why an action is not allowed right now."
type AdvanceShippingNoticeActionBlocker {
"Stable machine-readable code of the reason, for example ADVANCE_SHIPPING_NOTICE_MANAGED_BY_FULFILLMENT_NETWORK. A client treats an unknown code as a reason that forbids the action."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"What can be done with an advance shipping notice right now. It is a hint for user interfaces and can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type AdvanceShippingNoticeAllowedActions {
"One entry per action, allowed or not."
actions: [AdvanceShippingNoticeActionAvailability!]!
}
"A line item created together with its advance shipping notice."
type AdvanceShippingNoticeCreatedLineItem {
"The ID of the new line item."
lineItemId: ID!
"The temporary identifier from the request, if one was sent."
clientId: String
}
"A package created together with its advance shipping notice."
type AdvanceShippingNoticeCreatedPackage {
"The ID of the new package."
packageId: ID!
"The package number of the new package."
packageNumber: Int!
"The temporary identifier from the request, if one was sent."
clientId: String
}
"A line item of an advance shipping notice: an item of the purchase order and its advised quantity. It is linked to the item, not to a line item of the purchase order; it may advise more than is open."
type AdvanceShippingNoticeLineItem {
"The ID of the line item."
id: ID!
"The ID of the item."
itemId: ID!
"The item number (SKU) when the line item was added."
sku: String!
"The advised quantity."
quantity: Decimal!
"The number of the package the line item is shipped in; null when the line item is not assigned to a package."
packageNumber: Int
"The batch number."
batchNumber: String
"The shelf life expiration date (best-before date)."
shelfLifeExpirationDate: DateTime
"The serial numbers, one per unit; empty when there are none."
serialNumbers: [String!]!
"A note on the line item."
note: String
}
"An advance shipping notice in a list: the properties to find and sort notices by. Read the full notice with 'GetAdvanceShippingNotice'."
type AdvanceShippingNoticeListEntry {
"The ID of the advance shipping notice."
id: ID!
"The ID of the purchase order the notice belongs to. It cannot be changed."
purchaseOrderId: ID!
"The ID of the supplier of the purchase order."
supplierId: ID!
"The number of the notice, unique within its purchase order."
number: String!
"When the delivery is expected."
expectedDeliveryDate: DateTime
"When the notice was created."
createdAt: DateTime!
"The number of packages."
packageCount: Int!
"The number of line items."
lineItemCount: Int!
}
"A package of an advance shipping notice."
type AdvanceShippingNoticePackage {
"The ID of the package."
id: ID!
"The number of the package within the notice. Line items refer to their package by this number."
packageNumber: Int!
"Where the package stands."
status: AdvanceShippingNoticePackageStatus!
"How the package is shipped."
freightType: AdvanceShippingNoticeFreightType!
"The name of the carrier as free text; null when unknown. It is not a reference to a shipping method."
carrierName: String
"The tracking number of the carrier."
trackingNumber: String
"The tracking URL of the carrier."
trackingUrl: String
"When the supplier shipped the package."
shippedAt: DateTime
"When the package is expected."
expectedDeliveryDate: DateTime
"The weight in kilograms."
weight: Decimal
"The width. Centimetres by convention; the ERP stores no unit and does not convert."
width: Decimal
"The height. Centimetres by convention; the ERP stores no unit and does not convert."
height: Decimal
"The depth. Centimetres by convention; the ERP stores no unit and does not convert."
depth: Decimal
"The number of freight pieces, for example pallets or cartons."
pieceCount: Int
"The identifiers of the package, for example SSCCs; empty when there are none."
identifiers: [AdvanceShippingNoticePackageIdentifier!]!
"A note on the package; null when there is none."
note: String
}
"A free name and value that identifies a package, for example an SSCC or a pallet label."
type AdvanceShippingNoticePackageIdentifier {
"The name of the identifier, for example SSCC."
name: String!
"The value of the identifier."
value: String!
}
"The stock Amazon has reserved internally for a Fulfillment by Amazon warehouse."
type AmazonFbaPendingWarehouse implements Warehouse {
"The ID of the warehouse."
id: ID!
"The name of the warehouse. It is unique among the active warehouses."
name: String!
"The short name of the warehouse."
shortName: String
"A free description of the warehouse."
description: String
"Whether the warehouse is active. An inactive warehouse takes no new stock postings and no new orders."
isActive: Boolean!
"The priority of the warehouse when orders are delivered: orders are served from the warehouse with the lowest number first."
deliveryPriority: Int!
"The ID of the company the warehouse belongs to."
companyId: ID
"The digit from 0 to 9 that the warehouse puts into the shipping unit numbers (NVE) of its shipments."
nveExtensionDigit: String
"Whether the stock of the warehouse is left out of the available stock."
isLockedForAvailableStock: Boolean!
"Whether the warehouse manages storage locations that this API shows (true for a warehouse with storage location management). Every other warehouse has one storage location internally, which the API does not show; its storage location operations fail with errorCode WAREHOUSE_TYPE_DOES_NOT_SUPPORT_STORAGE_LOCATIONS."
hasStorageLocations: Boolean!
"Whether stock can be posted on the warehouse directly, by a stock posting. True only for an active warehouse of the type 'Standard'; every other warehouse takes stock through the processes of its own system."
allowsDirectStockPosting: Boolean!
"Discriminator of the warehouse type."
warehouseType: WarehouseType!
"Whether the warehouse is locked for delivery: its stock stays available but orders are not delivered from it."
isLockedForDelivery: Boolean!
"The marketplace regions the warehouse serves. Never null."
marketplaceMappings: [AmazonMarketplaceMapping!]!
}
"The stock Amazon holds for the seller. It has no address and no storage structure."
type AmazonFbaWarehouse implements Warehouse {
"The ID of the warehouse."
id: ID!
"The name of the warehouse. It is unique among the active warehouses."
name: String!
"The short name of the warehouse."
shortName: String
"A free description of the warehouse."
description: String
"Whether the warehouse is active. An inactive warehouse takes no new stock postings and no new orders."
isActive: Boolean!
"The priority of the warehouse when orders are delivered: orders are served from the warehouse with the lowest number first."
deliveryPriority: Int!
"The ID of the company the warehouse belongs to."
companyId: ID
"The digit from 0 to 9 that the warehouse puts into the shipping unit numbers (NVE) of its shipments."
nveExtensionDigit: String
"Whether the stock of the warehouse is left out of the available stock."
isLockedForAvailableStock: Boolean!
"Whether the warehouse manages storage locations that this API shows (true for a warehouse with storage location management). Every other warehouse has one storage location internally, which the API does not show; its storage location operations fail with errorCode WAREHOUSE_TYPE_DOES_NOT_SUPPORT_STORAGE_LOCATIONS."
hasStorageLocations: Boolean!
"Whether stock can be posted on the warehouse directly, by a stock posting. True only for an active warehouse of the type 'Standard'; every other warehouse takes stock through the processes of its own system."
allowsDirectStockPosting: Boolean!
"Discriminator of the warehouse type."
warehouseType: WarehouseType!
"Whether the warehouse is locked for delivery: its stock stays available but orders are not delivered from it."
isLockedForDelivery: Boolean!
"The marketplace regions the warehouse serves. Never null."
marketplaceMappings: [AmazonMarketplaceMapping!]!
}
"The assignment of a Fulfillment by Amazon warehouse to a marketplace region."
type AmazonMarketplaceMapping {
"The Amazon region, for example EU."
region: String!
"The ID of the Amazon marketplace."
marketplaceId: String!
"Whether the stock is shared between the marketplaces of the region."
isSharedStock: Boolean!
}
"What the sessions of one application show. It contains no user or computer names."
type ApplicationHealth {
"The stable key of the application, for example updater or messageBroker."
applicationId: String!
"The name of the application."
name: String!
"Whether it is a service or a client."
kind: ApplicationKind!
"Whether it has a living session."
state: ApplicationState!
"How many sessions are alive."
aliveSessionCount: Int!
"How many sessions are overdue."
staleSessionCount: Int!
"How many living sessions were asked to log off, for example by an update."
terminationRequestedCount: Int!
"The latest sign of life of any living session."
lastHeartbeatAt: DateTime
"When the longest-running living session started."
oldestLoginAt: DateTime
}
"Applies a set of changes to setting values in one transaction: all of them or none, up to 100 changes per call (more is rejected with the code TooManyChanges). A change either sets a value or resets the setting (reset=true); a missing value never resets. This is a command and creates no resource, and a deliberate exception to the rule against batch operations: a page of the settings dialog saves in one transaction because fields depend on each other. Each rejected change names its setting key in extensions.settingKey. Fails with a GraphQL error whose extensions.code is one of SettingPermissionDenied, SettingNotFound, SettingReadOnly, SettingValueInvalid, SettingValueTypeMismatch, SettingScopeNotSupported, SettingsInconsistent or TooManyChanges. Nothing is saved when one change fails. - Response"
type ApplySettingValueChangesCommandResponse {
"The keys of the settings that changed. A change to the same value is left out."
changedKeys: [String!]!
"Whether a changed setting only takes effect after Wawi restarts."
requiresRestart: Boolean!
}
"Applies a list of changes to the storage locations of a warehouse in one go: every row says itself whether it creates, changes or deactivates a location, so thousands of locations can be synchronised with one call instead of thousands. Every row is checked first against the state the set produces; when a row is invalid the request fails with an error naming every faulty row by position and nothing is applied. Otherwise the set is applied asynchronously in one transaction and its state is read from the change set. A location may appear in at most one row. The rules of the single operations apply to every row. This is the one set-wise write of the warehouse, justified by the volume; single operations stay atomic. errorCode is one of: at least one row is invalid. The error lists every faulty row with its position (for example STORAGE_LOCATION_NAME_INVALID, STORAGE_LOCATION_NAME_NOT_UNIQUE, STORAGE_LOCATION_TYPE_NOT_CREATABLE, STORAGE_LOCATION_NOT_FOUND, STORAGE_LOCATION_REFERENCED_TWICE, STORAGE_LOCATION_HAS_STOCK, TOO_MANY_ROWS); WAREHOUSE_NOT_FOUND (the warehouse was not found); WAREHOUSE_TYPE_DOES_NOT_SUPPORT_STORAGE_LOCATIONS (the warehouse has no storage locations). - Response"
type ApplyStorageLocationChangesCommandResponse {
"The ID of the change set."
changeSetId: UUID!
}
"The registration of an app that uses the Wawi API: its state, the Wawi user it acts as and the scopes it may use."
type AppRegistration {
"The ID of the app registration."
id: ID!
"The ID of the first registration of a multi-instance app. Empty for the first registration itself."
parentId: ID
"The ID of the Wawi user who opened the registration. Empty if no user is stored."
createdBy: ID
"The ID of the Wawi user the app acts as. Empty while it is not fixed."
appUserId: ID
"The state: PENDING or APPROVED. Clients must accept values they do not know."
status: String!
"The registration kind: ONE_INSTANCE, MULTI_INSTANCE, PER_USER_INSTANCE or PER_USER_LOGIN_INSTANCE. Clients must accept values they do not know."
registrationType: String!
"The name of the provider of the app. Empty if not set."
providerName: String
"Whether the app was registered through the JTL cloud."
isCloudApp: Boolean!
"The API scopes the app may use. For 'GetCurrentApp' these are the scopes of the token."
grantedScopes: [String!]!
"The display name of the app. Empty if not set."
displayName: String
"The description of the app. Empty if not set."
description: String
"When the registration was opened."
createdAt: DateTime!
"The version of the app. Empty if not set."
appVersion: String
"When the registration was approved. Empty while it is pending."
approvedAt: DateTime
"The ID the app identifies itself with."
appId: String!
}
"Assigns a purchase order to an incoming invoice: every purchase order line with a quantity left to invoice becomes a line item, with the quantity chosen by \"quantityBasis\" minus what all incoming invoices already contain (this one included), the confirmed price (otherwise the ordered price) and the tax rate of the line. Lines of an item become item line items; all other lines (free lines, shipping charges, surcharges, discounts) become free-text line items. The purchase order itself does not change; its invoiced quantities are derived from the line items. A purchase order that is already on another invoice can be assigned too. - Response"
type AssignIncomingInvoicePurchaseOrderCommandResponse {
"The assigned purchase order."
purchaseOrderId: ID!
"The IDs of the new line items."
lineItemIds: [ID!]!
}
"Assigns a payment transaction to a sales invoice: the money is recorded as a payment of the invoice. Without 'amount', the ERP records what is open on the document, at most what is left of the transaction (less a cash discount the payment terms allow); when nothing is open on the document, it links the one payment of the document that matches and has no transaction yet, for example a payment from the shop, or else records what is left of the transaction as an overpayment. With 'amount', it always records a new payment of that amount; the document may become overpaid. A transaction of money sent or taken back records a payout (a negative payment). Fees of the payment provider that belong to the transaction are booked as order costs. A document that becomes fully paid starts its workflows. For a split, call it once per document. Errors: PAYMENT_TRANSACTION_NOT_FOUND (the payment transaction was not found); PAYMENT_ACCOUNT_HIDDEN (the payment account is hidden; show it with 'ShowPaymentAccount' first); PAYMENT_TRANSACTION_IGNORED (the transaction is ignored; unignore it first); PAYMENT_TRANSACTION_IS_FEE (the transaction is a fee; fees are attached to the sales order of the transaction they belong to); PAYMENT_TRANSACTION_NOT_COMPLETED (the transaction is not completed yet); NO_OPEN_AMOUNT (nothing of the transaction is left to assign); AMOUNT_NOT_POSITIVE (the amount is not greater than 0); AMOUNT_EXCEEDS_OPEN_AMOUNT (the amount is more than is left of the transaction: more than 'openAmount', for money sent or taken back more than its magnitude); OPEN_AMOUNT_CHANGED (the open amount of the transaction differs from 'expectedOpenAmount'); CURRENCY_MISMATCH (the transaction and the document have different currencies); PAYMENT_TRANSACTION_ALREADY_ASSIGNED_TO_DOCUMENT (the transaction already has a payment on this document; change that payment instead); SALES_INVOICE_NOT_FOUND (the sales invoice was not found); SALES_INVOICE_IS_DRAFT (the sales invoice is a draft); SALES_INVOICE_CANCELLED (the sales invoice is cancelled); SALES_INVOICE_TYPE_NOT_SUPPORTED (the invoice is not a regular sales invoice, for example a collective or a down payment invoice). - Response"
type AssignPaymentTransactionToSalesInvoiceCommandResponse {
"The ID of the payment recorded or linked."
paymentId: ID!
"Whether a payment was recorded or an existing one linked."
outcome: PaymentTransactionAssignOutcome!
"What is left of the transaction afterwards."
openAmount: Decimal!
"How much of the transaction is assigned afterwards."
assignmentStatus: PaymentTransactionAssignmentStatus!
"Other transactions whose assigned and open amounts changed with this call: fee transactions that refer to this transaction and whose fees were booked on or removed from the sales order. Empty in most cases."
affectedPaymentTransactionIds: [ID!]!
}
"Assigns a payment transaction to a sales order: the money is recorded as a payment of the order, on the order itself and not spread over its invoices. Without 'amount', the ERP records what is open on the document, at most what is left of the transaction (less a cash discount the payment terms allow); when nothing is open on the document, it links the one payment of the document that matches and has no transaction yet, for example a payment from the shop, or else records what is left of the transaction as an overpayment. With 'amount', it always records a new payment of that amount; the document may become overpaid. A transaction of money sent or taken back records a payout (a negative payment). Fees of the payment provider that belong to the transaction are booked as order costs. A document that becomes fully paid starts its workflows. For a split, call it once per document. Errors: PAYMENT_TRANSACTION_NOT_FOUND (the payment transaction was not found); PAYMENT_ACCOUNT_HIDDEN (the payment account is hidden; show it with 'ShowPaymentAccount' first); PAYMENT_TRANSACTION_IGNORED (the transaction is ignored; unignore it first); PAYMENT_TRANSACTION_IS_FEE (the transaction is a fee; fees are attached to the sales order of the transaction they belong to); PAYMENT_TRANSACTION_NOT_COMPLETED (the transaction is not completed yet); NO_OPEN_AMOUNT (nothing of the transaction is left to assign); AMOUNT_NOT_POSITIVE (the amount is not greater than 0); AMOUNT_EXCEEDS_OPEN_AMOUNT (the amount is more than is left of the transaction: more than 'openAmount', for money sent or taken back more than its magnitude); OPEN_AMOUNT_CHANGED (the open amount of the transaction differs from 'expectedOpenAmount'); CURRENCY_MISMATCH (the transaction and the document have different currencies); PAYMENT_TRANSACTION_ALREADY_ASSIGNED_TO_DOCUMENT (the transaction already has a payment on this document; change that payment instead); SALES_ORDER_NOT_FOUND (the sales order was not found); SALES_ORDER_HAS_INVOICE (the sales order has a finalised invoice; assign the transaction to the invoice). - Response"
type AssignPaymentTransactionToSalesOrderCommandResponse {
"The ID of the payment recorded or linked."
paymentId: ID!
"Whether a payment was recorded or an existing one linked."
outcome: PaymentTransactionAssignOutcome!
"What is left of the transaction afterwards."
openAmount: Decimal!
"How much of the transaction is assigned afterwards."
assignmentStatus: PaymentTransactionAssignmentStatus!
"Other transactions whose assigned and open amounts changed with this call: fee transactions that refer to this transaction and whose fees were booked on or removed from the sales order. Empty in most cases."
affectedPaymentTransactionIds: [ID!]!
}
"Lets the ERP pick the supplier of an entry and sets it: the item's default supplier, the fastest, or the cheapest for the quantity of this entry, among the active suppliers that have the item and are not excluded from the purchase list. The entry does not need a supplier before. The answer is the chosen supplier. The purchase list has no workflow events. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: PURCHASE_LIST_ENTRY_NOT_FOUND (the entry was not found); PURCHASE_LIST_NO_ELIGIBLE_SUPPLIER (no supplier can be picked: none has the item, or none is active and allowed, or the item has no default supplier); PURCHASE_LIST_ENTRY_ALREADY_EXISTS (another entry has this item with the picked supplier and the warehouse of this entry). - Response"
type AssignPurchaseListEntrySupplierCommandResponse {
"The ID of the supplier that was set."
supplierId: ID!
}
"An attribute in a list."
type AttributeListEntry {
"The ID of the attribute."
id: ID!
"The kind of the attribute."
kind: AttributeKind!
"The kind of record the attribute can be assigned to. Known values: ITEM, CATEGORY. The set can grow; a client must tolerate values it does not know."
entityType: String!
"The data type of the attribute value. Known values: INTEGER, DECIMAL, TEXT, CHECKBOX, VALUE_LIST, URL, EMAIL, PHONE, COUNTRY_ISO, PRICE, DATE, SHORT_TEXT. The set can grow; a client must tolerate values it does not know."
dataType: String!
"The technical identifier of the attribute."
code: String!
"The name of the group the attribute is displayed under."
groupName: String!
"The name of the attribute. For multilingual attributes the name in the default language."
name: String!
"An internal description of the attribute for staff."
description: String
"The position of the attribute within its group."
sortOrder: Int!
"Indicates an attribute supplied by the system."
isSystem: Boolean!
}
"The name of a multilingual attribute in one language."
type AttributeName {
"The language as BCP 47 tag, for example 'de' or 'de-AT'. Case does not matter on input; the output uses the canonical form (language lower case, region upper case)."
languageTag: String!
"The name in this language. It must not contain the character '#'."
name: String!
}
"An online shop the attribute is transferred to."
type AttributeSalesChannel {
"The ID of the online shop. Only online shops are allowed, no marketplace channels."
salesChannelId: ID!
}
"The text of an allowed value of a multilingual attribute in one language."
type AttributeValueText {
"The language as BCP 47 tag, for example 'de' or 'de-AT'. Case does not matter on input; the output uses the canonical form (language lower case, region upper case)."
languageTag: String!
"The text in this language. It must not be empty and must not contain the character '|'."
text: String!
}
"Runs the automatic assignment for one payment transaction now, whatever the setting for automatic assignment says. It finds the document by the transaction ID of an existing payment, by the payment reference, the amount, the customer number and the name, and can assign to sales orders, sales invoices and incoming invoices, and confirm refunds. When several documents match about equally well, nothing is assigned. A payment of an incoming invoice it records cannot be removed with 'UnassignPaymentTransaction'. A document that becomes fully paid starts its workflows. Errors: PAYMENT_TRANSACTION_NOT_FOUND (the payment transaction was not found); PAYMENT_ACCOUNT_HIDDEN (the payment account is hidden; show it with 'ShowPaymentAccount' first); PAYMENT_TRANSACTION_IGNORED (the transaction is ignored; unignore it first); PAYMENT_TRANSACTION_IS_FEE (the transaction is a fee; fees are attached to the sales order of the transaction they belong to); PAYMENT_TRANSACTION_NOT_COMPLETED (the transaction is not completed yet); NO_OPEN_AMOUNT (nothing of the transaction is left to assign). - Response"
type AutoAssignPaymentTransactionCommandResponse {
"Whether the transaction was assigned."
outcome: PaymentTransactionAutoAssignOutcome!
"What is left of the transaction afterwards."
openAmount: Decimal!
"How much of the transaction is assigned afterwards."
assignmentStatus: PaymentTransactionAssignmentStatus!
"Other transactions whose assigned and open amounts changed with this call: fee transactions that refer to this transaction and whose fees were booked on or removed from the sales order. Empty in most cases."
affectedPaymentTransactionIds: [ID!]!
}
"The identifiers of an item that is not traded and so has only its item number."
type BasicItemIdentifiers {
"The item number (SKU), unique among all items. Every item has one."
sku: String!
}
"A bill of materials for a production item. It defines which operations must be performed and which components are required to produce the production item."
type BillOfMaterials {
"The ID of the bill of materials."
id: ID!
"The ID of the production item that is produced with this bill of materials."
productionItemId: ID!
"The version of the bill of materials. It is assigned consecutively per production item."
version: Int!
"The name of the bill of materials."
name: String!
"The description of the bill of materials, or null if it has no description."
description: String
"The state of the bill of materials."
state: BillOfMaterialsState!
"The timestamp when the bill of materials was created."
createdAt: DateTime!
"The timestamp when the bill of materials was last changed, or null if it has not been changed yet."
changedAt: DateTime
"The ID of the user who last changed the bill of materials, or null if it has not been changed yet."
changedBy: ID
"The timestamp when the bill of materials was activated, or null if it has not been activated yet."
activatedAt: DateTime
"The last calculated quantity of the production item that can be produced with this bill of materials from the available stock of its components."
producibleStock: Decimal!
"The timestamp when the producible stock was last calculated, or null if it has not been calculated yet."
producibleStockCalculatedAt: DateTime
"Specifies requirements for the production input of all components of this bill of materials regarding the shelf life end dates of the stock accounts to be debited. This specification can be overridden for individual items of this bill of materials."
componentPostingsShelfLifeEndDateRequirements: OverallComponentPostingsInventoryAccountingDataRequirements!
"Specifies requirements for the production input of all components of this bill of materials regarding the batch numbers of the stock accounts to be debited. This specification can be overridden for individual items of this bill of materials."
componentPostingsBatchNumberRequirements: OverallComponentPostingsInventoryAccountingDataRequirements!
"Indicates how the shelf life end date of the produced item is calculated after completing a lot, or null if no shelf life end date is calculated."
shelfLifeEndDateGenerationMode: ShelfLifeEndDateGenerationMode
"A time span that is added when calculating the shelf life end date of the produced item after completing a lot, or null if no time span is added."
additionalShelfLifeEndDateTime: TimeSpan
"How far the actually used quantity of the items may exceed their planned quantity, or null if it must not exceed it. This configuration can be overridden for individual items of this bill of materials."
upwardQuantityDeviation: QuantityDeviationConfiguration
"How far the actually used quantity of the items may fall below their planned quantity, or null if it must not fall below it. This configuration can be overridden for individual items of this bill of materials."
downwardQuantityDeviation: QuantityDeviationConfiguration
"The parent components (operations) of the bill of materials with their child components, ordered by their sort index."
children: [BillOfMaterialsParentComponent]
}
"A configuration group of a bill of materials."
type BillOfMaterialsConfigurationGroup implements BillOfMaterialsChildComponent {
"The ID of this bill of materials component."
id: ID!
"The ID of the bill of materials this component belongs to."
billOfMaterialsId: ID!
"The position of this component among its siblings: operations are ordered within the bill of materials, items and configuration groups share one order within their parent component. Changed only by moving the component."
sortIndex: Int!
"The type of this child component."
childComponentType: BillOfMaterialsChildComponentType!
"The ID of the parent component (e.g. an operation) this child component belongs to."
parentId: ID!
"The ID of the configuration group underlying the bill of materials configuration group."
configurationGroupId: ID!
}
"An item of a bill of materials."
type BillOfMaterialsItem implements BillOfMaterialsChildComponent {
"The ID of this bill of materials component."
id: ID!
"The ID of the bill of materials this component belongs to."
billOfMaterialsId: ID!
"The position of this component among its siblings: operations are ordered within the bill of materials, items and configuration groups share one order within their parent component. Changed only by moving the component."
sortIndex: Int!
"The type of this child component."
childComponentType: BillOfMaterialsChildComponentType!
"The ID of the parent component (e.g. an operation) this child component belongs to."
parentId: ID!
"The ID of the item underlying the bill of materials item."
itemId: ID!
"The quantity of this item required to produce the production item. Must be greater than zero."
quantity: Decimal!
"The ID of the measurement unit in which the quantity is stated, or null if it is stated in the sales unit of the item."
measurementUnitId: ID
"The ID of the operation step the item is assigned to, or null if it is not assigned to an operation step."
operationStepId: ID
"Specifies requirements for the production input of this bill of materials item regarding the shelf life end dates of the stock accounts to be debited."
componentPostingsShelfLifeEndDateRequirements: ComponentPostingsInventoryAccountingDataRequirements!
"Specifies requirements for the production input of this bill of materials item regarding the batch numbers of the stock accounts to be debited."
componentPostingsBatchNumberRequirements: ComponentPostingsInventoryAccountingDataRequirements!
"How far the actually used quantity may exceed the planned quantity, or null if it must not exceed it."
upwardQuantityDeviation: QuantityDeviationConfiguration
"How far the actually used quantity may fall below the planned quantity, or null if it must not fall below it."
downwardQuantityDeviation: QuantityDeviationConfiguration
}
"An operation of a bill of materials."
type BillOfMaterialsOperation implements BillOfMaterialsParentComponent {
"The ID of this bill of materials component."
id: ID!
"The ID of the bill of materials this component belongs to."
billOfMaterialsId: ID!
"The position of this component among its siblings: operations are ordered within the bill of materials, items and configuration groups share one order within their parent component. Changed only by moving the component."
sortIndex: Int!
"The type of this parent component."
parentComponentType: BillOfMaterialsParentComponentType!
"The child components (items and configuration groups) of this parent component, ordered by their sort index."
children: [BillOfMaterialsChildComponent]
"The ID of the operation underlying the bill of materials operation."
operationId: ID!
}
"A yes or no value."
type BooleanOptionValue implements OptionValue {
"Discriminator of the value type."
valueType: OptionValueType!
"True or false."
value: Boolean!
}
"A yes or no value."
type BooleanValue implements SettingValue {
"Discriminator of the value type."
valueType: SettingValueType!
"True or false."
value: Boolean!
}
"A yes or no value."
type BooleanWarehouseSettingValue implements WarehouseSettingValue {
"Discriminator of the value type."
valueType: WarehouseSettingValueType!
"True or false."
value: Boolean!
}
"A button that runs an action."
type ButtonNode implements SettingsNode {
"Discriminator of the node kind."
kind: SettingsNodeKind!
"The stable ID of the node. For an input it equals the setting key, for example sales.invoice.dueDays."
id: String!
"The ID of the group the node belongs to. Absent for a top-level node."
parentId: String
"The depth in the tree. A top-level node has level 1."
level: Int!
"The position among the nodes of the same parent. Lower comes first."
sortOrder: Int!
"The text shown for the node, in the language of the caller."
label: String
"A further text, in the language of the caller."
description: String
"A link to a help page."
helpUrl: String
"Extra words the search finds the node by."
keywords: [String!]!
"The scopes the setting can be stored for. Almost every setting has only Global."
scopes: [SettingsScope!]!
"The Wawi permission the caller needs to see and change the node."
requiredPermission: String
"Whether the caller cannot change the setting."
isReadOnly: Boolean!
"Rules that make the node visible, enabled or required depending on other settings."
dependencies: [SettingsDependency!]!
"The ID of the action. Run it with CreateSettingsActionExecution."
actionId: String!
"Whether the action changes or removes data."
isDestructive: Boolean!
"A text to confirm before the action runs."
confirmationText: String
"Values to ask for before the action runs."
parameters: [ActionParameter!]!
"Whether the action can take long, so the frontend should expect Running and poll."
runsLong: Boolean!
}
"A connection to a list of items."
type CalculateRestockSuggestionsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [CalculateRestockSuggestionsEdge!]
"A flattened list of the nodes."
nodes: [RestockSuggestion!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type CalculateRestockSuggestionsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: RestockSuggestion!
}
"Whether one action is allowed on a cancellation reason right now."
type CancellationReasonActionAvailability {
"The stable key of the action: 'UPDATE' or 'DELETE'."
action: String!
"Whether the action is allowed now."
isAllowed: Boolean!
"Why the action is not allowed. Empty when it is allowed."
blockers: [CancellationReasonActionBlocker!]!
}
"One reason why an action on a cancellation reason is not allowed."
type CancellationReasonActionBlocker {
"Stable machine-readable code, for example CANCELLATION_REASON_IN_USE."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"What can be done with a cancellation reason right now. It is a hint for user interfaces and can be outdated with the next change; the action itself checks again and refuses with the same blocker codes."
type CancellationReasonAllowedActions {
"One entry per action, allowed or not."
actions: [CancellationReasonActionAvailability!]!
}
"Cancels a sales credit note with a cancellation document. Its payouts belong to no document then and leave QueryPayments; refunds lose the link. - Response"
type CancelSalesCreditNoteCommandResponse {
"The ID of the new cancellation document. See GetSalesCreditNoteCancellation."
salesCreditNoteCancellationId: ID!
}
"Cancels a finalized invoice. A cancellation document is created with its own number and a copy of the line items; the payments of the invoice are moved to the sales order, and the quantities the invoice carried are free again. External invoices can be cancelled. The response carries the ID of the cancellation document. A refusal carries 'blockers' with all reasons, each with a code and a message. Errors: errorCode is SALES_INVOICE_NOT_FOUND (no sales invoice with this ID); errorCode is SALES_INVOICE_ALREADY_CANCELLED (the invoice is cancelled already); errorCode is SALES_INVOICE_IS_DRAFT (a draft cannot be cancelled; delete it); errorCode is SALES_INVOICE_HAS_UNCANCELLED_CORRECTION (a correction of the invoice exists that is not cancelled); errorCode is SALES_INVOICE_HAS_NO_SALES_ORDER (the invoice is not external and has no sales order); errorCode is CANCELLATION_REASON_NOT_FOUND (no cancellation reason with this ID); errorCode is CANCELLATION_COMMENT_REQUIRED (the reason requires a comment); errorCode is CANCELLATION_COMMENT_TOO_LONG (the comment is longer than 100 characters); errorCode is SALES_INVOICE_CANCELLATION_FAILED (the cancellation document could not be created). - Response"
type CancelSalesInvoiceCommandResponse {
"The ID of the new cancellation document."
salesInvoiceCancellationId: ID!
}
"Cancels a sales invoice correction. Errors: errorCode is SALES_INVOICE_CORRECTION_NOT_FOUND, SALES_INVOICE_CORRECTION_CANNOT_BE_CANCELLED (blockers SALES_INVOICE_CORRECTION_ALREADY_CANCELLED, SALES_INVOICE_CORRECTION_IS_DRAFT), CANCELLATION_REASON_NOT_FOUND, CANCELLATION_COMMENT_TOO_LONG or CANCELLATION_COMMENT_REQUIRED. - Response"
type CancelSalesInvoiceCorrectionCommandResponse {
"The ID of the new cancellation document. See GetSalesInvoiceCancellation."
salesInvoiceCancellationId: ID!
}
"A category of the catalog. There is one kind of category, so the model is not polymorphic. Texts, images, sales channels, customer groups and custom fields are sub-resources and are not part of it."
type Category {
"The ID of the category."
id: ID!
"The ID of the parent category. Absent for a category on the top level."
parentId: ID
"Name of the category in the default language. Absent when the category has no name in the default language."
name: String
"The names of the category and its parents from the top level, in the default language. Absent when the category has no name in the default language."
path: String
"The position among the siblings, 0 to 65000. Changed with 'UpdateCategory', 'CreateCategory' or 'SetCategoryChildOrder'."
sortNumber: Int!
"Number of direct subcategories."
childCount: Int!
"Number of items assigned directly to the category."
itemCount: Int!
"The sales channels that use this category as their root category. Such a category cannot be moved or deleted. Empty for most categories. Never null."
rootOfSalesChannelIds: [ID]!
}
"An action on a category whose availability is reported by 'GetCategoryAllowedActions'. A catalogue entry, not an enum: new actions are new entries."
type CategoryAction {
"The stable key of the action, for example Delete. It is the 'actionId' in the allowed actions."
id: String!
"Name of the action in the language of the request."
name: String!
"What the action does and what it is checked against, in the language of the request."
description: String
}
"Whether one action on a category would be allowed right now, and if not, why not. The action is a key of the catalogue 'QueryCategoryActions', not an enum, because the list of actions can grow without a change of the schema. Keys today: Delete, Move."
type CategoryActionAvailability {
"The key of the action, for example Delete. A client that does not know a key ignores the entry."
actionId: String!
"Whether the action would go through right now."
isAllowed: Boolean!
"The reasons why it would not. Empty when it is allowed."
blockers: [CategoryActionBlocker!]!
}
"One reason why an action on a category is not allowed."
type CategoryActionBlocker {
"Stable machine-readable code of the reason, for example CATEGORY_IS_SALES_CHANNEL_ROOT."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"What can be done with a category right now. It is a hint for user interfaces and can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type CategoryAllowedActions {
"One entry per action, allowed or not."
actions: [CategoryActionAvailability!]!
}
"A yes or no."
type CategoryBooleanFieldValue implements CategoryFieldValue {
"Discriminator of the value variant."
type: CategoryFieldValueType!
"Whether it is yes."
flag: Boolean!
}
"A custom field (German 'Eigenes Feld') of a category with its value. A custom field has neither a sales channel nor a language."
type CategoryCustomField {
"The ID of the custom field."
customFieldId: ID!
"The value."
value: CategoryFieldValue
}
"A date with time."
type CategoryDateFieldValue implements CategoryFieldValue {
"Discriminator of the value variant."
type: CategoryFieldValueType!
"The date. Only the calendar date counts, the time of day is ignored."
date: DateTime!
}
"A decimal number."
type CategoryDecimalFieldValue implements CategoryFieldValue {
"Discriminator of the value variant."
type: CategoryFieldValueType!
"The number."
number: Decimal!
}
"The texts of a category in one language, for the default or for one sales channel."
type CategoryDescription {
"The language of the texts as BCP 47 tag, for example 'de' or 'de-AT'; lower case."
languageTag: String!
"The sales channel the texts apply in. The Wawi sales channel carries the default texts."
salesChannelId: ID!
"The name of the category. Absent for texts of a sales channel or a further language that have no name."
name: String
"Description of the category, may contain HTML."
description: String
"Title for search engines."
seoTitle: String
"Description for search engines."
metaDescription: String
"Keywords for search engines."
metaKeywords: String
"Path segment of the category URL in the shop."
urlPath: String
}
"The discount a customer group gets on the items of a category in a sales channel. A customer group without a discount is not listed."
type CategoryDiscount {
"The sales channel the discount applies in."
salesChannelId: ID!
"The ID of the customer group."
customerGroupId: ID!
"Name of the customer group in the default language."
customerGroupName: String
"The discount in percent, for example 7.5 for 7.5 percent."
percentage: Decimal!
}
"A customer group for which a category is hidden in a sales channel. A customer group that is not listed sees the category."
type CategoryHiddenCustomerGroup {
"The sales channel the category is hidden in."
salesChannelId: ID!
"The ID of the customer group."
customerGroupId: ID!
"Name of the customer group in the default language."
customerGroupName: String
}
"An image of a category. The image data is not part of the category: the category carries URLs into the blob storage. Uploading and assigning an image stays with the blob endpoints."
type CategoryImage {
"The ID of the image in the blob storage."
blobIdentifier: UUID!
"The URL the image is downloaded from."
url: String!
"The URL of the preview-sized image. Absent when there is none."
previewUrl: String
"Original file name of the image including its extension."
fileName: String
"Width of the image in pixels."
width: Int
"Height of the image in pixels."
height: Int
"File size in kilobytes, bytes divided by 1024 and truncated."
fileSizeKilobytes: Int
"Position of the image among the images of its scope, starting at 1."
sortNumber: Int!
"Whether it is the main image of its scope. Read-only: it is the image with sort number 1."
isMainImage: Boolean!
"When the image was last changed."
changedAt: DateTime
"The sales channel the image is assigned to. The Wawi sales channel carries the default images of the category."
salesChannelId: ID!
}
"A whole number."
type CategoryIntegerFieldValue implements CategoryFieldValue {
"Discriminator of the value variant."
type: CategoryFieldValueType!
"The number."
number: Int!
}
"One item in a category: the properties needed to find and show it. The full item is read with the item query."
type CategoryItemEntry {
"The ID of the item."
id: ID!
"The article number (SKU)."
sku: String!
"Name of the item in the default language."
name: String!
"Whether the item is active."
isActive: Boolean!
"The GTIN (EAN) of the item. Absent when it has none."
gtin: String
"The ID of the variation parent when the item is a variation child. Absent otherwise."
variationParentId: ID
}
"One row of a category list: the properties needed to find a category and to walk the tree. The same row is used for the flat list, the top-level categories, the children of a category and the ancestors of a category. A category with a parent is identified by the parent; the top level is not a category and has no ID."
type CategoryListEntry {
"The ID of the category."
id: ID!
"The ID of the parent category. Absent for a category on the top level."
parentId: ID
"Whether the category is on the top level, that is, has no parent. It is the same as an absent 'parentId' and exists because an absent value cannot be filtered on."
isTopLevel: Boolean!
"Name of the category in the default language. Absent when the category has no name in the default language."
name: String
"The position among the siblings, 0 to 65000. Changed with 'UpdateCategory', 'CreateCategory' or 'SetCategoryChildOrder'."
sortNumber: Int!
"Number of direct subcategories. A value greater than zero means the category can be expanded."
childCount: Int!
"Number of items assigned directly to the category, not counting subcategories."
itemCount: Int!
}
"A sales channel of a category: whether the category is activated in it, whether it can be, and what the channel offers for categories. Activation and deactivation apply to the category and all of its subcategories."
type CategorySalesChannel {
"The ID of the sales channel."
salesChannelId: ID!
"Name of the sales channel."
name: String!
"Whether the category is activated in the sales channel."
isActivated: Boolean!
"Whether categories can be activated in this kind of sales channel at all. Shops, connectors and point of sale can; the Wawi channel, marketplaces and SCX cannot."
supportsActivation: Boolean!
"Whether the category can be activated in the sales channel now: the channel supports it and the category is the root category of the channel or lies below it. A channel without a root category accepts every category."
canBeActivated: Boolean!
"Whether the texts of a category can be maintained for this sales channel."
supportsDescriptions: Boolean!
"The root category of the sales channel. Absent when the channel has none, which means every category fits."
rootCategoryId: ID
"The customer groups of the sales channel, which hidden customer groups and discounts can be set for. Never null."
customerGroups: [SalesChannelCustomerGroup!]!
}
"A text value."
type CategoryTextFieldValue implements CategoryFieldValue {
"Discriminator of the value variant."
type: CategoryFieldValueType!
"The text."
text: String!
}
"One row of the category tree in depth-first order: every category comes directly before its first child and after the previous sibling's subtree. The rows carry the parent, so the tree is rebuilt in one pass."
type CategoryTreeEntry {
"The ID of the category."
id: ID!
"The ID of the parent category. Absent for a category on the top level."
parentId: ID
"Level in the whole tree, starting at 1 for the top level. It does not depend on the requested subtree."
depth: Int!
"Name of the category in the default language. Absent when the category has no name in the default language."
name: String
"The position among the siblings, 0 to 65000. Changed with 'UpdateCategory', 'CreateCategory' or 'SetCategoryChildOrder'."
sortNumber: Int!
"Number of direct subcategories, also those that were cut off by the requested depth."
childCount: Int!
"Number of items assigned directly to the category, not counting subcategories."
itemCount: Int!
}
"Reserves a line item on other storage locations, for example when the stock is not where the pick list says. Only the addressed line item is changed. The new line items point to the old one in 'splitFromLineItemId'; when everything was reserved anew the old line item is removed, when only a part was reserved the old one keeps the remainder (outcome Partial). A refused action reports 'errorCode' (the main reason) and 'blockers' (all reasons, each with 'code' and 'message'). errorCode is one of: PICK_LIST_NOT_FOUND (the pick list was not found); PICK_LIST_LINE_ITEM_NOT_FOUND (the line item was not found on the pick list); PICK_LIST_LINE_ITEM_ALREADY_PICKED (the line item is Picked or further); PICK_LIST_LINE_ITEM_HELD_BY_SESSION (a delivery session holds the line item); STORAGE_LOCATION_NOT_FOUND (a given storage location was not found or belongs to another warehouse); PICK_LIST_LINE_ITEM_PRE_RESERVED (the line item was reserved ahead of picking and cannot be reserved anew); PICK_LIST_NOTHING_RESERVED (nothing could be reserved on the given or any other storage location; the line item is unchanged); PICK_LIST_RESERVATION_CHANGE_FAILED (the change failed for another reason; nothing was changed). - Response"
type ChangePickListLineItemReservationCommandResponse {
"Whether the whole quantity or only a part was reserved anew."
outcome: PickListReservationChangeOutcome!
"The line items that now hold the reservation."
reassignedLineItemIds: [ID!]!
"The quantity that stays on the old line item. 0 when the old line item is removed."
remainingQuantity: Decimal!
}
"A characteristic: a property such as material or colour with which items are described. A characteristic has a list of values; items are assigned one or more of them. The characteristic carries its name per language, how it behaves and is presented, and the groups it belongs to."
type Characteristic {
"The ID of the characteristic."
id: ID!
"The names per language. The name in the default language is always present."
names: [CharacteristicName!]!
"How the values are presented to customers in the online shop: TEXT, SELECT_BOX, IMAGE or IMAGE_AND_TEXT. It changes how the values are shown, not which fields exist. The list can grow with the shops; a client treats a value it does not know like TEXT. An empty or unknown stored value is read as TEXT."
displayType: String!
"Indicates that several values of the characteristic can be assigned to one item. Online shops offer several selections in the filter navigation."
isMultiSelect: Boolean!
"Indicates that the characteristic is shown to customers in the online shop."
isVisibleInShop: Boolean!
"Indicates that the characteristic is transferred to eBay as an item specific."
isEbayAttribute: Boolean!
"The position of the characteristic among all characteristics in a custom order, counted from 1. Null means there is no custom order and the entries are sorted alphabetically by their name in the default language. Set a custom order with the order operations; the API does not accept single positions."
sortOrder: Int
"The image of the characteristic, shown when the display type includes images. Absent when it has none."
image: CharacteristicImage
"The characteristic groups the characteristic belongs to. A characteristic can belong to several groups."
groups: [CharacteristicGroupAssignment!]!
"The number of values of the characteristic."
valueCount: Int!
"The number of items that have at least one value of the characteristic."
itemCount: Int!
}
"Whether one action would be allowed right now, and if not, why not. The action is a string key, not an enum, because the list of actions can grow without a change of the schema. Keys today: DELETE (deleting without 'removeItemAssignments'; deleting with it is always possible)."
type CharacteristicActionAvailability {
"The key of the action, for example DELETE. A client that does not know a key ignores the entry."
actionId: String!
"Whether the action would go through right now."
isAllowed: Boolean!
"The reasons why it would not. Empty when it is allowed."
blockers: [CharacteristicActionBlocker!]!
}
"One reason why an action on a characteristic or a characteristic value is not allowed."
type CharacteristicActionBlocker {
"Stable machine-readable code of the reason, for example CHARACTERISTIC_IS_IN_USE."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"What can be done with a characteristic or a characteristic value right now. It is a hint for user interfaces and can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type CharacteristicAllowedActions {
"One entry per action, allowed or not."
actions: [CharacteristicActionAvailability!]!
}
"A group of characteristics, for example to show related characteristics together. A characteristic can belong to several groups."
type CharacteristicGroup {
"The ID of the characteristic group."
id: ID!
"The name of the group."
name: String!
"The number of characteristics in the group."
characteristicCount: Int!
}
"The assignment of a characteristic to a group."
type CharacteristicGroupAssignment {
"The ID of the characteristic group."
groupId: ID!
}
"The image of a characteristic or characteristic value. Read-only: the image data is not part of the characteristic; the API returns URLs into the blob storage. Uploading and assigning an image is not part of this API."
type CharacteristicImage {
"The ID of the image in the blob storage."
blobIdentifier: UUID
"The URL the image is downloaded from."
url: String!
"The URL of the preview-sized image. Absent when there is none."
previewUrl: String
"The width of the image in pixels."
width: Int
"The height of the image in pixels."
height: Int
}
"A characteristic in a list."
type CharacteristicListEntry {
"The ID of the characteristic."
id: ID!
"The name of the characteristic in the default language."
name: String!
"How the values are presented to customers in the online shop: TEXT, SELECT_BOX, IMAGE or IMAGE_AND_TEXT. It changes how the values are shown, not which fields exist. The list can grow with the shops; a client treats a value it does not know like TEXT. An empty or unknown stored value is read as TEXT."
displayType: String!
"Indicates that several values can be assigned to one item."
isMultiSelect: Boolean!
"Indicates that the characteristic is shown to customers in the online shop."
isVisibleInShop: Boolean!
"Indicates that the characteristic is transferred to eBay as an item specific."
isEbayAttribute: Boolean!
"The position of the characteristic among all characteristics in a custom order, counted from 1. Null means there is no custom order and the entries are sorted alphabetically by their name in the default language. Set a custom order with the order operations; the API does not accept single positions."
sortOrder: Int
"The number of values of the characteristic."
valueCount: Int!
"The number of items that have at least one value of the characteristic."
itemCount: Int!
}
"The name of a characteristic in one language."
type CharacteristicName {
"The language as BCP 47 language tag, for example 'de' or 'de-AT'. Language subtag in lower case, region subtag in upper case; the input is not case-sensitive."
languageTag: String!
"The name in this language."
name: String!
}
"A value of a characteristic, for example 'Cotton' for the characteristic 'Material'. Items are assigned values. A value carries its texts per language and belongs to exactly one characteristic."
type CharacteristicValue {
"The ID of the characteristic value."
id: ID!
"The ID of the characteristic the value belongs to. It cannot be changed."
characteristicId: ID!
"The position of the value within its characteristic in a custom order, counted from 1. Null means there is no custom order and the entries are sorted alphabetically by their name in the default language. Set a custom order with the order operations; the API does not accept single positions."
sortOrder: Int
"The image of the value. Absent when it has none."
image: CharacteristicImage
"The texts per language. At least one language has a name."
texts: [CharacteristicValueText!]!
"The number of items that have this value."
itemCount: Int!
}
"A characteristic value in a list."
type CharacteristicValueListEntry {
"The ID of the characteristic value."
id: ID!
"The ID of the characteristic the value belongs to."
characteristicId: ID!
"The name of the value in the default language. Empty when the value has no name in the default language."
name: String
"The position of the value within its characteristic in a custom order, counted from 1. Null means there is no custom order and the entries are sorted alphabetically by their name in the default language. Set a custom order with the order operations; the API does not accept single positions."
sortOrder: Int
"The number of items that have this value."
itemCount: Int!
}
"The texts of a characteristic value in one language: name, description and the search engine data of the value page in the online shop."
type CharacteristicValueText {
"The language as BCP 47 language tag, for example 'de' or 'de-AT'. Language subtag in lower case, region subtag in upper case; the input is not case-sensitive."
languageTag: String!
"The name of the value in this language."
name: String!
"A description of the value for customers."
description: String
"The URL path of the value page in the online shop. Only lower-case letters, digits, '-', '_' and '/' are allowed; it must not start or end with '-' or contain '--'. It must not contain one of the segments 'products', 'characteristics', 'categories', 'searchspecials', 'searchqueries', 'manufacturers', 'news', 'search' and 'pages'. It must be unique among the values in the same language."
urlPath: String
"The title tag of the value page. Search engines usually show about 60 characters."
titleTag: String
"The meta keywords of the value page."
metaKeywords: String
"The meta description of the value page. Search engines usually show about 160 characters."
metaDescription: String
}
"A setting with several choices that can be selected together. The value type is MultiChoice. The options source names a GraphQL query."
type CheckboxGroupNode implements SettingsNode {
"Discriminator of the node kind."
kind: SettingsNodeKind!
"The stable ID of the node. For an input it equals the setting key, for example sales.invoice.dueDays."
id: String!
"The ID of the group the node belongs to. Absent for a top-level node."
parentId: String
"The depth in the tree. A top-level node has level 1."
level: Int!
"The position among the nodes of the same parent. Lower comes first."
sortOrder: Int!
"The text shown for the node, in the language of the caller."
label: String
"A further text, in the language of the caller."
description: String
"A link to a help page."
helpUrl: String
"Extra words the search finds the node by."
keywords: [String!]!
"The scopes the setting can be stored for. Almost every setting has only Global."
scopes: [SettingsScope!]!
"The Wawi permission the caller needs to see and change the node."
requiredPermission: String
"Whether the caller cannot change the setting."
isReadOnly: Boolean!
"Rules that make the node visible, enabled or required depending on other settings."
dependencies: [SettingsDependency!]!
"The key of the setting this input edits. It is also the ID of the node."
settingKey: String!
"The type of the value the setting holds."
valueType: SettingValueType!
"Whether the setting needs a value."
isRequired: Boolean!
"Whether a change only takes effect after Wawi restarts."
requiresRestart: Boolean!
"A warning to show before a change is saved, for example about data that changes as a consequence."
changeWarning: String
"The default the setting has when nobody sets a value."
defaultValue: SettingValue
"The current value of the setting for the scope asked for. Only filled when includeValues is true; a handler field, resolved from the value store."
currentValue: SettingValueEntry
"The fixed options. Absent when the options come from a source."
options: [ChoiceOption!]!
"Where to read the options from when they are master data. Absent when the options are fixed."
optionsSource: ResourceReference
"How many options must be chosen at least."
minSelected: Int
"How many options can be chosen at most."
maxSelected: Int
}
"A yes or no setting. The value type is Boolean."
type CheckboxNode implements SettingsNode {
"Discriminator of the node kind."
kind: SettingsNodeKind!
"The stable ID of the node. For an input it equals the setting key, for example sales.invoice.dueDays."
id: String!
"The ID of the group the node belongs to. Absent for a top-level node."
parentId: String
"The depth in the tree. A top-level node has level 1."
level: Int!
"The position among the nodes of the same parent. Lower comes first."
sortOrder: Int!
"The text shown for the node, in the language of the caller."
label: String
"A further text, in the language of the caller."
description: String
"A link to a help page."
helpUrl: String
"Extra words the search finds the node by."
keywords: [String!]!
"The scopes the setting can be stored for. Almost every setting has only Global."
scopes: [SettingsScope!]!
"The Wawi permission the caller needs to see and change the node."
requiredPermission: String
"Whether the caller cannot change the setting."
isReadOnly: Boolean!
"Rules that make the node visible, enabled or required depending on other settings."
dependencies: [SettingsDependency!]!
"The key of the setting this input edits. It is also the ID of the node."
settingKey: String!
"The type of the value the setting holds."
valueType: SettingValueType!
"Whether the setting needs a value."
isRequired: Boolean!
"Whether a change only takes effect after Wawi restarts."
requiresRestart: Boolean!
"A warning to show before a change is saved, for example about data that changes as a consequence."
changeWarning: String
"The default the setting has when nobody sets a value."
defaultValue: SettingValue
"The current value of the setting for the scope asked for. Only filled when includeValues is true; a handler field, resolved from the value store."
currentValue: SettingValueEntry
}
"One option of a choice."
type ChoiceOption {
"The key that is stored when the option is chosen."
value: String!
"The text shown."
label: String!
"A further text."
description: String
"Whether the option cannot be chosen at the moment."
isDisabled: Boolean!
}
"The key of one option."
type ChoiceValue implements SettingValue {
"Discriminator of the value type."
valueType: SettingValueType!
"The key of the chosen option."
value: String!
}
"The key of one option."
type ChoiceWarehouseSettingValue implements WarehouseSettingValue {
"Discriminator of the value type."
valueType: WarehouseSettingValueType!
"The key of the chosen option."
value: String!
}
"One possible combination of a variation parent: one value per axis. The list of proposals is the cartesian product of the values of all axes. Sku and name are suggestions; the list can be sent back to create the combinations after removing 'alreadyExists'."
type CombinationProposal {
"Suggested item number: the SKU of the parent followed by the SKU suffixes of the values."
sku: String!
"Suggested name: the name of the parent followed by the names of the values."
name: String!
"The value on every axis of the parent, one per axis."
values: [VariationValueAssignment!]!
"Whether the parent has this combination already. Such a proposal is refused when it is sent back."
alreadyExists: Boolean!
}
"A company: the legal entity that sells. The address, the bank account and the VAT IDs per country belong to it; the VAT IDs, mail settings, retention periods and are their own sub-resources."
type Company {
"The ID of the company."
id: ID!
"The name of the company. It is unique among the active companies."
name: String
"Whether the company is active. An inactive company cannot be chosen in new documents and cannot be activated again."
isActive: Boolean!
"The owner or managing director of the company."
owner: String
"The postal address."
address: CompanyAddress!
"Phone number."
phoneNumber: String
"Fax number."
faxNumber: String
"E-mail address of the company, as printed on documents. The mail server is set in the e-mail settings."
emailAddress: String
"Website of the company."
website: String
"The national tax number (not the VAT ID, which is kept per country)."
taxNumber: String
"Whether the company is a small business under the small-business scheme. It changes how tax is determined."
isSmallBusiness: Boolean!
"The SEPA creditor identifier for direct debits."
sepaCreditorId: String
"The PayPal account of the company."
payPalEmailAddress: String
"The bank account of the company."
bankAccount: CompanyBankAccount!
"The DHL Intraship customer number used for the shipment data export."
dhlIntrashipCustomerId: String
"The UPS customer number used for the shipment data export."
upsCustomerId: String
"The base number of the Global Location Number (GLN), 7 to 9 digits, used for the shipment data export."
glnBaseNumber: String
}
"Whether one action on a company is allowed right now."
type CompanyActionAvailability {
"The stable key of the action. Known keys: 'DEACTIVATE' (deactivate the company), 'REMOVE_VAT_ID' (remove the VAT ID of the country in 'Target'), 'DISABLE_SHIPPING_COUNTRY' (stop treating the country in 'Target' as a shipping country). New keys can be added; handle an unknown key as not known, never as a failure."
action: String!
"What the action refers to: the country code for the actions on a VAT ID, otherwise empty."
target: String
"Whether the action is allowed right now."
isAllowed: Boolean!
"The reasons why it is not, empty when it is allowed."
blockers: [CompanyActionBlocker!]!
}
"One reason why an action is not allowed."
type CompanyActionBlocker {
"Stable machine-readable code of the reason, for example COMPANY_IS_LAST_ACTIVE."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"The postal address of a company. Older data can have gaps, so every line can be missing when read."
type CompanyAddress {
"Street with house number."
street: String
"Postal code."
postalCode: String
"City."
city: String
"The ISO 3166-1 alpha-2 code of the country. This is the country the company sells from: it is the origin country for tax calculation. Data entered earlier can have an empty or longer code; the update accepts only a valid two-letter code of an existing country."
countryCode: String
}
"What can be done with a company right now. It is a hint for user interfaces and can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type CompanyAllowedActions {
"One entry per action, and per country for the actions on a VAT ID, allowed or not. The keys are listed at 'Action'."
actions: [CompanyActionAvailability!]!
}
"The bank account printed on the documents of a company. A company has one. Every line can be missing."
type CompanyBankAccount {
"International Bank Account Number."
iban: String
"Bank Identifier Code."
bic: String
"Name of the bank."
bankName: String
"Name of the account holder."
accountHolder: String
}
"A yes or no."
type CompanyBooleanFieldValue implements CompanyFieldValue {
"Discriminator of the value variant."
type: CompanyFieldValueType!
"Whether it is yes."
flag: Boolean!
}
"The value of a custom field (German 'Eigenes Feld') of a company. It has no language. Only fields that have a value are listed."
type CompanyCustomField {
"The ID of the custom field."
customFieldId: ID!
"The value."
value: CompanyFieldValue
}
"A date."
type CompanyDateFieldValue implements CompanyFieldValue {
"Discriminator of the value variant."
type: CompanyFieldValueType!
"The date. Only the calendar date counts, the time of day is ignored."
date: DateTime!
}
"A decimal number."
type CompanyDecimalFieldValue implements CompanyFieldValue {
"Discriminator of the value variant."
type: CompanyFieldValueType!
"The number."
number: Decimal!
}
"A stored OAuth configuration of a mail provider, with which a mailbox can be connected. A provider can have several configurations, for example one per client type, that differ in the redirect address."
type CompanyEmailOAuthProvider {
"The stable key of the OAuth configuration, used to start the sign-in."
key: String!
"The name of the provider for display."
displayName: String!
"The mail server that is set when the sign-in is connected."
mailServer: String!
"The address the provider redirects the browser to after the sign-in. The client has to catch this address; it is part of the stored configuration and registered at the provider."
redirectUri: String!
}
"How a company sends e-mail. The password is never returned."
type CompanyEmailSettings {
"Host name of the outgoing mail server."
server: String!
"Port of the mail server, 1 to 65535."
port: Int!
"How the connection is secured."
encryption: CompanyEmailEncryption!
"Whether the certificate of the mail server is not checked. It is only relevant for an encrypted connection. Checking the certificate is the safe setting and the default."
isCertificateCheckDisabled: Boolean!
"How the company signs in at the server."
authentication: CompanyEmailAuthentication!
"The user name for the sign-in. For an OAuth sign-in it is the account address."
username: String
"Whether a password is stored. It is false for an OAuth sign-in."
isPasswordSet: Boolean!
"The sender address of outgoing mail."
senderAddress: String
"An address that receives a blind copy of every outgoing mail."
bccAddress: String
}
"A whole number."
type CompanyIntegerFieldValue implements CompanyFieldValue {
"Discriminator of the value variant."
type: CompanyFieldValueType!
"The number."
number: Int!
}
"A company as a light list entry."
type CompanyListEntry {
"The ID of the company."
id: ID!
"The name of the company."
name: String
"Whether the company is active. An inactive company cannot be chosen in new documents."
isActive: Boolean!
"City of the company."
city: String
"The ISO 3166-1 alpha-2 code of the country of the company. Data entered earlier can have an empty or longer code; the update accepts only a valid two-letter code of an existing country."
countryCode: String
}
"The retention period of one kind of process (for example invoices) of a company, and whether data is made anonymous when it ends."
type CompanyRetentionPeriod {
"Stable identifier of the kind of process."
processId: String!
"Name of the kind of process in the language of the request."
name: String!
"What the kind of process covers."
description: String
"Years of the period. Missing as long as no period is set."
years: Int
"Months of the period. Missing as long as no period is set."
months: Int
"Days of the period. Missing as long as no period is set."
days: Int
"Whether the data of the process is made anonymous after the period."
obfuscateAfterExpiry: Boolean!
"Whether the period is locked. A locked period can no longer be changed."
isLocked: Boolean!
"When the period was locked."
lockedAt: DateTime
"The user who locked the period."
lockedBy: ID
}
"A text value."
type CompanyTextFieldValue implements CompanyFieldValue {
"Discriminator of the value variant."
type: CompanyFieldValueType!
"The text."
text: String!
}
"The VAT ID of a company for one country, and whether the country counts as a shipping country."
type CompanyVatId {
"The ISO 3166-1 alpha-2 code of the country."
countryCode: String!
"The VAT ID. Missing for the country of the company as long as none was entered."
vatId: String
"Whether orders shipped to this country are handled with this VAT ID."
isShippingCountry: Boolean!
"Whether this is the country of the company. Its entry always exists and is always a shipping country."
isHomeCountry: Boolean!
}
"An item that is sold as a condition variant of the item, for example used or refurbished. It is a normal item that carries its own condition."
type ConditionItem {
"The ID of the condition item."
id: ID!
"The condition of the condition item. Absent when it has none."
conditionId: ID
}
"An item the customer configures from configuration groups."
type ConfigurableItem implements Item {
"The ID of the item."
id: ID!
"Name of the item in the default language."
name: String!
"Whether the item is active. An inactive item cannot be sold or used as a kit component."
isActive: Boolean!
"The ID of the product group."
productGroupId: ID
"The ID of the manufacturer."
manufacturerId: ID
"The ID of the item condition, for example new or used."
conditionId: ID
"The ID of the delivery status of the item (the master data of delivery statuses, for example \"in stock\" or \"ships in 3 days\")."
deliveryStatusId: ID
"The variation parent this item is a combination of. Absent when the item is no combination. Read-only for every kind of item: the assignment is maintained at the parent only (items/variation-parents/{itemId}/combinations)."
variationParentId: ID
"Every trait that applies to the item, ordered by rank, the first being the kind in 'itemType'. The kind is the first rule that applies; the others would otherwise be lost (a stock-managed variation parent is a VariationParent with the trait StockItem, a stock-managed kit made of divisible parts is a Kit with the trait DivisibleStockItem). Only the fields of the kind are part of the model; sub-resources are offered by the kind. Clients must tolerate values they do not know."
traits: [ItemType!]!
"When the item was created."
createdAt: DateTime
"When the item was last changed."
changedAt: DateTime
"Discriminator of the item kind."
itemType: ItemType!
"The identifiers of the item, each in its own property."
identifiers: TradeItemIdentifiers!
"The ID of the tax class."
taxClassId: ID
"The ID of the shipping class."
shippingClassId: ID
"Outer dimensions as shipped. Absent when none are maintained."
dimensions: ItemDimensions
"Weights. Absent when none are maintained."
weights: ItemWeights
"Customs information. Absent when none is maintained."
customs: ItemCustoms
"Sales unit, packaging unit and content with its base price. Absent when none is maintained."
units: ItemUnits
"The configuration groups of the item. Never null."
configurationGroups: [ConfigurationGroupReference!]!
}
"A configuration group offered by a configurable item."
type ConfigurationGroupReference {
"The ID of the configuration group."
configurationGroupId: ID!
"Zero-based position of the group within the item."
position: Int!
}
"Creates a purchase order from a price inquiry: header, addresses and the item and custom lines with the prices that were entered. The order keeps the currency, exchange rate and language of the price inquiry, so the entered prices stay in that currency; its requested delivery date is today plus the supplier's delivery time, or plus 14 days when the supplier has none. Allowances and charges of the price inquiry are not taken over. The order gets a number from the number range of purchase orders and starts as 'Open' when the ERP requires purchase orders to be released, else as 'Released'; the ERP adds the allowances and charges of the supplier as for every order. The order does not remember the price inquiry, and the price inquiry stays unless 'deletePriceInquiry' is set. Raises the workflow event 'created' of the new purchase order (and 'changed' and 'released' as 'CreatePurchaseOrder' does). Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: PRICE_INQUIRY_NOT_FOUND (the price inquiry was not found); SUPPLIER_INACTIVE (the supplier is not active); WAREHOUSE_REQUIRED (the price inquiry has no warehouse and the supplier has no default warehouse); WAREHOUSE_NOT_USABLE (the warehouse of the price inquiry is inactive or a drop shipping target); - Response"
type ConvertPriceInquiryToPurchaseOrderCommandResponse {
"The ID of the new purchase order."
purchaseOrderId: ID!
"The number of the new purchase order."
number: String!
"The temporary identifier from the request, if one was sent."
clientId: String
"Whether the price inquiry was deleted."
priceInquiryDeleted: Boolean!
}
"Whether the item could be turned into one kind right now, and if not, why not. Turning an item back into a regular item is the target 'Regular'."
type ConvertTargetAvailability {
"The kind the item would be turned into."
targetType: ItemType!
"Whether the change would go through right now."
isAllowed: Boolean!
"The reasons why it would not. Empty when it is allowed."
blockers: [ItemActionBlocker!]!
}
"Makes an item a configurable item, or, when it already is of this kind, replaces the values that belong to the kind. A regular item. Every other kind has to be turned back into a regular item first by 'PUT items/{itemId}/regular'. The request carries exactly the fields the kind has as mandatory or optional; nothing is carried over implicitly from the old kind, and the common fields of the item stay as they are. The fields of the kind that are not sent stay empty or take their default. - Response"
type ConvertToConfigurableItemCommandResponse {
"The ID of the item."
itemId: ID!
"The kind of the item."
itemType: ItemType!
}
"Makes an item an item with stock managed in fractional quantities, or, when it already is of this kind, replaces the values that belong to the kind. A regular item or an item of one of the other two stock kinds (StockItem, DivisibleStockItem, SubsetStockItem). Every other kind has to be turned back into a regular item first by 'PUT items/{itemId}/regular'. The request carries exactly the fields the kind has as mandatory or optional; nothing is carried over implicitly from the old kind, and the common fields of the item stay as they are. The fields of the kind that are not sent stay empty or take their default. - Response"
type ConvertToDivisibleStockItemCommandResponse {
"The ID of the item."
itemId: ID!
"The kind of the item."
itemType: ItemType!
}
"Makes an item a kit (bill of materials), or, when it already is of this kind, replaces the values that belong to the kind. A regular item. Every other kind has to be turned back into a regular item first by 'PUT items/{itemId}/regular'. The request carries exactly the fields the kind has as mandatory or optional; nothing is carried over implicitly from the old kind, and the common fields of the item stay as they are. The fields of the kind that are not sent stay empty or take their default. - Response"
type ConvertToKitItemCommandResponse {
"The ID of the item."
itemId: ID!
"The kind of the item."
itemType: ItemType!
}
"Makes an item a multi-purpose voucher item, or, when it already is of this kind, replaces the values that belong to the kind. A regular item. Every other kind has to be turned back into a regular item first by 'PUT items/{itemId}/regular'. The request carries exactly the fields the kind has as mandatory or optional; nothing is carried over implicitly from the old kind, and the common fields of the item stay as they are. The fields of the kind that are not sent stay empty or take their default. - Response"
type ConvertToMultiPurposeVoucherItemCommandResponse {
"The ID of the item."
itemId: ID!
"The kind of the item."
itemType: ItemType!
}
"Makes an item a packaging item, or, when it already is of this kind, replaces the values that belong to the kind. A regular item. Every other kind has to be turned back into a regular item first by 'PUT items/{itemId}/regular'. The request carries exactly the fields the kind has as mandatory or optional; nothing is carried over implicitly from the old kind, and the common fields of the item stay as they are. The fields of the kind that are not sent stay empty or take their default. - Response"
type ConvertToPackagingItemCommandResponse {
"The ID of the item."
itemId: ID!
"The kind of the item."
itemType: ItemType!
}
"Turns an item back into a regular item, whatever its kind is. Idempotent: an item that is a regular item already stays as it is. The item itself stays; it only loses what makes it a kind, and everything that kind carried (components, axes, voucher settings, stock settings) is removed and cannot be restored by converting again. Every trait that applies to the item is removed, not only the kind (see 'traits'), so nothing is lost silently. A change with consequences is refused with 409, an error code and all blockers: an item that still has stock is refused unless 'writeOffExistingStock' is set (ITEM_HAS_STOCK), and so are kits used in documents, variation parents with combinations or vouchers that were issued. A variation parent that still has combinations is refused (VARIATION_HAS_COMBINATIONS): remove its combinations first, one call each with 'RemoveVariationCombination'. Turning back an item that is itself a combination keeps it a combination with the categories of its parent. - Response"
type ConvertToRegularItemCommandResponse {
"The ID of the item."
itemId: ID!
"The kind of the item, Regular."
itemType: ItemType!
}
"Makes an item a single-purpose voucher item, or, when it already is of this kind, replaces the values that belong to the kind. A regular item. Every other kind has to be turned back into a regular item first by 'PUT items/{itemId}/regular'. The request carries exactly the fields the kind has as mandatory or optional; nothing is carried over implicitly from the old kind, and the common fields of the item stay as they are. The fields of the kind that are not sent stay empty or take their default. - Response"
type ConvertToSinglePurposeVoucherItemCommandResponse {
"The ID of the item."
itemId: ID!
"The kind of the item."
itemType: ItemType!
}
"Makes an item an item with stock managed in whole units, or, when it already is of this kind, replaces the values that belong to the kind. A regular item or an item of one of the other two stock kinds (StockItem, DivisibleStockItem, SubsetStockItem). Every other kind has to be turned back into a regular item first by 'PUT items/{itemId}/regular'. The request carries exactly the fields the kind has as mandatory or optional; nothing is carried over implicitly from the old kind, and the common fields of the item stay as they are. The fields of the kind that are not sent stay empty or take their default. - Response"
type ConvertToStockItemCommandResponse {
"The ID of the item."
itemId: ID!
"The kind of the item."
itemType: ItemType!
}
"Makes an item an item with stock managed in subsets, or, when it already is of this kind, replaces the values that belong to the kind. A regular item or an item of one of the other two stock kinds (StockItem, DivisibleStockItem, SubsetStockItem). Every other kind has to be turned back into a regular item first by 'PUT items/{itemId}/regular'. The request carries exactly the fields the kind has as mandatory or optional; nothing is carried over implicitly from the old kind, and the common fields of the item stay as they are. The fields of the kind that are not sent stay empty or take their default. - Response"
type ConvertToSubsetStockItemCommandResponse {
"The ID of the item."
itemId: ID!
"The kind of the item."
itemType: ItemType!
}
"Makes an item the parent of a variation combination, or, when it already is of this kind, replaces the values that belong to the kind. A regular item. Every other kind has to be turned back into a regular item first by 'PUT items/{itemId}/regular'. The request carries exactly the fields the kind has as mandatory or optional; nothing is carried over implicitly from the old kind, and the common fields of the item stay as they are. The fields of the kind that are not sent stay empty or take their default. - Response"
type ConvertToVariationParentItemCommandResponse {
"The ID of the item."
itemId: ID!
"The kind of the item."
itemType: ItemType!
}
"Copies a template with its layouts and assignments, into the same or another template set of the same document type. Errors: 404 TEMPLATE_NOT_FOUND, TEMPLATE_SET_NOT_FOUND; 409 TEMPLATE_NAME_DUPLICATE; 422 OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the target set belongs to another document type). GraphQL only (new API rule). - Response"
type CopyOutputTemplateCommandResponse {
"The ID of the copy."
templateId: ID!
}
"Creates a new price inquiry as a copy of another one: header, addresses and the lines with their quantities and prices. It gets a new number and the requested delivery date and the dates of the lines of a new price inquiry; it has no print or mail date and is not confirmed. Allowances and charges are not copied. Copy to another supplier to ask several suppliers the same: the copy takes that supplier's currency, exchange rate and language and keeps the prices unconverted; its supplier address is the new supplier's, the contact person is cleared, and the supplier SKU and supplier item name of the item lines are those of the new supplier's items, or empty. A price inquiry raises no workflow events. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: PRICE_INQUIRY_NOT_FOUND (the source was not found); SUPPLIER_NOT_FOUND (the other supplier was not found); SUPPLIER_INACTIVE (the other supplier is not active); SUPPLIER_CURRENCY_NOT_RESOLVABLE or SUPPLIER_LANGUAGE_NOT_RESOLVABLE (the other supplier's currency or language is missing in the ERP). - Response"
type CopyPriceInquiryCommandResponse {
"The ID of the new price inquiry."
priceInquiryId: ID!
"The number of the new price inquiry."
number: String!
"The temporary identifier from the request, if one was sent."
clientId: String
}
"Creates a new purchase order as a copy of another one, of the same kind and in every status of the source: header, addresses and the item and custom lines with their quantities and prices. It gets a new number, starts as a new order of its kind would ('Open' or 'Released'; 'Released' for drop shipping), and has no deliveries, no confirmation and no output dates; the requested delivery date and the dates of the lines are today plus the supplier's delivery time. Allowances and charges are computed anew. Raises the workflow event 'created'; an order that starts released also raises 'changed', and an order to a warehouse 'released' as well. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: PURCHASE_ORDER_NOT_FOUND (the source order was not found); SUPPLIER_NOT_FOUND (the other supplier was not found); SUPPLIER_INACTIVE (the other supplier is not active). - Response"
type CopyPurchaseOrderCommandResponse {
"The ID of the new purchase order."
purchaseOrderId: ID!
"The number of the new purchase order."
number: String!
"The temporary identifier from the request, if one was sent."
clientId: String
}
"A country as Wawi knows it: the countries addresses refer to. The ISO code is the identity; it cannot be changed, and countries are neither created nor deleted through this API."
type Country {
"The ISO 3166-1 alpha-2 code of the country, two uppercase letters. This is the code every other resource uses for a country."
code: String!
"Where the code comes from: Iso for a code of ISO 3166-1, UserAssigned for an entry created in Wawi with a code of its own. Nearly every country is delivered with Wawi and has an ISO code."
codeSource: CountryCodeSource!
"The ISO 3166-1 alpha-3 code of the country, empty if none is stored."
iso3Code: String
"The numeric code of the country, ISO 3166-1 numeric for the countries delivered with Wawi."
isoNumericCode: Int!
"The name of the country in the languages Wawi keeps it in: German, English and French. A language without a name is left out."
names: [CountryName!]!
"The continent of the country, empty if none is assigned."
continent: Continent
"The ISO 4217 code of the currency used in the country, empty if none is stored."
currencyCode: String
"The default language of the country as BCP 47 language tag with region, for example de-DE."
defaultLanguageTag: String
"Whether the country is a member of the European Union. Wawi uses it to decide between domestic, intra-community and export tax treatment and whether customs documents are needed."
isEuMember: Boolean!
}
"The name of a country or of a state in one language."
type CountryName {
"The language as BCP 47 language tag, for example de or de-AT: language subtag in lower case, region subtag in upper case. Case does not matter on input. Wawi currently holds only the two-letter language subtag."
languageTag: String!
"The name in this language."
name: String!
}
"A state, province or region of a country, for example a German federal state or a US state. The list is maintained by JTL; Wawi uses the states of the USA to determine tax."
type CountryState {
"The full ISO 3166-2 code of the region, including the country prefix, for example DE-BW. Always upper case."
regionCode: String!
"Where the code comes from. Regions are delivered with Wawi and carry a code of ISO 3166-2."
codeSource: CountryCodeSource!
"The name of the state in German and English. A language without a name is left out."
names: [CountryStateName!]!
}
"The name of a region in one language."
type CountryStateName {
"The language as BCP 47 language tag, de or en."
languageTag: String!
"The name of the region in this language, at most 50 characters."
name: String!
}
"Creates an additional cost type for incoming invoices. - Response"
type CreateAdditionalCostTypeCommandResponse {
"The ID of the new additional cost type."
additionalCostTypeId: ID!
}
"Creates an advance shipping notice for a purchase order, in every status of the order, optionally with its packages and line items in one call. Without a number the ERP draws the next free number of the order. The expected delivery date defaults to the day of creation. An order can have any number of notices. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: an invalid request, for example a text with control characters; PURCHASE_ORDER_NOT_FOUND (the order was not found); ADVANCE_SHIPPING_NOTICE_NUMBER_DUPLICATE (another notice of the order has the number); ADVANCE_SHIPPING_NOTICE_PACKAGE_NUMBER_DUPLICATE (another package of the notice has the package number); ADVANCE_SHIPPING_NOTICE_WEIGHT_OUT_OF_RANGE (the weight is below 0 or above 1,000,000); ADVANCE_SHIPPING_NOTICE_DIMENSION_OUT_OF_RANGE (the width, height or depth is below 0 or above 1,000,000); ADVANCE_SHIPPING_NOTICE_IDENTIFIER_EMPTY (an identifier has an empty name or value); ADVANCE_SHIPPING_NOTICE_ITEM_NOT_ON_PURCHASE_ORDER (the item is not on the purchase order of the notice); ADVANCE_SHIPPING_NOTICE_PACKAGE_NUMBER_UNKNOWN (no package of the notice has the package number); ADVANCE_SHIPPING_NOTICE_QUANTITY_OUT_OF_RANGE or ADVANCE_SHIPPING_NOTICE_QUANTITY_NOT_WHOLE (the quantity is below 0, 10,000,000 or more, or not a whole number for an item that is not divisible); ADVANCE_SHIPPING_NOTICE_SERIAL_NUMBER_COUNT_MISMATCH (serial numbers were sent and their count is not the quantity); ADVANCE_SHIPPING_NOTICE_SERIAL_NUMBER_DUPLICATE (a serial number appears twice in the notice); ADVANCE_SHIPPING_NOTICE_BATCH_NOT_ALLOWED, ADVANCE_SHIPPING_NOTICE_SHELF_LIFE_EXPIRATION_DATE_NOT_ALLOWED or ADVANCE_SHIPPING_NOTICE_SERIAL_NUMBERS_NOT_ALLOWED (the item is not tracked that way). - Response"
type CreateAdvanceShippingNoticeCommandResponse {
"The ID of the new advance shipping notice."
advanceShippingNoticeId: ID!
"The number of the new notice."
number: String!
"The temporary identifier from the request, if one was sent."
clientId: String
"The new packages, in the order of the request."
packages: [AdvanceShippingNoticeCreatedPackage!]!
"The new line items, in the order of the request."
lineItems: [AdvanceShippingNoticeCreatedLineItem!]!
}
"Adds a line item to an advance shipping notice. Line items are read with the notice ('GetAdvanceShippingNotice'). Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: an invalid request, for example a text with control characters; ADVANCE_SHIPPING_NOTICE_NOT_FOUND (the advance shipping notice was not found); ADVANCE_SHIPPING_NOTICE_ITEM_NOT_ON_PURCHASE_ORDER (the item is not on the purchase order of the notice); ADVANCE_SHIPPING_NOTICE_PACKAGE_NUMBER_UNKNOWN (no package of the notice has the package number); ADVANCE_SHIPPING_NOTICE_QUANTITY_OUT_OF_RANGE or ADVANCE_SHIPPING_NOTICE_QUANTITY_NOT_WHOLE (the quantity is below 0, 10,000,000 or more, or not a whole number for an item that is not divisible); ADVANCE_SHIPPING_NOTICE_SERIAL_NUMBER_COUNT_MISMATCH (serial numbers were sent and their count is not the quantity); ADVANCE_SHIPPING_NOTICE_SERIAL_NUMBER_DUPLICATE (a serial number appears twice in the notice); ADVANCE_SHIPPING_NOTICE_BATCH_NOT_ALLOWED, ADVANCE_SHIPPING_NOTICE_SHELF_LIFE_EXPIRATION_DATE_NOT_ALLOWED or ADVANCE_SHIPPING_NOTICE_SERIAL_NUMBERS_NOT_ALLOWED (the item is not tracked that way); ADVANCE_SHIPPING_NOTICE_MANAGED_BY_FULFILLMENT_NETWORK (the notice belongs to a fulfillment network inbound of another user and is read-only). - Response"
type CreateAdvanceShippingNoticeLineItemCommandResponse {
"The ID of the new line item."
lineItemId: ID!
"The temporary identifier from the request, if one was sent."
clientId: String
}
"Adds a package to an advance shipping notice. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: an invalid request, for example a text with control characters; ADVANCE_SHIPPING_NOTICE_NOT_FOUND (the advance shipping notice was not found); ADVANCE_SHIPPING_NOTICE_PACKAGE_NUMBER_DUPLICATE (another package of the notice has the package number); ADVANCE_SHIPPING_NOTICE_WEIGHT_OUT_OF_RANGE (the weight is below 0 or above 1,000,000); ADVANCE_SHIPPING_NOTICE_DIMENSION_OUT_OF_RANGE (the width, height or depth is below 0 or above 1,000,000); ADVANCE_SHIPPING_NOTICE_IDENTIFIER_EMPTY (an identifier has an empty name or value); ADVANCE_SHIPPING_NOTICE_MANAGED_BY_FULFILLMENT_NETWORK (the notice belongs to a fulfillment network inbound of another user and is read-only). - Response"
type CreateAdvanceShippingNoticePackageCommandResponse {
"The ID of the new package."
packageId: ID!
"The package number of the new package."
packageNumber: Int!
"The temporary identifier from the request, if one was sent."
clientId: String
}
"Creates a child component of a bill of materials. The input is a one-of: exactly one variant is sent and it is the type of the new child component. The new child component is appended after the last child component of the parent component. Errors: the request is invalid; BillOfMaterialsComponentNotFound (the parent component was not found); BillOfMaterialsReadOnly (the bill of materials cannot be changed); a referenced item, measurement unit, operation step or configuration group was not found. - Response"
type CreateBillOfMaterialsChildComponentCommandResponse {
"The ID of the newly created child component."
billOfMaterialsChildComponentId: ID!
}
"Creates a bill of materials for a production item together with its components. The new bill of materials is a draft. Errors: the request is invalid; ProductionItemNotFound (the production item was not found); BillOfMaterialsRequiresOperation (no parent component was sent); BillOfMaterialsRequiresItem (no item was sent across all parent components); a referenced operation, item, measurement unit, operation step or configuration group was not found. - Response"
type CreateBillOfMaterialsCommandResponse {
"The ID of the newly created bill of materials."
billOfMaterialsId: ID!
}
"Creates a parent component of a bill of materials, optionally together with its child components. The input is a one-of: exactly one variant is sent and it is the type of the new parent component. The new parent component is appended after the last parent component of the bill of materials. Errors: the request is invalid; BillOfMaterialsNotFound (the bill of materials was not found); BillOfMaterialsReadOnly (the bill of materials cannot be changed); a referenced operation, item, measurement unit, operation step or configuration group was not found. - Response"
type CreateBillOfMaterialsParentComponentCommandResponse {
"The ID of the newly created parent component."
billOfMaterialsParentComponentId: ID!
}
"Creates a category. The name is the name in the default language. Without a sort number the category is put at the end of its siblings. Further texts, images, customer groups and custom fields are added with their own operations afterwards. - Response"
type CreateCategoryCommandResponse {
"The ID of the new category."
categoryId: ID!
}
"Creates a characteristic. The new characteristic is put at the end of the order. Add its values with 'CreateCharacteristicValue'. Errors: CHARACTERISTIC_DISPLAY_TYPE_INVALID (the display type is not one of the known values), CHARACTERISTIC_NAME_REQUIRED (the name in the default language is missing or empty), CHARACTERISTIC_LANGUAGE_NOT_FOUND (a language is unknown or not active), CHARACTERISTIC_GROUP_NOT_FOUND (a group does not exist), CHARACTERISTIC_NAME_ALREADY_EXISTS (another characteristic has this name in the default language, regardless of upper and lower case). - Response"
type CreateCharacteristicCommandResponse {
"The ID of the new characteristic."
characteristicId: ID!
}
"Creates a characteristic group. Errors: CHARACTERISTIC_GROUP_NAME_REQUIRED (the name is empty or consists of spaces only); CHARACTERISTIC_GROUP_NAME_ALREADY_EXISTS (another group has this name, regardless of upper and lower case). Assign characteristics to the group with 'CreateCharacteristic' and 'UpdateCharacteristic'. - Response"
type CreateCharacteristicGroupCommandResponse {
"The ID of the new characteristic group."
characteristicGroupId: ID!
}
"Creates a value of a characteristic. The new value is put at the end of the order of the characteristic. Errors: CHARACTERISTIC_NOT_FOUND (the characteristic does not exist); CHARACTERISTIC_VALUE_NAME_REQUIRED (no text has a name), CHARACTERISTIC_LANGUAGE_NOT_FOUND (a language is unknown or not active), CHARACTERISTIC_VALUE_URL_PATH_INVALID (a URL path contains characters that are not allowed, starts or ends with '-' or contains '--'), CHARACTERISTIC_VALUE_URL_PATH_FORBIDDEN_SEGMENT (a URL path contains a reserved segment), CHARACTERISTIC_VALUE_NAME_ALREADY_EXISTS (another value of the characteristic has this name in the same language, regardless of upper and lower case), CHARACTERISTIC_VALUE_URL_PATH_ALREADY_EXISTS (another value uses this URL path in the same language). - Response"
type CreateCharacteristicValueCommandResponse {
"The ID of the new characteristic value."
characteristicValueId: ID!
}
"Creates an active company. The country of the address gets its VAT ID entry as a shipping country, empty until a VAT ID is set. The company is not assigned to any user: who may work in it is decided with the users. Tax settings and number ranges are not created and have to be set up in their own resources before the company can be used for documents. - Response"
type CreateCompanyCommandResponse {
"The ID of the new company."
companyId: ID!
}
"Creates a new ConfigurableItem in one call. The request carries exactly the fields of this kind: mandatory ones, optional ones, and none of those the kind does not have. The item is valid right away: item number, name, at least one category and the mandatory fields of the kind are required. Everything else, such as prices, descriptions in further languages, suppliers and images, is added through its own sub-resource. - Response"
type CreateConfigurableItemCommandResponse {
"The ID of the new item."
itemId: ID!
}
"Creates a cross-selling group with its names in one or more languages. The default language must be among them. Errors: errorCode is CROSS_SELLING_GROUP_TRANSLATIONS_REQUIRED (no translation sent, an entry is null, or the default language is missing); CROSS_SELLING_GROUP_NAME_REQUIRED, CROSS_SELLING_GROUP_NAME_TOO_LONG (a name is empty, only spaces, or has more than 255 characters); CROSS_SELLING_GROUP_DESCRIPTION_TOO_LONG (a description has more than 255 characters); CROSS_SELLING_GROUP_LANGUAGE_NOT_ACTIVE (a language tag is not a language Wawi is set up for); CROSS_SELLING_GROUP_LANGUAGE_DUPLICATE (a language tag is sent twice); CROSS_SELLING_GROUP_NAME_ALREADY_EXISTS (another group has the same name in the default language, ignoring upper and lower case). - Response"
type CreateCrossSellingGroupCommandResponse {
"The ID of the new cross-selling group."
crossSellingGroupId: ID!
}
"Creates a currency. The code is either a standard ISO 4217 code from 'ListStandardCurrencyCodes' or a tenant-defined code with the prefix 'x-'. The new currency is never the default currency and needs an exchange rate. Every change of the currencies is passed on to the connected shops. - Response"
type CreateCurrencyCommandResponse {
"The canonical code of the new currency."
code: String!
}
"Adds an address to a customer. The first address of a type becomes its default. - Response"
type CreateCustomerAddressCommandResponse {
"The ID of the new address."
addressId: ID!
}
"Adds a bank account to a customer. It needs an IBAN or a national account number. The first bank account becomes the default. - Response"
type CreateCustomerBankAccountCommandResponse {
"The ID of the new bank account."
bankAccountId: ID!
}
"Creates a customer category. - Response"
type CreateCustomerCategoryCommandResponse {
"The ID of the new customer category."
customerCategoryId: ID!
}
"Creates a customer with its default billing address and, optionally, a default shipping address. Contacts, bank accounts, notes, custom field values and labels are added with their own operations. - Response"
type CreateCustomerCommandResponse {
"The ID of the new customer."
customerId: ID!
}
"Adds a contact to a customer. - Response"
type CreateCustomerContactCommandResponse {
"The ID of the new contact."
contactId: ID!
}
"Creates a customer group. It is not the default group; see 'MakeCustomerGroupDefault'. - Response"
type CreateCustomerGroupCommandResponse {
"The ID of the new customer group."
customerGroupId: ID!
}
"Adds a note to a customer. The user of the request becomes its author. - Response"
type CreateCustomerNoteCommandResponse {
"The ID of the new note."
noteId: ID!
}
"Creates a customer print text without texts: add the texts per language with 'UpdateCustomerPrintTextTranslation'. - Response"
type CreateCustomerPrintTextCommandResponse {
"The ID of the new customer print text."
customerPrintTextId: ID!
}
"A package that a delivery created."
type CreatedDeliveryPackage {
"The delivery note of the package."
deliveryNoteId: ID!
"The new package."
packageId: ID!
"The client identifier of the package input, if one was sent."
clientId: String
}
"Requests a shipping label for every package of a delivery note that has no tracking number yet. Every package is handled on its own: a failed package does not stop the others, and its result says why. For each created label: The label is requested from the shipping service the package's shipping method is mapped to, without any dialog. The tracking number and the shipment reference of the label are written to the package, and the package is marked as shipped at the time of the label; when the last open package of the delivery note is shipped, the delivery note counts as shipped and its shipping is completed: the shipment is reported to the sales channel of the order, the shipping confirmation mail is sent if the shipping method and the settings ask for it and it was not sent yet, open drop-shipping and fulfillment orders of the delivery note are closed, and the workflow event 'delivery note shipped' fires. errorCode is one of: DELIVERY_NOTE_NOT_FOUND (the delivery note was not found); DELIVERY_NOTE_HAS_NO_PACKAGE_WITHOUT_LABEL (every package already has a tracking number); DELIVERY_NOTE_HANDLED_BY_FULFILLMENT_NETWORK (the delivery note is handled by the JTL Fulfillment Network and cannot be changed here); DELIVERY_NOTE_SHIPPED_BY_OTHERS (drop-shipping and fulfillment delivery notes are shipped by the supplier or fulfiller). - Response"
type CreateDeliveryNoteShippingLabelsCommandResponse {
"The result per package."
shippingLabelResults: [ShippingLabelResult!]!
}
"Creates a new DivisibleStockItem in one call. The request carries exactly the fields of this kind: mandatory ones, optional ones, and none of those the kind does not have. The item is valid right away: item number, name, at least one category and the mandatory fields of the kind are required. Everything else, such as prices, descriptions in further languages, suppliers and images, is added through its own sub-resource. - Response"
type CreateDivisibleStockItemCommandResponse {
"The ID of the new item."
itemId: ID!
}
"Adds a dunning level at the end of a scope. It gets the number one higher than the highest number in the scope. Creating the first level of a scope makes this scope apply to its invoices from now on instead of a less specific one. Levels belong to a scope: a company and a customer group, each of which can be 'all'. For an invoice that has not been dunned yet, the most specific scope that has levels is used, in this order: the company and the customer group of the invoice, the company and all customer groups, all companies and the customer group, all companies and all customer groups. Later notices stay in the scope of the first one. - Response"
type CreateDunningLevelCommandResponse {
"The ID of the new dunning level."
dunningLevelId: ID!
"The level number the new level got in its scope."
levelNumber: Int!
}
"Issues the next dunning notice for one sales invoice: at the next level of its scope, with the payment term, the grace period, the fee and the interest of that level. The invoice must be open and overdue: its current payment due date (the one of its current notice, or of the invoice if it has not been dunned yet) plus the grace period of the next level must be before today. The interest is charged up to today, whatever the dunning date. Dates are calendar dates in the time zone of the Wawi installation; 'today' is the current date there. Letters are printed or sent as output of the notice, not by this call. To dun many invoices at once, start a dunning run. - Response"
type CreateDunningNoticeCommandResponse {
"The ID of the new dunning notice."
dunningNoticeId: ID!
"The ID of the dunning level the notice was issued at."
dunningLevelId: ID!
"The level number the notice was issued at."
levelNumber: Int!
}
"Starts a dunning run: issues the next dunning notice for every sales invoice that matches the selection and can be dunned now, by the same rules as the proposal list and 'CreateDunningNotice'. The run selects the invoices itself when it executes, so the result can differ from an earlier proposal list. Selected invoices that cannot be dunned any more when the notices are written are skipped and listed in the result; all other notices are written together, so a failed run issues none. Only one run can be running at a time; a run that stops making progress, for example because the server was restarted, ends with the status Failed. The call answers 202 with the ID of the run, which is polled with 'GetDunningRun' until its status is no longer Running. Dates are calendar dates in the time zone of the Wawi installation; 'today' is the current date there. Letters are printed or sent as output of the notices, not by the run. - Response"
type CreateDunningRunCommandResponse {
"The ID of the dunning run."
dunningRunId: ID!
}
"Creates a function attribute in a group. Function attributes steer online shops and interfaces and are not shown to customers. The group is created together with its first attribute. Errors: errorCode is ATTRIBUTE_NAME_REQUIRED (the name is missing or empty), ATTRIBUTE_NAME_INVALID (the name contains '#'), ATTRIBUTE_CODE_REQUIRED (the code is missing or empty), ATTRIBUTE_GROUP_NAME_INVALID (the group name is empty, longer than 150 characters or contains '#'), ATTRIBUTE_ALLOWED_VALUES_REQUIRED (data type 'VALUE_LIST' without values), ATTRIBUTE_ALLOWED_VALUES_NOT_SUPPORTED (values given for another data type), ATTRIBUTE_ALLOWED_VALUES_INVALID (an entry is empty, repeated or contains '|'), ATTRIBUTE_SALES_CHANNEL_NOT_SUPPORTED (a sales channel is not an online shop); ATTRIBUTE_NAME_ALREADY_EXISTS (another attribute or function attribute of the entity type has this name, regardless of upper and lower case), ATTRIBUTE_CODE_ALREADY_EXISTS (another function attribute of the entity type has this code). - Response"
type CreateFunctionAttributeCommandResponse {
"The ID of the new function attribute."
attributeId: ID!
}
"Applies a cash discount granted by the supplier and replaces the cash discount line items the invoice has. The discount is split over the tax rates of the line items in proportion to their amounts, and one cash discount line item with a negative price is added per tax rate. Send exactly one of \"percentage\" and \"amount\". - Response"
type CreateIncomingInvoiceCashDiscountLineItemsCommandResponse {
"The IDs of the new cash discount line items, one per tax rate."
lineItemIds: [ID!]!
}
"Records an invoice received from a supplier. The address, the contact, the exchange rate and the due date default to the data of the supplier. The open lines of the purchase orders in \"purchaseOrders\" become line items in the same call, as when a purchase order is assigned later; everything is saved together or not at all. Further line items are added afterwards. - Response"
type CreateIncomingInvoiceCommandResponse {
"The ID of the new incoming invoice."
incomingInvoiceId: ID!
"The own number assigned to the new invoice."
number: String!
}
"Adds a line item with a free description, for example a service or a fee that is not an item. - Response"
type CreateIncomingInvoiceFreeTextLineItemCommandResponse {
"The ID of the new line item."
lineItemId: ID!
}
"Adds a line item for an item of the catalog. With \"purchaseOrderLineItemId\" the line invoices that purchase order line: quantity, price and tax rate default to its open quantity, confirmed price and tax rate. Without it, price and tax rate default to the purchase data of the item at the supplier. - Response"
type CreateIncomingInvoiceItemLineItemCommandResponse {
"The ID of the new line item."
lineItemId: ID!
}
"Records a payment for an incoming invoice. The invoice must be approved for payment. When the payments reach the payable amount of a posted invoice, the invoice is closed. Paying more than is open is allowed; \"totals.overpaidAmount\" shows it. Matching a bank transaction to the invoice is done in the payment transactions, not here. - Response"
type CreateIncomingInvoicePaymentCommandResponse {
"The ID of the new payment."
paymentId: ID!
}
"Creates an item condition. GraphQL only. The input is a one-of: exactly one variant is sent and it is the stock handling of the new condition, which cannot be changed afterwards. The new condition is active and without marketplace codes; without 'restriction' it has no restriction. Errors: errorCode is ITEM_CONDITION_NAME_EMPTY, ITEM_CONDITION_NAME_TOO_LONG, ITEM_CONDITION_DEFAULT_NAME_REQUIRED, ITEM_CONDITION_LANGUAGE_DUPLICATED, ITEM_CONDITION_COLOR_INVALID, ITEM_CONDITION_SUFFIX_EMPTY, ITEM_CONDITION_SUFFIX_TOO_LONG (the request is invalid, 400); ITEM_CONDITION_SUFFIX_ALREADY_EXISTS (409); LANGUAGE_NOT_ACTIVE, PRODUCT_GROUP_NOT_FOUND, CATEGORY_NOT_FOUND (422). - Response"
type CreateItemConditionCommandResponse {
"The ID of the new item condition."
itemConditionId: ID!
}
"Adds a container to an item. An item has at most one container per unit. - Response"
type CreateItemContainerCommandResponse {
"The ID of the new container."
containerId: ID!
}
"Creates a delivery status of items with its translations. GraphQL only. A delivery status exists as its translations, so at least one is required; each language at most once. Errors: errorCode is ITEM_DELIVERY_STATUS_NAME_MISSING, ITEM_DELIVERY_STATUS_NAME_EMPTY, ITEM_DELIVERY_STATUS_NAME_TOO_LONG, ITEM_DELIVERY_STATUS_LANGUAGE_DUPLICATED (the request is invalid, 400); LANGUAGE_NOT_ACTIVE (422). - Response"
type CreateItemDeliveryStatusCommandResponse {
"The ID of the new delivery status."
itemDeliveryStatusId: ID!
}
"Adds a free-text variation to an item. Every kind of item can have one, a combination as well, in addition to those of its parent. Refused for an item of the fulfillment network. - Response"
type CreateItemFreeTextVariationCommandResponse {
"The ID of the new free-text variation."
freeTextVariationId: ID!
}
"Adds a medium to an item as a link. Uploading a file stays with the blob endpoints. - Response"
type CreateItemMediumCommandResponse {
"The ID of the new medium."
mediumId: ID!
}
"Adds a packaging to an item. - Response"
type CreateItemPackagingCommandResponse {
"The ID of the new packaging."
packagingId: ID!
}
"Adds a selection variation with its values to an item. Selection variations are only possible for some kinds and roles: refused with 409 SELECTION_VARIATION_NOT_ALLOWED_FOR_ITEM_TYPE and the reasons in blockers[] (see the design, section 5m). - Response"
type CreateItemSelectionVariationCommandResponse {
"The ID of the new selection variation."
variationId: ID!
}
"Adds a value to a selection variation, with its surcharge, weight difference, item number and GTIN. - Response"
type CreateItemSelectionVariationValueCommandResponse {
"The ID of the new value."
valueId: ID!
}
"Adds a supplier item to an item. The item has to have stock management. An item has at most one supplier item per supplier. - Response"
type CreateItemSupplierCommandResponse {
"The ID of the new supplier item."
itemSupplierId: ID!
}
"Creates a new KitItem in one call. The request carries exactly the fields of this kind: mandatory ones, optional ones, and none of those the kind does not have. The item is valid right away: item number, name, at least one category and the mandatory fields of the kind are required. Everything else, such as prices, descriptions in further languages, suppliers and images, is added through its own sub-resource. - Response"
type CreateKitItemCommandResponse {
"The ID of the new item."
itemId: ID!
}
"Creates a label for one kind of object. The kind is fixed from now on. Putting the label on objects is done on the objects themselves, for example on the item. GraphQL only. - Response"
type CreateLabelCommandResponse {
"The ID of the new label."
labelId: ID!
}
"Creates a lot size for a production item. If the production item already has a lot size with this quantity, no further lot size is created and the ID of the existing lot size is returned. Lot sizes cannot be created for configuration items. - Response"
type CreateLotSizeCommandResponse {
"The ID of the new lot size."
lotSizeId: ID!
}
"Creates a new manufacturer. A contact for the address of the manufacturer is created with it. Errors: errorCode is MANUFACTURER_NAME_ALREADY_EXISTS (another manufacturer has this name, regardless of upper and lower case), MANUFACTURER_DEFAULT_DESCRIPTION_REQUIRED (the texts lack the system's default language), MANUFACTURER_LANGUAGE_NOT_FOUND (a language is unknown or not active), SALES_CHANNEL_NOT_FOUND (an image names a sales channel that does not exist). - Response"
type CreateManufacturerCommandResponse {
"The ID of the newly created manufacturer."
manufacturerId: ID!
}
"Creates a measurement unit with its display code and names. Without 'conversion' it becomes a base unit with a family of its own; with 'conversion' it joins the family of the given base unit. The conversion cannot be changed afterwards. The names must include the default language of Wawi. - Response"
type CreateMeasurementUnitCommandResponse {
"The ID of the new measurement unit."
measurementUnitId: ID!
}
"Creates a multilingual attribute in a group. The group is created together with its first attribute. Errors: errorCode is ATTRIBUTE_NAME_REQUIRED (the name in the default language is missing or empty), ATTRIBUTE_NAME_INVALID (a name contains '#'), ATTRIBUTE_LANGUAGE_NOT_FOUND (a language is unknown or not active), ATTRIBUTE_GROUP_NAME_INVALID (the group name is empty, longer than 150 characters or contains '#'), ATTRIBUTE_ALLOWED_VALUES_REQUIRED (data type 'VALUE_LIST' without values), ATTRIBUTE_ALLOWED_VALUES_NOT_SUPPORTED (values given for another data type), ATTRIBUTE_ALLOWED_VALUES_INVALID (an entry is empty, repeated, contains '|' or lacks the default language), ATTRIBUTE_SALES_CHANNEL_NOT_SUPPORTED (a sales channel is not an online shop); ATTRIBUTE_NAME_ALREADY_EXISTS (another attribute or function attribute of the entity type has this name in the default language, regardless of upper and lower case). - Response"
type CreateMultilingualAttributeCommandResponse {
"The ID of the new attribute."
attributeId: ID!
}
"Creates a new MultiPurposeVoucherItem in one call. The request carries exactly the fields of this kind: mandatory ones, optional ones, and none of those the kind does not have. The item is valid right away: item number, name, at least one category and the mandatory fields of the kind are required. Everything else, such as prices, descriptions in further languages, suppliers and images, is added through its own sub-resource. - Response"
type CreateMultiPurposeVoucherItemCommandResponse {
"The ID of the new item."
itemId: ID!
}
"Creates the number range of one company for a type. From then on the company's documents of this type use it instead of the global range, if the process that creates them passes the company. Prefix, suffix and counter start with the values given; they are not copied from the global range. One company has at most one range per type. The global ranges exist from the start and cannot be created. Error codes: NUMBER_RANGE_TYPE_NOT_FOUND, COMPANY_NOT_FOUND, NUMBER_RANGE_ALREADY_EXISTS, NUMBER_RANGE_PATTERN_INVALID, NUMBER_RANGE_COUNTER_INVALID, NUMBER_RANGE_TOO_LONG. GraphQL only. - Response"
type CreateNumberRangeCommandResponse {
"The ID of the new number range."
numberRangeId: ID!
}
"Creates an on-hold reason. The name is not required to be unique. GraphQL only. - Response"
type CreateOnHoldReasonCommandResponse {
"The ID of the new on-hold reason."
onHoldReasonId: ID!
}
"Creates an operation together with its steps. Further steps are added with the commands for operation steps. Errors: the request is invalid; OperationNumberAlreadyExists (another operation already has this operation number); DuplicateOperationStepTextLanguage (more than one text was sent for the same language of a step); OperationStepDefaultTextRequired (no text was sent for the default language of a step). - Response"
type CreateOperationCommandResponse {
"The ID of the newly created operation."
operationId: ID!
}
"Creates a step of an operation together with its texts. The new step is appended after the last step of the operation. Errors: the request is invalid; OperationNotFound (the operation was not found); DuplicateOperationStepTextLanguage (more than one text was sent for the same language); OperationStepDefaultTextRequired (no text was sent for the default language). - Response"
type CreateOperationStepCommandResponse {
"The ID of the newly created step."
operationStepId: ID!
}
"Creates a template in a template set. The channels and the assignment criteria must be those of the document type of the set; a layout is added with the upload of a layout, or the template is created by 'CopyOutputTemplate' or by an import. Errors: 400 VALIDATION_FAILED; 404 TEMPLATE_SET_NOT_FOUND; 409 TEMPLATE_NAME_DUPLICATE; 422 OUTPUT_CHANNEL_NOT_AVAILABLE (the document type does not offer a channel), OUTPUT_ASSIGNMENT_CRITERION_NOT_AVAILABLE (the document type does not offer a criterion), OUTPUT_ASSIGNMENT_VALUE_NOT_FOUND (a value is not one the value source lists). GraphQL only (new API rule). - Response"
type CreateOutputTemplateCommandResponse {
"The ID of the created template."
templateId: ID!
}
"Creates a global template set for a document type. The new set is not the standard, unless the document type has no set yet. GraphQL only (new API rule). Errors: 400 VALIDATION_FAILED (the name is empty or longer than 64 characters); 409 TEMPLATE_SET_NAME_DUPLICATE (a set of this document type has the name); 422 OUTPUT_DOCUMENT_TYPE_NOT_FOUND (the document type is not a known value). - Response"
type CreateOutputTemplateSetCommandResponse {
"The unique identifier of the created template set."
templateSetId: ID!
"Whether the created set became the standard of its document type."
isStandard: Boolean!
}
"Adds a package to a delivery note. The package starts without shipping date. errorCode is one of: DELIVERY_NOTE_NOT_FOUND (the delivery note was not found); SHIPPING_METHOD_NOT_FOUND (a referenced shipping method was not found or is not active); TRACKING_NUMBER_INVALID (the tracking number is empty, longer than 255 characters or does not match the rule of the shipping method); DELIVERY_NOTE_HANDLED_BY_FULFILLMENT_NETWORK (the delivery note is handled by the JTL Fulfillment Network and cannot be changed here). - Response"
type CreatePackageCommandResponse {
"The ID of the new package."
packageId: ID!
}
"Requests a shipping label for a package. The label is requested from the shipping service the package's shipping method is mapped to, without any dialog. The tracking number and the shipment reference of the label are written to the package, and the package is marked as shipped at the time of the label; when the last open package of the delivery note is shipped, the delivery note counts as shipped and its shipping is completed: the shipment is reported to the sales channel of the order, the shipping confirmation mail is sent if the shipping method and the settings ask for it and it was not sent yet, open drop-shipping and fulfillment orders of the delivery note are closed, and the workflow event 'delivery note shipped' fires. Downloading, printing and cancelling the label are done in the shipping service. A refused action reports 'errorCode' (the main reason) and 'blockers' (all reasons, each with 'code' and 'message'). errorCode is one of: PACKAGE_NOT_FOUND (the package was not found); PACKAGE_HAS_TRACKING_NUMBER (the package already has a tracking number); PACKAGE_ALREADY_SHIPPED (the package already has a shipping date); SHIPPING_METHOD_MISSING (the package has no shipping method); SHIPPING_METHOD_NOT_MAPPED (the shipping method of the package is not mapped to a method of a shipping service); SHIPPING_SERVICE_REJECTED (the shipping service refused the label; the message says why); SHIPPING_SERVICE_UNAVAILABLE (the shipping service could not be reached); DELIVERY_NOTE_SHIPPED_BY_OTHERS (drop-shipping and fulfillment packages are shipped by the supplier or fulfiller); DELIVERY_NOTE_HANDLED_BY_FULFILLMENT_NETWORK (the delivery note is handled by the JTL Fulfillment Network and cannot be changed here). - Response"
type CreatePackageShippingLabelCommandResponse {
"The tracking number of the label."
trackingNumber: String!
"The shipping date the package got."
shippedAt: DateTime!
}
"Creates a new PackagingItem in one call. The request carries exactly the fields of this kind: mandatory ones, optional ones, and none of those the kind does not have. The item is valid right away: item number, name, at least one category and the mandatory fields of the kind are required. Everything else, such as prices, descriptions in further languages, suppliers and images, is added through its own sub-resource. - Response"
type CreatePackagingItemCommandResponse {
"The ID of the new item."
itemId: ID!
}
"Creates an external payment account. An external account has no bank or provider behind it: an integration delivers its transactions with 'ImportPaymentTransaction'. Accounts of banks and payment providers need credentials and confirmations and are set up in the desktop client. Errors: PAYMENT_METHOD_NOT_FOUND (the payment method was not found); IBAN_INVALID (the IBAN is not valid). - Response"
type CreatePaymentAccountCommandResponse {
"The ID of the new payment account."
paymentAccountId: ID!
}
"Creates a payment method in the default language. It is active and not the default. Print texts and other languages are set with 'translations'. - Response"
type CreatePaymentMethodCommandResponse {
"The ID of the new payment method."
paymentMethodId: ID!
}
"Creates a pick list from a template: the orders and stock are selected and reserved under the template's settings and the line items are created. A pick list is never created empty. When only part of the orders could be reserved the list is created and 'notices' says so; this is a success, not an error. A refused action reports 'errorCode' (the main reason) and 'blockers' (all reasons, each with 'code' and 'message'). errorCode is one of: PICK_LIST_TEMPLATE_NOT_FOUND (the pick list template was not found); PICK_LIST_TEMPLATE_NOT_USABLE (the warehouse of the template is not active); PICK_LIST_NO_ORDERS_TO_PICK (nothing could be reserved: no order fits the template or no stock is available); PICK_LIST_MINIMUM_ORDER_COUNT_NOT_REACHED (fewer orders fit than the template's minimum order count); PICK_LIST_MINIMUM_ITEM_COUNT_NOT_REACHED (fewer items fit than the template's minimum item count); PICK_LIST_FULFILLMENT_NETWORK_EMPTY (the pick list for the fulfillment network would be empty); PICK_LIST_EDITION_VOLUME_LIMIT_REACHED (the volume limit of the edition is reached); PICK_LIST_CREATION_FAILED (the creation failed for another reason). - Response"
type CreatePickListCommandResponse {
"The ID of the new pick list."
pickListId: ID!
"Remarks on the result, for example that some orders could not be reserved completely. Empty when there are none."
notices: [PickListNotice!]!
}
"Creates a pick list template. Settings that are not sent get the defaults of the Wawi. A refused action reports 'errorCode'. errorCode is one of: WAREHOUSE_NOT_FOUND (the warehouse was not found or is not a warehouse with pick lists); PICK_LIST_PRINT_TEMPLATE_NOT_FOUND (the print template was not found); PICK_LIST_TEMPLATE_NAME_MISSING (the name is empty, null or longer than 64 characters); PICK_LIST_TEMPLATE_NULL_NOT_ALLOWED (null was sent for a group, a range, a list or a setting that cannot be empty); PICK_LIST_TEMPLATE_SOURCE_TYPE_REQUIRED (no source type is selected); PICK_LIST_TEMPLATE_TIME_WINDOWS_OVERLAP (two active time windows share a weekday and overlap in time); PICK_LIST_TEMPLATE_TIME_WINDOW_INVALID (a time is not hh:mm, or 'timeFrom' equals 'timeTo'); PICK_LIST_TEMPLATE_RANGE_INVALID (a range has a minimum larger than its maximum, a fractional value where the setting counts whole units, or an order priority outside -5 to 5); PICK_LIST_TEMPLATE_EXPECTED_DELIVERY_DAYS_REQUIRED (the expected delivery date mode WithinDays has no number of days); PICK_LIST_TEMPLATE_LIMIT_INVALID (the limit of a time window is 0 or less); PICK_LIST_TEMPLATE_REFERENCE_NOT_FOUND (an ID in a set filter or user list was not found); PICK_LIST_TEMPLATE_SELECTION_TOO_LARGE (a set filter or user list that the template stores as text holds more entries than fit); PICK_LIST_TEMPLATE_VALUE_UNKNOWN (an unknown template type, sort criterion or source type was sent); PICK_LIST_TEMPLATE_STOCK_SORT_ORDER_INVALID (a sort criterion is given twice); PICK_LIST_TEMPLATE_TYPE_COMBINATION_INVALID (the source types do not fit the template type, for example production replenishment on an identical-orders template). - Response"
type CreatePickListTemplateCommandResponse {
"The ID of the new template."
pickListTemplateId: ID!
}
"The whole purchase list in one call, for every supplier and every warehouse, in one transaction; use it only when everything is meant, otherwise use 'CreatePriceInquiriesFromPurchaseList' for one supplier. Asks for prices for what is on the purchase list: one price inquiry per supplier and warehouse, for every entry of the whole purchase list, made as 'CreatePurchaseOrdersFromPurchaseList' makes orders, with the same item lines and the same freight, discount and minimum quantity surcharge lines as an order. The entries stay on the list. Entries without a supplier are left on the list and counted. One entry that cannot be used, for example because its supplier was deactivated since, refuses the whole call with the code of its reason. All price inquiries are made in one transaction, all of them or none. A price inquiry raises no workflow events. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: an invalid request, for example 'confirmEntireList' that is not true; PURCHASE_LIST_NOTHING_IN_SCOPE (no entry on the list has a supplier); SUPPLIER_INACTIVE (a supplier is not active); ITEM_INACTIVE (an item on the list is not active any more); SUPPLIER_CURRENCY_NOT_RESOLVABLE or SUPPLIER_LANGUAGE_NOT_RESOLVABLE (a supplier's currency or language is missing in the ERP); WAREHOUSE_NOT_USABLE (a warehouse is inactive or a drop shipping target); WAREHOUSE_REQUIRED (a price inquiry has neither an entry warehouse, a default warehouse of the supplier nor any warehouse to fall back to). - Response"
type CreatePriceInquiriesFromEntirePurchaseListCommandResponse {
"The new price inquiries."
priceInquiries: [PurchaseListCreatedPriceInquiry!]!
"How many entries have no supplier and stayed on the list."
entriesWithoutSupplierCount: Int!
}
"Asks for prices for what is on the purchase list: one price inquiry per supplier and warehouse, for the entries in scope, made as 'CreatePurchaseOrdersFromPurchaseList' makes orders, with the same item lines and the same freight, discount and minimum quantity surcharge lines as an order. The entries stay on the list. One entry that cannot be used, for example because its supplier was deactivated since, refuses the whole call with the code of its reason. All price inquiries are made in one transaction, all of them or none. A price inquiry raises no workflow events. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: PURCHASE_LIST_NOTHING_IN_SCOPE (no entry of the supplier, for the warehouse if one is given, is on the list); SUPPLIER_NOT_FOUND or WAREHOUSE_NOT_FOUND (the supplier or the warehouse of the scope was not found); SUPPLIER_INACTIVE (a supplier is not active); ITEM_INACTIVE (an item on the list is not active any more); SUPPLIER_CURRENCY_NOT_RESOLVABLE or SUPPLIER_LANGUAGE_NOT_RESOLVABLE (a supplier's currency or language is missing in the ERP); WAREHOUSE_NOT_USABLE (a warehouse is inactive or a drop shipping target); WAREHOUSE_REQUIRED (a price inquiry has neither an entry warehouse, a default warehouse of the supplier nor any warehouse to fall back to). - Response"
type CreatePriceInquiriesFromPurchaseListCommandResponse {
"The new price inquiries."
priceInquiries: [PurchaseListCreatedPriceInquiry!]!
}
"Creates a price inquiry for one supplier with its lines in one call. The number is drawn from the number range of price inquiries; currency and language are the supplier's; the billing address is the company's and the delivery address the warehouse's. A price inquiry raises no workflow events. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: PRICE_INQUIRY_LINE_ITEMS_REQUIRED, WAREHOUSE_REQUIRED (neither a warehouse nor a default warehouse of the supplier) or another invalid request, for example a quantity below 0, a tax rate outside 0 to 100 or a text with control characters; SUPPLIER_NOT_FOUND, COMPANY_NOT_FOUND, WAREHOUSE_NOT_FOUND or SUPPLIER_CONTACT_NOT_FOUND (a referenced record was not found) or ITEM_NOT_FOUND; SUPPLIER_INACTIVE (the supplier is not active); SUPPLIER_CURRENCY_NOT_RESOLVABLE or SUPPLIER_LANGUAGE_NOT_RESOLVABLE (the supplier's currency or language is missing in the ERP); WAREHOUSE_NOT_USABLE (the warehouse is inactive or a drop shipping target); ITEM_INACTIVE, ITEM_IS_VARIATION_PARENT, ITEM_IS_BILL_OF_MATERIALS or ITEM_NOT_ASSIGNED_TO_SUPPLIER (an item cannot be asked for at this supplier as it is). - Response"
type CreatePriceInquiryCommandResponse {
"The ID of the new price inquiry."
priceInquiryId: ID!
"The number of the new price inquiry."
number: String!
"The temporary identifier from the request, if one was sent."
clientId: String
"The new lines in the order of the request, with their temporary identifiers."
lineItems: [PriceInquiryCreatedLineItem!]!
}
"Adds a line to a price inquiry; it is put after the last line. The input is a one-of: an item line or a custom line. A price inquiry raises no workflow events. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: an invalid request, for example a quantity below 0, a tax rate outside 0 to 100 or a text with control characters; PRICE_INQUIRY_NOT_FOUND (the price inquiry was not found); ITEM_NOT_FOUND (the item was not found); ITEM_INACTIVE, ITEM_IS_VARIATION_PARENT, ITEM_IS_BILL_OF_MATERIALS or ITEM_NOT_ASSIGNED_TO_SUPPLIER (an item cannot be asked for at this supplier as it is). - Response"
type CreatePriceInquiryLineItemCommandResponse {
"The ID of the new line."
lineItemId: ID!
"The temporary identifier from the request, if one was sent."
clientId: String
}
"Creates a product group. Errors: errorCode is PRODUCT_GROUP_NAME_REQUIRED, PRODUCT_GROUP_NAME_TOO_LONG (the name is missing, null, empty or only spaces, or has more than 255 characters); PRODUCT_GROUP_NAME_ALREADY_EXISTS (another product group already has this name, regardless of upper and lower case). - Response"
type CreateProductGroupCommandResponse {
"The ID of the new product group."
productGroupId: ID!
}
"Creates a production item for an item, together with its bills of materials and lot sizes. Production items cannot be created for configuration items. Errors: the request is invalid; the item already is a production item; ConfigurationItemNotSupported (the item is a configuration item); BillOfMaterialsRequiresOperation (a bill of materials has no parent component); BillOfMaterialsRequiresItem (a bill of materials has no item across all its parent components); a referenced item, template, operation, measurement unit, operation step or configuration group was not found. - Response"
type CreateProductionItemCommandResponse {
"The ID of the newly created production item."
productionItemId: ID!
}
"Creates a production order for a production item. The new production order is not released. The quantity is specified either by the target total quantity or by lot count and lot size. Errors: the request is invalid; PRODUCTION_ITEM_NOT_FOUND (the production item was not found); BILL_OF_MATERIALS_NOT_FOUND (the bill of materials was not found); PRODUCTION_ORDER_BILL_OF_MATERIALS_MISMATCH (the bill of materials does not belong to the production item); PRODUCTION_ORDER_LOT_SIZE_NOT_DEFINED (the lot size is not one of the lot sizes of the production item). - Response"
type CreateProductionOrderCommandResponse {
"The ID of the newly created production order."
productionOrderId: ID!
}
"Creates a production order for a disposition. The production order produces the production item of the disposition and is linked to the disposition. The open quantity of the disposition, i.e. the quantity that is neither produced yet nor covered by production orders, is treated as the target total quantity of CreateProductionOrder: lot count and lot size are determined from it in the same way. Without a bill of materials in the request, the standard bill of materials of the production item is used; if it has none, its first alternative bill of materials. The new production order is released only if requested. Errors: the request is invalid; DISPOSITION_NOT_FOUND (the disposition was not found); DISPOSITION_NO_OPEN_QUANTITY (no quantity of the disposition is left to be produced); DISPOSITION_PENDING (the disposition is currently being processed, i.e. it has the status Pending); BILL_OF_MATERIALS_NOT_FOUND (the bill of materials was not found); PRODUCTION_ORDER_BILL_OF_MATERIALS_MISMATCH (the bill of materials does not belong to the production item); PRODUCTION_ORDER_NO_BILL_OF_MATERIALS_AVAILABLE (no bill of materials was sent, and the production item has neither a standard nor an alternative bill of materials); PRODUCTION_ORDER_CONFIGURATION_GROUPS_NOT_REPLACEABLE (the bill of materials contains configuration groups that could not be replaced by the components specified in the sales order line item the disposition originates from); PRODUCTION_ORDER_RELEASE_FAILED (the release was requested, but the production order could not be released). - Response"
type CreateProductionOrderForDispositionCommandResponse {
"The ID of the newly created production order."
productionOrderId: ID!
}
"Puts an item on the purchase list. There is one entry per item, warehouse and supplier: when the list already has an entry for the same combination, the quantity is added to it and the note is appended after ' / ', no new entry is made, and 'wasMerged' is true. When 'supplierId' is omitted, the item's default supplier is used if it can be ordered from, else the entry has no supplier; when 'warehouseId' is omitted, the only active warehouse that is no drop shipping target is used if there is exactly one, else the entry has no warehouse. A bill of materials is not put on the list as such; put its components. Because it can change an existing entry, it answers 200 whether or not an entry was made. The purchase list has no workflow events. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: an invalid request, for example a quantity of 0 or less, or a text with control characters; ITEM_NOT_FOUND, SUPPLIER_NOT_FOUND or WAREHOUSE_NOT_FOUND (a referenced record was not found); ITEM_INACTIVE, ITEM_IS_VARIATION_PARENT or ITEM_IS_BILL_OF_MATERIALS (the item cannot be put on the list); PURCHASE_LIST_QUANTITY_NOT_WHOLE (the item is not divisible and the quantity is not a whole number); PURCHASE_LIST_SUPPLIER_EXCLUDED (the supplier is excluded from the purchase list), ITEM_NOT_ASSIGNED_TO_SUPPLIER (the supplier does not have the item) or SUPPLIER_INACTIVE (the supplier is not active); WAREHOUSE_NOT_USABLE (the warehouse is inactive or a drop shipping target). - Response"
type CreatePurchaseListEntryCommandResponse {
"The ID of the new entry, or of the entry the quantity was added to."
entryId: ID!
"Whether the quantity was added to an existing entry instead of making a new one."
wasMerged: Boolean!
"The temporary identifier from the request, if one was sent."
clientId: String
}
"Creates a purchase order with its line items in one call. The order input is a one-of: exactly one variant is sent and it is the kind of the order, to a warehouse or drop shipping to a customer. The number is drawn from the number range; currency and language are the supplier's. The ERP adds the discount from the supplier's discount scale, its freight charge and its minimum quantity surcharge as computed lines. Raises the workflow event 'created'; an order that starts released also raises 'changed', and an order to a warehouse 'released' as well. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: PURCHASE_ORDER_LINE_ITEMS_REQUIRED, WAREHOUSE_REQUIRED (neither a warehouse nor a default warehouse of the supplier) or another invalid request, for example a quantity below 0, a tax rate outside 0 to 100 or a text with control characters; SUPPLIER_NOT_FOUND, COMPANY_NOT_FOUND, WAREHOUSE_NOT_FOUND, CUSTOMER_NOT_FOUND, SUPPLIER_CONTACT_NOT_FOUND or ITEM_NOT_FOUND (a referenced record was not found); SUPPLIER_INACTIVE (the supplier is not active); SUPPLIER_CURRENCY_NOT_RESOLVABLE or SUPPLIER_LANGUAGE_NOT_RESOLVABLE (the supplier's currency or language is missing in the ERP); WAREHOUSE_NOT_USABLE (the warehouse is inactive or a drop shipping target); ITEM_INACTIVE, ITEM_IS_VARIATION_PARENT, ITEM_IS_BILL_OF_MATERIALS or ITEM_NOT_ASSIGNED_TO_SUPPLIER (an item cannot be ordered from this supplier as it is). - Response"
type CreatePurchaseOrderCommandResponse {
"The ID of the new purchase order."
purchaseOrderId: ID!
"The number of the new purchase order."
number: String!
"The temporary identifier from the request, if one was sent."
clientId: String
"The new line items in the order of the request, with their temporary identifiers."
lineItems: [PurchaseOrderCreatedLineItem!]!
}
"Adds a line item to a purchase order, in every status; it is put after the last item or custom line. The input is a one-of: an item line or a custom line. The allowances and charges are computed anew. An order that is sent or partially delivered gets its status computed anew from the ordered and delivered quantities; a completed order stays completed. Raises the workflow event 'changed'. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: an invalid request, for example a quantity below 0, a tax rate outside 0 to 100 or a text with control characters; PURCHASE_ORDER_NOT_FOUND (the order was not found); ITEM_NOT_FOUND (the item was not found); ITEM_INACTIVE, ITEM_IS_VARIATION_PARENT, ITEM_IS_BILL_OF_MATERIALS or ITEM_NOT_ASSIGNED_TO_SUPPLIER (the item cannot be ordered from this supplier as it is). - Response"
type CreatePurchaseOrderLineItemCommandResponse {
"The ID of the new line item."
lineItemId: ID!
"The temporary identifier from the request, if one was sent."
clientId: String
}
"The whole purchase list in one call, for every supplier and every warehouse, in one transaction; use it only when everything is meant, otherwise use 'CreatePurchaseOrdersFromPurchaseList' for one supplier. Orders what is on the purchase list: one purchase order per supplier and warehouse, for every entry of the whole purchase list. The quantity ordered is each entry's 'orderQuantity'; the price is the one in 'netUnitPrice'; the lines of one item are added up, and the price of the summed line is the scale price at the summed quantity; the ERP adds the allowances and charges of the supplier as for every order. The warehouse is the entry's warehouse, else the supplier's default warehouse, else the first active warehouse that is no drop shipping target. The orders start as 'Open' when the ERP requires purchase orders to be released, else as 'Released'. Entries without a supplier are left on the list and counted. One entry that cannot be ordered, for example because its supplier was deactivated since, refuses the whole call with the code of its reason; change or remove that entry first. The entries that were ordered are removed from the list. All orders are made in one transaction, all of them or none. Raises the workflow events of 'CreatePurchaseOrder' for every new order. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: an invalid request, for example 'confirmEntireList' that is not true; PURCHASE_LIST_NOTHING_IN_SCOPE (no entry on the list has a supplier); SUPPLIER_INACTIVE (a supplier is not active); ITEM_INACTIVE (an item on the list is not active any more); SUPPLIER_CURRENCY_NOT_RESOLVABLE or SUPPLIER_LANGUAGE_NOT_RESOLVABLE (a supplier's currency or language is missing in the ERP); WAREHOUSE_NOT_USABLE (a warehouse is inactive or a drop shipping target); WAREHOUSE_REQUIRED (an order has neither an entry warehouse, a default warehouse of the supplier nor any warehouse to fall back to). - Response"
type CreatePurchaseOrdersFromEntirePurchaseListCommandResponse {
"The new purchase orders."
purchaseOrders: [PurchaseListCreatedPurchaseOrder!]!
"How many entries have no supplier and stayed on the list."
entriesWithoutSupplierCount: Int!
}
"Orders what is on the purchase list: one purchase order per supplier and warehouse, for the entries in scope. The quantity ordered is each entry's 'orderQuantity'; the price is the one in 'netUnitPrice'; the lines of one item are added up, and the price of the summed line is the scale price at the summed quantity; the ERP adds the allowances and charges of the supplier as for every order. The warehouse is the entry's warehouse, else the supplier's default warehouse, else the first active warehouse that is no drop shipping target. The orders start as 'Open' when the ERP requires purchase orders to be released, else as 'Released'. One entry that cannot be ordered, for example because its supplier was deactivated since, refuses the whole call with the code of its reason; change or remove that entry first. The entries that were ordered are removed from the list. All orders are made in one transaction, all of them or none. Raises the workflow events of 'CreatePurchaseOrder' for every new order. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: PURCHASE_LIST_NOTHING_IN_SCOPE (no entry of the supplier, for the warehouse if one is given, is on the list); SUPPLIER_NOT_FOUND or WAREHOUSE_NOT_FOUND (the supplier or the warehouse of the scope was not found); SUPPLIER_INACTIVE (a supplier is not active); ITEM_INACTIVE (an item on the list is not active any more); SUPPLIER_CURRENCY_NOT_RESOLVABLE or SUPPLIER_LANGUAGE_NOT_RESOLVABLE (a supplier's currency or language is missing in the ERP); WAREHOUSE_NOT_USABLE (a warehouse is inactive or a drop shipping target); WAREHOUSE_REQUIRED (an order has neither an entry warehouse, a default warehouse of the supplier nor any warehouse to fall back to). - Response"
type CreatePurchaseOrdersFromPurchaseListCommandResponse {
"The new purchase orders."
purchaseOrders: [PurchaseListCreatedPurchaseOrder!]!
}
"Creates purchase orders from restock suggestions in one transaction, all of them or none: one purchase order per supplier and warehouse of the request lines, with their lines in the order of the request. Every order is created as 'CreatePurchaseOrder' creates an order to a warehouse: company, requested delivery date, prices, tax rates and the discount, freight and minimum quantity surcharge lines follow the supplier's conditions. At most 1000 lines; an item may appear only once per supplier and warehouse. The lines are not checked against a calculation, and the purchase list is not touched. A command over several purchase orders, so that the orders of one decision are created together or not at all. Raises the workflow event 'created' of every new order; an order that starts released also raises 'changed' and 'released'. A line that cannot be ordered refuses the whole call with RESTOCK_SUGGESTION_LINES_NOT_ORDERABLE; 'extensions.blockers' then has one entry per refused line with its reason as 'code', the line's position in the request (from 0) as 'lineIndex' and its 'clientId'. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: RESTOCK_SUGGESTION_LINES_REQUIRED, RESTOCK_SUGGESTION_LINE_LIMIT_EXCEEDED, RESTOCK_SUGGESTION_LINE_DUPLICATE, CLIENT_ID_NOT_UNIQUE or VALIDATION_FAILED (no line, more than 1000 lines, an item twice for one supplier and warehouse, a client identifier twice, or the request is invalid otherwise, for example a quantity of 0 or less); RESTOCK_SUGGESTION_LINES_NOT_ORDERABLE (at least one line cannot be ordered; its blocker names the reason: SUPPLIER_NOT_FOUND, WAREHOUSE_NOT_FOUND, ITEM_NOT_FOUND, SUPPLIER_INACTIVE, SUPPLIER_CURRENCY_NOT_RESOLVABLE, SUPPLIER_LANGUAGE_NOT_RESOLVABLE, WAREHOUSE_NOT_USABLE (inactive or a drop shipping target), ITEM_INACTIVE, ITEM_IS_VARIATION_PARENT, ITEM_IS_BILL_OF_MATERIALS or ITEM_NOT_ASSIGNED_TO_SUPPLIER). - Response"
type CreatePurchaseOrdersFromRestockSuggestionsCommandResponse {
"The new purchase orders, in the order of their first request line."
purchaseOrders: [RestockSuggestionCreatedPurchaseOrder!]!
}
"Creates a new RegularItem in one call. The request carries exactly the fields of this kind: mandatory ones, optional ones, and none of those the kind does not have. The item is valid right away: item number, name, at least one category and the mandatory fields of the kind are required. Everything else, such as prices, descriptions in further languages, suppliers and images, is added through its own sub-resource. - Response"
type CreateRegularItemCommandResponse {
"The ID of the new item."
itemId: ID!
}
"Creates a resource. The input is a one-of: exactly one variant is sent and it is the category of the new resource. Errors: the request is invalid; RESOURCE_TYPE_NOT_FOUND (the resource type was not found); RESOURCE_TYPE_CATEGORY_MISMATCH (the resource type belongs to another category); a referenced warehouse, hardware or user was not found. - Response"
type CreateResourceCommandResponse {
"The ID of the newly created resource."
resourceId: ID!
}
"Creates a resource group. Errors: the request is invalid; RESOURCE_CATEGORY_NOT_FOUND (the resource category was not found). - Response"
type CreateResourceGroupCommandResponse {
"The ID of the newly created resource group."
resourceGroupId: ID!
}
"Creates a resource type. Errors: the request is invalid; RESOURCE_CATEGORY_NOT_FOUND (the resource category was not found). - Response"
type CreateResourceTypeCommandResponse {
"The ID of the newly created resource type."
resourceTypeId: ID!
}
"Creates a destination area with its entries in one call; their order in the request is their priority, the first is the highest. A warehouse appears only once; an entry with an area or a storage location of a warehouse counts for that warehouse. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: RESTOCK_SUGGESTION_DESTINATION_AREA_ENTRIES_REQUIRED, RESTOCK_SUGGESTION_DESTINATION_AREA_NAME_REQUIRED, RESTOCK_SUGGESTION_DESTINATION_AREA_ENTRY_DUPLICATE or VALIDATION_FAILED (no entry, an empty name, a supplier or warehouse twice in the request, or the request is invalid otherwise); WAREHOUSE_NOT_FOUND (the warehouse was not found); WAREHOUSE_NOT_USABLE (the warehouse is not active or a transit or pending-reservation warehouse). - Response"
type CreateRestockSuggestionDestinationAreaCommandResponse {
"The ID of the new destination area."
destinationAreaId: ID!
"The temporary identifier from the request, if one was sent."
clientId: String
"The new entries in the order of the request, with their temporary identifiers."
entries: [RestockSuggestionAreaCreatedEntry!]!
}
"Adds an entry to a destination area. The input is a one-of: exactly one variant is sent and it is the kind of the entry. A warehouse appears only once; an entry with an area or a storage location of a warehouse counts for that warehouse. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: VALIDATION_FAILED (the request is invalid, for example a priority below 1 or beyond the last entry plus one); RESTOCK_SUGGESTION_DESTINATION_AREA_NOT_FOUND (the destination area was not found; an area of the other kind counts as not found); WAREHOUSE_NOT_FOUND (the warehouse was not found); WAREHOUSE_NOT_USABLE or RESTOCK_SUGGESTION_DESTINATION_AREA_ENTRY_DUPLICATE (the warehouse is not active or a transit or pending-reservation warehouse; the supplier or warehouse is in the destination area already). - Response"
type CreateRestockSuggestionDestinationAreaEntryCommandResponse {
"The ID of the new entry."
entryId: ID!
"The temporary identifier from the request, if one was sent."
clientId: String
}
"Creates a start area with its entries in one call; their order in the request is their priority, the first is the highest. A supplier or warehouse appears only once, and at most one entry is the company's own production. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: RESTOCK_SUGGESTION_START_AREA_ENTRIES_REQUIRED, RESTOCK_SUGGESTION_START_AREA_NAME_REQUIRED, RESTOCK_SUGGESTION_START_AREA_ENTRY_DUPLICATE or VALIDATION_FAILED (no entry, an empty name, a supplier or warehouse twice in the request, or the request is invalid otherwise); SUPPLIER_NOT_FOUND or WAREHOUSE_NOT_FOUND (a referenced record was not found); SUPPLIER_INACTIVE, WAREHOUSE_NOT_USABLE, RESTOCK_SUGGESTION_PRODUCTION_NOT_AVAILABLE or RESTOCK_SUGGESTION_START_AREA_PRODUCTION_ENTRY_DUPLICATE (the supplier is not active, the warehouse is not active or a transit or pending-reservation warehouse, the ERP has no active production, or the start area has a production entry already). - Response"
type CreateRestockSuggestionStartAreaCommandResponse {
"The ID of the new start area."
startAreaId: ID!
"The temporary identifier from the request, if one was sent."
clientId: String
"The new entries in the order of the request, with their temporary identifiers."
entries: [RestockSuggestionAreaCreatedEntry!]!
}
"Adds an entry to a start area. The input is a one-of: exactly one variant is sent and it is the kind of the entry. A supplier or warehouse appears only once, and at most one entry is the company's own production. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: VALIDATION_FAILED (the request is invalid, for example a priority below 1 or beyond the last entry plus one); RESTOCK_SUGGESTION_START_AREA_NOT_FOUND (the start area was not found; an area of the other kind counts as not found); SUPPLIER_NOT_FOUND or WAREHOUSE_NOT_FOUND (a referenced record was not found); SUPPLIER_INACTIVE, WAREHOUSE_NOT_USABLE, RESTOCK_SUGGESTION_PRODUCTION_NOT_AVAILABLE, RESTOCK_SUGGESTION_START_AREA_PRODUCTION_ENTRY_DUPLICATE or RESTOCK_SUGGESTION_START_AREA_ENTRY_DUPLICATE (the supplier is not active, the warehouse is not active or a transit or pending-reservation warehouse, the ERP has no active production, or the start area has a production entry already; the supplier or warehouse is in the start area already). - Response"
type CreateRestockSuggestionStartAreaEntryCommandResponse {
"The ID of the new entry."
entryId: ID!
"The temporary identifier from the request, if one was sent."
clientId: String
}
"Creates a template. Only the destination of the settings is required; every other setting takes its default. A template cannot select one supplier ('sourceSelection' 'SUPPLIER') or one warehouse ('destinationSelection' 'WAREHOUSE'): the ERP's templates have no place for them; send such settings with the calculation instead. The template is kept in the ERP's expert mode, so that the ERP calculates with exactly these settings; its options outside this contract (display and purchase list options of the ERP's dialog) are kept as stored. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: RESTOCK_SUGGESTION_TEMPLATE_NAME_REQUIRED or RESTOCK_SUGGESTION_SELECTION_NOT_ALLOWED_IN_TEMPLATE (the name is empty, or the settings select one supplier or one warehouse); RESTOCK_SUGGESTION_START_AREA_REQUIRED, RESTOCK_SUGGESTION_SUPPLIER_REQUIRED, RESTOCK_SUGGESTION_DESTINATION_AREA_REQUIRED, RESTOCK_SUGGESTION_WAREHOUSE_REQUIRED, RESTOCK_SUGGESTION_FORECAST_PERIOD_REQUIRED or VALIDATION_FAILED (a selection or forecast type misses the ID, days, dates or period it needs, or the request is invalid otherwise, for example an ID the selection does not use, a period that ends before it starts, an unknown value of a documented string or a number out of its range); RESTOCK_SUGGESTION_START_AREA_NOT_FOUND, RESTOCK_SUGGESTION_DESTINATION_AREA_NOT_FOUND, SUPPLIER_NOT_FOUND or WAREHOUSE_NOT_FOUND (a referenced record was not found; an area of the other kind counts as not found); RESTOCK_SUGGESTION_START_AREA_INACTIVE, RESTOCK_SUGGESTION_DESTINATION_AREA_INACTIVE or WAREHOUSE_NOT_USABLE (an area or the warehouse is not active). - Response"
type CreateRestockSuggestionTemplateCommandResponse {
"The ID of the new template."
templateId: ID!
"The temporary identifier from the request, if one was sent."
clientId: String
}
"Creates a return for a sales order with at least one line item. Line items refer to delivery note lines or to items. - Response"
type CreateReturnCommandResponse {
"The ID of the new return."
returnId: ID!
"The return number."
number: String!
"The temporary ID from the request, if one was sent."
clientId: String
}
"Adds a line item for a delivered line of a delivery note of the sales order to a return. - Response"
type CreateReturnDeliveryNoteLineItemCommandResponse {
"The ID of the state of the return after the line item was added."
returnStateId: ID!
"The ID of the new line item."
returnLineItemId: ID!
"The temporary ID from the request, if one was sent."
clientId: String
}
"Adds an item the customer gets in exchange to a return. If the exchange sales order exists, errorCode is RETURN_EXCHANGE_SALES_ORDER_EXISTS. - Response"
type CreateReturnExchangeItemCommandResponse {
"The ID of the new exchange item."
returnExchangeItemId: ID!
"The temporary ID from the request, if one was sent."
clientId: String
}
"Creates the exchange sales order of a return from its exchange items. A return has at most one exchange sales order. - Response"
type CreateReturnExchangeSalesOrderCommandResponse {
"The ID of the new exchange sales order."
exchangeSalesOrderId: ID!
}
"Adds a line item for an item without a delivery note line to a return. - Response"
type CreateReturnItemLineItemCommandResponse {
"The ID of the state of the return after the line item was added."
returnStateId: ID!
"The ID of the new line item."
returnLineItemId: ID!
"The temporary ID from the request, if one was sent."
clientId: String
}
"Adds a return label to a return: a tracking number, a label file uploaded beforehand, or both. - Response"
type CreateReturnLabelCommandResponse {
"The ID of the new return label."
returnLabelId: ID!
}
"Sets the state of a line item of a return and records the change in its history. - Response"
type CreateReturnLineItemStateChangeCommandResponse {
"The ID of the state of the return after the change, derived from its line items."
returnStateId: ID!
}
"Creates a return reason. Translations are required, at least in the default language of Wawi; each language at most once. Defaults: colour #FF9600, offered in the warehouse, position after the last one, no restriction. Errors: RETURN_REASON_TRANSLATION_MISSING, RETURN_REASON_DEFAULT_NAME_REQUIRED, RETURN_REASON_NAME_EMPTY, RETURN_REASON_NAME_TOO_LONG, RETURN_REASON_DESCRIPTION_TOO_LONG, RETURN_REASON_LANGUAGE_DUPLICATED, RETURN_REASON_COLOR_INVALID (400); LANGUAGE_NOT_ACTIVE, PRODUCT_GROUP_NOT_FOUND, CATEGORY_NOT_FOUND (422). GraphQL only. - Response"
type CreateReturnReasonCommandResponse {
"The ID of the new return reason."
returnReasonId: ID!
}
"Creates the sales invoice corrections for the credited line items of a return, one per sales invoice they were billed with. - Response"
type CreateReturnSalesInvoiceCorrectionsCommandResponse {
"The IDs of the new sales invoice corrections."
salesInvoiceCorrectionIds: [ID!]!
}
"Creates a return state below one of the three system states; it belongs to the stage of that system state and is active. Defaults: not offered in the warehouse, position after the last state with the same parent. Errors: RETURN_STATE_DEFAULT_NAME_REQUIRED, RETURN_STATE_NAME_EMPTY, RETURN_STATE_NAME_TOO_LONG, RETURN_STATE_LANGUAGE_DUPLICATED (400); RETURN_STATE_PARENT_MUST_BE_SYSTEM_STATE, RETURN_STATE_WMS_VISIBILITY_NOT_ALLOWED (409); LANGUAGE_NOT_ACTIVE, RETURN_STATE_PARENT_NOT_FOUND (422). GraphQL only. - Response"
type CreateReturnStateCommandResponse {
"The ID of the new return state."
returnStateId: ID!
}
"Creates a bank transfer refund for a sales credit note and books its payout at once. The money moves with SendRefund. - Response"
type CreateSalesCreditNoteRefundCommandResponse {
"The ID of the new refund."
refundId: ID!
}
"Creates a cancellation reason for sales invoices. The name is not required to be unique. GraphQL only. - Response"
type CreateSalesInvoiceCancellationReasonCommandResponse {
"The ID of the new cancellation reason."
cancellationReasonId: ID!
}
"Creates a cancellation reason for sales invoice corrections. The name is not required to be unique. GraphQL only. - Response"
type CreateSalesInvoiceCorrectionCancellationReasonCommandResponse {
"The ID of the new cancellation reason."
cancellationReasonId: ID!
}
"Creates a correction for a sales invoice. Errors: errorCode is SALES_INVOICE_NOT_FOUND, SALES_INVOICE_CANNOT_BE_CORRECTED (blockers SALES_INVOICE_IS_DRAFT, SALES_INVOICE_CANCELLED, SALES_INVOICE_IS_EXTERNAL, SALES_ORDER_ON_PICK_LIST, SALES_INVOICE_NO_CORRECTABLE_LINE_ITEMS), SALES_INVOICE_CORRECTION_LINE_ITEMS_EMPTY, SALES_INVOICE_LINE_ITEM_NOT_FOUND, SALES_INVOICE_LINE_ITEM_NOT_CORRECTABLE, SALES_INVOICE_CORRECTION_QUANTITY_NOT_POSITIVE, SALES_INVOICE_CORRECTION_QUANTITY_EXCEEDS_REMAINING, SALES_INVOICE_CORRECTION_AMOUNT_EXCEEDS_REMAINING, SALES_INVOICE_CORRECTION_LINE_ITEM_PRICE_CONFLICT or CLIENT_ID_NOT_UNIQUE. - Response"
type CreateSalesInvoiceCorrectionCommandResponse {
"The ID of the new sales invoice correction."
salesInvoiceCorrectionId: ID!
"The temporary ID from the request, if one was sent."
clientId: String
"The new line items with the sales invoice line item they credit and the temporary ID of their request line."
lineItems: [SalesInvoiceCorrectionCreatedLineItem!]!
}
"Creates a refund for a sales invoice correction and books its payout at once. The money moves with SendRefund. - Response"
type CreateSalesInvoiceCorrectionRefundCommandResponse {
"The ID of the new refund."
refundId: ID!
}
"Attaches a file to a sales invoice. The bytes of the file are not part of this API. Upload the file first with the master data file upload (mutation 'RequestFileUpload', then send the bytes to the returned URL) and pass its BlobIdentifier. - Response"
type CreateSalesInvoiceFileCommandResponse {
"The ID of the new attachment."
salesInvoiceFileId: ID!
}
"Creates a sales invoice for the goods of a delivery note. With 'includeShippingLineItem' the shipping charge is added, with 'includeOpenNonItemLineItems' the open line items that are no items are taken over. Without 'asDraft' the invoice is finalized at once and gets its number. A refusal carries 'blockers' with all reasons, each with a code and a message. Errors: errorCode is DELIVERY_NOTE_NOT_FOUND (no delivery note with this ID); errorCode is SALES_ORDER_NOT_FOUND (the delivery note has no sales order); errorCode is SALES_ORDER_NOT_INVOICEABLE (the order cannot be invoiced; the blockers say why, for example SALES_ORDER_FULLY_INVOICED, NO_OPEN_LINE_ITEMS, NOTHING_DELIVERED, SALES_ORDER_CANCELLED, SALES_ORDER_ARCHIVED, NOT_A_SALES_ORDER, SALES_ORDER_PENDING, SALES_ORDER_STATUS_INVALID, SALES_ORDER_EXTERNALLY_INVOICED, DUPLICATE_OF_INVOICE, SALES_ORDER_READ_ONLY, INVALID_KIT_OR_CONFIGURATION, CUSTOMER_MISSING, BILLING_ADDRESS_MISSING, SHIPMENT_ADDRESS_MISSING, PAYMENT_METHOD_MISSING, SHIPPING_METHOD_MISSING or TAX_SETTING_MISSING). - Response"
type CreateSalesInvoiceFromDeliveryNoteCommandResponse {
"The ID of the created sales invoice."
salesInvoiceId: ID!
"The invoice number. Absent when the invoice was created as a draft."
salesInvoiceNumber: String
"The temporary ID from the request, if one was sent."
clientId: String
}
"Creates a sales invoice for the open quantities of a whole sales order. The open quantity is the ordered quantity minus what other invoices, drafts included, already carry; with 'invoiceOnlyDeliveredQuantity' only the delivered quantity counts. Without 'asDraft' the invoice is finalized at once and gets its number. An invoice cannot span several orders. A refusal carries 'blockers' with all reasons, each with a code and a message. Errors: errorCode is SALES_ORDER_NOT_FOUND (no sales order with this ID); errorCode is SALES_ORDER_NOT_INVOICEABLE (the order cannot be invoiced; the blockers say why, for example SALES_ORDER_FULLY_INVOICED, NO_OPEN_LINE_ITEMS, NOTHING_DELIVERED, SALES_ORDER_CANCELLED, SALES_ORDER_ARCHIVED, NOT_A_SALES_ORDER, SALES_ORDER_PENDING, SALES_ORDER_STATUS_INVALID, SALES_ORDER_EXTERNALLY_INVOICED, DUPLICATE_OF_INVOICE, SALES_ORDER_READ_ONLY, INVALID_KIT_OR_CONFIGURATION, CUSTOMER_MISSING, BILLING_ADDRESS_MISSING, SHIPMENT_ADDRESS_MISSING, PAYMENT_METHOD_MISSING, SHIPPING_METHOD_MISSING or TAX_SETTING_MISSING). - Response"
type CreateSalesInvoiceFromSalesOrderCommandResponse {
"The ID of the created sales invoice."
salesInvoiceId: ID!
"The invoice number. Absent when the invoice was created as a draft."
salesInvoiceNumber: String
"The temporary ID from the request, if one was sent."
clientId: String
}
"Creates a partial invoice for selected line items of one sales order. The open quantity of each selected line item is invoiced; a quantity cannot be chosen. Without 'asDraft' the invoice is finalized at once and gets its number. A refusal carries 'blockers' with all reasons, each with a code and a message. Errors: errorCode is SALES_ORDER_NOT_FOUND (no sales order with this ID); errorCode is SALES_ORDER_LINE_ITEM_NOT_FOUND (a line item does not exist or does not belong to the sales order); errorCode is SALES_ORDER_NOT_INVOICEABLE (the order cannot be invoiced; the blockers say why, for example SALES_ORDER_FULLY_INVOICED, NO_OPEN_LINE_ITEMS, NOTHING_DELIVERED, SALES_ORDER_CANCELLED, SALES_ORDER_ARCHIVED, NOT_A_SALES_ORDER, SALES_ORDER_PENDING, SALES_ORDER_STATUS_INVALID, SALES_ORDER_EXTERNALLY_INVOICED, DUPLICATE_OF_INVOICE, SALES_ORDER_READ_ONLY, INVALID_KIT_OR_CONFIGURATION, CUSTOMER_MISSING, BILLING_ADDRESS_MISSING, SHIPMENT_ADDRESS_MISSING, PAYMENT_METHOD_MISSING, SHIPPING_METHOD_MISSING or TAX_SETTING_MISSING). - Response"
type CreateSalesInvoiceFromSalesOrderLineItemsCommandResponse {
"The ID of the created sales invoice."
salesInvoiceId: ID!
"The invoice number. Absent when the invoice was created as a draft."
salesInvoiceNumber: String
"The temporary ID from the request, if one was sent."
clientId: String
}
"Attaches a file to a sales invoice line item. The bytes of the file are not part of this API. Upload the file first with the master data file upload (mutation 'RequestFileUpload', then send the bytes to the returned URL) and pass its BlobIdentifier. - Response"
type CreateSalesInvoiceLineItemFileCommandResponse {
"The ID of the new attachment."
salesInvoiceLineItemFileId: ID!
}
"Adds the shipping charge of the sales order to a draft, at most once. A refusal carries 'blockers' with all reasons, each with a code and a message. Errors: errorCode is SALES_INVOICE_NOT_FOUND (no sales invoice with this ID); errorCode is SALES_INVOICE_NOT_DRAFT (only a draft can be changed; a finalized or cancelled invoice cannot); errorCode is SALES_INVOICE_SHIPPING_LINE_ITEM_EXISTS (the draft already has a shipping line item). - Response"
type CreateSalesInvoiceShippingLineItemCommandResponse {
"The ID of the new line item."
salesInvoiceLineItemId: ID!
"The temporary ID from the request, if one was sent."
clientId: String
}
"Creates a cancellation reason for sales orders. The name is not required to be unique. Marketplace codes are set afterwards with 'SetSalesOrderCancellationReasonMarketplaceCode'. GraphQL only. - Response"
type CreateSalesOrderCancellationReasonCommandResponse {
"The ID of the new cancellation reason."
cancellationReasonId: ID!
}
"Adds a charge such as shipping or a payment fee to a sales order. - Response"
type CreateSalesOrderChargeLineItemCommandResponse {
"The ID of the new line item."
salesOrderLineItemId: ID!
"The temporary ID from the request, if one was sent."
clientId: String
}
"Creates a sales order for a customer with its line items. - Response"
type CreateSalesOrderCommandResponse {
"The ID of the new sales order."
salesOrderId: ID!
"The number of the new sales order."
number: String!
"The temporary ID from the request, if one was sent."
clientId: String
}
"Adds a free line item to a sales order. - Response"
type CreateSalesOrderCustomLineItemCommandResponse {
"The ID of the new line item."
salesOrderLineItemId: ID!
"The temporary ID from the request, if one was sent."
clientId: String
}
"Delivers a sales order: reserves the stock, posts the stock outflow and creates the delivery notes with their packages in one transaction. Without 'lineItems' all open quantities are delivered; with 'lineItems' only the given quantities (a partial delivery). When 'allowPartialDelivery' is false (the default), an order that cannot be delivered completely is refused; when it is true, what is in stock is delivered. Stock is taken from 'warehouseIds' in the given order, or from all warehouses that deliver by their delivery priority. Drop-shipping and fulfillment line items get their own delivery notes, and 'oneDeliveryNotePerWarehouse' splits the rest per warehouse. Without 'packages' every delivery note gets one package with the shipping method of the sales order. A package with 'shippedAt' is created as shipped, 'markAsShipped' marks all new packages of own warehouses as shipped now, and 'createShippingLabels' requests a label for every new package whose shipping method is mapped to a shipping service (see CreatePackageShippingLabel). A label that fails does not undo the delivery: its result is in 'shippingLabelResults'. Invoices are not created by this call. A refused action reports 'errorCode' (the main reason) and 'blockers' (all reasons, each with 'code' and 'message'). errorCode is one of: SALES_ORDER_NOT_FOUND (the sales order was not found); SALES_ORDER_LINE_ITEM_NOT_FOUND (a line item does not belong to the sales order); SALES_ORDER_LINE_ITEM_REFERENCED_TWICE (a line item is given twice); CLIENT_ID_NOT_UNIQUE (two packages carry the same client identifier); QUANTITY_EXCEEDS_OPEN_QUANTITY (a quantity is larger than the open quantity of its line item); SERIAL_NUMBERS_INVALID (serial numbers are missing, too few, unknown or given for an item without serial numbers); WAREHOUSE_NOT_FOUND (a given warehouse was not found or does not deliver); SHIPPING_METHOD_NOT_FOUND (a referenced shipping method was not found or is not active); TRACKING_NUMBER_INVALID (the tracking number is empty, longer than 255 characters or does not match the rule of the shipping method); SHIPPING_DATE_OUT_OF_RANGE (the shipping date is outside the supported range); SHIPPING_METHOD_MISSING (a package or the sales order has no shipping method); SALES_ORDER_ALREADY_DELIVERED (the sales order has no open quantity); SALES_ORDER_BLOCKED (the sales order is on hold, not paid, its customer is blocked or shipping is locked; the blockers name the reasons); SALES_ORDER_NOT_FULLY_DELIVERABLE (the order cannot be delivered completely and partial delivery is not allowed); NO_ELIGIBLE_WAREHOUSE (no warehouse can deliver the sales order); DELIVERY_NOT_COMPLETED (the delivery failed and was rolled back). - Response"
type CreateSalesOrderDeliveryCommandResponse {
"The new delivery notes."
deliveryNoteIds: [ID!]!
"The new packages with their delivery note and, for given packages, the client identifier."
packages: [CreatedDeliveryPackage!]!
"The label result per new package when labels were requested. Empty otherwise."
shippingLabelResults: [ShippingLabelResult!]!
}
"Adds a discount such as a coupon to a sales order. - Response"
type CreateSalesOrderDiscountLineItemCommandResponse {
"The ID of the new line item."
salesOrderLineItemId: ID!
"The temporary ID from the request, if one was sent."
clientId: String
}
"Has suppliers ship line items directly to the customer: creates delivery notes and supplier purchase orders. Codes: see 'salesOrderId'. - Response"
type CreateSalesOrderDropShippingCommandResponse {
"The IDs of the new supplier purchase orders, one per supplier."
purchaseOrderIds: [ID!]!
"The IDs of the new delivery notes, one per supplier."
deliveryNoteIds: [ID!]!
}
"Attaches a file to a sales order. The bytes of the file are not part of this API. Upload the file first with the master data file upload (mutation 'RequestFileUpload', then send the bytes to the returned URL) and pass its BlobIdentifier. - Response"
type CreateSalesOrderFileCommandResponse {
"The ID of the new attachment."
salesOrderFileId: ID!
}
"Creates a sales order from a sales quotation, with all its line items. The new order is read with GetSalesOrder. - Response"
type CreateSalesOrderFromSalesQuotationCommandResponse {
"The ID of the new sales order, a SalesOrder."
salesOrderId: ID!
}
"Creates the follow-up sales order of a subscription. The sales order contains the line items that are due today, counting their lead time, and all charges and discounts; it takes over the addresses, payment terms and texts of the subscription. Each due line item then moves on by one period, so a subscription that is several periods behind stays due. Calls for the same subscription, also those of the automatic daily run, are handled one after the other. Suppressing automatic workflows applies to the new sales order. - Response"
type CreateSalesOrderFromSalesSubscriptionCommandResponse {
"The ID of the new sales order."
salesOrderId: ID!
}
"Adds a line item for an item of the catalog to a sales order. - Response"
type CreateSalesOrderItemLineItemCommandResponse {
"The ID of the new line item."
salesOrderLineItemId: ID!
"The temporary ID from the request, if one was sent."
clientId: String
}
"Attaches a file to a sales order line item. The bytes of the file are not part of this API. Upload the file first with the master data file upload (mutation 'RequestFileUpload', then send the bytes to the returned URL) and pass its BlobIdentifier. - Response"
type CreateSalesOrderLineItemFileCommandResponse {
"The ID of the new attachment."
salesOrderLineItemFileId: ID!
}
"Adds a note to a sales order. The note is kept in the history of the customer. - Response"
type CreateSalesOrderNoteCommandResponse {
"The ID of the new note."
salesOrderNoteId: ID!
}
"Creates a refund for an overpaid or cancelled sales order: the ERP will pay the amount back to the customer through a payment account. It books a payout (a payment with a negative amount) on the order at once; the money moves when the refund is sent with 'SendRefund'. The input is a one-of: refund an earlier payment transaction through the payment account that received it, or send a bank transfer from a bank account that can send transfers to the IBAN of the recipient. 'GetSalesOrderRefundProposal' tells which transactions can be refunded and how much. Money owed because of an invoice correction is refunded on the correction ('CreateSalesInvoiceCorrectionRefund'). For a larger amount, create one refund per transaction. Errors: SALES_ORDER_NOT_FOUND (the sales order was not found); SALES_ORDER_NOT_OVERPAID (the sales order is not overpaid, so nothing can be refunded); SALES_INVOICE_CORRECTION_WITHOUT_PAYOUT_EXISTS (an invoice correction of the order has not been paid out yet; refund the correction); AMOUNT_NOT_POSITIVE (the amount is not greater than 0); AMOUNT_EXCEEDS_REFUNDABLE_AMOUNT (the amount is more than can be refunded for the document or for the transaction); PAYMENT_TRANSACTION_NOT_FOUND (the payment transaction was not found); PAYMENT_TRANSACTION_NOT_REFUNDABLE (the transaction does not belong to the payments of the document, or nothing of it is left to refund); PAYMENT_ACCOUNT_NOT_FOUND (the payment account was not found); PAYMENT_ACCOUNT_CANNOT_TRANSFER (the payment account cannot send bank transfers); RECIPIENT_IBAN_INVALID (the IBAN of the recipient is not valid). - Response"
type CreateSalesOrderRefundCommandResponse {
"The ID of the new refund."
refundId: ID!
}
"Adds a voucher that is sold to a sales order. - Response"
type CreateSalesOrderVoucherLineItemCommandResponse {
"The ID of the new line item."
salesOrderLineItemId: ID!
"The temporary ID from the request, if one was sent."
clientId: String
}
"Adds a charge such as shipping or a payment fee to a sales quotation. - Response"
type CreateSalesQuotationChargeLineItemCommandResponse {
"The ID of the new line item."
salesQuotationLineItemId: ID!
"The temporary ID from the request, if one was sent."
clientId: String
}
"Creates a sales quotation, with its line items if they are sent: everything or nothing. - Response"
type CreateSalesQuotationCommandResponse {
"The ID of the new sales quotation."
salesQuotationId: ID!
"The number of the new sales quotation."
number: String!
"The temporary ID from the request, if one was sent."
clientId: String
}
"Adds a free line item to a sales quotation. - Response"
type CreateSalesQuotationCustomLineItemCommandResponse {
"The ID of the new line item."
salesQuotationLineItemId: ID!
"The temporary ID from the request, if one was sent."
clientId: String
}
"Adds a discount such as a coupon to a sales quotation. - Response"
type CreateSalesQuotationDiscountLineItemCommandResponse {
"The ID of the new line item."
salesQuotationLineItemId: ID!
"The temporary ID from the request, if one was sent."
clientId: String
}
"Attaches a file to a sales quotation. The bytes of the file are not part of this API. Upload the file first with the master data file upload (mutation 'RequestFileUpload', then send the bytes to the returned URL) and pass its BlobIdentifier. - Response"
type CreateSalesQuotationFileCommandResponse {
"The ID of the new attachment."
salesQuotationFileId: ID!
}
"Adds a line item for an item of the catalog to a sales quotation. - Response"
type CreateSalesQuotationItemLineItemCommandResponse {
"The ID of the new line item."
salesQuotationLineItemId: ID!
"The temporary ID from the request, if one was sent."
clientId: String
}
"Adds a note to a sales quotation. The note is kept in the history of the customer. - Response"
type CreateSalesQuotationNoteCommandResponse {
"The ID of the new note."
salesQuotationNoteId: ID!
}
"Adds a voucher that is sold to a sales quotation. - Response"
type CreateSalesQuotationVoucherLineItemCommandResponse {
"The ID of the new line item."
salesQuotationLineItemId: ID!
"The temporary ID from the request, if one was sent."
clientId: String
}
"Adds a line item for a charge such as shipping or a fee to a subscription. It has no schedule and is part of every follow-up sales order. - Response"
type CreateSalesSubscriptionChargeLineItemCommandResponse {
"The ID of the new line item."
salesSubscriptionLineItemId: ID!
"The temporary identifier from the request, if one was sent."
clientId: String
}
"Creates a subscription with its line items in one step: everything or nothing. At least one recurring line item (item, custom or voucher) is required. - Response"
type CreateSalesSubscriptionCommandResponse {
"The ID of the new subscription."
salesSubscriptionId: ID!
"The temporary identifier from the request, if one was sent."
clientId: String
}
"Adds a line item for a free line without an item to a subscription. It needs a schedule and is billed in every period of it. - Response"
type CreateSalesSubscriptionCustomLineItemCommandResponse {
"The ID of the new line item."
salesSubscriptionLineItemId: ID!
"The temporary identifier from the request, if one was sent."
clientId: String
}
"Adds a line item for a discount such as a coupon to a subscription. It has no schedule and is part of every follow-up sales order. - Response"
type CreateSalesSubscriptionDiscountLineItemCommandResponse {
"The ID of the new line item."
salesSubscriptionLineItemId: ID!
"The temporary identifier from the request, if one was sent."
clientId: String
}
"Attaches a file to a sales subscription. The bytes of the file are not part of this API. Upload the file first with the master data file upload (mutation 'RequestFileUpload', then send the bytes to the returned URL) and pass its BlobIdentifier. - Response"
type CreateSalesSubscriptionFileCommandResponse {
"The ID of the new attachment."
salesSubscriptionFileId: ID!
}
"Adds a line item for an item of the catalog to a subscription. It needs a schedule and is billed in every period of it. - Response"
type CreateSalesSubscriptionItemLineItemCommandResponse {
"The ID of the new line item."
salesSubscriptionLineItemId: ID!
"The temporary identifier from the request, if one was sent."
clientId: String
}
"Adds a line item for a voucher to a subscription. It needs a schedule and is billed in every period of it. - Response"
type CreateSalesSubscriptionVoucherLineItemCommandResponse {
"The ID of the new line item."
salesSubscriptionLineItemId: ID!
"The temporary identifier from the request, if one was sent."
clientId: String
}
"Creates a sales unit with its names. The names must include the default language of Wawi; other activated languages can be added with 'SetSalesUnitTranslation'. A name that a hidden sales unit already carries is refused, too. - Response"
type CreateSalesUnitCommandResponse {
"The ID of the new sales unit."
salesUnitId: ID!
}
"Creates a custom field that needs no further configuration. - Response"
type CreateScalarCustomFieldCommandResponse {
"The ID of the new custom field."
customFieldId: ID!
}
"Creates an active, own shipping method. The shipping method is created together with its assignment to a method of the Shipping app, in one step: either both exist afterwards or neither. errorCode is one of: SHIPPING_METHOD_TAX_CLASS_REQUIRED, SHIPPING_METHOD_TAX_CLASS_NOT_ALLOWED, SHIPPING_METHOD_TRACKING_ID_PATTERN_INVALID, SHIPPING_METHOD_NAME_ALREADY_EXISTS, SHIPPING_APP_METHOD_NOT_FOUND, SHIPPING_APP_UNAVAILABLE. - Response"
type CreateShippingAppShippingMethodCommandResponse {
"The ID of the new shipping method."
shippingMethodId: ID!
}
"Creates a shipping class. The name must not be used by another shipping class, regardless of upper and lower case. - Response"
type CreateShippingClassCommandResponse {
"The ID of the new shipping class."
shippingClassId: ID!
}
"Creates an active, own shipping method. The shipping method has no shipping data export (export mode None). Shipping methods with the Shipping app are created with their own call. errorCode is one of: SHIPPING_METHOD_TAX_CLASS_REQUIRED, SHIPPING_METHOD_TAX_CLASS_NOT_ALLOWED, SHIPPING_METHOD_TRACKING_ID_PATTERN_INVALID, SHIPPING_METHOD_NAME_ALREADY_EXISTS. - Response"
type CreateShippingMethodCommandResponse {
"The ID of the new shipping method."
shippingMethodId: ID!
}
"Starts a shipping run: delivers many sales orders in one go. The run works asynchronously; read its state with GetShippingRun and the result per sales order with QueryShippingRunOrdersByShippingRunId. First every sales order is checked like a single delivery: blocked or not deliverable orders are skipped and their blockers recorded. Then all remaining orders are delivered together in one transaction, each completely (or what is in stock with 'allowPartialDelivery') with one package with the shipping method of the order; if the delivery fails technically, no order of the run is delivered and the run fails. Then, if requested, a label is requested for every new package (see CreatePackageShippingLabel) and failed labels are recorded per order without undoing the delivery, or the new packages are marked as shipped. Printing is done by the print service. This is the one set-wise write of the domain, justified by the volume of a shipping day; the single delivery stays CreateSalesOrderDelivery. errorCode is one of: SALES_ORDER_IDS_INVALID (the list is empty, has more than 2000 entries or names a sales order twice); SHIPPING_RUN_ID_CONFLICT (a shipping run with this ID exists with a different request); WAREHOUSE_NOT_FOUND (a given warehouse was not found or does not deliver). - Response"
type CreateShippingRunCommandResponse {
"The ID of the shipping run."
shippingRunId: UUID!
}
"Creates a new SinglePurposeVoucherItem in one call. The request carries exactly the fields of this kind: mandatory ones, optional ones, and none of those the kind does not have. The item is valid right away: item number, name, at least one category and the mandatory fields of the kind are required. Everything else, such as prices, descriptions in further languages, suppliers and images, is added through its own sub-resource. - Response"
type CreateSinglePurposeVoucherItemCommandResponse {
"The ID of the new item."
itemId: ID!
}
"Creates a new StockItem in one call. The request carries exactly the fields of this kind: mandatory ones, optional ones, and none of those the kind does not have. The item is valid right away: item number, name, at least one category and the mandatory fields of the kind are required. Everything else, such as prices, descriptions in further languages, suppliers and images, is added through its own sub-resource. - Response"
type CreateStockItemCommandResponse {
"The ID of the new item."
itemId: ID!
}
"Creates a new stock transfer between two standard warehouses, together with its line items. The transit warehouse for the pair of warehouses is determined automatically. The new stock transfer is open and can be shipped right away. - Response"
type CreateStockTransferCommandResponse {
"The ID of the newly created stock transfer."
stockTransferId: ID!
}
"Adds a line item to an open stock transfer. - Response"
type CreateStockTransferLineItemCommandResponse {
"The ID of the newly created line item."
stockTransferLineItemId: ID!
}
"Creates a storage location in a warehouse with storage location management. The system creates the locations of the types goods receipt, box, picking trolley and system itself, so those types cannot be created. The location starts active. errorCode is one of: STORAGE_LOCATION_NAME_INVALID, STORAGE_LOCATION_TYPE_NOT_CREATABLE (the request is invalid); WAREHOUSE_NOT_FOUND (the warehouse was not found); WAREHOUSE_TYPE_DOES_NOT_SUPPORT_STORAGE_LOCATIONS (the warehouse has no storage locations: only warehouses with storage location management have them); STORAGE_LOCATION_NAME_NOT_UNIQUE (the name is already used in the warehouse). - Response"
type CreateStorageLocationCommandResponse {
"The ID of the new storage location."
storageLocationId: ID!
}
"Creates a new SubsetStockItem in one call. The request carries exactly the fields of this kind: mandatory ones, optional ones, and none of those the kind does not have. The item is valid right away: item number, name, at least one category and the mandatory fields of the kind are required. Everything else, such as prices, descriptions in further languages, suppliers and images, is added through its own sub-resource. - Response"
type CreateSubsetStockItemCommandResponse {
"The ID of the new item."
itemId: ID!
}
"Creates a new supplier. Errors: errorCode is SUPPLIER_COMPANY_NAME_REQUIRED, SUPPLIER_ADDRESS_REQUIRED, SUPPLIER_STREET_REQUIRED, SUPPLIER_POSTAL_CODE_REQUIRED, SUPPLIER_CITY_REQUIRED, SUPPLIER_COUNTRY_ISO_REQUIRED, SUPPLIER_LANGUAGE_ISO_REQUIRED, SUPPLIER_CURRENCY_ISO_REQUIRED (a required value is missing), SUPPLIER_VALUE_TOO_LONG (a value exceeds its maximum length), SUPPLIER_EMAIL_INVALID (the e-mail address is not valid), SUPPLIER_CASH_DISCOUNT_PERCENTAGE_REQUIRED (a cash discount period is set without a positive percentage), SUPPLIER_DEFAULT_COMPANY_ID_REQUIRED, SUPPLIER_DEFAULT_WAREHOUSE_ID_REQUIRED, SUPPLIER_INVALID_DEFAULT_COMPANY_ID, SUPPLIER_INVALID_DEFAULT_WAREHOUSE_ID (the default company or warehouse is missing or does not exist). - Response"
type CreateSupplierCommandResponse {
"The ID of the newly created supplier."
supplierId: ID!
}
"Creates a tax class. It has no rate yet in any tax zone: set one with 'SetTaxRate' in every tax zone, otherwise sales of the class cannot be taxed there. The first tax class becomes the default tax class; any later one does not, see 'MakeTaxClassDefault'. - Response"
type CreateTaxClassCommandResponse {
"The ID of the new tax class."
taxClassId: ID!
}
"Creates a tax code. Assign it to rates with 'SetTaxRate' to use it. - Response"
type CreateTaxCodeCommandResponse {
"The ID of the new tax code."
taxCodeId: ID!
}
"Creates a tax zone of a company for a departure country, without countries and rates. Add countries with 'AddTaxZoneCountry' and rates with 'SetTaxRate'; a tax zone without countries is never used. - Response"
type CreateTaxZoneCommandResponse {
"The ID of the new tax zone."
taxZoneId: ID!
}
"Creates a text block in a group, without content: add the content per language with 'SetTextBlockTranslation'. - Response"
type CreateTextBlockCommandResponse {
"The ID of the new text block."
textBlockId: ID!
}
"Creates a text block group. It has no text blocks yet. - Response"
type CreateTextBlockGroupCommandResponse {
"The ID of the new text block group."
textBlockGroupId: ID!
}
"Creates a transaction colour. Errors: TRANSACTION_COLOR_NAME_EMPTY, TRANSACTION_COLOR_NAME_TOO_LONG, TRANSACTION_COLOR_INVALID (400); TRANSACTION_COLOR_ALREADY_EXISTS (409). GraphQL only. - Response"
type CreateTransactionColorCommandResponse {
"The ID of the new transaction colour."
transactionColorId: ID!
}
"Creates a transaction status. Errors: TRANSACTION_STATUS_NAME_EMPTY, TRANSACTION_STATUS_NAME_TOO_LONG, TRANSACTION_STATUS_VALID_FOR_DUPLICATED (400); TRANSACTION_STATUS_NAME_ALREADY_EXISTS (409). GraphQL only. - Response"
type CreateTransactionStatusCommandResponse {
"The ID of the new transaction status."
transactionStatusId: ID!
}
"Creates a user. Errors: UserIdentityProviderUserIdAlreadyAssigned, UserEmailAlreadyInUse, UserLoginAlreadyExists. - Response"
type CreateUserCommandResponse {
"The ID of the new user."
userId: ID!
}
"Creates an empty user group. Errors: UserGroupNameRequired, UserGroupNameTooLong, UserGroupNameAlreadyExists. - Response"
type CreateUserGroupCommandResponse {
"The ID of the new user group."
userGroupId: ID!
}
"Creates a custom field whose value is one entry out of a list of allowed values. - Response"
type CreateValueListCustomFieldCommandResponse {
"The ID of the new custom field."
customFieldId: ID!
}
"Adds an axis with its values to a variation parent. Existing combinations would get no value on the new axis, so the call is refused while the parent has combinations. - Response"
type CreateVariationAxisCommandResponse {
"The ID of the new axis."
axisId: ID!
}
"Creates a new regular item and adds it as a combination of the variation parent. The new item takes over the categories of the parent; categories cannot be sent, because a combination has none of its own. - Response"
type CreateVariationCombinationCommandResponse {
"The ID of the new item."
combinationItemId: ID!
}
"Creates the given combinations of a variation parent as new regular items, all or none in one transaction, and triggers the workflows once. The list usually comes from 'combination-proposals'. Nothing is created when one entry is refused. The new item takes over the categories of the parent; categories cannot be sent, because a combination has none of its own. - Response"
type CreateVariationCombinationsCommandResponse {
"The IDs of the new items in the order of the request."
combinationItemIds: [ID!]!
}
"Creates a new VariationParentItem in one call. The request carries exactly the fields of this kind: mandatory ones, optional ones, and none of those the kind does not have. The item is valid right away: item number, name, at least one category and the mandatory fields of the kind are required. Everything else, such as prices, descriptions in further languages, suppliers and images, is added through its own sub-resource. - Response"
type CreateVariationParentItemCommandResponse {
"The ID of the new item."
itemId: ID!
}
"Adds a value to an axis of a variation parent. - Response"
type CreateVariationValueCommandResponse {
"The ID of the new value."
valueId: ID!
}
"Creates a warehouse of one of the types a user can create (standard, WMS, external fulfillment, drop shipping). The input is a one-of: exactly one variant is sent and it is the type of the new warehouse. The variant carries exactly the fields of its type; a standard warehouse gets one implicit storage location and its settings with defaults, a WMS warehouse its system locations. errorCode is one of: WAREHOUSE_NAME_OR_SHORT_NAME_MISSING, WAREHOUSE_CONTACT_ADDRESS_INCOMPLETE, COUNTRY_NOT_FOUND, WAREHOUSE_TYPE_NOT_CREATABLE (the request is invalid, for example the name or short name is missing, the address is incomplete, the country is unknown or the variant does not fit); COMPANY_NOT_FOUND, CATEGORY_NOT_FOUND or WAREHOUSE_NOT_FOUND (a referenced company, category or source or target warehouse was not found); WAREHOUSE_NAME_NOT_UNIQUE (the name is already used by an active warehouse). - Response"
type CreateWarehouseCommandResponse {
"The ID of the new warehouse."
warehouseId: ID!
}
"Saves a set of setting changes of a warehouse in one transaction: all of them or none, so a page of the dialog is saved at once. Follows the pattern of the settings API. errorCode is one of: the request is invalid. Properties are missing or not allowed (the error names the offending properties); SETTING_PERMISSION_DENIED (the caller lacks the permission of a setting); SETTING_NOT_FOUND (a setting does not exist); SETTING_READ_ONLY (a setting is read-only); SETTING_VALUE_INVALID, SETTING_VALUE_TYPE_MISMATCH, SETTING_SCOPE_NOT_SUPPORTED, SETTINGS_INCONSISTENT (a change breaks a constraint, has the wrong type, or breaks a rule across settings; nothing was saved); WAREHOUSE_SETTING_NOT_APPLICABLE or WAREHOUSE_TYPE_DOES_NOT_SUPPORT_SETTINGS (the setting does not apply to the type of the warehouse, or the warehouse has no settings). - Response"
type CreateWarehouseSettingValueChangeCommandResponse {
"The keys of the settings that changed. A change to the same value is left out."
changedKeys: [String!]!
"Whether a changed setting only takes effect after Wawi restarts."
requiresRestart: Boolean!
}
"A cross-selling group names a kind of recommendation, for example Accessories or Alternatives. It has a name and a description in every language it was given; only the languages Wawi is currently set up for are returned."
type CrossSellingGroup {
"The ID of the cross-selling group."
id: ID!
"The name in the default language. It is never empty and has at most 255 characters."
name: String!
"The name and the description in every language the group has them in and that Wawi is currently set up for, the default language included. Translations in languages that are not active are not returned; they stay as they are and show up again when the language is activated."
translations: [CrossSellingGroupTranslation!]!
}
"The name and the description of a cross-selling group in one language."
type CrossSellingGroupTranslation {
"The language as BCP 47 tag, for example 'de' or 'de-AT'."
languageTag: String!
"Whether this is the default language of the tenant."
isDefaultLanguage: Boolean!
"The name in this language, at most 255 characters."
name: String!
"The description in this language, at most 255 characters. Null if there is none."
description: String
}
"A currency of the tenant. The code identifies the currency (ISO 4217); the resource carries what the tenant configures for it: how it is written and its exchange rate to the default currency. All prices are stored in the default currency; every other currency is a conversion with its exchange rate."
type Currency {
"The currency code. A standard currency uses its ISO 4217 alpha-3 code in capitals ('EUR'); a currency defined by the tenant uses a code with the prefix 'x-' in lower case ('x-loyalty'). Requests are matched ignoring case, responses always carry the canonical spelling."
code: String!
"Whether the code is a standard ISO 4217 code or was assigned by the tenant."
codeSource: CurrencyCodeSource!
"The display name, at most 20 characters."
name: String
"The currency symbol as plain text."
symbol: String
"Where the symbol stands relative to the amount."
symbolPlacement: CurrencySymbolPlacement!
"The character between the whole part and the decimals, one character."
decimalSeparator: String
"The character between groups of thousands, one character. Empty when there is none."
thousandsSeparator: String
"Units of this currency per unit of the default currency: a price in the default currency times this rate is the price in this currency. 1 for the default currency."
exchangeRate: Decimal!
"Whether this is the default currency of the tenant, the one all prices are stored in. Exactly one currency is."
isDefault: Boolean!
"When the exchange rate was last set or fetched. Empty if it never was."
rateUpdatedAt: DateTime
}
"Whether one action is allowed for a currency."
type CurrencyActionAvailability {
"Stable key of the action: 'DELETE' or 'SET_EXCHANGE_RATE'."
action: String!
"Whether the action is allowed right now."
isAllowed: Boolean!
"The reasons why it is not, empty when it is allowed."
blockers: [CurrencyActionBlocker!]!
}
"One reason why an action is not allowed."
type CurrencyActionBlocker {
"Stable machine-readable code of the reason, for example CURRENCY_IS_DEFAULT."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"What can be done with a currency right now. It is a hint for user interfaces and can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type CurrencyAllowedActions {
"One entry per action."
actions: [CurrencyActionAvailability!]!
}
"States that prices were converted from the default currency of the tenant. It is present only for a currency other than the default."
type CurrencyConversion {
"The default currency of the tenant the prices are stored in, as ISO 4217 code."
baseCurrencyCode: String!
"The exchange rate the prices were converted with."
exchangeRate: Decimal!
"When the exchange rate was last updated."
rateUpdatedAt: DateTime
}
"The exchange rate of one currency before and after a refresh."
type CurrencyExchangeRateChange {
"The code of the currency."
code: String!
"The exchange rate before the refresh."
previousRate: Decimal!
"The exchange rate after the refresh."
newRate: Decimal!
}
"A permission of the current user, from all of the user's groups."
type CurrentUserPermission {
"The ID of the permission."
permissionId: ID!
}
"A customer: a person or a company that buys from the tenant. Name, postal address and contact data are the default billing address of the customer."
type Customer {
"The ID of the customer."
id: ID!
"The customer number, unique within the tenant."
number: String!
"The debtor number for accounting."
debtorNumber: Int
"The customer group. It decides prices and discounts."
customerGroupId: ID!
"The customer category, a free grouping."
customerCategoryId: ID
"The customer print text set that documents of this customer print. Empty when none is assigned."
customerPrintTextId: ID
"The own company the customer belongs to. Empty means all companies."
companyId: ID
"The language of documents and messages as BCP 47 language tag, for example de or de-AT. Language subtag in lower case, region subtag in upper case. Wawi currently holds only the two-letter language subtag. Empty means the default language."
languageTag: String
"The default billing address. Change it with 'UpdateCustomerAddress'."
billingAddress: CustomerPostalAddress!
"The payment terms."
paymentTerms: CustomerPaymentTerms!
"The discount of the customer in percent, 0 to 100."
discountPercent: Decimal!
"The credit limit in the default currency of the tenant. Empty means no limit. A credit limit only warns when sales orders exceed it; it does not refuse them."
creditLimit: Decimal
"Whether dunning is blocked for the customer. Read-only here; change it with 'SetCustomerDunningBlock' and 'RemoveCustomerDunningBlock' of the dunning API."
isDunningBlocked: Boolean!
"Whether the customer is blocked. Sales orders of a blocked customer are not picked and not delivered. Change it with 'BlockCustomer' and 'UnblockCustomer'."
isBlocked: Boolean!
"Where the first contact came from, free text."
origin: String
"The date of birth. Only the date part is used."
birthDate: DateTime
"The website."
website: String
"The tax number of the customer (not the VAT ID, which belongs to an address)."
taxNumber: String
"The commercial register number."
commercialRegisterNumber: String
"Since when the customer exists."
customerSince: DateTime!
"When the customer or one of its parts was changed last."
changedAt: DateTime
"When the customer was anonymized. Empty means not anonymized."
anonymizedAt: DateTime
}
"The account of a customer: what is open, the credit balance and the credit limit. Amounts in the default currency of the tenant; documents in other currencies are converted with their exchange rate."
type CustomerAccount {
"The default currency of the tenant as ISO 4217 code."
currencyCode: String!
"Number of invoices that are not fully paid."
openInvoiceCount: Int!
"Gross amount still open on these invoices."
openInvoiceAmount: Decimal!
"Number of open invoices that were dunned."
dunnedInvoiceCount: Int!
"Number of sales orders that are not fully delivered."
openSalesOrderCount: Int!
"Gross amount of these sales orders still to be paid."
openSalesOrderAmount: Decimal!
"The credit of the customer in online shops."
creditBalance: Decimal!
"The credit limit. Empty means no limit."
creditLimit: Decimal
"Credit limit minus the open amount of sales orders. Empty when there is no limit; negative when it is exceeded."
availableCredit: Decimal
}
"Whether an action is allowed now."
type CustomerActionAvailability {
"Whether the action is allowed now."
isAllowed: Boolean!
"All reasons against the action. Empty when it is allowed."
blockers: [CustomerActionBlocker!]!
}
"A reason why an action is not allowed."
type CustomerActionBlocker {
"The error code, as in the '409' answer of the action."
code: String!
"A text for people."
message: String!
}
"An address of a customer."
type CustomerAddress {
"The ID of the address."
id: ID!
"The customer."
customerId: ID!
"The use of the address."
type: CustomerAddressType!
"Whether the address is the default of its type. A customer always has a default billing address."
isDefault: Boolean!
"The company name, at most 128 characters."
companyName: String
"An addition to the company name, at most 60 characters."
companyAddition: String
"The salutation, at most 30 characters."
salutation: String
"The academic title, at most 64 characters."
title: String
"The first name, at most 255 characters."
firstName: String
"The last name, at most 255 characters."
lastName: String
"Street and house number, at most 255 characters."
street: String
"An addition to the address, at most 255 characters."
addressAddition: String
"The postal code, at most 24 characters."
postalCode: String
"The city, at most 255 characters."
city: String
"The state or region, at most 255 characters."
state: String
"The country as ISO 3166-1 alpha-2 code, 2 characters."
countryCode: String!
"The email address, at most 255 characters."
email: String
"The phone number, at most 30 characters."
phone: String
"The mobile number, at most 30 characters."
mobile: String
"The fax number, at most 30 characters."
fax: String
"The post number for parcel lockers, at most 255 characters."
postId: String
"The VAT identification number, at most 20 characters."
vatId: String
"The Global Location Number, at most 13 characters."
gln: String
}
"Which actions are allowed for a customer now. A hint for clients: the action checks again and can still refuse."
type CustomerAllowedActions {
"Whether 'DeleteCustomer' is allowed."
delete: CustomerActionAvailability!
"Whether 'AnonymizeCustomer' is allowed."
anonymize: CustomerActionAvailability!
}
"A bank account of a customer, for example for direct debits. Payment card data are not part of the API."
type CustomerBankAccount {
"The ID of the bank account."
id: ID!
"The customer."
customerId: ID!
"Whether this is the default bank account. A customer with bank accounts always has exactly one default."
isDefault: Boolean!
"The account holder, 1 to 255 characters."
accountHolder: String!
"The name of the bank, at most 255 characters."
bankName: String
"The IBAN, at most 34 characters, with a valid check sum. Spaces are removed."
iban: String
"The BIC, 8 or 11 characters."
bic: String
"The national bank code for accounts without IBAN, at most 32 characters."
bankCode: String
"The national account number for accounts without IBAN, at most 32 characters."
accountNumber: String
}
"A cash discount for early payment."
type CustomerCashDiscount {
"The discount in percent, greater than 0 and at most 100."
percent: Decimal!
"Days within which the discount applies, at least 1."
days: Int!
}
"A customer category: a free grouping of customers, for example for lists and statistics. It has no effect on prices."
type CustomerCategory {
"The ID of the customer category."
id: ID!
"The name, unique."
name: String!
}
"A discount of a customer on the items of one item category. It applies in every sales channel."
type CustomerCategoryDiscount {
"The item category."
categoryId: ID!
"The discount in percent, greater than 0 and at most 100."
discountPercent: Decimal!
}
"A contact person at a customer."
type CustomerContact {
"The ID of the contact."
id: ID!
"The customer."
customerId: ID!
"The salutation, at most 255 characters."
salutation: String
"The first name, 1 to 255 characters."
firstName: String!
"The last name, 1 to 64 characters."
lastName: String!
"The department, at most 255 characters."
department: String
"The email address, at most 255 characters."
email: String
"The phone number, at most 32 characters."
phone: String
"The mobile number, at most 32 characters."
mobile: String
"The fax number, at most 32 characters."
fax: String
}
"The dunning settings of a customer."
type CustomerDunningStatus {
"The ID of the customer."
customerId: ID!
"Whether dunning is blocked for the customer. A blocked customer's invoices are never dunned, whatever the block of the single invoice says."
isBlocked: Boolean!
}
"A customer group. It decides which prices and discounts a customer gets."
type CustomerGroup {
"The ID of the customer group."
id: ID!
"The name, unique."
name: String!
"The discount of the group in percent, 0 to 100."
discountPercent: Decimal!
"Whether online shops show net prices to customers of this group."
displaysNetPrices: Boolean!
"The customer print text set that documents of customers of this group print when the customer has none of its own. Empty when none is assigned."
customerPrintTextId: ID
"Whether this is the default group of new customers. There is always exactly one default group."
isDefault: Boolean!
}
"Whether an action is allowed now."
type CustomerGroupActionAvailability {
"Whether the action is allowed now."
isAllowed: Boolean!
"All reasons against the action. Empty when it is allowed."
blockers: [CustomerGroupActionBlocker!]!
}
"A reason why an action is not allowed."
type CustomerGroupActionBlocker {
"The error code, as in the '409' answer of the action."
code: String!
"A text for people."
message: String!
}
"Which actions are allowed for a customer group now. A hint for clients: the action checks again and can still refuse."
type CustomerGroupAllowedActions {
"Whether 'DeleteCustomerGroup' is allowed."
delete: CustomerGroupActionAvailability!
}
"The name of a customer group in one language, shown in online shops."
type CustomerGroupName {
"The language as BCP 47 language tag, for example de or de-AT: language subtag in lower case, region subtag in upper case. Case does not matter on input. Wawi currently holds only the two-letter language subtag."
languageTag: String!
"The name in this language."
name: String!
}
"The order quantity rule of one customer group."
type CustomerGroupOrderQuantityRule {
"The customer group the rule applies to."
customerGroupId: ID!
"The rule."
rule: OrderQuantityRule!
}
"A surcharge on the price of an item that applies to one customer group when a variation value is chosen. It takes precedence over the default surcharge of the value."
type CustomerGroupSurcharge {
"The customer group the surcharge applies to."
customerGroupId: ID!
"Surcharge in net."
surchargeNet: Decimal!
}
"An entry of the history of a customer: something that happened with the customer or one of its documents. Read-only."
type CustomerHistoryEntry {
"What happened, as a stable key. The set grows over time; a client treats an unknown key as an event it does not know. Known keys: OTHER, SALES_ORDER_CREATED, DELIVERY_NOTE_SHIPPED, SALES_ORDER_CHANGED, SUBSCRIPTION_CREATED, SHIPPING_ADDRESS_CHANGED, RETURN_CREATED, RETURN_ARRIVED, RETURN_COMPLETED, INVOICE_CORRECTION_CREATED, INVOICE_CORRECTION_REFUNDED, CREDIT_NOTE_PAYOUT_CREATED, DUNNING_LETTER_CREATED, DUNNING_LETTER_CREATED_AND_SENT, DUNNING_LETTER_CREATED_AND_PRINTED, MESSAGE_SENT, CREDIT_RECEIVED_FROM_SHOP, CUSTOMER_DATA_CHANGED, QUOTATION_CREATED, FULFILLMENT_BILLING_COMPLETED, PAYMENT_POSTED_PARTIALLY_PAID, PAYMENT_POSTED_FULLY_PAID, SALES_ORDER_ADDED_TO_PICK_LIST, DOCUMENT_HELD, PARTIAL_REFUND_SENT, REFUND_SENT, WORKFLOW_EXECUTED, NOTE, INVOICE_SENT_BY_EMAIL, SALES_ORDER_CANCELLED, SALES_ORDER_CANCELLATION_REMOVED, DOCUMENT_DUPLICATED_FROM, DOCUMENT_DUPLICATED_TO, SUBSCRIPTION_CREATED_FROM_DOCUMENT, DOCUMENT_CREATED_AS_SUBSCRIPTION, SALES_ORDER_CREATED_FROM_SUBSCRIPTION, SUBSCRIPTION_CREATED_AS_SALES_ORDER, SALES_ORDER_CREATED_FROM_QUOTATION, QUOTATION_CONVERTED_TO_SALES_ORDER, SALES_ORDERS_COMBINED, QUOTATIONS_COMBINED, DROPSHIPPING_PURCHASE_ORDER_CREATED, SUBSCRIPTIONS_COMBINED, VAT_ID_CHECK_RESULT_RECEIVED, INVOICE_CREATED, DELETED_IN_SHOP, PAYMENT_CHANGED, SALES_ORDER_CREATED_BY_SPLIT, SALES_ORDER_SPLIT, VAT_ID_VIES_CHECK_SUCCEEDED, VAT_ID_VIES_CHECK_FAILED, INVOICE_CANCELLED, INVOICE_DRAFT_CREATED, INVOICE_DRAFT_FINALIZED, INVOICE_DRAFT_DELETED, INVOICE_CORRECTION_CANCELLED, INVOICE_CORRECTION_PAID_OUT, INVOICE_CORRECTION_DRAFT_CREATED, INVOICE_CORRECTION_DRAFT_DELETED, CREDIT_NOTE_CREATED, CREDIT_NOTE_CANCELLED, CREDIT_NOTE_DRAFT_FINALIZED, CREDIT_NOTE_DRAFT_CREATED, SHIPPING_PLATFORM_EVENT, INVOICE_UPLOADED_TO_MARKETPLACE, INVOICE_CORRECTION_UPLOADED_TO_MARKETPLACE, INVOICE_CORRECTION_QUANTITY_EXCEEDED, INVOICE_CORRECTION_AMOUNT_EXCEEDED."
eventType: String!
"When it happened."
occurredAt: DateTime!
"The user who caused it. Empty for automatic events."
userId: ID
"The sales order the event is about, if any."
salesOrderId: ID
}
"A label assigned to a customer. The label itself is managed with the master data."
type CustomerLabel {
"The ID of the label."
labelId: ID!
"The name of the label."
name: String!
}
"A customer in a list. Name and contact data come from the default billing address."
type CustomerListEntry {
"The ID of the customer."
id: ID!
"The customer number."
number: String!
"The company name."
companyName: String
"The first name."
firstName: String
"The last name."
lastName: String
"The email address."
email: String
"The phone number."
phone: String
"The postal code."
postalCode: String
"The city."
city: String
"The country as ISO 3166-1 alpha-2 code."
countryCode: String!
"The customer group."
customerGroupId: ID!
"The customer category."
customerCategoryId: ID
"Whether the customer is blocked."
isBlocked: Boolean!
"Since when the customer exists."
customerSince: DateTime!
"When the customer or one of its parts was changed last. Use it to synchronize changes."
changedAt: DateTime
}
"An event a user can raise by hand on a customer (the manual workflows menu in the Wawi). The workflows that listen to it start; raising it raises the event, not a single workflow."
type CustomerManualWorkflowEvent {
"The ID of the event."
id: ID!
"The display name of the event."
name: String!
"The position in the menu of the Wawi."
sortOrder: Int!
"How many active workflows listen to the event. Raising an event without any does nothing."
activeWorkflowCount: Int!
"The menu groups the event belongs to. Empty when it is not grouped."
groups: [CustomerManualWorkflowEventGroup!]!
}
"A group of manual events as the Wawi shows it in its menu."
type CustomerManualWorkflowEventGroup {
"The ID of the group."
id: ID!
"The name of the group."
name: String!
}
"A note about a customer, written by a user."
type CustomerNote {
"The ID of the note."
id: ID!
"The customer."
customerId: ID!
"The kind of note."
type: CustomerNoteType!
"The text of the note."
text: String!
"The sales order the note is about. Empty means the note is about the customer only."
salesOrderId: ID
"When the note was written."
createdAt: DateTime!
"The user who wrote the note."
createdBy: ID!
}
"An invoice of a customer that is not fully paid. The invoice itself belongs to the sales invoices."
type CustomerOpenItem {
"The invoice."
invoiceId: ID!
"The invoice number."
invoiceNumber: String!
"The invoice date."
invoiceDate: DateTime!
"When payment is due."
dueDate: DateTime
"The currency of the invoice as ISO 4217 code."
currencyCode: String!
"The gross amount of the invoice."
grossAmount: Decimal!
"What is paid."
paidAmount: Decimal!
"What is still open."
openAmount: Decimal!
"The dunning level reached; 0 means not dunned."
dunningLevel: Int!
}
"The payment terms of a customer. They are the defaults for new sales documents of the customer."
type CustomerPaymentTerms {
"The default payment method. Empty means the payment method of the sales channel or the global default."
paymentMethodId: ID
"Days until payment is due. Empty means the global default."
paymentTermDays: Int
"The cash discount for early payment. Empty means none."
cashDiscount: CustomerCashDiscount
}
"The default billing address of a customer: the name and the contact data the customer is known by."
type CustomerPostalAddress {
"The company name, at most 128 characters."
companyName: String
"An addition to the company name, at most 60 characters."
companyAddition: String
"The salutation, at most 30 characters."
salutation: String
"The academic title, at most 64 characters."
title: String
"The first name, at most 255 characters."
firstName: String
"The last name, at most 255 characters."
lastName: String
"Street and house number, at most 255 characters."
street: String
"An addition to the address, at most 255 characters."
addressAddition: String
"The postal code, at most 24 characters."
postalCode: String
"The city, at most 255 characters."
city: String
"The state or region, at most 255 characters."
state: String
"The country as ISO 3166-1 alpha-2 code, 2 characters."
countryCode: String!
"The email address, at most 255 characters."
email: String
"The phone number, at most 30 characters."
phone: String
"The mobile number, at most 30 characters."
mobile: String
"The fax number, at most 30 characters."
fax: String
"The post number for parcel lockers, at most 255 characters."
postId: String
"The VAT identification number, at most 20 characters."
vatId: String
"The Global Location Number, at most 13 characters."
gln: String
}
"The individual prices of an item for one customer in one currency."
type CustomerPriceList {
"The customer the prices apply to."
customerId: ID!
"The currency of the prices as ISO 4217 code. Prices are stored in the default currency of the tenant and converted on the fly into other currencies."
currencyCode: String!
"The price tiers, at least one. Quantities are distinct."
tiers: [PriceTier]
"Present when the prices were converted from the default currency of the tenant."
conversion: CurrencyConversion
}
"A set of texts that is printed on the documents of the customers and customer groups it is assigned to, in the language of the customer. The texts are read with 'QueryCustomerPrintTextTranslationsByCustomerPrintTextId'. Assigning a customer print text to a customer or customer group is done on the customer and on the customer group."
type CustomerPrintText {
"The ID of the customer print text."
id: ID!
"The name of the customer print text, 1 to 255 characters."
name: String!
"The languages with at least one text, as BCP 47 tags. Computed from the translations; empty when it has none."
languageTags: [String!]!
}
"Whether one action is allowed for a customer print text."
type CustomerPrintTextActionAvailability {
"The action key: delete."
action: String!
"Whether the action is allowed right now."
isAllowed: Boolean!
"The reasons why it is not, empty when it is allowed."
blockers: [CustomerPrintTextActionBlocker!]!
}
"One reason why an action is not allowed."
type CustomerPrintTextActionBlocker {
"Stable machine-readable code of the reason, for example CUSTOMER_PRINT_TEXT_USED_BY_CUSTOMERS."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"What can be done with a customer print text right now. It is a hint for user interfaces and can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type CustomerPrintTextAllowedActions {
"One entry per action."
actions: [CustomerPrintTextActionAvailability!]!
}
"The five texts of a customer print text in one language. A text that is empty is not printed."
type CustomerPrintTextTranslation {
"The language as BCP 47 tag."
languageTag: String!
"Printed on the invoice. Plain text; empty when there is none."
invoiceText: String
"Printed on the sales order and on the pick document of the order. Plain text; empty when there is none."
salesOrderText: String
"Printed on the quotation. Plain text; empty when there is none."
quotationText: String
"Printed on the invoice correction (credit note). Plain text; empty when there is none."
invoiceCorrectionText: String
"Printed on the delivery note. Plain text; empty when there is none."
deliveryNoteText: String
}
"The account of a customer in a sales channel, for example a customer account in an online shop. Read-only; the sales channel creates it."
type CustomerSalesChannelAccount {
"The sales channel. Tenant-local, composite identifier, not a UUID. Valid values are listed by the sales channel endpoint (GET)."
salesChannelId: ID!
"The customer group of the customer in this sales channel."
customerGroupId: ID!
"Whether the customer has a registered account (true) or bought as a guest (false)."
isRegistered: Boolean!
"The customer number in the sales channel."
externalCustomerNumber: String
"Since when the customer exists in the sales channel."
customerSince: DateTime
}
"A custom field in a list."
type CustomFieldListEntry {
"The ID of the custom field."
id: ID!
"The data type of the field. Known keys: 'INTEGER', 'DECIMAL', 'TEXT', 'SHORT_TEXT', 'CHECKBOX', 'VALUE_LIST', 'URL', 'EMAIL', 'PHONE', 'COUNTRY_ISO', 'PRICE', 'DATE'. New keys can be added; handle an unknown key as not known, never as a failure."
dataType: String!
"The kind of record the field belongs to. Known keys: 'ITEM', 'CATEGORY', 'CUSTOMER', 'SALES_ORDER', 'SALES_ORDER_LINE_ITEM', 'COMPANY', 'OPERATION', 'PRODUCTION_ITEM', 'PRODUCTION_ORDER', 'RESOURCE'. New keys can be added; handle an unknown key as not known, never as a failure."
entityType: String!
"The name of the group the field is displayed under. Null for fields that belong to no group."
groupName: String
"The name of the field."
name: String!
"An internal description of the field."
description: String
"Where user interfaces show the field. Null for sales orders and sales order line items. Known keys: 'GENERAL', 'CUSTOM_FIELDS_TAB'. New keys can be added; handle an unknown key as not known, never as a failure."
displayLocation: String
"Indicates that a value is expected for this field."
isRequired: Boolean!
"Indicates that user interfaces hide the field."
isHidden: Boolean!
"The position of the field within its group."
sortOrder: Int!
}
"A page or section with its own frontend and its own API. The settings API only announces it."
type CustomNode implements SettingsNode {
"Discriminator of the node kind."
kind: SettingsNodeKind!
"The stable ID of the node. For an input it equals the setting key, for example sales.invoice.dueDays."
id: String!
"The ID of the group the node belongs to. Absent for a top-level node."
parentId: String
"The depth in the tree. A top-level node has level 1."
level: Int!
"The position among the nodes of the same parent. Lower comes first."
sortOrder: Int!
"The text shown for the node, in the language of the caller."
label: String
"A further text, in the language of the caller."
description: String
"A link to a help page."
helpUrl: String
"Extra words the search finds the node by."
keywords: [String!]!
"The scopes the setting can be stored for. Almost every setting has only Global."
scopes: [SettingsScope!]!
"The Wawi permission the caller needs to see and change the node."
requiredPermission: String
"Whether the caller cannot change the setting."
isReadOnly: Boolean!
"Rules that make the node visible, enabled or required depending on other settings."
dependencies: [SettingsDependency!]!
"The ID of the extension that brings it."
extensionId: String!
"The ID of the integration in the extension manifest."
integrationId: String
"The address of the frontend."
frontendUrl: String
"The base route of the API the frontend uses."
apiRoute: String
"The API scopes the frontend needs."
requiredScopes: [String!]!
}
"A date, a time or a date and time setting. The value type is DateTime."
type DateTimeInputNode implements SettingsNode {
"Discriminator of the node kind."
kind: SettingsNodeKind!
"The stable ID of the node. For an input it equals the setting key, for example sales.invoice.dueDays."
id: String!
"The ID of the group the node belongs to. Absent for a top-level node."
parentId: String
"The depth in the tree. A top-level node has level 1."
level: Int!
"The position among the nodes of the same parent. Lower comes first."
sortOrder: Int!
"The text shown for the node, in the language of the caller."
label: String
"A further text, in the language of the caller."
description: String
"A link to a help page."
helpUrl: String
"Extra words the search finds the node by."
keywords: [String!]!
"The scopes the setting can be stored for. Almost every setting has only Global."
scopes: [SettingsScope!]!
"The Wawi permission the caller needs to see and change the node."
requiredPermission: String
"Whether the caller cannot change the setting."
isReadOnly: Boolean!
"Rules that make the node visible, enabled or required depending on other settings."
dependencies: [SettingsDependency!]!
"The key of the setting this input edits. It is also the ID of the node."
settingKey: String!
"The type of the value the setting holds."
valueType: SettingValueType!
"Whether the setting needs a value."
isRequired: Boolean!
"Whether a change only takes effect after Wawi restarts."
requiresRestart: Boolean!
"A warning to show before a change is saved, for example about data that changes as a consequence."
changeWarning: String
"The default the setting has when nobody sets a value."
defaultValue: SettingValue
"The current value of the setting for the scope asked for. Only filled when includeValues is true; a handler field, resolved from the value store."
currentValue: SettingValueEntry
"How much of a date and time the setting holds."
precision: DateTimePrecision!
"The earliest value."
minimum: DateTime
"The latest value."
maximum: DateTime
}
"A date, a time or both, as the setting's precision says."
type DateTimeValue implements SettingValue {
"Discriminator of the value type."
valueType: SettingValueType!
"The point in time."
value: DateTime!
}
"A decimal number setting. The value type is Decimal."
type DecimalInputNode implements SettingsNode {
"Discriminator of the node kind."
kind: SettingsNodeKind!
"The stable ID of the node. For an input it equals the setting key, for example sales.invoice.dueDays."
id: String!
"The ID of the group the node belongs to. Absent for a top-level node."
parentId: String
"The depth in the tree. A top-level node has level 1."
level: Int!
"The position among the nodes of the same parent. Lower comes first."
sortOrder: Int!
"The text shown for the node, in the language of the caller."
label: String
"A further text, in the language of the caller."
description: String
"A link to a help page."
helpUrl: String
"Extra words the search finds the node by."
keywords: [String!]!
"The scopes the setting can be stored for. Almost every setting has only Global."
scopes: [SettingsScope!]!
"The Wawi permission the caller needs to see and change the node."
requiredPermission: String
"Whether the caller cannot change the setting."
isReadOnly: Boolean!
"Rules that make the node visible, enabled or required depending on other settings."
dependencies: [SettingsDependency!]!
"The key of the setting this input edits. It is also the ID of the node."
settingKey: String!
"The type of the value the setting holds."
valueType: SettingValueType!
"Whether the setting needs a value."
isRequired: Boolean!
"Whether a change only takes effect after Wawi restarts."
requiresRestart: Boolean!
"A warning to show before a change is saved, for example about data that changes as a consequence."
changeWarning: String
"The default the setting has when nobody sets a value."
defaultValue: SettingValue
"The current value of the setting for the scope asked for. Only filled when includeValues is true; a handler field, resolved from the value store."
currentValue: SettingValueEntry
"The least value."
minimum: Decimal
"The greatest value."
maximum: Decimal
"The step of a spinner."
step: Decimal
"How many decimal places to keep."
decimalPlaces: Int
"The unit shown next to the value, for example percent."
unit: String
}
"A decimal number."
type DecimalValue implements SettingValue {
"Discriminator of the value type."
valueType: SettingValueType!
"The number."
value: Decimal!
}
"A decimal number."
type DecimalWarehouseSettingValue implements WarehouseSettingValue {
"Discriminator of the value type."
valueType: WarehouseSettingValueType!
"The number."
value: Decimal!
}
"Deletes a shipping method. A shipping method that orders use is not deleted when it is an own one: it is deactivated instead, and the answer says so (outcome Deactivated). An automatically created one that orders use is refused. Translations and the assignment to the Shipping app are deleted with the shipping method. errorCode is one of: SHIPPING_METHOD_NOT_FOUND, SHIPPING_METHOD_IS_MAIN_OF_AUTOMATIC_METHODS, SHIPPING_METHOD_USED_BY_AMAZON, SHIPPING_METHOD_USED_BY_ORDERS. - Response"
type DeleteShippingMethodCommandResponse {
"Deleted or Deactivated."
outcome: DeleteOutcome!
}
"A batch or best-before date the quantity of a line item was taken from."
type DeliveredLot {
"The batch number."
batchNumber: String
"The best-before date."
bestBeforeDate: DateTime
"The quantity taken from this batch or best-before date."
quantity: Decimal!
"The warehouse the quantity was taken from."
warehouseId: ID
}
"Whether one action is allowed right now."
type DeliveryActionAvailability {
"Stable key of the action in UPPER_SNAKE, for example SHIP_DELIVERY_NOTE. New actions can be added; a client that does not know a key ignores the entry."
actionId: String!
"Whether the action is allowed right now."
isAllowed: Boolean!
"The reasons why it is not allowed. Empty when it is allowed."
blockers: [DeliveryBlocker!]!
}
"One reason why something cannot be delivered or done."
type DeliveryBlocker {
"Stable machine-readable code of the reason, for example SALES_ORDER_ON_HOLD. New codes can be added; treat an unknown code as 'not allowed'."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"A delivery note: the goods of one sales order that leave together, in one or more packages. Line items and packages are read with their own queries."
type DeliveryNote {
"The ID of the delivery note."
id: ID!
"The number of the delivery note, by default the number of the sales order with a running suffix."
number: String
"When the delivery note was created (the delivery note date)."
createdAt: DateTime!
"The sales order the delivery note belongs to."
salesOrderId: ID!
"The number of the sales order."
salesOrderNumber: String!
"The order number of the sales channel, for example of the shop or marketplace."
externalOrderNumber: String
"The customer of the sales order."
customerId: ID
"The number of the customer."
customerNumber: String
"The own company of the sales order."
companyId: ID
"The user who created the delivery note."
createdBy: ID
"A free note on the delivery note."
note: String
"The status: open while at least one package has no shipping date, shipped when all packages have one. Computed."
status: DeliveryNoteStatus!
"When the delivery note was shipped: the latest shipping date of its packages. Absent while it is open."
shippedAt: DateTime
"The shipping method of the delivery note: the shipping method of its packages, or the one of the sales order when the packages have none."
shippingMethodId: ID
"When the delivery note was printed last."
printedAt: DateTime
"When the shipping confirmation mail was sent to the customer."
shippingConfirmationSentAt: DateTime
"The shipping weight of the delivered items in kilograms. Computed."
shippingWeight: Decimal!
"The net item weight of the delivered items in kilograms. Computed."
itemWeight: Decimal!
"How many packages the delivery note has."
packageCount: Int!
"How many of them have a shipping date."
shippedPackageCount: Int!
"Whether the last transfer of at least one package to a shipping service failed. Computed."
hasTransferError: Boolean!
"How far the delivered quantities are invoiced. Computed."
invoicingStatus: DeliveryNoteInvoicingStatus!
"Who ships the goods. Stable key in UPPER_SNAKE. Known values: OWN_WAREHOUSE, DROP_SHIPPING, EXTERNAL_FULFILLMENT, FULFILLMENT_NETWORK. New values can be added; a client that does not know a value ignores or tolerates it."
fulfillment: String!
"The supplier that ships the goods. Only for drop shipping."
dropShippingSupplierId: ID
"The fulfillment warehouse that ships the goods. Only for external fulfillment and the JTL Fulfillment Network."
fulfillmentWarehouseId: ID
"The delivery address of the sales order."
deliveryAddress: DeliveryNoteAddress!
"The billing address of the sales order."
billingAddress: DeliveryNoteAddress!
}
"An address of the sales order the delivery note belongs to. A delivery note has no address of its own; it shows the current address of its sales order."
type DeliveryNoteAddress {
"The company name."
companyName: String
"An addition to the company name."
companyAddition: String
"The salutation."
salutation: String
"The academic title."
title: String
"The first name."
firstName: String
"The last name."
lastName: String
"Street and house number."
street: String
"An addition to the address."
addressAddition: String
"The postal code."
postalCode: String
"The city."
city: String
"The state or region."
state: String
"The country as ISO 3166-1 alpha-2 code."
countryCode: String
"The email address."
email: String
"The phone number."
phone: String
"The fax number."
fax: String
}
"What can be done with a delivery note right now. A hint for user interfaces that can be outdated with the next change; the action itself always checks again and refuses with the same codes. Known action keys: UPDATE_DELIVERY_NOTE, SHIP_DELIVERY_NOTE, CREATE_PACKAGE, CREATE_DELIVERY_NOTE_SHIPPING_LABELS."
type DeliveryNoteAllowedActions {
"One entry per action, allowed or not."
actions: [DeliveryActionAvailability!]!
}
"How delivery notes are sent to the partner. Any combination is possible."
type DeliveryNoteDispatch {
"Print."
print: Boolean!
"Send by e-mail."
mail: Boolean!
"Send by fax."
fax: Boolean!
"The template the delivery note is output with."
templateId: ID
}
"A line item of a delivery note: a delivered quantity of one sales order line item. Item, price and tax stay on the sales order line item."
type DeliveryNoteLineItem {
"The ID of the line item."
id: ID!
"The delivery note."
deliveryNoteId: ID!
"The sales order line item that was delivered."
salesOrderLineItemId: ID!
"The item of the sales order line item. Absent for line items without an item."
itemId: ID
"The SKU of the item."
sku: String
"The name of the line item as on the sales order."
name: String!
"The delivered quantity."
quantity: Decimal!
"The sales unit of the quantity."
unit: String
"A free note on the line item."
note: String
"The serial numbers of the delivered quantity. Empty for items without serial numbers."
serialNumbers: [String!]!
"The batches and best-before dates the quantity was taken from. Empty for items without batch or best-before tracking."
lots: [DeliveredLot!]!
}
"One row of the delivery note overview, with the delivery and billing address of the sales order flattened so that they can be filtered and sorted. The delivery note itself is read with the single query; packages and line items have their own queries."
type DeliveryNoteListEntry {
"The ID of the delivery note."
id: ID!
"The number of the delivery note, by default the number of the sales order with a running suffix."
number: String
"When the delivery note was created (the delivery note date)."
createdAt: DateTime!
"The sales order the delivery note belongs to."
salesOrderId: ID!
"The number of the sales order."
salesOrderNumber: String!
"The order number of the sales channel, for example of the shop or marketplace."
externalOrderNumber: String
"The customer of the sales order."
customerId: ID
"The number of the customer."
customerNumber: String
"The own company of the sales order."
companyId: ID
"The user who created the delivery note."
createdBy: ID
"A free note on the delivery note."
note: String
"The status: open while at least one package has no shipping date, shipped when all packages have one. Computed."
status: DeliveryNoteStatus!
"When the delivery note was shipped: the latest shipping date of its packages. Absent while it is open."
shippedAt: DateTime
"The shipping method of the delivery note: the shipping method of its packages, or the one of the sales order when the packages have none."
shippingMethodId: ID
"When the delivery note was printed last."
printedAt: DateTime
"When the shipping confirmation mail was sent to the customer."
shippingConfirmationSentAt: DateTime
"The shipping weight of the delivered items in kilograms. Computed."
shippingWeight: Decimal!
"The net item weight of the delivered items in kilograms. Computed."
itemWeight: Decimal!
"How many packages the delivery note has."
packageCount: Int!
"How many of them have a shipping date."
shippedPackageCount: Int!
"Whether the last transfer of at least one package to a shipping service failed. Computed."
hasTransferError: Boolean!
"How far the delivered quantities are invoiced. Computed."
invoicingStatus: DeliveryNoteInvoicingStatus!
"Who ships the goods. Stable key in UPPER_SNAKE. Known values: OWN_WAREHOUSE, DROP_SHIPPING, EXTERNAL_FULFILLMENT, FULFILLMENT_NETWORK. New values can be added; a client that does not know a value ignores or tolerates it."
fulfillment: String!
"The supplier that ships the goods. Only for drop shipping."
dropShippingSupplierId: ID
"The fulfillment warehouse that ships the goods. Only for external fulfillment and the JTL Fulfillment Network."
fulfillmentWarehouseId: ID
"The company name of the delivery address."
deliveryAddressCompanyName: String
"The first name of the delivery address."
deliveryAddressFirstName: String
"The last name of the delivery address."
deliveryAddressLastName: String
"Street and house number of the delivery address."
deliveryAddressStreet: String
"The addition to the delivery address."
deliveryAddressAddressAddition: String
"The postal code of the delivery address."
deliveryAddressPostalCode: String
"The city of the delivery address."
deliveryAddressCity: String
"The state or region of the delivery address."
deliveryAddressState: String
"The country of the delivery address as ISO 3166-1 alpha-2 code."
deliveryAddressCountryCode: String
"The email address of the delivery address."
deliveryAddressEmail: String
"The phone number of the delivery address."
deliveryAddressPhone: String
"The fax number of the delivery address."
deliveryAddressFax: String
"The company name of the billing address."
billingAddressCompanyName: String
"The first name of the billing address."
billingAddressFirstName: String
"The last name of the billing address."
billingAddressLastName: String
"Street and house number of the billing address."
billingAddressStreet: String
"The addition to the billing address."
billingAddressAddressAddition: String
"The postal code of the billing address."
billingAddressPostalCode: String
"The city of the billing address."
billingAddressCity: String
"The state or region of the billing address."
billingAddressState: String
"The country of the billing address as ISO 3166-1 alpha-2 code."
billingAddressCountryCode: String
"The email address of the billing address."
billingAddressEmail: String
"The phone number of the billing address."
billingAddressPhone: String
"The fax number of the billing address."
billingAddressFax: String
}
"An event a user can raise by hand on a delivery note (the manual workflows menu in the Wawi). The workflows that listen to it start; raising it raises the event, not a single workflow."
type DeliveryNoteManualWorkflowEvent {
"The ID of the event."
id: ID!
"The display name of the event."
name: String!
"The position in the menu of the Wawi."
sortOrder: Int!
"How many active workflows listen to the event. Raising an event without any does nothing."
activeWorkflowCount: Int!
"The menu groups the event belongs to. Empty when it is not grouped."
groups: [DeliveryNoteManualWorkflowEventGroup!]!
}
"A group of manual events as the Wawi shows it in its menu."
type DeliveryNoteManualWorkflowEventGroup {
"The ID of the group."
id: ID!
"The name of the group."
name: String!
}
"A package (parcel) of a delivery note. A package is shipped when it has a shipping date."
type DeliveryPackage {
"The ID of the package."
id: ID!
"The delivery note of the package."
deliveryNoteId: ID!
"The sales order of the delivery note."
salesOrderId: ID!
"The shipping method. Absent when none is set."
shippingMethodId: ID
"The weight in kilograms."
weight: Decimal!
"The tracking number of the carrier."
trackingNumber: String
"The tracking link, built from the tracking link template of the shipping method, the tracking number, the shipping date and the postal code of the delivery address. Absent when one of them is missing. Computed."
trackingUrl: String
"Whether the package has a shipping date. Computed."
isShipped: Boolean!
"When the package was shipped."
shippedAt: DateTime
"When the package was created (packed)."
packedAt: DateTime!
"The expected delivery date reported by the carrier."
expectedDeliveryDate: DateTime
"A free note on the package."
note: String
"The name of the carrier."
carrierName: String
"The reference of the shipment at the shipping service."
shipmentReference: String
"The tracking number of a return label enclosed in the package."
enclosedReturnTrackingNumber: String
"The shipping method of the enclosed return label."
returnShippingMethodId: ID
"Result of the last transfer of the package to a shipping service."
transferStatus: ShippingTransferStatus!
"Whether a shipping label document is stored for the package. Computed."
hasShippingLabel: Boolean!
"The current tracking state key when the package is registered for tracking, for example Delivered. See GetPackageTrackingByPackageId."
trackingState: String
}
"One condition on another setting."
type DependencyCondition {
"The key of the setting to look at."
settingKey: String!
"How to compare."
operator: ConditionOperator!
"The value to compare with. Absent for IsSet and IsNotSet."
value: SettingValue
}
"The settings of a digital voucher. A voucher without them is a physical voucher card."
type DigitalVoucherDelivery {
"The ID of the print template set the voucher is produced with."
printTemplateSetId: VorlageSetKey!
"How the voucher document is produced. Absent when the voucher is not issued by Wawi. One of PRINT, EMAIL or PRINT_AND_EMAIL. The list can grow; a client treats a value it does not know as unknown and does not fail."
issueMethod: String
}
"A disposition. It records the demand for a production item, together with the quantity planned and already produced to cover it."
type Disposition {
"The ID of this disposition."
id: ID!
"The ID of the production item this disposition is for (see GetProductionItemById)."
productionItemId: ID!
"The required quantity (demand)."
targetQuantity: Decimal!
"The quantity planned for production, for example in production orders."
plannedQuantity: Decimal!
"The quantity produced so far."
actualQuantity: Decimal!
"The processing status of this disposition."
status: DispositionStatus!
"The point in time by which the required quantity has to be available. Not set if there is no such deadline."
targetCompletionDate: DateTime
"A comment on this disposition. Not set if there is none."
comment: String
"The origin of this disposition, for example the sales order line item it was created for. Not set if the disposition has no origin."
origin: DispositionOrigin
"The point in time at which this disposition was created."
createdAt: DateTime!
"The ID of the user who created this disposition. Not set if the user is unknown."
createdBy: ID
}
"A disposition that originates from a production order."
type DispositionProductionOrderOrigin implements DispositionOrigin {
"The type of this origin."
originType: DispositionOriginType!
"The ID of the production order this disposition originates from (see GetProductionOrderById)."
productionOrderId: ID!
}
"A disposition that originates from a purchase order line item."
type DispositionPurchaseOrderOrigin implements DispositionOrigin {
"The type of this origin."
originType: DispositionOriginType!
"The ID of the purchase order line item this disposition originates from."
purchaseOrderLineItemId: ID!
}
"A disposition that originates from a sales order line item."
type DispositionSalesOrderOrigin implements DispositionOrigin {
"The type of this origin."
originType: DispositionOriginType!
"The ID of the sales order line item this disposition originates from."
salesOrderLineItemId: ID!
"The ID of the sales order this disposition originates from. Not set if it is not recorded."
salesOrderId: ID
}
"An item with stock managed in fractional quantities."
type DivisibleStockItem implements Item {
"The ID of the item."
id: ID!
"Name of the item in the default language."
name: String!
"Whether the item is active. An inactive item cannot be sold or used as a kit component."
isActive: Boolean!
"The ID of the product group."
productGroupId: ID
"The ID of the manufacturer."
manufacturerId: ID
"The ID of the item condition, for example new or used."
conditionId: ID
"The ID of the delivery status of the item (the master data of delivery statuses, for example \"in stock\" or \"ships in 3 days\")."
deliveryStatusId: ID
"The variation parent this item is a combination of. Absent when the item is no combination. Read-only for every kind of item: the assignment is maintained at the parent only (items/variation-parents/{itemId}/combinations)."
variationParentId: ID
"Every trait that applies to the item, ordered by rank, the first being the kind in 'itemType'. The kind is the first rule that applies; the others would otherwise be lost (a stock-managed variation parent is a VariationParent with the trait StockItem, a stock-managed kit made of divisible parts is a Kit with the trait DivisibleStockItem). Only the fields of the kind are part of the model; sub-resources are offered by the kind. Clients must tolerate values they do not know."
traits: [ItemType!]!
"When the item was created."
createdAt: DateTime
"When the item was last changed."
changedAt: DateTime
"Discriminator of the item kind."
itemType: ItemType!
"The identifiers of the item, each in its own property."
identifiers: TradeItemIdentifiers!
"The ID of the tax class."
taxClassId: ID
"The ID of the shipping class."
shippingClassId: ID
"Outer dimensions as shipped. Absent when none are maintained."
dimensions: ItemDimensions
"Weights. Absent when none are maintained."
weights: ItemWeights
"Customs information. Absent when none is maintained."
customs: ItemCustoms
"Sales unit, packaging unit and content with its base price. Absent when none is maintained."
units: ItemUnits
"The containers the item is also traded in. Empty when it has none."
containers: [ItemContainer!]!
"Settings of the stock management."
stockManagement: StockManagement!
"What the stock postings carry to trace the lots. Absent when the item uses neither. Serial numbers are not possible, so none can be read here."
lotTracking: LotTrackingType
}
"A setting with one choice out of a list. The value type is Choice. The options source names a GraphQL query."
type DropdownNode implements SettingsNode {
"Discriminator of the node kind."
kind: SettingsNodeKind!
"The stable ID of the node. For an input it equals the setting key, for example sales.invoice.dueDays."
id: String!
"The ID of the group the node belongs to. Absent for a top-level node."
parentId: String
"The depth in the tree. A top-level node has level 1."
level: Int!
"The position among the nodes of the same parent. Lower comes first."
sortOrder: Int!
"The text shown for the node, in the language of the caller."
label: String
"A further text, in the language of the caller."
description: String
"A link to a help page."
helpUrl: String
"Extra words the search finds the node by."
keywords: [String!]!
"The scopes the setting can be stored for. Almost every setting has only Global."
scopes: [SettingsScope!]!
"The Wawi permission the caller needs to see and change the node."
requiredPermission: String
"Whether the caller cannot change the setting."
isReadOnly: Boolean!
"Rules that make the node visible, enabled or required depending on other settings."
dependencies: [SettingsDependency!]!
"The key of the setting this input edits. It is also the ID of the node."
settingKey: String!
"The type of the value the setting holds."
valueType: SettingValueType!
"Whether the setting needs a value."
isRequired: Boolean!
"Whether a change only takes effect after Wawi restarts."
requiresRestart: Boolean!
"A warning to show before a change is saved, for example about data that changes as a consequence."
changeWarning: String
"The default the setting has when nobody sets a value."
defaultValue: SettingValue
"The current value of the setting for the scope asked for. Only filled when includeValues is true; a handler field, resolved from the value store."
currentValue: SettingValueEntry
"The fixed options. Absent when the options come from a source."
options: [ChoiceOption!]!
"Where to read the options from when they are master data. Absent when the options are fixed."
optionsSource: ResourceReference
"Whether the user can clear the choice."
isClearable: Boolean!
}
"A purchase order the supplier delivers straight to a customer. Its goods are never booked into stock."
type DropShippingPurchaseOrder implements PurchaseOrder {
"The ID of the purchase order."
id: ID!
"The purchase order number. It is drawn from the number range when the order is created and cannot be changed through the API; empty for an older order without one."
number: String!
"Where the order stands."
status: PurchaseOrderStatus!
"Whether an order to a warehouse is overdue: it was sent, something of the ordered quantity is still undelivered and the requested delivery date has passed. Never true for a drop shipping order. Computed."
isOverdue: Boolean!
"Whether the supplier has confirmed the order. Set with 'ConfirmPurchaseOrder', reset with 'ResetPurchaseOrderConfirmation'."
isConfirmed: Boolean!
"Whether the order was completed by hand with 'CompletePurchaseOrder', possibly with quantities still undelivered."
isCompletedManually: Boolean!
"The ID of the supplier. It cannot be changed."
supplierId: ID!
"The supplier's address and contact person on the order. 'companyName' is the supplier's name. Changing the contact person replaces the person fields."
supplierAddress: PurchaseOrderAddress
"The company's customer number at the supplier, as printed on the order."
customerNumberAtSupplier: String
"The ID of the company that orders."
companyId: ID
"The billing address: the address of the company, taken from the company again on every change of the order header."
billingAddress: PurchaseOrderAddress
"Where the supplier delivers to: the address of the warehouse or of the customer, unless it was replaced."
deliveryAddress: PurchaseOrderAddress
"The language of the order documents as BCP 47 language tag, for example de or de-AT, the supplier's language."
languageTag: String
"The currency of all prices of the order as currency code (ISO 4217 alpha-3 in capitals, for example EUR; a currency defined by the tenant has the prefix 'x-'), the supplier's currency. It cannot be changed through the API."
currencyCode: String!
"The exchange rate from the order currency to the base currency of the company: a base-currency amount is the order amount divided by it."
exchangeRate: Decimal!
"When the goods are requested. Completing the order by hand sets it to the day of completion."
requestedDeliveryDate: DateTime
"The supplier's number for the order, for example the number of its order confirmation."
supplierDocumentNumber: String
"A free reference. For a drop shipping order from a sales delivery it is the number of the sales order."
referenceNumber: String
"A comment for internal use; it is not printed."
internalComment: String
"A note printed on the order documents."
printNote: String
"The net total of all line items, allowances and charges included, in the order currency. Computed."
totalNetAmount: Decimal!
"The gross total: the net total plus the tax of each line item. Computed."
totalGrossAmount: Decimal!
"When the order was first marked as sent."
sentAt: DateTime
"When the order was last printed."
lastPrintedAt: DateTime
"When the order was last sent by e-mail."
lastMailedAt: DateTime
"When the order was last exported."
lastExportedAt: DateTime
"When the supplier was last reminded of undelivered quantities."
lastReminderAt: DateTime
"When the order was created."
createdAt: DateTime
"The user who created the order."
createdBy: ID
"Discriminator: the kind of the order."
purchaseOrderType: PurchaseOrderType!
"The ID of the customer who receives the goods. Empty for an older order stored without a customer."
customerId: ID
"The ID of the delivery note of the sales delivery the order came from. Empty for an order created by hand."
deliveryNoteId: ID
}
"A warehouse that stands for the route from a source to a target warehouse. It has neither address nor options of its own."
type DropShippingWarehouse implements Warehouse {
"The ID of the warehouse."
id: ID!
"The name of the warehouse. It is unique among the active warehouses."
name: String!
"The short name of the warehouse."
shortName: String
"A free description of the warehouse."
description: String
"Whether the warehouse is active. An inactive warehouse takes no new stock postings and no new orders."
isActive: Boolean!
"The priority of the warehouse when orders are delivered: orders are served from the warehouse with the lowest number first."
deliveryPriority: Int!
"The ID of the company the warehouse belongs to."
companyId: ID
"The digit from 0 to 9 that the warehouse puts into the shipping unit numbers (NVE) of its shipments."
nveExtensionDigit: String
"Whether the stock of the warehouse is left out of the available stock."
isLockedForAvailableStock: Boolean!
"Whether the warehouse manages storage locations that this API shows (true for a warehouse with storage location management). Every other warehouse has one storage location internally, which the API does not show; its storage location operations fail with errorCode WAREHOUSE_TYPE_DOES_NOT_SUPPORT_STORAGE_LOCATIONS."
hasStorageLocations: Boolean!
"Whether stock can be posted on the warehouse directly, by a stock posting. True only for an active warehouse of the type 'Standard'; every other warehouse takes stock through the processes of its own system."
allowsDirectStockPosting: Boolean!
"Discriminator of the warehouse type."
warehouseType: WarehouseType!
"The warehouse the goods come from."
sourceWarehouseId: ID!
"The warehouse the goods go to."
targetWarehouseId: ID!
}
"A reason why a dunning action is not allowed."
type DunningBlocker {
"The blocker code, for example SALES_INVOICE_DUNNING_BLOCKED. New codes can be added; treat an unknown code as 'not allowed'."
code: String!
"A readable explanation of the reason."
message: String!
}
"One step of the dunning procedure, for example a payment reminder or a second dunning notice. Levels belong to a scope: a company and a customer group, each of which can be 'all'. For an invoice that has not been dunned yet, the most specific scope that has levels is used, in this order: the company and the customer group of the invoice, the company and all customer groups, all companies and the customer group, all companies and all customer groups. Later notices stay in the scope of the first one."
type DunningLevel {
"The ID of the dunning level."
id: ID!
"The company the level applies to. Empty means all companies."
companyId: ID
"The customer group the level applies to. Empty means all customer groups."
customerGroupId: ID
"The position of the level in its scope, 1 to 255. A notice at a level is followed by a notice at the next higher number of the same scope. A new level gets the number one higher than the highest number in its scope. Numbers never change, so deleting a level in the middle leaves a gap, and the number of a deleted highest level goes to the next new level."
levelNumber: Int!
"The name of the level, for example 'Payment reminder'. Output templates for dunning letters are chosen by this name. Empty if the level has no name."
name: String!
"The number of days the customer gets to pay after the dunning date of a notice at this level. 0 if the level has no payment term. The term of level 1 is also the default payment term of new sales orders for customers without their own payment term."
paymentTermDays: Int!
"The number of days after the payment due date before a notice at this level can be issued. 0 if the level has no grace period."
gracePeriodDays: Int!
"The fee charged with a notice at this level, in the currency of the invoice."
flatFee: Decimal!
"The yearly interest rate in percent for late payment. With a notice at this level the interest is charged per day, on the open amount, from the original payment due date of the invoice up to the day the notice is issued."
annualInterestRatePercent: Decimal!
}
"The next dunning notice of a sales invoice and whether it can be issued now."
type DunningNextNotice {
"Whether 'CreateDunningNotice' would issue the next notice now."
isAllowed: Boolean!
"All reasons why the next notice cannot be issued now. Empty if it can. These are the blocker codes 'CreateDunningNotice' answers with."
blockers: [DunningBlocker!]!
"The ID of the level of the next notice. Empty if there is no next level."
dunningLevelId: ID
"The level number of the next notice. Empty if there is no next level."
levelNumber: Int
"The first day the next notice can be issued. Empty if there is no next level."
dunnableFrom: DateTime
}
"A dunning notice for one sales invoice: a payment reminder or a dunning letter at one dunning level. An invoice gets at most one notice per level number, and the notice with the highest level number is the current one. The values of the level are copied into the notice when it is issued, so later changes of the level do not change it."
type DunningNotice {
"The ID of the dunning notice."
id: ID!
"The ID of the sales invoice the notice is for."
salesInvoiceId: ID!
"The ID of the customer of the invoice. Empty for an invoice without a customer record."
customerId: ID
"The ID of the dunning level the notice was issued at. The level may have been deleted since."
dunningLevelId: ID!
"The level number the notice was issued at."
levelNumber: Int!
"The current name of the dunning level. Empty if the level has been deleted."
levelName: String
"Whether this is the current notice of the invoice, that is the notice with the highest level number."
isCurrent: Boolean!
"The date printed on the notice. Empty if none was recorded."
dunningDate: DateTime
"The new payment due date the notice gives the customer: the dunning date plus the payment term of the level, unless it was changed later. Empty if the notice sets none; then the payment due date of the invoice applies."
paymentDueDate: DateTime
"The payment term of the level when the notice was issued. 0 if none was recorded."
paymentTermDays: Int!
"The grace period of the level when the notice was issued. 0 if none was recorded."
gracePeriodDays: Int!
"The flat fee of the level when the notice was issued."
flatFee: Decimal!
"The yearly interest rate of the level when the notice was issued."
annualInterestRatePercent: Decimal!
"The fee charged with this notice: the flat fee plus the interest for the days since the original payment due date of the invoice."
fee: Decimal!
"The open amount of the invoice, gross, when the notice was issued, without the fee. Empty if it was not recorded."
outstandingAmount: Decimal
"The ISO 4217 code of the currency of the invoice. All amounts of the notice are in this currency."
currencyCode: String!
"A free comment on the notice."
comment: String
"The dunning run that issued the notice. Empty for a notice that was not issued by a dunning run."
dunningRunId: ID
"When the notice was issued. Empty if it was not recorded."
createdAt: DateTime
"The user who issued the notice."
createdBy: ID
}
"A sales invoice that can be dunned now, with the notice it would get. The list is a snapshot for display and is not binding: a dunning run selects the invoices again when it runs."
type DunningProposal {
"The ID of the sales invoice."
salesInvoiceId: ID!
"The ID of the customer of the invoice. Empty for an invoice without a customer record."
customerId: ID
"The ID of the company of the invoice."
companyId: ID!
"The ID of the customer group of the invoice."
customerGroupId: ID
"The ID of the payment method of the invoice. Empty if the invoice has none."
paymentMethodId: ID
"The current payment due date: the one of the current notice, or of the invoice if it has not been dunned yet."
dueDate: DateTime!
"The first day the next notice can be issued: the due date plus the grace period of the next level, plus one day."
dunnableFrom: DateTime!
"The open amount of the invoice, gross, without dunning fees."
openAmount: Decimal!
"The ISO 4217 code of the currency of the invoice."
currencyCode: String!
"The ID of the current notice. Empty if the invoice has not been dunned yet."
currentDunningNoticeId: ID
"The level number of the current notice. Empty if the invoice has not been dunned yet."
currentLevelNumber: Int
"The ID of the level the next notice would be issued at."
nextDunningLevelId: ID!
"The level number of the next notice."
nextLevelNumber: Int!
"The fee the next notice would charge if it were issued today."
expectedFee: Decimal!
}
"A dunning run: the dunning notices issued for all invoices that matched a selection at the time of the run."
type DunningRun {
"The ID of the dunning run."
id: ID!
"The state of the run."
status: DunningRunStatus!
"The date printed on the notices of this run."
dunningDate: DateTime!
"The selection: earliest payment due date."
dueDateFrom: DateTime!
"The selection: latest payment due date. Empty means no upper bound."
dueDateTo: DateTime
"The selection: company. Empty means all companies."
companyId: ID
"The selection: customer group. Empty means all customer groups."
customerGroupId: ID
"The selection: payment method. Empty means all payment methods."
paymentMethodId: ID
"The selection: level number of the notices. Empty means all levels."
levelNumber: Int
"The selection: minimum open amount."
minimumOpenAmount: Decimal!
"The number of notices the run has issued, one per invoice. List them with 'QueryDunningNotices' and the filter 'dunningRunId'."
createdNoticeCount: Int!
"The invoices that were selected but could not be dunned any more when the run wrote its notices, with the reason. Invoices that do not meet the rules at selection time are not selected at all and are not listed."
skippedInvoices: [DunningRunSkippedInvoice!]!
"Why the run failed. Empty unless the status is Failed."
error: DunningRunError
"When the run was started."
createdAt: DateTime!
"The user who started the run."
createdBy: ID
"When the run finished. Empty while it is running."
completedAt: DateTime
}
"Why a dunning run failed."
type DunningRunError {
"The error code: DUNNING_RUN_TIMED_OUT (the run stopped making progress, for example because the server was restarted) or DUNNING_RUN_ABORTED (an unexpected error; no notices were issued). New codes can be added."
code: String!
"A readable explanation."
message: String!
}
"A sales invoice that a dunning run selected but did not dun."
type DunningRunSkippedInvoice {
"The ID of the sales invoice."
salesInvoiceId: ID!
"Why the invoice was skipped: one of the blocker codes of 'CreateDunningNotice', DunningDateBeforeCurrentNotice, or DUNNING_NOTICE_ALREADY_ISSUED if the invoice got its next notice in the meantime."
code: String!
"A readable explanation of the reason."
message: String!
}
"Creates a new item as a copy of an existing one. The copy has the same kind. The new item number is required; which parts and sub-resources are taken over is chosen per part, parts that are omitted are taken over. The categories are always taken over unless others are named, because the copy is never a combination of a variation parent, not even when the original is one, and so always needs a category. - Response"
type DuplicateItemCommandResponse {
"The ID of the copy."
itemId: ID!
}
"One tier of an effective price: from which quantity it applies and what the price is then. A percentage tier is already calculated."
type EffectivePriceTier {
"The quantity from which the tier applies."
fromQuantity: Decimal!
"The net price per unit from this quantity on."
netPrice: Decimal!
"The gross price from this quantity on. Present when the row has a gross price."
gross: GrossPrice
}
"An employee who works in production."
type Employee implements Resource {
"The ID of this resource."
id: ID!
"The category of this resource. It cannot be changed. Clients treat an unknown category as a resource without category-specific properties."
category: ResourceCategoryType!
"The number of this resource."
number: String!
"The name of this resource."
name: String!
"The description of this resource, or null if it has none."
description: String
"The ID of the resource type of this resource. The resource type belongs to the same category as the resource."
resourceTypeId: ID!
"Whether this resource is active. An inactive resource is no longer used for new production planning."
isActive: Boolean!
"The point in time at which this resource was created."
createdAt: DateTime!
"The point in time at which this resource was last changed."
changedAt: DateTime!
"The ID of the user the employee is linked to. Set on creation; cannot be changed."
userId: ID!
}
"A warehouse run by an external fulfillment partner."
type ExternalFulfillmentWarehouse implements Warehouse {
"The ID of the warehouse."
id: ID!
"The name of the warehouse. It is unique among the active warehouses."
name: String!
"The short name of the warehouse."
shortName: String
"A free description of the warehouse."
description: String
"Whether the warehouse is active. An inactive warehouse takes no new stock postings and no new orders."
isActive: Boolean!
"The priority of the warehouse when orders are delivered: orders are served from the warehouse with the lowest number first."
deliveryPriority: Int!
"The ID of the company the warehouse belongs to."
companyId: ID
"The digit from 0 to 9 that the warehouse puts into the shipping unit numbers (NVE) of its shipments."
nveExtensionDigit: String
"Whether the stock of the warehouse is left out of the available stock."
isLockedForAvailableStock: Boolean!
"Whether the warehouse manages storage locations that this API shows (true for a warehouse with storage location management). Every other warehouse has one storage location internally, which the API does not show; its storage location operations fail with errorCode WAREHOUSE_TYPE_DOES_NOT_SUPPORT_STORAGE_LOCATIONS."
hasStorageLocations: Boolean!
"Whether stock can be posted on the warehouse directly, by a stock posting. True only for an active warehouse of the type 'Standard'; every other warehouse takes stock through the processes of its own system."
allowsDirectStockPosting: Boolean!
"Discriminator of the warehouse type."
warehouseType: WarehouseType!
"Whether the warehouse is locked for delivery: its stock stays available but orders are not delivered from it."
isLockedForDelivery: Boolean!
"The postal address of the warehouse with its contact person."
address: WarehouseAddress!
"How fulfillment orders and delivery notes are sent to the partner."
dispatch: FulfillmentDispatchSettings!
}
"An uploaded file or image, found by its blob identifier."
type File {
"The public ID of the file, chosen by the client at the upload."
blobIdentifier: UUID!
"The state: PROCESSING, AVAILABLE or FAILED. Clients must accept values they do not know."
state: String!
"The size of the file in bytes. Empty if unknown."
sizeInBytes: Long
"Whether a business object uses the file. A file in use cannot be deleted."
isInUse: Boolean!
"The file name given at the upload."
fileName: String!
"When the download URL expires. Empty if there is no download URL."
downloadUrlExpiresAt: DateTime
"A short-lived URL to download the file, set only in the state AVAILABLE. Do not store it."
downloadUrl: String
"When the file was uploaded."
createdAt: DateTime!
"The content type of the file. Empty if unknown."
contentType: String
}
"A kind of business object a file can be uploaded for, with its limits."
type FileDestinationType {
"The key of the destination type, as given at the upload."
key: String!
"Whether images can be uploaded for this destination type."
supportsImages: Boolean!
"Whether documents can be uploaded for this destination type."
supportsFiles: Boolean!
"The largest allowed file size in bytes. Empty if there is no limit of its own."
maxSizeInBytes: Long
"Whether only the types in 'allowedContentTypes' can be uploaded. If false, every type can be uploaded except blocked ones, such as executables."
isLimitedToAllowedContentTypes: Boolean!
"The content types that can be uploaded when 'isLimitedToAllowedContentTypes' is true. Empty otherwise."
allowedContentTypes: [String!]!
}
"An HTTP header the client must send with the bytes of an upload."
type FileUploadHeader {
"The name of the header."
name: String!
"The value of the header."
value: String!
}
"Gives a draft its number from the number range of its company and makes it binding; from now on it can only be cancelled. The invoice date and the value date stay as they are. Payments of the sales order are taken over, and the workflow event for a created invoice fires. A refusal carries 'blockers' with all reasons, each with a code and a message. Errors: errorCode is SALES_INVOICE_NOT_FOUND (no sales invoice with this ID); errorCode is SALES_INVOICE_ALREADY_FINALIZED (the invoice is not a draft); errorCode is SALES_INVOICE_HAS_NO_LINE_ITEMS (a draft without line items cannot be finalized). - Response"
type FinalizeSalesInvoiceCommandResponse {
"The number the invoice got."
salesInvoiceNumber: String!
}
"Finishes the inventory of a standard warehouse: the counted quantities of all inventory counts of the warehouse become its new stock, and the counts are removed. For each counted item, and for each counted batch number and best-before date, stock is posted in or out by the difference between the current stock and the counted quantity; a counted quantity of 0 posts the whole stock out. Items without a count keep their stock unless setUncountedToZero is true. Finishing can take a long time for a large inventory. Send an Idempotency-Key header to make retries safe. - Response"
type FinishInventoryCountCommandResponse {
"The ID of the run."
finishRunId: UUID!
}
"A free-text variation of an item: a text the customer types in when ordering, for example an engraving. It has no values, no surcharge and no item number. It is not a kind of item and every kind can have it. The free-text variations of a variation parent are shown on every combination as well (isInherited)."
type FreeTextVariation {
"The ID of the free-text variation."
id: ID!
"Display name in the default language. It is the label of the input field."
name: String!
"The label per language. Never null."
names: [LocalizedText!]!
"Zero-based position among the variations of the item."
position: Int!
"Whether the customer has to enter a text. A required free text is a requirement of the order entry, see section 5m on how far the Wawi enforces it."
isRequired: Boolean!
"Whether the free-text variation belongs to the variation parent of the item and is shown here only. Read-only: it is changed at the parent."
isInherited: Boolean!
}
"How an external fulfillment partner gets its documents."
type FulfillmentDispatchSettings {
"Fulfillment orders."
fulfillmentOrder: FulfillmentOrderDispatch!
"Delivery notes."
deliveryNote: DeliveryNoteDispatch!
}
"A warehouse of the JTL-Fulfillment Network."
type FulfillmentNetworkWarehouse implements Warehouse {
"The ID of the warehouse."
id: ID!
"The name of the warehouse. It is unique among the active warehouses."
name: String!
"The short name of the warehouse."
shortName: String
"A free description of the warehouse."
description: String
"Whether the warehouse is active. An inactive warehouse takes no new stock postings and no new orders."
isActive: Boolean!
"The priority of the warehouse when orders are delivered: orders are served from the warehouse with the lowest number first."
deliveryPriority: Int!
"The ID of the company the warehouse belongs to."
companyId: ID
"The digit from 0 to 9 that the warehouse puts into the shipping unit numbers (NVE) of its shipments."
nveExtensionDigit: String
"Whether the stock of the warehouse is left out of the available stock."
isLockedForAvailableStock: Boolean!
"Whether the warehouse manages storage locations that this API shows (true for a warehouse with storage location management). Every other warehouse has one storage location internally, which the API does not show; its storage location operations fail with errorCode WAREHOUSE_TYPE_DOES_NOT_SUPPORT_STORAGE_LOCATIONS."
hasStorageLocations: Boolean!
"Whether stock can be posted on the warehouse directly, by a stock posting. True only for an active warehouse of the type 'Standard'; every other warehouse takes stock through the processes of its own system."
allowsDirectStockPosting: Boolean!
"Discriminator of the warehouse type."
warehouseType: WarehouseType!
"Whether the warehouse is locked for delivery: its stock stays available but orders are not delivered from it."
isLockedForDelivery: Boolean!
"The postal address of the warehouse with its contact person."
address: WarehouseAddress!
"The ID of the warehouse in the fulfillment network. Absent while the warehouse is not linked yet."
fulfillmentNetworkWarehouseId: String
}
"How fulfillment orders are sent to the partner. Any combination is possible."
type FulfillmentOrderDispatch {
"Print."
print: Boolean!
"Send by e-mail."
mail: Boolean!
"Send by fax."
fax: Boolean!
"Export."
export: Boolean!
"The template the fulfillment order is output with."
templateId: ID
}
"A function attribute: a technical switch for online shops and interfaces. Customers do not see it in the shop. It has one name that is not translated."
type FunctionAttribute implements Attribute {
"The ID of the attribute."
id: ID!
"The kind of the attribute. It cannot be changed after the attribute was created."
kind: AttributeKind!
"The kind of record the attribute can be assigned to. It cannot be changed after the attribute was created. Known values: ITEM, CATEGORY. The set can grow; a client must tolerate values it does not know."
entityType: String!
"The data type of the attribute value. Known values: INTEGER, DECIMAL, TEXT, CHECKBOX, VALUE_LIST, URL, EMAIL, PHONE, COUNTRY_ISO, PRICE, DATE, SHORT_TEXT. The set can grow; a client must tolerate values it does not know."
dataType: String!
"The technical identifier of the attribute. Online shops, plug-ins and interfaces recognise a function attribute by it. For multilingual attributes the system assigns it and it cannot be changed."
code: String!
"The name of the group the attribute is displayed under. Attributes of both kinds share the groups of their entity type. A group exists as long as at least one attribute carries its name."
groupName: String!
"An internal description of the attribute for staff. It is not shown to customers."
description: String
"The position of the attribute within its group. The API does not store a group order; sort groups by 'groupName'."
sortOrder: Int!
"Indicates an attribute supplied by the system. It cannot be deleted; only the online shops it is transferred to can be changed."
isSystem: Boolean!
"The online shops the attribute is transferred to. An empty list means that no shop receives it."
activeSalesChannels: [AttributeSalesChannel!]!
"The name of the function attribute."
name: String!
"The allowed values in the order they are offered. Empty unless the data type is 'ValueList'."
allowedValues: [FunctionAttributeAllowedValue!]!
}
"An allowed value of a function attribute of type value list."
type FunctionAttributeAllowedValue {
"The entry text."
value: String!
}
"Requests return labels from the carrier of a shipping method and adds them to the return. It needs a pickup address. - Response"
type GenerateReturnLabelsCommandResponse {
"The IDs of the new return labels."
returnLabelIds: [ID!]!
}
"The gross price with the tax it is made of. It depends on the company, the delivery country and the tax class of the item."
type GrossPrice {
"The gross price."
amount: Decimal!
"The tax rate that applies, in percent."
taxRate: Decimal!
"The tax class of the item the rate comes from."
taxClassId: ID!
"The delivery country the tax was determined for, as ISO 3166-1 alpha-2 code."
deliveryCountryCode: String!
}
"A group of nodes."
type GroupNode implements SettingsNode {
"Discriminator of the node kind."
kind: SettingsNodeKind!
"The stable ID of the node. For an input it equals the setting key, for example sales.invoice.dueDays."
id: String!
"The ID of the group the node belongs to. Absent for a top-level node."
parentId: String
"The depth in the tree. A top-level node has level 1."
level: Int!
"The position among the nodes of the same parent. Lower comes first."
sortOrder: Int!
"The text shown for the node, in the language of the caller."
label: String
"A further text, in the language of the caller."
description: String
"A link to a help page."
helpUrl: String
"Extra words the search finds the node by."
keywords: [String!]!
"The scopes the setting can be stored for. Almost every setting has only Global."
scopes: [SettingsScope!]!
"The Wawi permission the caller needs to see and change the node."
requiredPermission: String
"Whether the caller cannot change the setting."
isReadOnly: Boolean!
"Rules that make the node visible, enabled or required depending on other settings."
dependencies: [SettingsDependency!]!
"How the group wants to be shown. A hint only."
presentation: GroupPresentation!
"The key of an icon the frontend may show."
iconKey: String
}
"Hazardous goods classification of an item."
type HazardousGoods {
"UN number of the hazardous good."
unNumber: String
"Hazard identification number (Kemler number)."
hazardIdentificationNumber: String
}
"The health of the installation in numbers. It contains no user or computer names."
type HealthSummary {
"The overall status."
status: HealthStatus!
"When the status was determined, in database time."
checkedAt: DateTime!
"How long a session may stay silent before it counts as overdue, in seconds."
heartbeatTimeoutSeconds: Int!
"How many known applications are services."
serviceCount: Int!
"How many of them have a living session."
runningServiceCount: Int!
"How many sessions are overdue: not ended, but silent for longer than the timeout."
staleSessionCount: Int!
"How many sessions are alive."
activeSessionCount: Int!
"How many different users have a living session."
loggedInUserCount: Int!
}
"Delivers one transaction of an external payment account, for example from a payment service the ERP has no connection for. A transaction with the same 'transactionId' in the account is updated (its note and whether it is ignored stay); this is how a pending transaction is completed later. Import filters, workflows and the import cutoff date of the account apply as for a fetch; 'outcome' tells what happened. When automatic assignment is switched on in the settings, it runs for the delivered transaction afterwards. Errors: PAYMENT_ACCOUNT_NOT_FOUND (the payment account was not found); PAYMENT_ACCOUNT_HIDDEN (the payment account is hidden; show it with 'ShowPaymentAccount' first); PAYMENT_ACCOUNT_NOT_EXTERNAL (the account is not an external account; its transactions come from the bank or the payment provider); PAYMENT_TRANSACTION_ASSIGNED (the transaction is assigned or refunded, and the change would alter its amount or its currency, switch its kind to or from Fee, or end it as cancelled, failed or expired); CURRENCY_ISO_CODE_INVALID (the currency is not a three-letter ISO 4217 code). - Response"
type ImportPaymentTransactionCommandResponse {
"The ID of the transaction. Empty when the transaction was discarded."
paymentTransactionId: ID
"What the import did."
outcome: PaymentTransactionImportOutcome!
}
"An invoice received from a supplier: what was bought, what it costs and how much of it is paid."
type IncomingInvoice {
"When the invoice was created. Empty only for invoices imported without this date."
createdAt: DateTime
"When the invoice or one of its line items, additional costs or payments was last changed."
changedAt: DateTime
"The user who last changed the invoice."
changedBy: ID
"The ID of the incoming invoice."
id: ID!
"The own number of the invoice, assigned from the number range when it is created. Empty only for invoices imported without a number."
number: String
"The number the supplier printed on the invoice. Also used to match bank transactions."
supplierInvoiceNumber: String
"True when another incoming invoice of the same supplier has the same supplier invoice number. A hint; it does not block anything."
isSupplierInvoiceNumberDuplicate: Boolean!
"The supplier who issued the invoice. Empty only for older invoices recorded without a supplier; such an invoice cannot be posted."
supplierId: ID
"The contact person at the supplier."
supplierContactId: ID
"The address of the supplier as printed on the invoice."
supplierAddress: IncomingInvoiceSupplierAddress!
"Lifecycle status. Changes only by posting and, between Posted and Closed, through the payments."
status: IncomingInvoiceStatus!
"How much of the payable amount is paid. Independent of \"status\": an open invoice can be paid in full too."
paymentStatus: IncomingInvoicePaymentStatus!
"Whether the invoice is approved for payment. Payments can only be recorded, changed or deleted while the invoice is approved."
isApprovedForPayment: Boolean!
"The date printed on the invoice."
invoiceDate: DateTime
"Date by which the invoice is to be paid."
dueDate: DateTime
"Date of the payment that settled the invoice in full. Empty while an amount is open."
paidAt: DateTime
"Internal notes."
notes: String
"The invoice currency, the currency of the supplier; the home currency when the invoice has no supplier. All prices and amounts of the invoice except payments are in this currency. ISO 4217 code, three letters. Accepted in any letter case, returned in upper case."
currencyCode: String!
"Units of the invoice currency per unit of the home currency. 1 when the supplier invoices in the home currency."
exchangeRate: Decimal!
"How additional costs are distributed over the line items when they are set for the whole invoice."
additionalCostDistributionMethod: AdditionalCostDistributionMethod!
"Computed amounts."
totals: IncomingInvoiceTotals!
}
"Whether one action on an incoming invoice would be allowed right now, and if not, why not."
type IncomingInvoiceActionAvailability {
"The action."
action: IncomingInvoiceAction!
"Whether the action would go through right now."
isAllowed: Boolean!
"The reasons why it would not. Empty when it is allowed."
blockers: [IncomingInvoiceActionBlocker!]!
}
"One reason why an action on an incoming invoice is not allowed."
type IncomingInvoiceActionBlocker {
"Stable machine-readable code of the reason, for example IncomingInvoicePosted. Unknown codes mean \"not allowed\"."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"An additional cost of an incoming invoice, for example freight or customs, and how much of it is allocated to the line items."
type IncomingInvoiceAdditionalCost {
"The type of the cost. An invoice has at most one cost per type."
additionalCostTypeId: ID!
"Name of the type."
additionalCostTypeName: String!
"Net amount of the cost in its own currency, the sum over all line items, rounded to 2 decimal places."
netAmount: Decimal!
"Tax rate of the cost in percent."
taxRate: Decimal!
"\"netAmount\" plus tax, in the currency of the cost, rounded to 2 decimal places."
grossAmount: Decimal!
"The currency of the cost. Can differ from the invoice currency, for example for freight invoiced by a carrier. ISO 4217 code, three letters. Accepted in any letter case, returned in upper case."
currencyCode: String!
"Units of the cost currency per unit of the home currency."
exchangeRate: Decimal!
"\"netAmount\" converted into the invoice currency, rounded to 2 decimal places."
netAmountInInvoiceCurrency: Decimal!
"From the type: whether the cost is part of the amount payable to the supplier."
isPayableToSupplier: Boolean!
"From the type: whether the cost is added to the purchase price of the items when the invoice is posted."
affectsPurchasePrice: Boolean!
}
"What can be done with an incoming invoice right now. A hint for user interfaces that can be outdated by the next change; every action checks again and refuses with the same codes."
type IncomingInvoiceAllowedActions {
"The ID of the incoming invoice."
incomingInvoiceId: ID!
"One entry per action, allowed or not."
actions: [IncomingInvoiceActionAvailability!]!
}
"A cash discount granted by the supplier for one tax rate. Its quantity is 1, its net unit price is the negative discount, and it gets no additional costs."
type IncomingInvoiceCashDiscountLineItem implements IncomingInvoiceLineItem {
"The ID of the line item."
id: ID!
"The incoming invoice the line item belongs to."
incomingInvoiceId: ID!
"The kind of the line item."
lineItemType: IncomingInvoiceLineItemType!
"Description of the line item."
name: String
"Invoiced quantity. Rounded to 4 decimal places."
quantity: Decimal!
"Unit of the quantity as printed on the invoice."
unit: String
"Net price per unit in the invoice currency. Negative for cash discounts. Rounded to 4 decimal places."
netUnitPrice: Decimal!
"Tax rate in percent."
taxRate: Decimal!
"Quantity times net unit price, in the invoice currency, rounded to 2 decimal places."
netAmount: Decimal!
"\"netAmount\" plus tax, in the invoice currency, rounded to 2 decimal places."
grossAmount: Decimal!
"Net amount of the additional costs allocated to this line item, in the invoice currency, rounded to 2 decimal places."
additionalCostsNetAmount: Decimal!
"Internal note."
notes: String
"The discount for this tax rate as a positive net amount in the invoice currency, rounded to 2 decimal places: minus \"netAmount\"."
amount: Decimal!
}
"A line item with a free description and no item, for example a service, or a shipping charge, surcharge or discount taken over from a purchase order. Also lines whose item was deleted later."
type IncomingInvoiceFreeTextLineItem implements IncomingInvoiceLineItem {
"The ID of the line item."
id: ID!
"The incoming invoice the line item belongs to."
incomingInvoiceId: ID!
"The kind of the line item."
lineItemType: IncomingInvoiceLineItemType!
"Description of the line item."
name: String
"Invoiced quantity. Rounded to 4 decimal places."
quantity: Decimal!
"Unit of the quantity as printed on the invoice."
unit: String
"Net price per unit in the invoice currency. Negative for cash discounts. Rounded to 4 decimal places."
netUnitPrice: Decimal!
"Tax rate in percent."
taxRate: Decimal!
"Quantity times net unit price, in the invoice currency, rounded to 2 decimal places."
netAmount: Decimal!
"\"netAmount\" plus tax, in the invoice currency, rounded to 2 decimal places."
grossAmount: Decimal!
"Net amount of the additional costs allocated to this line item, in the invoice currency, rounded to 2 decimal places."
additionalCostsNetAmount: Decimal!
"Internal note."
notes: String
"The purchase order the line item comes from."
purchaseOrderId: ID
"The purchase order line the line item invoices."
purchaseOrderLineItemId: ID
}
"A line item that invoices an item of the catalog."
type IncomingInvoiceItemLineItem implements IncomingInvoiceLineItem {
"The ID of the line item."
id: ID!
"The incoming invoice the line item belongs to."
incomingInvoiceId: ID!
"The kind of the line item."
lineItemType: IncomingInvoiceLineItemType!
"Description of the line item."
name: String
"Invoiced quantity. Rounded to 4 decimal places."
quantity: Decimal!
"Unit of the quantity as printed on the invoice."
unit: String
"Net price per unit in the invoice currency. Negative for cash discounts. Rounded to 4 decimal places."
netUnitPrice: Decimal!
"Tax rate in percent."
taxRate: Decimal!
"Quantity times net unit price, in the invoice currency, rounded to 2 decimal places."
netAmount: Decimal!
"\"netAmount\" plus tax, in the invoice currency, rounded to 2 decimal places."
grossAmount: Decimal!
"Net amount of the additional costs allocated to this line item, in the invoice currency, rounded to 2 decimal places."
additionalCostsNetAmount: Decimal!
"Internal note."
notes: String
"The invoiced item."
itemId: ID!
"Item number (SKU) of the item when the line item was created."
sku: String
"The item number of the supplier."
supplierSku: String
"The name of the item at the supplier."
supplierItemName: String
"The purchase order the line item comes from."
purchaseOrderId: ID
"The purchase order line the line item invoices."
purchaseOrderLineItemId: ID
}
"The part of an additional cost allocated to one line item."
type IncomingInvoiceLineItemAdditionalCost {
"The type of the cost."
additionalCostTypeId: ID!
"Name of the type."
additionalCostTypeName: String!
"Net amount allocated to this line item, in the currency of the cost. Rounded to 4 decimal places."
netAmount: Decimal!
"\"netAmount\" divided by the quantity of the line item. Rounded to 4 decimal places."
netAmountPerUnit: Decimal!
"The currency of the cost. ISO 4217 code, three letters. Accepted in any letter case, returned in upper case."
currencyCode: String!
}
"An incoming invoice as an entry of a list: the header fields and the main amounts, without address and totals details."
type IncomingInvoiceListEntry {
"The ID of the incoming invoice."
id: ID!
"The own number of the invoice."
number: String
"The number the supplier printed on the invoice."
supplierInvoiceNumber: String
"The supplier who issued the invoice. Empty only for older invoices recorded without a supplier."
supplierId: ID
"Name of the supplier as printed on the invoice."
supplierName: String
"Lifecycle status."
status: IncomingInvoiceStatus!
"How much of the payable amount is paid."
paymentStatus: IncomingInvoicePaymentStatus!
"Whether the invoice is approved for payment."
isApprovedForPayment: Boolean!
"The date printed on the invoice."
invoiceDate: DateTime
"Date by which the invoice is to be paid."
dueDate: DateTime
"Date of the payment that settled the invoice in full."
paidAt: DateTime
"The invoice currency. ISO 4217 code, three letters. Accepted in any letter case, returned in upper case."
currencyCode: String!
"Net amount payable to the supplier, in the invoice currency, rounded to 2 decimal places."
netAmount: Decimal!
"Gross amount payable to the supplier, in the invoice currency, rounded to 2 decimal places."
grossAmount: Decimal!
"Amount still to be paid, in the home currency, rounded to 2 decimal places."
openAmount: Decimal!
"Home currency of the tenant, the currency of \"openAmount\". ISO 4217 code, three letters. Accepted in any letter case, returned in upper case."
homeCurrencyCode: String!
"When the invoice was created. Empty only for invoices imported without this date."
createdAt: DateTime
"When the invoice or one of its line items, additional costs or payments was last changed."
changedAt: DateTime
}
"An event a user can raise by hand on a incoming invoice (the manual workflows menu in the Wawi). The workflows that listen to it start; raising it raises the event, not a single workflow."
type IncomingInvoiceManualWorkflowEvent {
"The ID of the event."
id: ID!
"The display name of the event."
name: String!
"The position in the menu of the Wawi."
sortOrder: Int!
"How many active workflows listen to the event. Raising an event without any does nothing."
activeWorkflowCount: Int!
"The menu groups the event belongs to. Empty when it is not grouped."
groups: [IncomingInvoiceManualWorkflowEventGroup!]!
}
"A group of manual events as the Wawi shows it in its menu."
type IncomingInvoiceManualWorkflowEventGroup {
"The ID of the group."
id: ID!
"The name of the group."
name: String!
}
"A payment to the supplier for an incoming invoice. Amounts are in the home currency of the tenant."
type IncomingInvoicePayment {
"The ID of the payment."
id: ID!
"The incoming invoice the payment is for."
incomingInvoiceId: ID!
"Paid amount in the home currency, 2 decimal places. Positive for money paid to the supplier, negative for money refunded by the supplier."
amount: Decimal!
"The home currency of the tenant. ISO 4217 code, three letters. Accepted in any letter case, returned in upper case."
currencyCode: String!
"Date of the payment."
paidAt: DateTime
"The payment method."
paymentMethodId: ID!
"Name of the payment method when the payment was recorded."
paymentMethodName: String
"Whether the payment is a down payment."
isDownPayment: Boolean!
"Note."
notes: String
"ID of the transaction at the bank or payment provider."
externalTransactionId: String
"The bank transaction the payment was matched to. Matched payments cannot be changed or deleted."
paymentTransactionId: ID
"Whether a transfer order to the supplier was created for the payment. Such payments cannot be changed or deleted."
hasOutgoingTransfer: Boolean!
"The user who recorded the payment or last changed it."
changedBy: ID
}
"A purchase order that has line items on an incoming invoice."
type IncomingInvoicePurchaseOrder {
"The purchase order."
purchaseOrderId: ID!
"The number of the purchase order."
purchaseOrderNumber: String!
"How many line items of the invoice come from this purchase order."
lineItemCount: Int!
"Net amount of these line items, in the invoice currency, rounded to 2 decimal places."
netAmount: Decimal!
"True when lines of this purchase order are also on other incoming invoices. A hint; it does not block anything."
isOnOtherIncomingInvoices: Boolean!
}
"The address of the supplier as printed on the invoice. A copy taken when the invoice is created; later changes of the supplier do not change it."
type IncomingInvoiceSupplierAddress {
"Name of the supplier (company)."
name: String
"Additional address line."
addressSupplement: String
"Street and house number."
street: String
"Postal code."
postalCode: String
"City."
city: String
"State or region."
state: String
"Country as ISO 3166-1 alpha-2 code, as stored on the invoice (upper case for invoices recorded through this API)."
countryCode: String
"Phone number."
phone: String
"Fax number."
fax: String
"Mobile phone number."
mobile: String
"Email address."
email: String
}
"Amounts of an incoming invoice, computed from its line items, additional costs and payments. Read-only. Amounts are rounded to 2 decimal places."
type IncomingInvoiceTotals {
"Net amount of all line items, cash discounts included, in the invoice currency."
lineItemsNetAmount: Decimal!
"Net amount of all additional costs, in the invoice currency. Includes costs that are not payable to the supplier."
additionalCostsNetAmount: Decimal!
"Net amount payable to the supplier: line items plus the additional costs whose type is payable to the supplier, in the invoice currency."
netAmount: Decimal!
"Tax on \"netAmount\", in the invoice currency."
taxAmount: Decimal!
"Gross amount payable to the supplier, in the invoice currency."
grossAmount: Decimal!
"\"grossAmount\" converted into the home currency of the tenant with \"exchangeRate\"."
grossAmountInHomeCurrency: Decimal!
"Sum of all payments, in the home currency."
paidAmount: Decimal!
"Amount still to be paid, in the home currency: \"grossAmountInHomeCurrency\" minus \"paidAmount\". Zero once \"paymentStatus\" is Paid, negative when overpaid."
openAmount: Decimal!
"Amount paid beyond \"grossAmountInHomeCurrency\", in the home currency. Zero unless the invoice is overpaid."
overpaidAmount: Decimal!
"Home currency of the tenant, the currency of the payments. ISO 4217 code, three letters. Accepted in any letter case, returned in upper case."
homeCurrencyCode: String!
}
"The customer group has no price list of its own and takes over the base price of the item. Its effective price is the base price."
type InheritedCustomerGroupPrices implements CustomerGroupPriceList {
"Discriminator: where the price comes from."
source: CustomerGroupPriceSource!
"The customer group the price applies to."
customerGroupId: ID!
"Whether the item is offered in the sales channel for this customer group."
isVisible: Boolean!
"The net price that applies to this customer group at quantity 1, whether it is taken over or its own. For a percentage tier it is calculated from the base price. Absent when the item has no base price and the list has no tier for quantity 1."
effectiveNetPrice: Decimal
"The currency of the prices as ISO 4217 code: the currency the prices were asked for: the default currency of the tenant or the one given by the caller."
currencyCode: String!
"Present when the prices were converted from the default currency of the tenant."
conversion: CurrencyConversion
"The sales channel the price applies in. The Wawi sales channel carries the default prices."
salesChannelId: ID!
}
"A whole number setting. The value type is Integer."
type IntegerInputNode implements SettingsNode {
"Discriminator of the node kind."
kind: SettingsNodeKind!
"The stable ID of the node. For an input it equals the setting key, for example sales.invoice.dueDays."
id: String!
"The ID of the group the node belongs to. Absent for a top-level node."
parentId: String
"The depth in the tree. A top-level node has level 1."
level: Int!
"The position among the nodes of the same parent. Lower comes first."
sortOrder: Int!
"The text shown for the node, in the language of the caller."
label: String
"A further text, in the language of the caller."
description: String
"A link to a help page."
helpUrl: String
"Extra words the search finds the node by."
keywords: [String!]!
"The scopes the setting can be stored for. Almost every setting has only Global."
scopes: [SettingsScope!]!
"The Wawi permission the caller needs to see and change the node."
requiredPermission: String
"Whether the caller cannot change the setting."
isReadOnly: Boolean!
"Rules that make the node visible, enabled or required depending on other settings."
dependencies: [SettingsDependency!]!
"The key of the setting this input edits. It is also the ID of the node."
settingKey: String!
"The type of the value the setting holds."
valueType: SettingValueType!
"Whether the setting needs a value."
isRequired: Boolean!
"Whether a change only takes effect after Wawi restarts."
requiresRestart: Boolean!
"A warning to show before a change is saved, for example about data that changes as a consequence."
changeWarning: String
"The default the setting has when nobody sets a value."
defaultValue: SettingValue
"The current value of the setting for the scope asked for. Only filled when includeValues is true; a handler field, resolved from the value store."
currentValue: SettingValueEntry
"The least value."
minimum: Long
"The greatest value."
maximum: Long
"The step of a spinner."
step: Long
"The unit shown next to the value, for example days."
unit: String
}
"A whole number."
type IntegerOptionValue implements OptionValue {
"Discriminator of the value type."
valueType: OptionValueType!
"The number."
value: Long!
}
"A whole number."
type IntegerValue implements SettingValue {
"Discriminator of the value type."
valueType: SettingValueType!
"The number."
value: Long!
}
"A whole number."
type IntegerWarehouseSettingValue implements WarehouseSettingValue {
"Discriminator of the value type."
valueType: WarehouseSettingValueType!
"The number."
value: Long!
}
"The counted quantity of an item in a standard warehouse, recorded during an inventory and not yet booked. For items managed by batch number, best-before date or serial number, one count exists per batch number and best-before date, or per serial number. A count exists until the inventory of its warehouse is finished; finishing books the counted quantities and removes the counts."
type InventoryCount {
"Unique identifier of the inventory count."
id: ID!
"Unique identifier of the standard warehouse in which the item was counted."
warehouseId: ID!
"Unique identifier of the counted item."
itemId: ID!
"The counted quantity of the item. Never negative; a whole number unless the item is divisible."
quantity: Decimal!
"The best-before date of the counted stock. Present only for items managed by best-before date."
shelfLifeEndDate: DateTime
"The batch number of the counted stock. Present only for items managed by batch number."
batchNumber: String
"The serial number of the counted unit. Present only for items managed by serial number; the quantity is then 1."
serialNumber: String
}
"A run that finishes the inventory of a standard warehouse, and how far it is. The counts of the warehouse are removed only when the run succeeded."
type InventoryCountFinishRun {
"The ID of the run."
finishRunId: UUID!
"Unique identifier of the standard warehouse whose inventory is finished."
warehouseId: ID!
"Where the run stands."
status: InventoryCountFinishStatus!
"When the request was accepted."
requestedAt: DateTime!
"When the run ended. Absent while it is queued or running."
finishedAt: DateTime
"The error code (errorCode) when the run failed."
failureCode: String
}
"Whether one action on an item would be allowed right now, and if not, why not. The action is a string key, not an enum, because the list of actions can grow without a change of the schema. Keys today: DELETE, DEACTIVATE, DUPLICATE."
type ItemActionAvailability {
"The key of the action, for example DELETE. A client that does not know a key ignores the entry."
actionId: String!
"Whether the action would go through right now."
isAllowed: Boolean!
"The reasons why it would not. Empty when it is allowed."
blockers: [ItemActionBlocker!]!
}
"One reason why an action on an item is not allowed."
type ItemActionBlocker {
"Stable machine-readable code of the reason, for example ITEM_HAS_STOCK."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"What can be done with an item right now. It is a hint for user interfaces and can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type ItemAllowedActions {
"One entry per action, allowed or not."
actions: [ItemActionAvailability!]!
"One entry per kind other than the current one."
convertTargets: [ConvertTargetAvailability!]!
}
"An attribute of an item with its values per sales channel and language."
type ItemAttribute {
"The ID of the attribute definition."
attributeId: ID!
"The values of the attribute the item has, at least one."
values: [ItemAttributeValue!]!
}
"One value of an attribute: for a sales channel and a language."
type ItemAttributeValue {
"The sales channel the value applies in. The Wawi sales channel carries the default value."
salesChannelId: ID!
"The language of the value as BCP 47 language tag, for example 'de' or 'de-AT'. Language subtag in lower case, region subtag in upper case; the input is not case-sensitive. Absent for a value without language."
languageTag: String
"The value."
value: ItemFieldValue
}
"The base price (German 'Grundpreis') of an item, stated for a reference quantity of a unit, for example per 1 liter or per 100 grams. It exists only for an item that has content."
type ItemBasePrice {
"The unit the base price refers to, for example liter. It has to be a unit of the same kind as the unit of the content, so that the content can be converted into it."
referenceUnitId: ID!
"The quantity of the reference unit the base price refers to, for example 1 or 100."
referenceQuantity: Decimal!
}
"A yes or no."
type ItemBooleanFieldValue implements ItemFieldValue {
"Discriminator of the value variant."
type: ItemFieldValueType!
"Whether it is yes."
flag: Boolean!
}
"A category an item is assigned to. Every item that is not a combination of a variation parent is assigned to at least one."
type ItemCategory {
"The ID of the category."
categoryId: ID!
"The names of the category and its parents from the root, in the default language. Absent when the category has no name in the default language."
path: String
"Whether the assignment is taken over from the variation parent. True for every category of a combination of a variation parent, which cannot change them; false otherwise."
isInherited: Boolean!
}
"A characteristic (German 'Merkmal') of an item with the values the item has for it."
type ItemCharacteristic {
"The ID of the characteristic."
characteristicId: ID!
"Name of the characteristic in the default language."
name: String!
"The values of the characteristic the item has, at least one."
values: [ItemCharacteristicValue!]!
}
"A value of a characteristic of an item."
type ItemCharacteristicValue {
"The ID of the characteristic value."
valueId: ID!
"The value in the default language."
text: String!
}
"Whether one action on an item condition would be allowed right now, and if not, why not."
type ItemConditionActionAvailability {
"The stable key of the action: 'deactivate', 'delete'."
action: String!
"Whether the action would go through right now."
isAllowed: Boolean!
"The reasons why it would not. Empty when it is allowed."
blockers: [ItemConditionActionBlocker!]!
}
"One reason why an action on an item condition is not allowed."
type ItemConditionActionBlocker {
"Stable machine-readable code of the reason, for example ITEM_CONDITION_IS_ASSIGNED_TO_ITEMS."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"What can be done with an item condition right now. A hint for user interfaces that can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type ItemConditionAllowedActions {
"One entry per action."
actions: [ItemConditionActionAvailability!]!
}
"An item condition in a list."
type ItemConditionListEntry {
"The ID of the item condition."
id: ID!
"How the condition deals with stock. It cannot be changed after the condition was created."
stockHandling: ItemConditionStockHandling!
"The name in each language it has, including languages that are no longer active. It always has a name in the standard language of the Wawi."
translations: [ItemConditionTranslation!]!
"The colour as hex value with a leading '#', shown in the warehouse. Null when none."
color: String
"The position in lists; smaller comes first."
sortOrder: Int!
"Whether the condition can be chosen. Inactive conditions stay on the items and returns that already carry them."
isActive: Boolean!
"Whether it is the standard condition that items without another condition carry. Computed; there is exactly one."
isDefault: Boolean!
"Whether it was delivered with the Wawi. A system condition cannot be deleted. Computed."
isSystem: Boolean!
}
"A sales platform that item conditions can be mapped to, with the values it offers."
type ItemConditionMarketplace {
"The key of the platform."
marketplace: String!
"The name of the platform in the language of the request."
name: String!
"The values the platform offers. Empty when the platform takes any whole number (see the description of the operation)."
codes: [ItemConditionMarketplaceCodeOption!]!
}
"The value of one sales platform that an item condition is mapped to, for example the condition 'used' of eBay."
type ItemConditionMarketplaceCode {
"The key of the sales platform, one of those that 'QueryItemConditionMarketplaces' returns."
marketplace: String!
"The code of the platform's value, one of the codes that 'QueryItemConditionMarketplaces' returns for the platform."
code: String!
}
"One value of a sales platform."
type ItemConditionMarketplaceCodeOption {
"The code of the value."
code: String!
"The name of the value in the language of the request."
name: String!
}
"Where an item condition can be chosen: in the returns and when the condition of an item is changed in the warehouse. Both properties apply together: an item must be in one of the product groups and directly in one of the categories, when both are given."
type ItemConditionRestriction {
"Only items of these product groups can take the condition. Null means no limit by product group; an empty list means no item."
productGroupIds: [ID!]!
"Only items directly in one of these categories can take the condition; subcategories do not count. Null means no limit by category; an empty list means no item."
categoryIds: [ID!]!
}
"The name of an item condition in one language."
type ItemConditionTranslation {
"The language as BCP 47 tag, for example 'de' or 'de-AT'. The output is lower case."
languageTag: String!
"The name in that language."
name: String!
}
"A container (German 'Gebinde') the item is also traded in, for example a box of twelve. It has its own GTIN and UPC."
type ItemContainer {
"The ID of the container."
id: ID!
"The unit the container is traded in, for example box."
unitId: ID!
"Name of the unit in the default language. Read-only."
unitName: String
"How many units of the item the container holds."
quantity: Decimal!
"Global Trade Item Number of the container."
gtin: String
"Universal Product Code of the container."
upc: String
}
"What the item contains, for example 500 ml, and, when a base price is declared, what it refers to. Quantity and unit belong together, and the base price only makes sense with content, so the base price is part of the content."
type ItemContent {
"How much the item contains, measured in the unit, for example 500."
quantity: Decimal!
"The unit of the quantity, for example milliliter."
unitId: ID!
"The base price. Present when a base price is declared for the item, absent otherwise."
basePrice: ItemBasePrice
}
"A group of cross-selling items of an item, for example accessories, with the items in it."
type ItemCrossSellingGroup {
"The ID of the cross-selling group."
groupId: ID!
"Name of the group in the default language."
name: String!
"The items offered in the group. The order is not stored and has no meaning."
itemIds: [ID!]!
}
"A custom field (German 'Eigenes Feld') of an item with its value. A custom field has neither a sales channel nor a language."
type ItemCustomField {
"The ID of the custom field."
customFieldId: ID!
"The value."
value: ItemFieldValue
}
"Customs information of an item."
type ItemCustoms {
"Customs tariff number (HS code)."
tariffNumber: String
"Country of origin as ISO 3166-1 alpha-2 code."
countryOfOrigin: String
"Hazardous goods classification. Absent for an item that is not a hazardous good."
hazardousGoods: HazardousGoods
}
"A date with time."
type ItemDateFieldValue implements ItemFieldValue {
"Discriminator of the value variant."
type: ItemFieldValueType!
"The date."
date: DateTime!
}
"A decimal number."
type ItemDecimalFieldValue implements ItemFieldValue {
"Discriminator of the value variant."
type: ItemFieldValueType!
"The number."
number: Decimal!
}
"A delivery status of items: the availability text an item shows in the sales channels, for example 'in stock' or 'delivery in 2 to 3 days'. It exists as its translations: one name per language."
type ItemDeliveryStatus {
"The ID of the delivery status."
id: ID!
"The name in each language it has, including languages that are no longer active. At least one."
translations: [ItemDeliveryStatusTranslation!]!
}
"Whether one action on a delivery status would be allowed right now, and if not, why not."
type ItemDeliveryStatusActionAvailability {
"The stable key of the action: 'delete'."
action: String!
"Whether the action would go through right now."
isAllowed: Boolean!
"The reasons why it would not. Empty when it is allowed."
blockers: [ItemDeliveryStatusActionBlocker!]!
}
"One reason why an action on a delivery status is not allowed."
type ItemDeliveryStatusActionBlocker {
"Stable machine-readable code of the reason, for example ITEM_DELIVERY_STATUS_IS_ASSIGNED_TO_ITEMS."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"What can be done with a delivery status right now. A hint for user interfaces that can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type ItemDeliveryStatusAllowedActions {
"One entry per action."
actions: [ItemDeliveryStatusActionAvailability!]!
}
"The name of a delivery status in one language."
type ItemDeliveryStatusTranslation {
"The language as BCP 47 tag, for example 'de' or 'de-AT'. The output is lower case."
languageTag: String!
"The name in that language."
name: String!
}
"The texts of an item in one language, for the default or for one sales channel."
type ItemDescription {
"The language of the texts as BCP 47 language tag, for example 'de' or 'de-AT'. Language subtag in lower case, region subtag in upper case; the input is not case-sensitive."
languageTag: String!
"The sales channel the texts apply in. The Wawi sales channel carries the default texts."
salesChannelId: ID!
"The name of the item."
name: String!
"Short description."
shortDescription: String
"Long description, may contain HTML."
description: String
"Title for search engines."
seoTitle: String
"Description for search engines."
metaDescription: String
"Keywords for search engines."
metaKeywords: String
"Path segment of the item URL in the shop."
urlPath: String
}
"Outer dimensions of the item as it is shipped, in centimeters. All three belong together, so the object is either complete or absent."
type ItemDimensions {
"Length in centimeters."
length: Decimal!
"Width in centimeters."
width: Decimal!
"Height in centimeters."
height: Decimal!
}
"A download file assigned to an item. The files themselves and their definitions are managed in the media API."
type ItemDownload {
"The ID of the download file."
downloadId: ID!
"Name of the download."
name: String!
"Zero-based position among the downloads of the item."
position: Int!
}
"The price that applies to an item for one sales channel, one customer group, a quantity and a delivery country, and where it comes from."
type ItemEffectivePrice {
"The sales channel the price applies in."
salesChannelId: ID!
"The customer group the price applies to."
customerGroupId: ID!
"Which price applies: the base price, the price list of the customer group, the individual price of the customer or the special price. One of BASE_PRICE, CUSTOMER_GROUP_PRICE, CUSTOMER_PRICE or SPECIAL_PRICE. The list can grow; a client treats a value it does not know as unknown and does not fail."
source: String!
"The net price per unit."
netPrice: Decimal!
"The currency of the price as ISO 4217 code: the currency the prices were asked for: the default currency of the tenant or the one given by the caller."
currencyCode: String!
"The quantity the applied price tier starts at. Absent for the base price and the special price."
appliedTierFromQuantity: Decimal
"The base price. Present when the item declares a base price and the content can be converted into the reference unit, absent otherwise."
unitPrice: UnitPrice
"All tiers of the price, so that scale prices can be shown without a further call. The price of the row is the tier that applies to the asked quantity."
tiers: [EffectivePriceTier!]!
"Present when the prices were converted from the default currency of the tenant."
conversion: CurrencyConversion
"The gross price. Present when a delivery country was asked for and the tax could be determined, absent otherwise."
gross: GrossPrice
}
"An image of an item. The image data is not part of the item: the item carries URLs into the blob storage, and the image gets to the item through the blob upload."
type ItemImage {
"The ID of the image in the blob storage."
blobIdentifier: UUID!
"The URL the image is downloaded from."
url: String!
"The URL of the preview-sized image. Absent when there is none."
previewUrl: String
"Original file name of the image including its extension."
fileName: String
"Width of the image in pixels."
width: Int
"Height of the image in pixels."
height: Int
"File size in kilobytes, bytes divided by 1024 and truncated."
fileSizeKilobytes: Int
"Position of the image among the images of its scope, starting at 1."
sortNumber: Int!
"Whether it is the main image of its scope. Read-only: it is the image with sort number 1."
isMainImage: Boolean!
"When the image was last changed."
changedAt: DateTime
"The sales channel the image is assigned to. The Wawi sales channel carries the default images of the item."
salesChannelId: ID!
}
"A whole number."
type ItemIntegerFieldValue implements ItemFieldValue {
"Discriminator of the value variant."
type: ItemFieldValueType!
"The number."
number: Int!
}
"A label assigned to an item. The label itself is managed with the master data."
type ItemLabel {
"The ID of the label."
labelId: ID!
"Name of the label."
name: String!
}
"One row of the item list: the properties every item has that are needed to find and show it. The full structure of an item is read with the single item query."
type ItemListEntry {
"The ID of the item."
id: ID!
"The kind of the item."
itemType: ItemType!
"The item number (SKU)."
sku: String!
"Name in the default language."
name: String!
"Whether the item is active."
isActive: Boolean!
"The GTIN of the item, kept in the list so that items can be searched and filtered by it. All identifiers are read from the single item."
gtin: String
"The ID of the product group."
productGroupId: ID
"The ID of the manufacturer."
manufacturerId: ID
"The variation parent this item is a combination of, absent when the item is no combination. Filter by it to list the combinations of a parent."
variationParentId: ID
"When the item was last changed."
changedAt: DateTime
}
"An event a user can raise by hand on a item (the manual workflows menu in the Wawi). The workflows that listen to it start; raising it raises the event, not a single workflow."
type ItemManualWorkflowEvent {
"The ID of the event."
id: ID!
"The display name of the event."
name: String!
"The position in the menu of the Wawi."
sortOrder: Int!
"How many active workflows listen to the event. Raising an event without any does nothing."
activeWorkflowCount: Int!
"The menu groups the event belongs to. Empty when it is not grouped."
groups: [ItemManualWorkflowEventGroup!]!
}
"A group of manual events as the Wawi shows it in its menu."
type ItemManualWorkflowEventGroup {
"The ID of the group."
id: ID!
"The name of the group."
name: String!
}
"A medium of an item: a document or video that is shown with it. Images are not media."
type ItemMedium {
"The ID of the medium."
id: ID!
"The key of what the medium is for, a string and not an enum because the list can grow. Keys today: DATASHEET, VIDEO, OTHER. An unknown key is refused with ITEM_MEDIA_CATEGORY_NOT_FOUND; a client treats a key it does not know like OTHER."
mediaCategoryId: String!
"Display name of the medium."
name: String
"The URL the medium is opened from."
url: String!
"Zero-based position among the media of the item."
position: Int!
}
"The order quantity rules of an item: a rule for everyone and optional rules per customer group. A customer group without rule takes over the default."
type ItemOrderQuantities {
"The rule for every customer group without a rule of its own. Absent when there is none."
default: OrderQuantityRule
"The rules of customer groups. Never null."
customerGroups: [CustomerGroupOrderQuantityRule!]!
}
"A packaging of an item as the German packaging law (Verpackungsgesetz) asks for it. It is not the packaging item kind."
type ItemPackaging {
"The ID of the packaging."
id: ID!
"Name of the packaging."
name: String!
"Whether the packaging is a composite of several materials."
isComposite: Boolean!
"The packaging category. Absent when none is chosen."
categoryId: ID
"The recycling class. Absent when none is chosen."
recyclingClassId: ID
"The materials. Never null."
materials: [ItemPackagingMaterial!]!
"Sum of the weights of the materials. Read-only."
totalWeightInGrams: Decimal!
}
"A material of a packaging with its weight."
type ItemPackagingMaterial {
"The ID of the material entry."
id: ID!
"The material from the master data. Absent for a material with a custom name."
materialId: ID
"The own name of the material. Absent when a material of the master data is chosen."
customName: String
"Weight of the material in grams."
weightInGrams: Decimal!
}
"The reference prices of an item that help to price a sales document: the standard sales price, the average and the last purchase price, and the last price the item was sold for, to anyone and to one customer. All amounts are net and in one currency: the requested one, converted from the default currency of the tenant at its current exchange rate. Amounts are not rounded. Clients round for display."
type ItemPriceDetails {
"The ID of the item."
itemId: ID!
"The currency of all amounts as ISO 4217 code: the requested currency, or the default currency of the tenant when none was requested."
currencyCode: String!
"Present when the amounts were converted from the default currency of the tenant, that is, when 'currencyCode' is not the default currency."
conversion: CurrencyConversion
"The standard net sales price of the item. 0 when the item has no price."
salesPriceNet: Decimal!
"The average net purchase price of the item, as the Wawi keeps it from the goods receipts. Read-only. 0 when the item has none."
averagePurchasePriceNet: Decimal!
"The net price the item was last purchased for, as the Wawi keeps it from the goods receipts. Read-only. 0 when the item has none."
lastPurchasePriceNet: Decimal!
"The net unit price of the most recently created sales order line item of the item, for any customer and in any order state, converted from the currency of that sales order. Null when the item is on no sales order."
lastSalesPriceNet: Decimal
"The same as 'lastSalesPriceNet', but only from the sales orders of the requested customer. Null when no customer was requested or the item is on no sales order of the customer."
customerLastSalesPriceNet: Decimal
}
"A sales channel of an item: whether the item is activated in it, and what its prices can be set for. Prices can only be set in the sales channels the item is activated in, and only for the customer groups and currencies of that sales channel."
type ItemSalesChannel {
"The ID of the sales channel."
salesChannelId: ID!
"Name of the sales channel."
name: String!
"Whether the item is activated in the sales channel."
isActivated: Boolean!
"Whether the item can be activated in the sales channel: it can when it is activated already, or when it is in a category that is active in the sales channel and the kind of the sales channel accepts the item (see the blockers)."
canBeActivated: Boolean!
"Why the item cannot be activated in the sales channel, with the same codes as the refusal of the activation. Empty when it can be. Never null."
activationBlockers: [ItemActionBlocker!]!
"Whether the sales channel allows scale prices. If not, a price list has one tier."
allowsScalePrices: Boolean!
"The customer groups of the sales channel, which the prices of the item can be set for."
customerGroups: [SalesChannelCustomerGroup!]!
"The currencies the sales channel supports."
currencies: [SalesChannelCurrency!]!
}
"The special price (German 'Sonderpreis') of an item in one currency. An item has at most one per currency."
type ItemSpecialPrice {
"The currency of the prices as ISO 4217 code. Prices are stored in the default currency of the tenant and converted on the fly into other currencies."
currencyCode: String!
"Whether the special price is active."
isActive: Boolean!
"The period the special price applies in. Absent when it is not limited by date."
validity: SpecialPriceValidity
"The stock the special price needs. Absent when it is not limited by stock. Only items with stock management can be limited by stock."
stockRestriction: SpecialPriceStockRestriction
"The special prices per sales channel and customer group, at least one."
entries: [SpecialPriceEntry!]!
"Present when the prices were converted from the default currency of the tenant."
conversion: CurrencyConversion
}
"The standard sales price of an item as net and gross price, with the tax rate that connects them. The tax rate is the rate of the tax class of the item in the country of the company, for a consumer in that country. An item without a tax class of its own is taxed with the default tax class. A rate of 0 percent is a valid rate. Amounts are not rounded: the net price is kept with 13 decimal places, the gross price is the exact product of net price and tax factor. Clients round for display. Prices are in the default currency of the tenant."
type ItemStandardGrossPrice {
"The ID of the item."
itemId: ID!
"The standard net sales price of the item. 0 when the item has no price."
salesPriceNet: Decimal!
"The standard gross sales price: net price times (1 + tax rate / 100). Null when the tax rate cannot be determined; 'grossPriceUnavailableCode' then says why."
salesPriceGross: Decimal
"The tax rate in percent that was applied, for example 19 for 19 percent. Null when it cannot be determined."
taxRatePercent: Decimal
"The tax class that was applied: the tax class of the item, or the default tax class when the item has none of its own. Null only when the item has no tax class of its own and there is no default tax class."
taxClassId: ID
"True when the item has no tax class of its own and the default tax class was applied. False when the tax class of the item was applied or no tax class applies."
isDefaultTaxClassApplied: Boolean!
"The company whose country determined the tax rate: the requested company, or the first active company when none was requested."
companyId: ID!
"The country of the company as ISO 3166-1 alpha-2 code. Null when the company has no country."
countryCode: String
"The currency of the prices as ISO 4217 code: the default currency of the tenant."
currencyCode: String!
"Why the gross price is missing, as an error code; null when the gross price is present. Codes: DEFAULT_TAX_CLASS_NOT_FOUND (the item has no tax class of its own and there is no default tax class), TAX_ZONE_NOT_FOUND_FOR_DESTINATION (no tax zone of the company contains its own country, for example because the company has no country or the zone is split by state), TAX_RATE_NOT_FOUND_FOR_TAX_CLASS (the tax zone has no rate for the tax class). Treat unknown codes as 'gross price not available'."
grossPriceUnavailableCode: String
}
"A supplier item (German 'Lieferantenartikel'): the item as one supplier delivers it. Only items with stock management have them."
type ItemSupplier {
"The ID of the supplier item."
id: ID!
"The ID of the supplier."
supplierId: ID!
"The item number the supplier uses for the item."
supplierItemNumber: String
"The name the supplier uses for the item."
supplierItemName: String
"The VAT rate of the purchase price, in percent."
vatRate: Decimal!
"The currency of the purchase price as ISO 4217 code."
currencyCode: String
"The tiers of the purchase price, at least one. A tier from quantity 0 or 1 is the base price."
purchasePriceTiers: [SupplierPriceTier]
"The delivery time in days that the supplier item has of its own. Absent when the delivery time of the supplier applies."
ownDeliveryTimeInDays: Int
"The stock of the supplier, when it is considered. Absent when it is not."
supplierStock: SupplierStock
"Whether the supplier ships to the customers directly."
isDropshippingActive: Boolean!
"How the supplier packs the item. Absent when it is not maintained."
packageUnit: SupplierPackageUnit
"The smallest quantity that is purchased."
minimumPurchaseQuantity: Decimal
"The interval in which the quantity is purchased, for example 6 for packs of six."
purchaseInterval: Decimal
"Free-text notes on the supplier item."
notes: String
}
"Which supplier items are the default of an item."
type ItemSupplierDefaults {
"The default supplier item. Absent when none is set."
defaultItemSupplierId: ID
"The default supplier item for dropshipping. Absent when none is set."
defaultDropshippingItemSupplierId: ID
}
"A text value."
type ItemTextFieldValue implements ItemFieldValue {
"Discriminator of the value variant."
type: ItemFieldValueType!
"The text."
text: String!
}
"The units the item is sold, packed and measured in."
type ItemUnits {
"The unit the item is sold in, for example piece. Absent when none is maintained."
salesUnitId: ID
"The unit the item is packed in (German 'Verpackungseinheit'). With a base price it is derived from it, for example '100 g', and cannot be written. Absent when none is maintained."
packagingUnitId: ID
"What the item contains and its base price. Absent when none is maintained."
content: ItemContent
}
"An upload field assigned to an item: a file the customer can attach when ordering."
type ItemUpload {
"The ID of the upload field."
uploadId: ID!
"Name of the upload field."
name: String!
"Whether the customer has to attach a file."
isRequired: Boolean!
}
"The smallest and the largest stock an item should have in one warehouse. It drives the purchase suggestions."
type ItemWarehouseStockLimit {
"The warehouse."
warehouseId: ID!
"The smallest stock. Absent when none is set."
minimumStock: Decimal
"The largest stock. Absent when none is set."
maximumStock: Decimal
}
"Weights of the item in kilograms."
type ItemWeights {
"Weight of the item including its packaging, in kilograms. Used for shipping costs."
shippingWeight: Decimal
"Weight of the item without packaging, in kilograms."
netWeight: Decimal
}
"One component of a kit."
type KitComponent {
"The ID of the component item. A component has no identifier of its own, the pair of kit and component item identifies it."
componentItemId: ID!
"How many units of the component one unit of the kit consumes."
quantity: Decimal!
"Zero-based position of the component within the kit."
position: Int!
"Free-text comment on the component."
comment: String
}
"A bill of materials sold as a set of components. A kit has no stock management and no purchasing of its own: it inherits its stock behavior from its components, which the read-only property shows. There are no suppliers to maintain."
type KitItem implements Item {
"The ID of the item."
id: ID!
"Name of the item in the default language."
name: String!
"Whether the item is active. An inactive item cannot be sold or used as a kit component."
isActive: Boolean!
"The ID of the product group."
productGroupId: ID
"The ID of the manufacturer."
manufacturerId: ID
"The ID of the item condition, for example new or used."
conditionId: ID
"The ID of the delivery status of the item (the master data of delivery statuses, for example \"in stock\" or \"ships in 3 days\")."
deliveryStatusId: ID
"The variation parent this item is a combination of. Absent when the item is no combination. Read-only for every kind of item: the assignment is maintained at the parent only (items/variation-parents/{itemId}/combinations)."
variationParentId: ID
"Every trait that applies to the item, ordered by rank, the first being the kind in 'itemType'. The kind is the first rule that applies; the others would otherwise be lost (a stock-managed variation parent is a VariationParent with the trait StockItem, a stock-managed kit made of divisible parts is a Kit with the trait DivisibleStockItem). Only the fields of the kind are part of the model; sub-resources are offered by the kind. Clients must tolerate values they do not know."
traits: [ItemType!]!
"When the item was created."
createdAt: DateTime
"When the item was last changed."
changedAt: DateTime
"Discriminator of the item kind."
itemType: ItemType!
"The identifiers of the item, each in its own property."
identifiers: TradeItemIdentifiers!
"The ID of the tax class."
taxClassId: ID
"The ID of the shipping class."
shippingClassId: ID
"Outer dimensions as shipped. Absent when none are maintained."
dimensions: ItemDimensions
"Weights. Absent when none are maintained."
weights: ItemWeights
"Customs information. Absent when none is maintained."
customs: ItemCustoms
"Sales unit, packaging unit and content with its base price. Absent when none is maintained."
units: ItemUnits
"The components of the kit. A kit has at least one; removing the last one dissolves the kit. The stock behavior of the kit is that of these components."
components: [KitComponent!]!
"Inherited from the components and read-only: it is never written for a kit. Absent when no component is stock-managed."
stockManagement: StockManagement
}
"A label: a named, colored mark that is put on objects of one kind to sort them, for example on items or customers. This is the definition of the label; which objects carry it is told by the object itself."
type Label {
"The ID of the label."
id: ID!
"The name of the label, 1 to 255 characters. It is the same in every language and unique among the labels of the same kind, ignoring letter case."
name: String!
"The key of the kind of object the label is put on, as 'QueryLabelEntityTypes' lists it. It cannot be changed."
entityTypeKey: String!
"The color of the label as '#RRGGBB' in upper case. A label without a color shows as '#000000'."
color: String!
"How many objects of its kind carry the label right now. Computed when requested; leave it out of lists that do not need it."
assignmentCount: Int!
}
"Whether one action on a label is allowed right now."
type LabelActionAvailability {
"The stable key of the action, for example 'DELETE'."
action: String!
"Whether the action is allowed right now."
isAllowed: Boolean!
"The reasons why it is not, empty when it is allowed."
blockers: [LabelActionBlocker!]!
}
"One reason why an action on a label is not allowed."
type LabelActionBlocker {
"Stable machine-readable code of the reason, for example LABEL_HAS_ASSIGNMENTS."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"What can be done with a label right now. It is a hint for user interfaces and can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type LabelAllowedActions {
"One entry per action. The action 'DELETE': the reason LABEL_HAS_ASSIGNMENTS is lifted by 'removeAssignments' on 'DeleteLabel'; LABEL_USED_BY_PICK_LIST_TEMPLATE is not."
actions: [LabelActionAvailability!]!
}
"A kind of object that labels can be put on."
type LabelEntityType {
"The stable key of the kind, lower case with hyphens."
key: String!
"The name of the kind in the language of the caller."
name: String!
}
"A language Wawi knows. Every language Wawi can work with is listed; the active ones are the languages texts can be kept in. At most one active language is the default language. The same model serves the list and the single read, because it is small."
type Language {
"The language as BCP 47 language tag, for example de or de-AT: language subtag in lower case, region subtag in upper case. Case does not matter on input. Wawi currently holds only the two-letter language subtag."
tag: String!
"Where the code comes from: Iso for a code of the language list Wawi delivers, UserAssigned for an entry of its own. Every language Wawi lists today has an ISO code."
codeSource: LanguageCodeSource!
"The code of the language with usually three letters as Wawi stores it (ISO 639-2 bibliographic, for example 'ger' and 'fre', not 'deu' and 'fra')."
iso3Code: String
"The name of the language in German and English."
names: [LanguageName!]!
"Whether the language is active, that is whether texts can be kept in it."
isActive: Boolean!
"Whether this is the default language. At most one active language is."
isDefault: Boolean!
}
"Whether one action on a language is allowed right now."
type LanguageActionAvailability {
"The stable key of the action. Known keys: 'ACTIVATE' (make the language available), 'DEACTIVATE' (make it unavailable again), 'MAKE_DEFAULT' (make it the default language). New keys can be added; handle an unknown key as not known, never as a failure."
action: String!
"Whether the action is allowed right now."
isAllowed: Boolean!
"The reasons why it is not, empty when it is allowed."
blockers: [LanguageActionBlocker!]!
}
"One reason why an action on a language is not allowed."
type LanguageActionBlocker {
"Stable machine-readable code of the reason, for example LANGUAGE_IS_DEFAULT."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"What can be done with a language right now. It is a hint for user interfaces and can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type LanguageAllowedActions {
"One entry per action, allowed or not. The keys are listed at 'Action'."
actions: [LanguageActionAvailability!]!
}
"The name of a language in one language."
type LanguageName {
"The language as BCP 47 language tag, for example de or de-AT: language subtag in lower case, region subtag in upper case. Case does not matter on input. Wawi currently holds only the two-letter language subtag."
languageTag: String!
"The name of the language in that language."
name: String!
}
"Tax codes that replace those of a rate for one type of line item."
type LineItemTypeTaxCodeOverride {
"The type of line item. Known values: CUSTOM, SHIPPING, COUPON, PAYMENT, SHIPPING_SURCHARGE, NEW_CUSTOMER_COUPON, CASH_ON_DELIVERY, SHIPPING_SURCHARGE_ITEM, PACKING, GIFT_FOR_FREE, TRUSTED_SHOPS, INTEREST_PREMIUM, PROCESSING_FEE, CARTON, RETURN_DELIVERY, MULTI_PURPOSE_VOUCHER, MULTI_PURPOSE_VOUCHER_DIGITAL, SINGLE_PURPOSE_VOUCHER, SINGLE_PURPOSE_VOUCHER_DIGITAL, SINGLE_PURPOSE_VOUCHER_REDEMPTION. New types can be added without a contract change."
lineItemType: String!
"The tax code for taxable sales. Empty means the tax code of the rate applies."
taxableTaxCodeId: ID
"The tax code for tax-free intra-community deliveries to business customers in another EU country. Empty means the tax code of the rate applies."
intraCommunityDeliveryTaxCodeId: ID
"The tax code for sales under the reverse-charge procedure. Empty means the tax code of the rate applies."
reverseChargeTaxCodeId: ID
"The tax code for tax-exempt sales: exports from the EU and sales made exempt on purpose. Empty means the tax code of the rate applies."
exemptTaxCodeId: ID
}
"A link."
type LinkNode implements SettingsNode {
"Discriminator of the node kind."
kind: SettingsNodeKind!
"The stable ID of the node. For an input it equals the setting key, for example sales.invoice.dueDays."
id: String!
"The ID of the group the node belongs to. Absent for a top-level node."
parentId: String
"The depth in the tree. A top-level node has level 1."
level: Int!
"The position among the nodes of the same parent. Lower comes first."
sortOrder: Int!
"The text shown for the node, in the language of the caller."
label: String
"A further text, in the language of the caller."
description: String
"A link to a help page."
helpUrl: String
"Extra words the search finds the node by."
keywords: [String!]!
"The scopes the setting can be stored for. Almost every setting has only Global."
scopes: [SettingsScope!]!
"The Wawi permission the caller needs to see and change the node."
requiredPermission: String
"Whether the caller cannot change the setting."
isReadOnly: Boolean!
"Rules that make the node visible, enabled or required depending on other settings."
dependencies: [SettingsDependency!]!
"The address."
url: String!
}
"A connection to a list of items."
type ListCurrenciesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [ListCurrenciesEdge!]
"A flattened list of the nodes."
nodes: [Currency!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type ListCurrenciesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: Currency!
}
"A connection to a list of items."
type ListStandardCurrencyCodesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [ListStandardCurrencyCodesEdge!]
"A flattened list of the nodes."
nodes: [StandardCurrencyCode!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type ListStandardCurrencyCodesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: StandardCurrencyCode!
}
"A text in one language."
type LocalizedText {
"The language as BCP 47 language tag, for example 'de' or 'de-AT'. Language subtag in lower case, region subtag in upper case; the input is not case-sensitive."
languageTag: String!
"The text in that language."
text: String!
}
"A user with at least one living session. It contains personal data."
type LoggedInUser {
"The ID of the user."
userId: ID!
"The name of the user."
userName: String
"How many living sessions the user has, on all computers and in all applications."
sessionCount: Int!
"The keys of the applications the user is logged in to."
applicationIds: [String!]!
"When the oldest living session started."
loggedInSince: DateTime!
"The latest sign of life of any session of the user."
lastHeartbeatAt: DateTime!
}
"A lot size of a production item. It defines the quantity of the production item that is produced in one lot."
type LotSize {
"The ID of this lot size."
id: ID!
"The ID of the production item of this lot size."
productionItemId: ID!
"The quantity of the production item that is produced in one lot. Unique per production item."
quantity: Int!
}
"A machine used in production."
type Machine implements Resource {
"The ID of this resource."
id: ID!
"The category of this resource. It cannot be changed. Clients treat an unknown category as a resource without category-specific properties."
category: ResourceCategoryType!
"The number of this resource."
number: String!
"The name of this resource."
name: String!
"The description of this resource, or null if it has none."
description: String
"The ID of the resource type of this resource. The resource type belongs to the same category as the resource."
resourceTypeId: ID!
"Whether this resource is active. An inactive resource is no longer used for new production planning."
isActive: Boolean!
"The point in time at which this resource was created."
createdAt: DateTime!
"The point in time at which this resource was last changed."
changedAt: DateTime!
"The ID of the hardware assigned to the machine, or null if no hardware is assigned. Changed by ChangeMachineHardware."
hardwareId: ID
}
"Sends the delivery note by e-mail, as the mail channel of the template set defines it. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is DELIVERY_NOTE_NOT_FOUND (no delivery note with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_MAIL_RECIPIENT_MISSING (the document has no e-mail address to send to). - Response"
type MailDeliveryNoteCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Sends the shipping notification of the delivery note by e-mail. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is DELIVERY_NOTE_NOT_FOUND (no delivery note with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_MAIL_RECIPIENT_MISSING (the document has no e-mail address to send to). - Response"
type MailDeliveryNoteShippingNotificationCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Sends the dunning notice by e-mail, as the mail channel of the template set defines it. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is DUNNING_NOTICE_NOT_FOUND (no dunning notice with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_MAIL_RECIPIENT_MISSING (the document has no e-mail address to send to). - Response"
type MailDunningNoticeCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Sends the payment receipt of the payment by e-mail. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is PAYMENT_NOT_FOUND (no payment with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_MAIL_RECIPIENT_MISSING (the document has no e-mail address to send to). - Response"
type MailPaymentReceiptCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Sends the purchase order by e-mail, as the mail channel of the template set defines it. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is PURCHASE_ORDER_NOT_FOUND (no purchase order with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_MAIL_RECIPIENT_MISSING (the document has no e-mail address to send to). - Response"
type MailPurchaseOrderCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Sends the return by e-mail, as the mail channel of the template set defines it. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is RETURN_NOT_FOUND (no return with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_MAIL_RECIPIENT_MISSING (the document has no e-mail address to send to). - Response"
type MailReturnCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Sends the return label notification of the return by e-mail. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is RETURN_NOT_FOUND (no return with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_MAIL_RECIPIENT_MISSING (the document has no e-mail address to send to). - Response"
type MailReturnLabelNotificationCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Sends the sales credit note by e-mail, as the mail channel of the template set defines it. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_CREDIT_NOTE_NOT_FOUND (no sales credit note with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_MAIL_RECIPIENT_MISSING (the document has no e-mail address to send to). - Response"
type MailSalesCreditNoteCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Sends the sales invoice by e-mail, as the mail channel of the template set defines it. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_INVOICE_NOT_FOUND (no sales invoice with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_MAIL_RECIPIENT_MISSING (the document has no e-mail address to send to). - Response"
type MailSalesInvoiceCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Sends the sales invoice correction by e-mail, as the mail channel of the template set defines it. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_INVOICE_CORRECTION_NOT_FOUND (no sales invoice correction with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_MAIL_RECIPIENT_MISSING (the document has no e-mail address to send to). - Response"
type MailSalesInvoiceCorrectionCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Sends the sales order by e-mail, as the mail channel of the template set defines it. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_ORDER_NOT_FOUND (no sales order with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_MAIL_RECIPIENT_MISSING (the document has no e-mail address to send to). - Response"
type MailSalesOrderCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Sends the sales quotation by e-mail, as the mail channel of the template set defines it. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_QUOTATION_NOT_FOUND (no sales quotation with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_MAIL_RECIPIENT_MISSING (the document has no e-mail address to send to). - Response"
type MailSalesQuotationCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"A manufacturer that items can be assigned to."
type Manufacturer {
"The ID of the manufacturer."
id: ID!
"The name of the manufacturer. It is unique among all manufacturers."
name: String
"The website of the manufacturer."
website: String
"The position of the manufacturer in sorted lists."
sortNumber: Int
"The ID of the contact that holds the address of the manufacturer. It is created together with the manufacturer and cannot be changed."
contactId: ID!
"The language-dependent texts of the manufacturer, one entry per language."
descriptions: [ManufacturerDescription!]!
"The images of the manufacturer, at most one per sales channel."
images: [ManufacturerImage!]!
}
"Whether one action on a manufacturer would be allowed right now, and if not, why not."
type ManufacturerActionAvailability {
"The stable key of the action: 'delete'."
action: String!
"Whether the action would go through right now."
isAllowed: Boolean!
"The reasons why it would not. Empty when it is allowed."
blockers: [ManufacturerActionBlocker!]!
}
"One reason why an action on a manufacturer is not allowed."
type ManufacturerActionBlocker {
"Stable machine-readable code of the reason, for example MANUFACTURER_IS_ASSIGNED_TO_ITEMS."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"What can be done with a manufacturer right now. A hint for user interfaces that can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type ManufacturerAllowedActions {
"One entry per action."
actions: [ManufacturerActionAvailability!]!
}
"The texts of a manufacturer in one language."
type ManufacturerDescription {
"The ID of the manufacturer the texts belong to."
manufacturerId: ID!
"The language of the texts as BCP 47 tag, for example 'de' or 'de-AT'. Case does not matter on input; the output uses the canonical form (language lower case, region upper case)."
languageTag: String!
"The meta title of the manufacturer page in an online shop."
metaTitle: String
"The meta keywords of the manufacturer page in an online shop."
metaKeywords: String
"The meta description of the manufacturer page in an online shop."
metaDescription: String
"The description of the manufacturer."
description: String
"The search-engine-friendly URL segment of the manufacturer page in an online shop."
seo: String
}
"The image of a manufacturer in one sales channel."
type ManufacturerImage {
"The sales channel the image is assigned to. Tenant-local, composite identifier, not a UUID. Only specific sales channels are allowed for this operation and are specified in the sales channel endpoint (GET)."
salesChannelId: ID!
"The ID of the uploaded file the image was created from."
blobIdentifier: UUID
"The download URL of the image."
url: String
"The download URL of the preview-sized image."
previewUrl: String
"The original file name of the image including its extension."
filename: String
"The width of the image in pixels."
width: Int
"The height of the image in pixels."
height: Int
"The file size of the image in kilobytes (bytes divided by 1024, truncated to an integer)."
fileSizeKilobytes: Int
"The time the image was last changed."
modificationDate: DateTime
}
"A manufacturer in a list: the master data without texts and images."
type ManufacturerListEntry {
"The ID of the manufacturer."
id: ID!
"The name of the manufacturer."
name: String
"The website of the manufacturer."
website: String
"The position of the manufacturer in sorted lists."
sortNumber: Int
}
"A measurement unit: a unit that measures a quantity, for example kilogram, litre or metre, with its conversion to a base unit."
type MeasurementUnit {
"The ID of the measurement unit."
id: ID!
"The short form shown next to quantities, for example 'kg'."
displayCode: String!
"The name in the default language."
name: String!
"The code of a predefined measurement unit: the units Wawi ships with (UCUM codes such as 'kg' or '[lb_av]') and those created by the synchronisation with a shop. Empty for units created by users."
predefinedCode: String
"Whether this is a system measurement unit, one with a predefined code. System measurement units cannot be deleted, and their display code and their name in the default language cannot be changed."
isSystem: Boolean!
"The UN/CEFACT unit code shown on e-invoices for items with this measurement unit, for example 'KGM'. Values stored before can be of any format; a value written through the API has 2 or 3 letters or digits (see 'QueryUnitCodes'). Empty when none is set."
unitCode: String
"The ID of the base unit of the family this unit belongs to; the unit itself for a base unit. Two measurement units convert into each other when their base unit is the same."
baseUnitId: ID!
"How this unit converts to its base unit. Empty for a base unit. To convert a quantity from unit a to unit b of the same family, multiply it by factor(a) / factor(b), where a base unit counts as 1."
conversion: MeasurementUnitConversion
"The names, one per language. Always contains the default language."
translations: [MeasurementUnitTranslation!]!
}
"Whether one action is allowed for a measurement unit."
type MeasurementUnitActionAvailability {
"The stable key of the action: 'CHANGE_DISPLAY_CODE' or 'DELETE'."
action: String!
"Whether the action is allowed right now."
isAllowed: Boolean!
"The reasons why it is not, empty when it is allowed."
blockers: [UnitActionBlocker!]!
}
"What can be done with a measurement unit right now. It is a hint for user interfaces and can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type MeasurementUnitAllowedActions {
"One entry per action."
actions: [MeasurementUnitActionAvailability!]!
}
"How a derived measurement unit converts to its base unit. One of this unit equals 'factor' of the base unit."
type MeasurementUnitConversion {
"The ID of the base unit, for example the metre for the millimetre."
baseUnitId: ID!
"How many base units one of this unit is. 0.001 for the millimetre with the metre as base unit, 1000 for the kilometre."
factor: Decimal!
}
"A measurement unit as a list entry, with its name in one language."
type MeasurementUnitListEntry {
"The ID of the measurement unit."
id: ID!
"The short form shown next to quantities, for example 'kg'."
displayCode: String!
"The name in the requested language; the name in the default language when there is none in it."
name: String!
"The code of a predefined measurement unit: the units Wawi ships with (UCUM codes such as 'kg' or '[lb_av]') and those created by the synchronisation with a shop. Empty for units created by users."
predefinedCode: String
"Whether this is a system measurement unit, one with a predefined code. System measurement units cannot be deleted, and their display code and their name in the default language cannot be changed."
isSystem: Boolean!
"The UN/CEFACT unit code shown on e-invoices for items with this measurement unit, for example 'KGM'. Values stored before can be of any format; a value written through the API has 2 or 3 letters or digits (see 'QueryUnitCodes'). Empty when none is set."
unitCode: String
"The ID of the base unit of the family this unit belongs to; the unit itself for a base unit. Two measurement units convert into each other when their base unit is the same."
baseUnitId: ID!
"How this unit converts to its base unit. Empty for a base unit. To convert a quantity from unit a to unit b of the same family, multiply it by factor(a) / factor(b), where a base unit counts as 1."
conversion: MeasurementUnitConversion
}
"The name of a measurement unit in one language."
type MeasurementUnitTranslation {
"The language as BCP 47 tag in canonical form (language lower-case, region upper-case, script title-case), for example 'de' or 'de-AT'."
languageTag: String!
"The name of the measurement unit in this language."
name: String!
}
"The keys of several options."
type MultiChoiceValue implements SettingValue {
"Discriminator of the value type."
valueType: SettingValueType!
"The keys of the chosen options. Empty when none is chosen."
values: [String!]!
}
"The keys of several options."
type MultiChoiceWarehouseSettingValue implements WarehouseSettingValue {
"Discriminator of the value type."
valueType: WarehouseSettingValueType!
"The keys of the chosen options. Empty when none is chosen."
values: [String!]!
}
"An allowed value of a multilingual value list attribute, with one text per language."
type MultilingualAllowedValue {
"The texts per language. The text in the default language is always present."
texts: [AttributeValueText!]!
}
"An attribute that describes an item or category and has a name per language."
type MultilingualAttribute implements Attribute {
"The ID of the attribute."
id: ID!
"The kind of the attribute. It cannot be changed after the attribute was created."
kind: AttributeKind!
"The kind of record the attribute can be assigned to. It cannot be changed after the attribute was created. Known values: ITEM, CATEGORY. The set can grow; a client must tolerate values it does not know."
entityType: String!
"The data type of the attribute value. Known values: INTEGER, DECIMAL, TEXT, CHECKBOX, VALUE_LIST, URL, EMAIL, PHONE, COUNTRY_ISO, PRICE, DATE, SHORT_TEXT. The set can grow; a client must tolerate values it does not know."
dataType: String!
"The technical identifier of the attribute. Online shops, plug-ins and interfaces recognise a function attribute by it. For multilingual attributes the system assigns it and it cannot be changed."
code: String!
"The name of the group the attribute is displayed under. Attributes of both kinds share the groups of their entity type. A group exists as long as at least one attribute carries its name."
groupName: String!
"An internal description of the attribute for staff. It is not shown to customers."
description: String
"The position of the attribute within its group. The API does not store a group order; sort groups by 'groupName'."
sortOrder: Int!
"Indicates an attribute supplied by the system. It cannot be deleted; only the online shops it is transferred to can be changed."
isSystem: Boolean!
"The online shops the attribute is transferred to. An empty list means that no shop receives it."
activeSalesChannels: [AttributeSalesChannel!]!
"The names per language. The name in the default language is always present."
names: [AttributeName!]!
"The allowed values in the order they are offered. Empty unless the data type is 'ValueList'."
allowedValues: [MultilingualAllowedValue!]!
}
"A voucher item for a multi-purpose voucher. It is not taxed when sold, so it has no tax class, and it is neither shipped nor traded by identifiers."
type MultiPurposeVoucherItem implements Item {
"The ID of the item."
id: ID!
"Name of the item in the default language."
name: String!
"Whether the item is active. An inactive item cannot be sold or used as a kit component."
isActive: Boolean!
"The ID of the product group."
productGroupId: ID
"The ID of the manufacturer."
manufacturerId: ID
"The ID of the item condition, for example new or used."
conditionId: ID
"The ID of the delivery status of the item (the master data of delivery statuses, for example \"in stock\" or \"ships in 3 days\")."
deliveryStatusId: ID
"The variation parent this item is a combination of. Absent when the item is no combination. Read-only for every kind of item: the assignment is maintained at the parent only (items/variation-parents/{itemId}/combinations)."
variationParentId: ID
"Every trait that applies to the item, ordered by rank, the first being the kind in 'itemType'. The kind is the first rule that applies; the others would otherwise be lost (a stock-managed variation parent is a VariationParent with the trait StockItem, a stock-managed kit made of divisible parts is a Kit with the trait DivisibleStockItem). Only the fields of the kind are part of the model; sub-resources are offered by the kind. Clients must tolerate values they do not know."
traits: [ItemType!]!
"When the item was created."
createdAt: DateTime
"When the item was last changed."
changedAt: DateTime
"Discriminator of the item kind."
itemType: ItemType!
"The identifiers of the item: its item number."
identifiers: BasicItemIdentifiers!
"Settings of the voucher that is sold."
voucher: VoucherSettings!
}
"A tier that states the net price."
type NetPriceTier implements PriceTier {
"Discriminator of the tier variant."
kind: PriceTierKind!
"The quantity from which the tier applies. The first tier starts at 1."
fromQuantity: Decimal!
"The net price from this quantity on."
netPrice: Decimal!
}
"A tier that states the net purchase price."
type NetSupplierPriceTier implements SupplierPriceTier {
"Discriminator of the tier variant."
kind: SupplierPriceTierKind!
"The quantity from which the tier applies. The first tier starts at 0 or 1."
fromQuantity: Decimal!
"The net purchase price from this quantity on."
netPrice: Decimal!
}
"The setting that goods receipt creates an item that does not exist yet."
type NewItemOnReceipt {
"The category the new items are put into."
categoryId: ID!
}
"A condition that only informs and carries no stock."
type NoStockItemCondition implements ItemCondition {
"The ID of the item condition."
id: ID!
"How the condition deals with stock. It cannot be changed after the condition was created."
stockHandling: ItemConditionStockHandling!
"The name in each language it has, including languages that are no longer active. It always has a name in the standard language of the Wawi."
translations: [ItemConditionTranslation!]!
"The colour as hex value with a leading '#', shown in the warehouse. Null when none."
color: String
"The position in lists; smaller comes first."
sortOrder: Int!
"Whether the condition can be chosen. Inactive conditions stay on the items and returns that already carry them."
isActive: Boolean!
"Whether it is the standard condition that items without another condition carry. Computed; there is exactly one."
isDefault: Boolean!
"Whether it was delivered with the Wawi. A system condition cannot be deleted. Computed."
isSystem: Boolean!
"Where the condition can be chosen."
restriction: ItemConditionRestriction!
"The values of the sales platforms the condition is mapped to. A platform without an entry has no mapping."
marketplaceCodes: [ItemConditionMarketplaceCode!]!
}
"The rule by which the system builds the numbers of one type: text in front of the counter, the counter, and text behind it. A range without a company is the global range that every company without a range of its own uses; a range with a company applies to the documents of that company only."
type NumberRange {
"The ID of the number range."
id: ID!
"The key of the number range type in upper case (UPPER_SNAKE_CASE), see 'QueryNumberRangeTypes'. It cannot change. A client that meets a key it does not know shows it as it is."
typeKey: String!
"The company the range is for. Empty for the global range of the type. It cannot change."
companyId: ID
"The text in front of the counter, empty if none. Prefix and suffix may contain the date tokens '<J>' (year, four digits), '<M>' (month, two digits), '<T>' (day, two digits) and '<K>' (ISO calendar week, two digits). The tokens are upper case; the system replaces them with the date of issue when it issues a number. Lower case tokens are not replaced and are rejected."
prefix: String!
"The text behind the counter, empty if none."
suffix: String!
"The counter the next number is built from. It is the number that is tried next, not the last one issued: if a document already has the resulting number, the system takes the next higher counter until a free number is found. The counter is written without leading zeros."
nextCounter: Int!
"The most characters an issued number may have: the length of the field that stores the number, but at most 50. Empty if the length cannot be determined."
maxNumberLength: Int
"Whether the range can be deleted. Only the range of a company can, the global range of a type cannot; see 'GetNumberRangeAllowedActions'."
isDeletable: Boolean!
}
"Whether one action is allowed for a number range."
type NumberRangeActionAvailability {
"The stable key of the action in upper case (UPPER_SNAKE_CASE). Known values: 'DELETE'. This is a documented string, not an enumeration: more actions can follow, and a client treats a key it does not know as not allowed."
action: String!
"Whether the action is allowed right now."
isAllowed: Boolean!
"The reasons why it is not, empty when it is allowed."
blockers: [NumberRangeActionBlocker!]!
}
"One reason why an action is not allowed."
type NumberRangeActionBlocker {
"Stable machine-readable code of the reason, for example NUMBER_RANGE_IS_GLOBAL."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"What can be done with a number range right now. It is a hint for user interfaces and can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type NumberRangeAllowedActions {
"One entry per action."
actions: [NumberRangeActionAvailability!]!
}
"The number a range would issue next, without using it."
type NumberRangeNextNumber {
"The number, with the date tokens replaced by today's date."
nextNumber: String!
"The counter of that number. It is higher than the 'nextCounter' of the range when the numbers in between are already taken by documents."
nextCounter: Int!
}
"A kind of number the system issues, for example sales invoice numbers. A client must not assume it knows all keys."
type NumberRangeType {
"The stable key of the type, upper case words joined by underscores (UPPER_SNAKE_CASE), for example 'SALES_INVOICE'. It is the value of 'typeKey' on number ranges. Responses always carry the key in upper case; filter values and arguments are accepted in any case. The set of keys can grow: a key that a client does not know is not an error."
key: String!
"The name of the type in the language of the caller."
name: String!
"A short explanation in the language of the caller; not every type has one."
description: String
}
"A reason for holding back a sales order. Any on-hold reason makes the order not deliverable until the reason is removed from it; the reason itself decides whether the order may be merged with others and whether its items count for the purchase list. The model serves list and detail alike."
type OnHoldReason {
"The ID of the on-hold reason."
id: ID!
"The name of the reason."
name: String!
"Whether orders that carry this reason may be merged with other orders of the same customer."
isMergeable: Boolean!
"Whether the items of orders that carry this reason are left out when the purchase list is calculated."
isExcludedFromPurchaseList: Boolean!
}
"Whether one action is allowed on an on-hold reason right now."
type OnHoldReasonActionAvailability {
"The stable key of the action: 'DELETE' or 'REPLACE'."
action: String!
"Whether the action is allowed now."
isAllowed: Boolean!
"Why the action is not allowed. Empty when it is allowed."
blockers: [OnHoldReasonActionBlocker!]!
}
"One reason why an action on an on-hold reason is not allowed."
type OnHoldReasonActionBlocker {
"Stable machine-readable code, for example ON_HOLD_REASON_IN_USE."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"What can be done with an on-hold reason right now. It is a hint for user interfaces and can be outdated with the next change; the action itself checks again and refuses with the same blocker codes."
type OnHoldReasonAllowedActions {
"One entry per action, allowed or not."
actions: [OnHoldReasonActionAvailability!]!
}
"An operation is a reusable work step definition of production, e.g. sawing or assembling. Bills of materials refer to operations, and an operation describes its work in steps."
type Operation {
"The ID of the operation."
id: ID!
"The number of the operation. Unique across all operations."
operationNumber: String!
"The name of the operation."
name: String!
"The description of the operation, or null if it has no description."
description: String
"Indicates whether the operation is active."
isActive: Boolean!
"Indicates whether the operation must be completed explicitly during production."
isCompletionMandatory: Boolean!
"Indicates whether and for whom the operation allows simplified production."
simplifiedProduction: OperationSimplifiedProduction!
"The timestamp when the operation was created."
createdAt: DateTime!
"The timestamp of the last change of the operation."
changedAt: DateTime!
"The ID of the user who last changed the operation, or null if unknown."
changedBy: ID
"The steps of the operation, ordered by their sort index."
steps: [OperationStep!]!
}
"A resource that is assigned to an operation. The resource is required to carry out the operation."
type OperationResource {
"The ID of the assigned resource."
resourceId: ID!
}
"A resource group that is assigned to an operation. One of the resources of the group is required to carry out the operation."
type OperationResourceGroup {
"The ID of the assigned resource group."
resourceGroupId: ID!
}
"A step of an operation. It describes a part of the work of the operation with texts in several languages."
type OperationStep {
"The ID of the step."
id: ID!
"The position of the step within its operation. Changed only by moving the step."
sortIndex: Int!
"The name of the step."
name: String!
"The texts of the step, at most one per language."
texts: [OperationStepText!]!
}
"The text of an operation step in one language."
type OperationStepText {
"The language of the text as a BCP 47 language tag, e.g. \"de\" or \"de-AT\". The language subtag is lowercase and the region subtag uppercase; input is case-insensitive."
languageTag: String!
"The text of the step in this language."
text: String!
}
"How many units of an item can be ordered: the smallest quantity and the steps above it."
type OrderQuantityRule {
"The smallest quantity that can be ordered. Greater than zero."
minimumQuantity: Decimal!
"The step in which larger quantities can be ordered. Absent when any quantity above the minimum is possible."
quantityInterval: Decimal
}
"A property by which templates of a document type can be assigned, with the source of its possible values. A template without an assignment for a criterion applies to all values of it."
type OutputAssignmentCriterion {
"The key of the criterion. Known values: COMPANY, CUSTOMER_GROUP, LANGUAGE, SUPPLIER, WAREHOUSE, DUNNING_LEVEL, SHIPPING_METHOD. New values can be added without a contract change; the value source says how to handle one the client does not know."
key: String!
"The display name of the criterion."
name: String!
"Where the possible values come from."
valueSource: OutputCriterionValueSource!
}
"Where the possible values of an assignment criterion come from: the operation that lists them, and which properties of its result are the value and the display name. A client that does not know the criterion can still offer its values."
type OutputCriterionValueSource {
"The name of the operation that lists the possible values, for example QueryCustomerGroups. It exists in the API as GraphQL operation and, in V2, as REST route."
operation: String!
"The property of each result entry that is the value of the assignment, for example id."
valueProperty: String!
"The property of each result entry that is the display name, for example name."
nameProperty: String!
"The scope the operation needs, for example customers.read. A client without it cannot list the values."
scope: String!
}
"A document type output templates exist for, with the channels and assignment criteria it supports."
type OutputDocumentTypeInfo {
"The document type. Known values: SALES_QUOTATION, SALES_ORDER, SALES_INVOICE, DELIVERY_NOTE, SALES_INVOICE_CORRECTION, PRICE_LIST, CUSTOMER_DETAILS, CUSTOMER_MESSAGE, STOCK_VALUATION, INVENTORY_DIFFERENCE_LIST, ITEM_LABEL, SHIPPING_LABEL, SUPPLIER_MESSAGE, WAREHOUSE_PACK_LIST, SHIPPING_LIST, STORAGE_LOCATION_LABEL, PURCHASE_ORDER, PURCHASE_ORDER_REMINDER, SUPPLIER_PRICE_REQUEST, FULFILLMENT_ORDER, PICK_LIST, PUTAWAY_LIST, WMS_INVENTORY_LIST, PAYMENT_RECEIPT, SHIPPING_NOTIFICATION, DUNNING_LETTER, SALES_RETURN, RETURN_LABEL_EMAIL, ADDRESS_LABEL, VOUCHER, EXTERNAL_DOCUMENT, PDF, PACKAGE_ID_LABEL, SSCC_LABEL. The list is the catalogue of QueryOutputDocumentTypes and grows with the product. A client treats a value it does not know as a document type it cannot handle and does not offer it; the server answers an unknown value in a body with 422 and in a path or query with 404 (OUTPUT_DOCUMENT_TYPE_NOT_FOUND)."
documentType: String!
"The display name of the document type."
name: String!
"The business area the document type belongs to. Known values: SALES, PURCHASING, WAREHOUSE, OTHER. New values can be added without a contract change. A client files a group it does not know under the other groups."
group: String!
"The channels templates of this document type can have. Known values: PRINT, FAX, SAVE, MAIL, EXPORT, LABEL. New values can be added without a contract change. A client ignores a channel it does not know; the server answers an unknown value in a request with 400 (VALIDATION_FAILED)."
channels: [String!]!
"The criteria by which templates of this document type can be assigned, each with the source of its possible values."
criteria: [OutputAssignmentCriterion!]!
}
"A print, mail or upload that runs in the background."
type OutputJob {
"The ID of the output job."
id: UUID!
"What the job does: PRINT, MAIL, UPLOAD_PDF, UPLOAD_EXPORT or UPLOAD_E_INVOICE. New values can be added; treat an unknown value as an action you do not know."
action: String!
"PENDING (waiting), RUNNING, SUCCEEDED or FAILED. New values can be added; treat an unknown value as not finished."
state: String!
"The document type of the output. Known values: SalesQuotation, SalesOrder, SalesInvoice, SalesInvoiceCorrection, DeliveryNote, SalesReturn, DunningLetter, PurchaseOrder, PickList, InventoryDifferenceList, CustomerDetails, PaymentReceipt, ShippingNotification and ReturnLabelEmail. The list can grow; a client treats a value it does not know as an opaque string and does not fail."
documentType: String!
"The ID of the document. Absent for label jobs, which carry several objects."
documentId: String
"The template set the job used."
templateSetId: ID
"When the job was created."
createdAt: DateTime!
"When the job finished."
finishedAt: DateTime
"The error code of a failed job in UPPER_SNAKE_CASE, for example OUTPUT_UPLOAD_FAILED."
errorCode: String
"A human-readable explanation of the failure."
errorMessage: String
"The result of a succeeded job."
result: OutputJobResult
}
"What a finished output job produced."
type OutputJobResult {
"The name of the produced file."
fileName: String
"The media type of the produced file."
contentType: String
"The size of the produced file in bytes."
sizeBytes: Long
"The number of pages, where the file has pages."
pageCount: Int
"The host an upload went to. Never the full URL."
targetHost: String
}
"A printer that is installed on the machine that runs the API."
type OutputPrinter {
"The name of the printer; this is the value of the Printer parameter of the print calls."
name: String!
"Whether this is the default printer of the machine."
isDefault: Boolean!
}
"A template with the layouts it uses."
type OutputTemplate {
"The unique identifier of the template."
id: ID!
"The unique identifier of the template set the template belongs to."
templateSetId: ID!
"The name of the template."
name: String!
"The document type the template belongs to. Known values: SALES_QUOTATION, SALES_ORDER, SALES_INVOICE, DELIVERY_NOTE, SALES_INVOICE_CORRECTION, PRICE_LIST, CUSTOMER_DETAILS, CUSTOMER_MESSAGE, STOCK_VALUATION, INVENTORY_DIFFERENCE_LIST, ITEM_LABEL, SHIPPING_LABEL, SUPPLIER_MESSAGE, WAREHOUSE_PACK_LIST, SHIPPING_LIST, STORAGE_LOCATION_LABEL, PURCHASE_ORDER, PURCHASE_ORDER_REMINDER, SUPPLIER_PRICE_REQUEST, FULFILLMENT_ORDER, PICK_LIST, PUTAWAY_LIST, WMS_INVENTORY_LIST, PAYMENT_RECEIPT, SHIPPING_NOTIFICATION, DUNNING_LETTER, SALES_RETURN, RETURN_LABEL_EMAIL, ADDRESS_LABEL, VOUCHER, EXTERNAL_DOCUMENT, PDF, PACKAGE_ID_LABEL, SSCC_LABEL. The list is the catalogue of QueryOutputDocumentTypes and grows with the product. A client treats a value it does not know as a document type it cannot handle and does not offer it; the server answers an unknown value in a body with 422 and in a path or query with 404 (OUTPUT_DOCUMENT_TYPE_NOT_FOUND)."
documentType: String!
"The channels the template delivers its document by. One template can serve several channels. Known values: PRINT, FAX, SAVE, MAIL, EXPORT, LABEL. New values can be added without a contract change. A client ignores a channel it does not know; the server answers an unknown value in a request with 400 (VALIDATION_FAILED)."
channels: [String!]!
"The assignments of the template, one per criterion that limits it. A criterion without an entry means: applies to all values."
assignments: [OutputTemplateAssignment!]!
"The time the template was last changed."
changedAt: DateTime!
"The layouts of the template, one per channel that names a layout."
layouts: [OutputTemplateLayout!]!
}
"The value of one assignment criterion of a template: the template applies to this value only."
type OutputTemplateAssignment {
"The key of the criterion, as in OutputAssignmentCriterion. Known values: COMPANY, CUSTOMER_GROUP, LANGUAGE, SUPPLIER, WAREHOUSE, DUNNING_LEVEL, SHIPPING_METHOD."
criterion: String!
"The value, as the operation of the value source of the criterion returns it, for example the ID of the customer group or the language tag."
value: String!
"The display name of the value. Empty if it could not be resolved."
valueName: String
}
"A syntax error found in a template text."
type OutputTemplateError {
"The error message."
message: String!
"The line the error was found in, starting at 1. Empty if the position is not known."
line: Int
}
"A filter that can be applied to a value in a template, as in {{ value | filter }}."
type OutputTemplateFilter {
"The name of the filter as it is written in a template."
name: String!
"The description of the filter. Empty if there is none."
description: String
"The kind of value the filter takes. Known values: TEXT, NUMBER, DATE, BOOLEAN, OBJECT, LIST, ANY. New values can be added without a contract change; a client treats a kind it does not know like ANY."
inputKind: String!
"An example of how to apply the filter. Empty if there is none."
example: String
}
"The layout a template uses for one channel."
type OutputTemplateLayout {
"The channel the layout is used for. Known values: PRINT, FAX, SAVE, MAIL, EXPORT, LABEL. New values can be added without a contract change. A client ignores a channel it does not know; the server answers an unknown value in a request with 400 (VALIDATION_FAILED)."
channel: String!
"The unique identifier of the layout. The web report designer opens the layout by it."
layoutId: UUID!
"The kind of the layout."
layoutKind: OutputLayoutKind!
}
"A template as shown in lists."
type OutputTemplateListEntry {
"The unique identifier of the template."
id: ID!
"The unique identifier of the template set the template belongs to."
templateSetId: ID!
"The name of the template."
name: String!
"The document type the template belongs to. Known values: SALES_QUOTATION, SALES_ORDER, SALES_INVOICE, DELIVERY_NOTE, SALES_INVOICE_CORRECTION, PRICE_LIST, CUSTOMER_DETAILS, CUSTOMER_MESSAGE, STOCK_VALUATION, INVENTORY_DIFFERENCE_LIST, ITEM_LABEL, SHIPPING_LABEL, SUPPLIER_MESSAGE, WAREHOUSE_PACK_LIST, SHIPPING_LIST, STORAGE_LOCATION_LABEL, PURCHASE_ORDER, PURCHASE_ORDER_REMINDER, SUPPLIER_PRICE_REQUEST, FULFILLMENT_ORDER, PICK_LIST, PUTAWAY_LIST, WMS_INVENTORY_LIST, PAYMENT_RECEIPT, SHIPPING_NOTIFICATION, DUNNING_LETTER, SALES_RETURN, RETURN_LABEL_EMAIL, ADDRESS_LABEL, VOUCHER, EXTERNAL_DOCUMENT, PDF, PACKAGE_ID_LABEL, SSCC_LABEL. The list is the catalogue of QueryOutputDocumentTypes and grows with the product. A client treats a value it does not know as a document type it cannot handle and does not offer it; the server answers an unknown value in a body with 422 and in a path or query with 404 (OUTPUT_DOCUMENT_TYPE_NOT_FOUND)."
documentType: String!
"The channels the template delivers its document by. One template can serve several channels. Known values: PRINT, FAX, SAVE, MAIL, EXPORT, LABEL. New values can be added without a contract change. A client ignores a channel it does not know; the server answers an unknown value in a request with 400 (VALIDATION_FAILED)."
channels: [String!]!
"The assignments of the template, one per criterion that limits it. A criterion without an entry means: applies to all values."
assignments: [OutputTemplateAssignment!]!
"The time the template was last changed."
changedAt: DateTime!
}
"A template set. It groups the templates of one document type. Exactly one set per document type is the standard."
type OutputTemplateSet {
"The unique identifier of the template set."
id: ID!
"The document type the template set belongs to. Known values: SALES_QUOTATION, SALES_ORDER, SALES_INVOICE, DELIVERY_NOTE, SALES_INVOICE_CORRECTION, PRICE_LIST, CUSTOMER_DETAILS, CUSTOMER_MESSAGE, STOCK_VALUATION, INVENTORY_DIFFERENCE_LIST, ITEM_LABEL, SHIPPING_LABEL, SUPPLIER_MESSAGE, WAREHOUSE_PACK_LIST, SHIPPING_LIST, STORAGE_LOCATION_LABEL, PURCHASE_ORDER, PURCHASE_ORDER_REMINDER, SUPPLIER_PRICE_REQUEST, FULFILLMENT_ORDER, PICK_LIST, PUTAWAY_LIST, WMS_INVENTORY_LIST, PAYMENT_RECEIPT, SHIPPING_NOTIFICATION, DUNNING_LETTER, SALES_RETURN, RETURN_LABEL_EMAIL, ADDRESS_LABEL, VOUCHER, EXTERNAL_DOCUMENT, PDF, PACKAGE_ID_LABEL, SSCC_LABEL. The list is the catalogue of QueryOutputDocumentTypes and grows with the product. A client treats a value it does not know as a document type it cannot handle and does not offer it; the server answers an unknown value in a body with 422 and in a path or query with 404 (OUTPUT_DOCUMENT_TYPE_NOT_FOUND)."
documentType: String!
"The name of the template set."
name: String!
"Whether this is the standard template set of its document type."
isStandard: Boolean!
"Whether the template set is global, that is available to all companies. Only global template sets can be managed through this API."
isGlobal: Boolean!
}
"Whether one action is allowed for a template set."
type OutputTemplateSetActionAvailability {
"The key of the action. Known values: RENAME, MAKE_STANDARD, DELETE. New actions can be added without a contract change."
action: String!
"Whether the action is allowed right now."
isAllowed: Boolean!
"The reasons why it is not, empty when it is allowed."
blockers: [OutputTemplateSetActionBlocker!]!
}
"One reason why an action is not allowed for a template set."
type OutputTemplateSetActionBlocker {
"Stable machine-readable code of the reason, for example TEMPLATE_SET_IS_STANDARD."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"What can be done with a template set right now. It is a hint for user interfaces and can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type OutputTemplateSetAllowedActions {
"One entry per action."
actions: [OutputTemplateSetActionAvailability!]!
}
"A tag that can be used in a template, as in {% tag %}."
type OutputTemplateTag {
"The name of the tag as it is written in a template."
name: String!
"Whether the tag encloses content and is closed by end plus its name."
isBlock: Boolean!
}
"A variable a template of a document type can use. Variables form a tree that is delivered flat; ParentPath links a variable to its parent."
type OutputTemplateVariable {
"The full path of the variable as it is written in a template."
path: String!
"The last segment of the path."
name: String!
"The path of the parent variable. Empty for a variable at the root."
parentPath: String
"The kind of value. Known values: TEXT, NUMBER, DATE, BOOLEAN, OBJECT, LIST. New values can be added without a contract change; a client treats a kind it does not know like TEXT."
kind: String!
"The description of the variable. Empty if there is none."
description: String
}
"The customer group has a price list of its own that overrides the base price."
type OwnCustomerGroupPrices implements CustomerGroupPriceList {
"Discriminator: where the price comes from."
source: CustomerGroupPriceSource!
"The customer group the price applies to."
customerGroupId: ID!
"Whether the item is offered in the sales channel for this customer group."
isVisible: Boolean!
"The net price that applies to this customer group at quantity 1, whether it is taken over or its own. For a percentage tier it is calculated from the base price. Absent when the item has no base price and the list has no tier for quantity 1."
effectiveNetPrice: Decimal
"The currency of the prices as ISO 4217 code: the currency the prices were asked for: the default currency of the tenant or the one given by the caller."
currencyCode: String!
"Present when the prices were converted from the default currency of the tenant."
conversion: CurrencyConversion
"The sales channel the price applies in. The Wawi sales channel carries the default prices."
salesChannelId: ID!
"The price tiers, at least one. Quantities are distinct. A sales channel that does not allow scale prices accepts one tier."
tiers: [PriceTier]
}
"A condition whose items are their own items with their own stock."
type OwnItemCondition implements ItemCondition {
"The ID of the item condition."
id: ID!
"How the condition deals with stock. It cannot be changed after the condition was created."
stockHandling: ItemConditionStockHandling!
"The name in each language it has, including languages that are no longer active. It always has a name in the standard language of the Wawi."
translations: [ItemConditionTranslation!]!
"The colour as hex value with a leading '#', shown in the warehouse. Null when none."
color: String
"The position in lists; smaller comes first."
sortOrder: Int!
"Whether the condition can be chosen. Inactive conditions stay on the items and returns that already carry them."
isActive: Boolean!
"Whether it is the standard condition that items without another condition carry. Computed; there is exactly one."
isDefault: Boolean!
"Whether it was delivered with the Wawi. A system condition cannot be deleted. Computed."
isSystem: Boolean!
"Where the condition can be chosen."
restriction: ItemConditionRestriction!
"The values of the sales platforms the condition is mapped to. A platform without an entry has no mapping."
marketplaceCodes: [ItemConditionMarketplaceCode!]!
"The suffix that the condition items carry. Unique among the conditions with own items, ignoring letter case."
suffix: String!
"Whether the supplier data of the main item is copied to a new condition item."
copySupplierData: Boolean!
}
"What can be done with a package right now. A hint for user interfaces that can be outdated with the next change; the action itself always checks again and refuses with the same codes. Known action keys: UPDATE_PACKAGE, DELETE_PACKAGE, MARK_PACKAGE_SHIPPED, CREATE_PACKAGE_SHIPPING_LABEL."
type PackageAllowedActions {
"One entry per action, allowed or not."
actions: [DeliveryActionAvailability!]!
}
"The tracking of a package: tracking number and link, and the states the carrier reported when the package is registered for tracking."
type PackageTracking {
"The package."
packageId: ID!
"The tracking number."
trackingNumber: String
"The tracking link. Computed, see the package."
trackingUrl: String
"Whether the package is registered for tracking."
isRegistered: Boolean!
"The key of the latest state. Absent when the package is not registered."
currentState: String
"When the package was registered for tracking."
registeredAt: DateTime
"When the state is queried next."
nextUpdateAt: DateTime
"The reported states, newest first. Empty when the package is not registered."
events: [TrackingEvent!]!
}
"A packaging item. It is not sold, so it has no identifiers beyond its item number and no sales unit fields."
type PackagingItem implements Item {
"The ID of the item."
id: ID!
"Name of the item in the default language."
name: String!
"Whether the item is active. An inactive item cannot be sold or used as a kit component."
isActive: Boolean!
"The ID of the product group."
productGroupId: ID
"The ID of the manufacturer."
manufacturerId: ID
"The ID of the item condition, for example new or used."
conditionId: ID
"The ID of the delivery status of the item (the master data of delivery statuses, for example \"in stock\" or \"ships in 3 days\")."
deliveryStatusId: ID
"The variation parent this item is a combination of. Absent when the item is no combination. Read-only for every kind of item: the assignment is maintained at the parent only (items/variation-parents/{itemId}/combinations)."
variationParentId: ID
"Every trait that applies to the item, ordered by rank, the first being the kind in 'itemType'. The kind is the first rule that applies; the others would otherwise be lost (a stock-managed variation parent is a VariationParent with the trait StockItem, a stock-managed kit made of divisible parts is a Kit with the trait DivisibleStockItem). Only the fields of the kind are part of the model; sub-resources are offered by the kind. Clients must tolerate values they do not know."
traits: [ItemType!]!
"When the item was created."
createdAt: DateTime
"When the item was last changed."
changedAt: DateTime
"Discriminator of the item kind."
itemType: ItemType!
"The identifiers of the item: its item number."
identifiers: BasicItemIdentifiers!
"The ID of the tax class."
taxClassId: ID
"Outer dimensions of the packaging. Absent when none are maintained."
dimensions: ItemDimensions
"Weights of the packaging. Absent when none are maintained."
weights: ItemWeights
"Packaging is always stock-managed."
stockManagement: StockManagement!
}
"An item that is used as shipping carton or packaging material and is assigned to shipping methods. Creating or changing one is an item operation."
type PackagingMaterial {
"The ID of the item that is the packaging material."
id: ID!
"The item number (SKU)."
itemNumber: String!
"The name of the item in the default language."
name: String
"The GTIN of the item."
gtin: String
"The shipping weight in kilograms."
shippingWeight: Decimal
"The item weight in kilograms."
itemWeight: Decimal
"The shipping methods the packaging material is assigned to."
shippingMethodIds: [ID!]!
}
"Information about pagination in a connection."
type PageInfo {
"Indicates whether more edges exist following the set defined by the clients arguments."
hasNextPage: Boolean!
"Indicates whether more edges exist prior the set defined by the clients arguments."
hasPreviousPage: Boolean!
"When paginating backwards, the cursor to continue."
startCursor: String
"When paginating forwards, the cursor to continue."
endCursor: String
}
"Money received from or paid back to a customer for a sales order, sales invoice, sales invoice correction or sales credit note."
type Payment {
"The ID of the payment."
id: ID!
"What the payment stands for. Known values: REGULAR, DUNNING_FEE_PAYMENT, CASH_DISCOUNT, VOUCHER_REDEMPTION. Treat unknown values as unknown."
kind: String!
"Whether money came in or went out; follows from the sign of 'amount'."
direction: PaymentDirection!
"The amount with two decimals: positive for money received, negative for money paid back."
amount: Decimal!
"The currency of the amount (ISO 4217): the currency of the document the payment counts for."
currencyCode: String!
"The date of the payment. Can be empty for old records that were imported without one."
paymentDate: DateTime
"The payment method. Can be empty for old records that were imported without one."
paymentMethodId: ID
"The kind of sales document the payment counts for. Known values: SALES_ORDER, SALES_INVOICE, SALES_INVOICE_CORRECTION, SALES_CREDIT_NOTE."
documentType: String!
"The sales order of the payment. Also set for most payments of its invoices and corrections; never for credit notes."
salesOrderId: ID
"The sales invoice the payment counts for; for a payment of an invoice correction, the corrected invoice when it is known."
salesInvoiceId: ID
"The sales invoice correction the payment counts for. Never a sales credit note."
salesInvoiceCorrectionId: ID
"The sales credit note the payment counts for. Only payouts count for one; when it is cancelled, they leave QueryPayments."
salesCreditNoteId: ID
"The ID of the transaction at the payment provider, the marketplace or the bank, as it was delivered. For some shop orders it holds the payment note of the shop instead."
externalTransactionId: String
"A free note."
note: String
"Whether the payment is a down payment. A label for accounting; it does not change how the payment counts."
isDownPayment: Boolean!
"The general ledger account the payment is posted to in the accounting export."
generalLedgerAccount: String
"Whether the payment is left out of the accounting export."
isExcludedFromAccountingExport: Boolean!
"The payment transaction (bank, payment provider or marketplace) the payment was created from or matched with."
paymentTransactionId: ID
"The refund that booked this payment."
refundId: ID
"The user who recorded the payment."
createdBy: ID
}
"A bank account, a payment provider account or an external account whose transactions the ERP reads in and matches."
type PaymentAccount {
"The ID of the payment account."
id: ID!
"The display name of the account."
name: String
"A description of the account."
description: String
"The payment provider of the account ('QueryPaymentProviders')."
providerId: ID!
"The identifier the provider uses for the account, for example an account number or a merchant ID."
accountIdentifier: String
"The IBAN of a bank account."
iban: String
"The BIC of a bank account."
bic: String
"The holder of the account."
holder: String
"Whether it is an external account: created with 'CreatePaymentAccount' and filled with 'ImportPaymentTransaction'. Follows from the provider."
isExternal: Boolean!
"Whether the account can send money, for refunds and bank transfers. Follows from the provider."
canSend: Boolean!
"Whether fetching the account needs an interactive confirmation, for example a TAN, or a file. Such an account is fetched in the desktop client, not with 'StartPaymentAccountImport'."
needsInteraction: Boolean!
"Whether the account is hidden: it is not fetched, nothing can be imported into it, and its transactions are left out of the matching and out of the default list. Set with 'HidePaymentAccount' and 'ShowPaymentAccount'."
isHidden: Boolean!
"Whether the automatic, unattended import of the account is locked. The ERP locks it itself when the bank asks for a confirmation or the credentials are no longer valid. Set with 'LockPaymentAccountAutoImport' and 'UnlockPaymentAccountAutoImport'."
isAutoImportLocked: Boolean!
"The payment method of the payments recorded when a transaction of the account is assigned."
transferPaymentMethodId: ID
"The payment method for direct debits."
directDebitPaymentMethodId: ID
"The payment method for chargebacks and refunds."
chargebackPaymentMethodId: ID
"Transactions booked on or before this date are not imported. Empty when there is no such limit. PayPal, Mollie and Amazon Pay accounts do not apply it."
importCutoffDate: DateTime
}
"A fetch of transactions for one payment account, started with 'StartPaymentAccountImport'."
type PaymentAccountImportRun {
"The ID of the import run."
id: ID!
"The payment account that is fetched."
paymentAccountId: ID!
"The state of the run."
state: PaymentAccountImportRunState!
"The start of the requested period, empty for the default of the provider."
from: DateTime
"The end of the requested period, empty for up to now."
to: DateTime
"When the run started; empty while it is queued."
startedAt: DateTime
"When the run finished; empty while it is queued or running."
finishedAt: DateTime
"The summary of the run, for example the error that stopped it."
message: String
"The user who started the run."
createdBy: ID
}
"Whether one action is allowed for a payment. The action is a key, not an enum, because the list of actions can grow without a change of the schema. Keys today: Update, Delete, MoveToSalesOrder, MoveToSalesInvoice, MoveToSalesInvoiceCorrection."
type PaymentActionAvailability {
"The key of the action. A client that does not know a key ignores the entry."
actionId: String!
"Whether the action is allowed right now."
isAllowed: Boolean!
"The reasons why it is not, empty when it is allowed."
blockers: [PaymentActionBlocker!]!
}
"One reason why an action on a payment is not allowed."
type PaymentActionBlocker {
"The stable machine-readable code of the reason, for example PAYMENT_BOOKED_BY_REFUND."
code: String!
"A human-readable explanation in the language of the request."
message: String
}
"What can be done with a payment right now. It is a hint for user interfaces and can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type PaymentAllowedActions {
"One entry per action, allowed or not."
actions: [PaymentActionAvailability!]!
}
"An entry of the payment change history: a payment was recorded or changed, or it was deleted."
type PaymentChange {
"The ID of the payment."
paymentId: ID!
"The sales order of the payment as of this entry."
salesOrderId: ID
"The sales invoice of the payment as of this entry."
salesInvoiceId: ID
"The sales invoice correction of the payment as of this entry."
salesInvoiceCorrectionId: ID
"The sales credit note of the payment as of this entry."
salesCreditNoteId: ID
"The current state of the payment, read at query time. Empty when the payment no longer exists."
payment: Payment
"True when the payment was deleted. A later entry for the same ID wins."
isDeleted: Boolean!
"When the entry became readable in the change history (UTC)."
changedAt: DateTime!
}
"A payment method such as cash, bank transfer or credit card. Documents, payments and customers refer to it. The name and the print texts per language are under 'translations'; 'name' here is the name in the default language."
type PaymentMethod {
"The ID of the payment method."
id: ID!
"The name in the default language. It is unique among the payment methods, ignoring case."
name: String
"Whether the payment method can be chosen for new documents. Documents that carry an inactive method keep it."
isActive: Boolean!
"Whether this is the payment method used when a customer has none. There is exactly one, and it is active."
isDefault: Boolean!
"The G/L account that payments of this method are posted to unless the payment names another. At most 32 characters."
generalLedgerAccount: String
"Whether the amount can be collected by direct debit."
supportsDirectDebit: Boolean!
"Whether an order with this payment method can be shipped before the payment arrived."
canShipBeforePayment: Boolean!
"Whether open invoices paid with this method are dunned."
isDunningEnabled: Boolean!
"The cash discount for early payment. Empty means none."
cashDiscount: PaymentMethodCashDiscount
"The eBay payment option this method is matched with when eBay orders arrive. Empty when it is matched with none. It is a code of eBay's list of payment options."
ebayPaymentOption: String
"The priority of orders with this method when stock is reserved first in, first out. It only has an effect when that reservation is switched on. 0 to 255."
reservationPriority: Int!
}
"Whether one action is allowed for a payment method."
type PaymentMethodActionAvailability {
"The action. Known values: ACTIVATE, DEACTIVATE, MAKE_DEFAULT. An action on a payment method that can be refused."
action: String!
"Whether the action is allowed right now."
isAllowed: Boolean!
"The reasons why it is not, empty when it is allowed."
blockers: [PaymentMethodActionBlocker!]!
}
"One reason why an action on a payment method is not allowed."
type PaymentMethodActionBlocker {
"Stable machine-readable code of the reason, for example PAYMENT_METHOD_IS_DEFAULT."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"What can be done with a payment method right now. It is a hint for user interfaces and can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type PaymentMethodAllowedActions {
"One entry per action, allowed or not."
actions: [PaymentMethodActionAvailability!]!
}
"A cash discount for early payment."
type PaymentMethodCashDiscount {
"The discount in percent, greater than 0 and at most 100."
percent: Decimal!
"How many days the discount applies after the invoice date, at least 0."
days: Int!
}
"A payment method in a list. The other properties are only in the single payment method."
type PaymentMethodListEntry {
"The ID of the payment method."
id: ID!
"The name in the default language."
name: String
"Whether the payment method can be chosen for new documents."
isActive: Boolean!
"Whether this is the payment method used when a customer has none."
isDefault: Boolean!
}
"The name and the print texts of a payment method in one language."
type PaymentMethodTranslation {
"The language as BCP 47 language tag, for example de or de-AT: language subtag in lower case, region subtag in upper case. Case does not matter on input."
languageTag: String!
"Whether this is the default language of the tenant. Its name is the name of the payment method."
isDefaultLanguage: Boolean!
"The name of the payment method in this language."
name: String
"The text printed on the invoice while the payment is still open. It can contain the placeholders of the output templates."
textBeforePayment: String
"The text printed on the invoice once it is paid. It can contain the placeholders of the output templates."
textAfterPayment: String
}
"A kind of payment account the ERP can read transactions from: a banking standard, a file format, a payment provider, or external accounts that an integration fills. The list can grow with a release; it is a catalogue, not an enum."
type PaymentProvider {
"The ID of the payment provider."
id: ID!
"The name of the payment provider."
name: String!
"Whether transactions can be read from accounts of the provider."
canReceive: Boolean!
"Whether accounts of the provider can send money."
canSend: Boolean!
"Whether accounts of the provider are external accounts, filled with 'ImportPaymentTransaction'."
isExternal: Boolean!
"Whether the licence covers the provider. Accounts of an unlicensed provider are not fetched."
isLicensed: Boolean!
}
"Money observed on a payment account: a booking the bank, the payment provider or an external system reported. Assigning a transaction to a sales order or a sales invoice records a payment there (see the payments)."
type PaymentTransaction {
"The ID of the payment transaction."
id: ID!
"The payment account the transaction belongs to."
paymentAccountId: ID!
"The ID of the transaction at the bank, the payment provider or the external system. Unique within the payment account, not across accounts."
transactionId: String!
"When the bank or the provider booked the transaction, in the time zone of the ERP server."
bookingDate: DateTime!
"Whether money came in or went out; follows from the sign of 'amount'."
direction: PaymentDirection!
"The amount with two decimals: positive for money received, negative for money sent or taken back."
amount: Decimal!
"The currency of the amount (ISO 4217), in upper case."
currencyCode: String!
"What the transaction stands for."
kind: PaymentTransactionKind!
"How far the bank or the provider has processed the transaction."
state: PaymentTransactionState!
"The payer of money received, the payee of money sent, as the bank or the provider reported it."
counterparty: PaymentTransactionCounterparty!
"The payment reference as delivered. It carries the order or invoice numbers the matching looks for."
paymentReference: String
"For refunds, chargebacks and fees: the 'transactionId' of the earlier transaction of the same payment account that this one refers to."
referenceTransactionId: String
"A further reference of the bank or the provider, for example a mandate or an end-to-end reference."
providerReference: String
"The status message of the bank or the provider, for example why a payment failed."
statusText: String
"Further information the bank or the provider delivered with the transaction."
additionalInformation: String
"A note for internal use. An import keeps it."
internalNote: String
"Whether the transaction is ignored: it is left out of the matching and out of the default list. Set with 'IgnorePaymentTransaction' and 'UnignorePaymentTransaction'; import filters and workflows can set it too."
isIgnored: Boolean!
"When the transaction was last read in or refreshed from the bank, the provider or the external system. Assigning, ignoring or a note do not change it, so it is no change timestamp."
lastImportedAt: DateTime!
"The user who ran the last import."
lastImportedBy: ID
"The part of 'amount' that is assigned: payments of sales documents and of incoming invoices, refunds paid out without a sales document and, for a fee, the order costs booked from it. 'QueryPaymentTransactionAssignmentsByPaymentTransactionId' lists them."
assignedAmount: Decimal!
"What is left to assign: 'amount' minus 'assignedAmount'. A cash discount written off on a document does not count as assigned."
openAmount: Decimal!
"What can still be refunded without a sales document ('RefundPaymentTransactionRemainder'): 'amount' minus all refunds and minus all payments of the transaction, a cash discount included. Never below 0."
refundableAmount: Decimal!
"How much of the transaction is assigned."
assignmentStatus: PaymentTransactionAssignmentStatus!
}
"Whether one action is allowed for a payment transaction. The action is a key, not an enum, because the list of actions can grow without a change of the schema. Keys today: AssignToSalesOrder, AssignToSalesInvoice, Unassign, AutoAssign, Ignore, Unignore, Update, RefundRemainder."
type PaymentTransactionActionAvailability {
"The key of the action. A client that does not know a key ignores the entry."
actionId: String!
"Whether the action is allowed right now."
isAllowed: Boolean!
"The reasons why it is not, empty when it is allowed."
blockers: [PaymentTransactionActionBlocker!]!
}
"One reason why an action on a payment transaction is not allowed."
type PaymentTransactionActionBlocker {
"The stable machine-readable code of the reason, for example PAYMENT_TRANSACTION_IGNORED."
code: String!
"A human-readable explanation in the language of the request."
message: String
}
"What can be done with a payment transaction right now. It is a hint for user interfaces and can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type PaymentTransactionAllowedActions {
"One entry per action, allowed or not."
actions: [PaymentTransactionActionAvailability!]!
}
"The other side of a payment transaction as the bank or the provider reported it. Empty values stay empty."
type PaymentTransactionCounterparty {
"The name of the payer or the payee."
name: String
"The account of the payer or the payee: an IBAN, an account number or, at a payment provider, an email address."
account: String
"An addition to the account, for example the BIC."
accountAddition: String
}
"Order costs booked on a sales order from a fee transaction."
type PaymentTransactionFeeCostAssignment implements PaymentTransactionAssignment {
"What the assignment is."
kind: PaymentTransactionAssignmentKind!
"The amount assigned, in the currency of the transaction. Negative for a payout or for money taken back."
amount: Decimal!
"The sales order the fee is booked on."
salesOrderId: ID!
}
"A payment of an incoming invoice recorded from the transaction, by the automatic assignment."
type PaymentTransactionIncomingInvoicePaymentAssignment implements PaymentTransactionAssignment {
"What the assignment is."
kind: PaymentTransactionAssignmentKind!
"The amount assigned, in the currency of the transaction. Negative for a payout or for money taken back."
amount: Decimal!
"The ID of the payment of the incoming invoice."
paymentId: ID!
"The incoming invoice."
incomingInvoiceId: ID!
}
"An event a user can raise by hand on a payment transaction (the manual workflows menu in the Wawi). The workflows that listen to it start; raising it raises the event, not a single workflow."
type PaymentTransactionManualWorkflowEvent {
"The ID of the event."
id: ID!
"The display name of the event."
name: String!
"The position in the menu of the Wawi."
sortOrder: Int!
"How many active workflows listen to the event. Raising an event without any does nothing."
activeWorkflowCount: Int!
"The menu groups the event belongs to. Empty when it is not grouped."
groups: [PaymentTransactionManualWorkflowEventGroup!]!
}
"A group of manual events as the Wawi shows it in its menu."
type PaymentTransactionManualWorkflowEventGroup {
"The ID of the group."
id: ID!
"The name of the group."
name: String!
}
"A refund paid out from the transaction without a sales document ('RefundPaymentTransactionRemainder'). Read it with 'GetRefund'."
type PaymentTransactionRefundAssignment implements PaymentTransactionAssignment {
"What the assignment is."
kind: PaymentTransactionAssignmentKind!
"The amount assigned, in the currency of the transaction. Negative for a payout or for money taken back."
amount: Decimal!
"The ID of the refund."
refundId: ID!
}
"A sales invoice the transaction probably pays. Assign it with 'AssignPaymentTransactionToSalesInvoice'."
type PaymentTransactionSalesInvoiceSuggestion implements PaymentTransactionSuggestion {
"The kind of document."
targetType: PaymentTransactionSuggestionTargetType!
"The position, 1 for the best candidate."
rank: Int!
"How well the document matches: the sum of the points of the matched rules. From 0.3 a document is suggested; the automatic assignment takes a document from 0.5 when no other one comes within 0.25."
score: Decimal!
"The open amount of the document."
openAmount: Decimal!
"The currency of the open amount (ISO 4217)."
currencyCode: String!
"The keys of the rules that matched, for example OrderNumber, InvoiceNumber, Amount, CustomerNumber or Name. The list of keys can grow; a client that does not know a key shows it as it is."
matchedRules: [String!]!
"The ID of the sales invoice."
salesInvoiceId: ID!
}
"A sales order the transaction probably pays. Assign it with 'AssignPaymentTransactionToSalesOrder'."
type PaymentTransactionSalesOrderSuggestion implements PaymentTransactionSuggestion {
"The kind of document."
targetType: PaymentTransactionSuggestionTargetType!
"The position, 1 for the best candidate."
rank: Int!
"How well the document matches: the sum of the points of the matched rules. From 0.3 a document is suggested; the automatic assignment takes a document from 0.5 when no other one comes within 0.25."
score: Decimal!
"The open amount of the document."
openAmount: Decimal!
"The currency of the open amount (ISO 4217)."
currencyCode: String!
"The keys of the rules that matched, for example OrderNumber, InvoiceNumber, Amount, CustomerNumber or Name. The list of keys can grow; a client that does not know a key shows it as it is."
matchedRules: [String!]!
"The ID of the sales order."
salesOrderId: ID!
}
"A payment of a sales document recorded from or linked to the transaction. Read it with 'GetPayment'."
type PaymentTransactionSalesPaymentAssignment implements PaymentTransactionAssignment {
"What the assignment is."
kind: PaymentTransactionAssignmentKind!
"The amount assigned, in the currency of the transaction. Negative for a payout or for money taken back."
amount: Decimal!
"The ID of the payment."
paymentId: ID!
"The sales order of the payment."
salesOrderId: ID
"The sales invoice the payment counts for."
salesInvoiceId: ID
"The sales invoice correction the payment counts for. Never a sales credit note."
salesInvoiceCorrectionId: ID
"The sales credit note the payment counts for. Only payouts can count for a credit note."
salesCreditNoteId: ID
}
"A tier that states a percentage discount."
type PercentageDiscountSupplierPriceTier implements SupplierPriceTier {
"Discriminator of the tier variant."
kind: SupplierPriceTierKind!
"The quantity from which the tier applies."
fromQuantity: Decimal!
"The percentage discount from this quantity on."
discountPercent: Decimal!
}
"A tier that states a percentage reduction of the standard price."
type PercentageReductionTier implements PriceTier {
"Discriminator of the tier variant."
kind: PriceTierKind!
"The quantity from which the tier applies. The first tier starts at 1."
fromQuantity: Decimal!
"The percentage by which the standard price is reduced from this quantity on."
reductionPercent: Decimal!
}
"A permission of Wawi. Permissions form a tree and are the same in all tenants."
type Permission {
"The fixed ID of the permission. It is the same on every installation and is never reused."
id: ID!
"The ID of the parent permission in the tree. Null for the top entries."
parentId: ID
"The position among the permissions with the same parent, lowest first."
sortOrder: Int!
"Display name in the language of the request."
name: String!
"Whether it can be given to a group. False for entries that only group others."
isGrantable: Boolean!
"Explains the permission, in the language of the request. Null if not set."
description: String
}
"A pick list: the work list that tells a picker which item to take from which storage location for which sales order. The status of a pick list is derived from its line items and cannot be set: it is the lowest status of its line items, and InProgress while some line items are still Created and others are further. The line items are read with their own query."
type PickList {
"The ID of the pick list."
id: ID!
"The number of the pick list, as shown in the Wawi and on the printout."
number: String!
"The warehouse the pick list is worked in."
warehouseId: ID!
"The name of the warehouse."
warehouseName: String
"The template the pick list was created from. Absent when the template was deleted."
pickListTemplateId: ID
"The name of the template."
pickListTemplateName: String
"The status. Computed from the line items."
status: PickListStatus!
"How many line items the pick list has. Computed."
lineItemCount: Int!
"How many of them are still Created. Computed."
openLineItemCount: Int!
"The user who is working on the pick list right now. Absent when nobody is."
activeUserId: ID
"When the pick list was created."
createdAt: DateTime!
"When the status last changed. Absent when it never changed."
statusChangedAt: DateTime
}
"Whether one action is allowed right now."
type PickListActionAvailability {
"The key of the action in UPPER_SNAKE, for example DELETE. The list of actions can grow without a change of the schema; a client that does not know a key ignores the entry."
actionId: String!
"Whether the action is allowed right now."
isAllowed: Boolean!
"The reasons why it is not allowed. Empty when it is allowed."
blockers: [PickListBlocker!]!
}
"What can be done with a pick list right now. A hint for user interfaces that can be outdated with the next change; the action itself always checks again and refuses with the same codes. Known action keys: DELETE."
type PickListAllowedActions {
"One entry per action, allowed or not."
actions: [PickListActionAvailability!]!
}
"One reason why something cannot be done."
type PickListBlocker {
"Stable machine-readable code of the reason, for example PICK_LIST_WORKED_ON. New codes can be added; treat an unknown code as 'not allowed'."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"A line item of a pick list: one quantity of one item to take from one storage location for one sales order line item."
type PickListLineItem {
"The ID of the line item."
id: ID!
"The pick list of the line item."
pickListId: ID!
"The status of the line item."
status: PickListLineItemStatus!
"The item to pick. Absent for line items without an item, such as vouchers and free-text line items. A line item without an item cannot be picked (PICK_LIST_LINE_ITEM_NOT_PICKABLE)."
itemId: ID
"The item number (SKU)."
itemNumber: String
"The name of the item."
itemName: String
"The sales order the quantity is reserved for. Absent for pick lists that do not belong to a sales order."
salesOrderId: ID
"The sales order line item the quantity is reserved for."
salesOrderLineItemId: ID
"The storage location to take the goods from. Absent for line items that are not taken from a storage location, such as vouchers, free-text line items and the parent of a bill of materials. A line item without a storage location cannot be picked (PICK_LIST_LINE_ITEM_NOT_PICKABLE)."
storageLocationId: ID
"The name of the storage location."
storageLocationName: String
"The quantity to pick."
quantity: Decimal!
"Which batch and best-before information is needed when the item is picked. Computed from the item."
lotTracking: PickListLotTracking!
"Whether serial numbers are needed when the item is picked: true for items whose serial numbers are tracked per storage location. For items with a weaker serial number tracking no serial numbers are sent. Computed from the item."
isSerialNumberTracked: Boolean!
"The batch of the stock reserved for this line item. Absent for items without batch tracking."
batchNumber: String
"The best-before date of the stock reserved for this line item. Absent for items without best-before tracking."
shelfLifeExpirationDate: DateTime
"The line item this one was split from by a partial pick or a change of the reservation. Absent when it was not split. The original line item can be gone: it is removed when its whole quantity was reserved anew."
splitFromLineItemId: ID
}
"What can be done with a pick list line item right now. A hint for user interfaces that can be outdated with the next change; the action itself always checks again and refuses with the same codes. Known action keys: PICK, CHANGE_RESERVATION, DELETE."
type PickListLineItemAllowedActions {
"One entry per action, allowed or not."
actions: [PickListActionAvailability!]!
}
"One row of the pick list overview, flat so that it can be filtered and sorted. The line items are read with their own query."
type PickListListEntry {
"The ID of the pick list."
id: ID!
"The number of the pick list, as shown in the Wawi and on the printout."
number: String!
"The warehouse the pick list is worked in."
warehouseId: ID!
"The name of the warehouse."
warehouseName: String
"The template the pick list was created from. Absent when the template was deleted."
pickListTemplateId: ID
"The name of the template."
pickListTemplateName: String
"The status. Computed from the line items."
status: PickListStatus!
"How many line items the pick list has. Computed."
lineItemCount: Int!
"How many of them are still Created. Computed."
openLineItemCount: Int!
"The user who is working on the pick list right now. Absent when nobody is."
activeUserId: ID
"When the pick list was created."
createdAt: DateTime!
}
"A remark on a successful call, for example that some orders could not be reserved completely."
type PickListNotice {
"Stable machine-readable code of the remark. New codes can be added."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"A range with an optional lower and an optional upper limit; a limit that is absent is not checked."
type PickListRange {
"The lower limit (inclusive)."
min: Decimal
"The upper limit (inclusive)."
max: Decimal
}
"One step of the order in which stock is chosen for a reservation."
type PickListStockSort {
"What to sort by. Known values: GOODS_RECEIPT_DATE (date of the goods receipt of the stock), STORAGE_LOCATION_NAME, STORAGE_LOCATION_SORT_NUMBER, STORAGE_LOCATION_PRIORITY, PREFERRED_LOCATIONS (preferred storage locations of the item), SHELF_LIFE_DATE (best-before date), RETURNED_ITEMS. The list can grow; a client treats a value it does not know as an unknown criterion."
criterion: String!
"The direction."
direction: PickListSortDirection!
}
"A pick list template: the saved configuration under which orders are put on pick lists."
type PickListTemplate {
"The ID of the template."
id: ID!
"The name of the template."
name: String!
"A comment."
comment: String
"The colour of the quick button."
color: String
"The quick slot (1 to 15) of the template. A slot is unique per warehouse and template type; BOXES and EAZY_SHIPPING templates share their slots. Absent when it has none."
quickSlot: Int
"The warehouse the template creates pick lists for."
warehouseId: ID!
"How pick lists of the template are worked. Known values: BOXES (pick into shipping boxes), EAZY_SHIPPING (pick and ship with the shipping app), ROLLING_PICKING (pick with a trolley and several boxes), PICK_AND_PACK (pick and pack at a mobile packing table), IDENTICAL_ORDERS (pick identical orders together). The list can grow; a client treats a value it does not know as an unknown type."
type: String!
"The print template of the pick list. Absent: the standard one."
printTemplateId: ID
"How stock is chosen and reserved."
reservation: PickListTemplateReservation!
"Which orders are put on the pick lists."
orderSelection: PickListTemplateOrderSelection!
"Which items are put on the pick lists."
itemSelection: PickListTemplateItemSelection!
"Who sees the template and its pick lists."
visibility: PickListTemplateVisibility!
"Automatic creation of pick lists."
automation: PickListTemplateAutomation!
"Names of settings of the template that this API does not show or change yet, for example filter modes. They stay as they are when the template is changed."
unsupportedSettings: [String!]!
}
"What can be done with a pick list template right now. A hint for user interfaces that can be outdated with the next change; the action itself always checks again and refuses with the same codes. Known action keys: UPDATE, DELETE."
type PickListTemplateAllowedActions {
"One entry per action, allowed or not."
actions: [PickListActionAvailability!]!
}
"Automatic creation of pick lists."
type PickListTemplateAutomation {
"Whether pick lists are created automatically."
isEnabled: Boolean!
"The windows in which pick lists are created, each with its own limit; without an active window nothing is created automatically. Sending the list replaces all windows."
timeWindows: [PickListTemplateTimeWindow!]!
}
"Which items are put on the pick lists of a template."
type PickListTemplateItemSelection {
"The width of an item in centimetres."
width: PickListRange!
"The height of an item in centimetres."
height: PickListRange!
"The length of an item in centimetres."
length: PickListRange!
"The shortest edge of an item in centimetres."
shortestEdge: PickListRange!
"The longest edge of an item in centimetres."
longestEdge: PickListRange!
"The standard gross selling price of an item."
itemPrice: PickListRange!
"Only items of these product groups. Empty: not limited."
productGroupIds: [ID!]!
"Only items of these manufacturers. Empty: not limited."
manufacturerIds: [ID!]!
"Only items with one of these conditions. Empty: not limited."
itemConditionIds: [ID!]!
"Only items of these shipping classes. Empty: not limited."
shippingClassIds: [ID!]!
"Only items with one of these labels. Empty: not limited."
itemLabelIds: [ID!]!
"Only stock on storage locations of these types (read the types with 'QueryStorageLocationTypes'). Empty: not limited."
storageLocationTypeIds: [UUID!]!
"Only stock in these warehouse areas. Empty: not limited."
warehouseAreaIds: [ID!]!
"The least number of different warehouse areas. Absent: not checked."
minWarehouseAreaCount: Int
}
"One row of the template overview."
type PickListTemplateListEntry {
"The ID of the template."
id: ID!
"The name of the template."
name: String!
"A comment."
comment: String
"The colour of the quick button."
color: String
"The quick slot (1 to 15) of the template. A slot is unique per warehouse and template type; BOXES and EAZY_SHIPPING templates share their slots. Absent when it has none."
quickSlot: Int
"The warehouse the template creates pick lists for."
warehouseId: ID!
"How pick lists of the template are worked; see the template for the known values."
type: String!
"Whether pick lists are created automatically."
isAutomaticCreationEnabled: Boolean!
}
"Which orders are put on the pick lists of a template."
type PickListTemplateOrderSelection {
"The kinds of process that are put on pick lists, at least one. Known values: SALES_ORDER, STOCK_TRANSFER, PRODUCTION_REPLENISHMENT_ORDER, PRODUCTION_TRANSFER. The list can grow; a client treats a value it does not know as an unknown kind."
sourceTypes: [String!]!
"How many orders a pick list holds."
orderCount: PickListRange!
"How many items an order may have."
itemsPerOrder: PickListRange!
"How many items a pick list holds."
itemsPerList: PickListRange!
"The shipping weight of an order in kilograms."
shippingWeight: PickListRange!
"The gross total of an order."
grossTotal: PickListRange!
"The volume of an order in cubic centimetres."
volume: PickListRange!
"Whether orders without volume information are left out."
excludeOrdersWithoutVolume: Boolean!
"Orders up to this weight in kilograms are delivered partially. Absent: not used."
partialDeliveryMaxWeight: Decimal
"Whether line items may be split for a partial delivery."
partialDeliverySplitLineItems: Boolean!
"Whether fully deliverable orders are always pre-picked."
prePickFullyDeliverable: Boolean!
"Whether fully deliverable orders are kept off the pick list."
excludeFullyDeliverable: Boolean!
"Whether unpaid orders are pre-picked as well."
includeUnpaid: Boolean!
"Whether all unpaid orders are pre-picked automatically."
includeUnpaidAutomatically: Boolean!
"Which orders are put on the pick list by their addresses."
addressMode: PickListAddressMode!
"Whether orders that FIFO delivery completely delivered in parts are put on the pick list."
fifoFullyPartiallyDelivered: Boolean!
"How the expected delivery date limits the orders."
expectedDeliveryDateMode: PickListExpectedDeliveryDateMode!
"The number of days for the mode WithinDays."
expectedDeliveryDateDays: Int
"Only orders with one of these colours. Empty: not limited."
colorIds: [ID!]!
"Only orders of customers in one of these customer groups. Empty: not limited."
customerGroupIds: [ID!]!
"Only orders to one of these countries, as ISO 3166-1 alpha-2 codes such as DE; matched case-insensitively on input and returned in upper case. Empty: not limited."
deliveryCountryCodes: [String!]!
"Only orders with an invoice address in one of these countries, as ISO 3166-1 alpha-2 codes such as DE; matched case-insensitively on input and returned in upper case. Empty: not limited."
invoiceCountryCodes: [String!]!
"Only orders with one of these priorities, each a whole number from -5 (lowest) to 5 (highest); 0 is the normal priority. Empty: not limited."
priorities: [Int!]!
"Only orders of these companies. Empty: not limited."
companyIds: [ID!]!
"Only orders of these sales channels. A sales channel ID is a tenant-local composite identifier such as 1-1-1, not a UUID. Valid values are listed by the sales channel endpoint (GET). Empty: not limited."
salesChannelIds: [ID]!
"Only orders with one of these payment methods. Empty: not limited."
paymentMethodIds: [ID!]!
"Only orders with one of these shipping methods. Empty: not limited."
shippingMethodIds: [ID!]!
"Only orders with one of these order statuses. Empty: not limited."
orderStatusIds: [ID!]!
}
"How stock is chosen and reserved for the pick lists of a template."
type PickListTemplateReservation {
"The order in which stock is chosen, most important first. Only the criteria that are used are listed; a criterion that is not listed is not used."
stockSortOrder: [PickListStockSort!]!
"Whether stock from replenishment areas is reserved last."
reserveReplenishmentAreasLast: Boolean!
"Whether storage locations that hold the whole quantity are preferred."
preferLocationsWithEnoughStock: Boolean!
"Whether storage locations without active reservations are preferred."
preferLocationsWithoutReservations: Boolean!
"Whether a pick list holds only one kind of item (sort-pure pick list)."
singleItemKindOnly: Boolean!
"The most different items on a sort-pure pick list. Absent: no limit."
maxDistinctItems: Int
"Whether line items of a multi pick list are worked in the order of the lists."
processInListOrder: Boolean!
"Whether an order is reserved from one batch only."
batchPure: Boolean!
"Whether stock with an expired best-before date is reserved. A setting of the desktop that this API does not show yet reads as Include and is named in 'unsupportedSettings'."
expiredShelfLife: PickListExpiredShelfLifeHandling!
"The stock must stay good for at least this many days. Absent: not checked."
shelfLifeMinimumDays: Int
"Whether a bill of materials is only reserved when all its components are available."
billOfMaterialsCompleteOnly: Boolean!
"Whether the components of a bill of materials are preferably taken from the same storage location."
billOfMaterialsSameLocation: Boolean!
}
"A weekday and time range in which a template creates pick lists automatically. A window can wrap past midnight and over the end of the week."
type PickListTemplateTimeWindow {
"Whether the window is used; a window that is not active never creates pick lists."
isActive: Boolean!
"The first day of the window."
dayFrom: PickListWeekday!
"The last day of the window. The window covers the days from 'dayFrom' to 'dayTo'; 'dayFrom' may be later than 'dayTo' for a window that wraps over the end of the week (Saturday to Monday)."
dayTo: PickListWeekday!
"The start time of the day as hh:mm."
timeFrom: String!
"The end time of the day as hh:mm; 24:00 is the end of the day, so 00:00 to 24:00 is the whole day. A 'timeFrom' later than 'timeTo' is a window that wraps past midnight (for example 22:00 to 06:00 on the days of the window). A window that the desktop stored with an end time of 23:59 or later is returned with 24:00."
timeTo: String!
"The limit of the window: pick lists are created while fewer than this many unprocessed pick lists of the template exist. At least 1."
limit: Int!
}
"Who sees the template and the pick lists created from it."
type PickListTemplateVisibility {
"The users who can choose the template. Empty: all users."
visibleToUserIds: [ID!]!
"Whether 'createdListsUserIds' are the only users who see pick lists created from the template, or the users who do not see them."
createdListsUserMode: PickListUserSelectionMode!
"The users the mode applies to. Empty: all users see the pick lists, whatever the mode."
createdListsUserIds: [ID!]!
}
"Picks a quantity of a line item: the goods are moved from the storage location of the line item into the pick box of the pick list, which the server creates with the first pick; the client does not choose a target. The pick list is not locked: two callers are decided by the status check and the second one is refused. A quantity smaller than the line item splits it: the picked part is Picked, the remainder stays Created and its ID is returned. Batch number, best-before date and serial numbers are validated on both sides: what the item needs must be sent, what it does not need must not be sent; the line item says what it needs ('lotTracking', 'isSerialNumberTracked'). A refused action reports 'errorCode' (the main reason) and 'blockers' (all reasons, each with 'code' and 'message'). errorCode is one of: PICK_LIST_NOT_FOUND (the pick list was not found); PICK_LIST_LINE_ITEM_NOT_FOUND (the line item was not found on the pick list); PICK_LIST_LINE_ITEM_ALREADY_PICKED (the line item is Picked or further); PICK_LIST_LINE_ITEM_HELD_BY_SESSION (a delivery session holds the line item); PICK_LIST_LINE_ITEM_NOT_PICKABLE (the line item has no item or no storage location, for example a free-text line item or the parent of a bill of materials; the Wawi pick refuses such a line item as invalid data); PICK_LIST_QUANTITY_INVALID (the quantity is not larger than 0); PICK_LIST_QUANTITY_EXCEEDS_LINE_ITEM (the quantity is larger than the quantity of the line item); PICK_LIST_QUANTITY_NOT_DIVISIBLE (the quantity has decimals and the item cannot be divided); PICK_LIST_BATCH_NUMBER_REQUIRED (the item has batch tracking and no batch number was sent); PICK_LIST_SHELF_LIFE_DATE_REQUIRED (the item has best-before tracking and no date was sent); PICK_LIST_SERIAL_NUMBERS_REQUIRED ('isSerialNumberTracked' is true and none were sent); PICK_LIST_SERIAL_NUMBER_COUNT_MISMATCH (the number of serial numbers differs from the quantity); PICK_LIST_SERIAL_NUMBER_NOT_ON_STORAGE_LOCATION (a serial number is not in stock on the storage location of the line item); PICK_LIST_BATCH_NUMBER_NOT_ALLOWED (the item has no batch tracking); PICK_LIST_SHELF_LIFE_DATE_NOT_ALLOWED (the item has no best-before tracking); PICK_LIST_SERIAL_NUMBERS_NOT_ALLOWED ('isSerialNumberTracked' is false); PICK_LIST_STOCK_INSUFFICIENT (the storage location holds less than the quantity); PICK_LIST_NO_STOCK_SWAP_PARTNER (no other stock could be swapped in to match the batch or best-before date); PICK_LIST_BATCH_QUANTITY_INSUFFICIENT (there is not enough stock of that batch or best-before date). - Response"
type PickPickListLineItemCommandResponse {
"The line item that is now Picked. This is the addressed line item; after a partial pick it holds the picked quantity."
pickedLineItemId: ID!
"The new line item with the remainder after a partial pick. Absent when everything was picked."
remainingLineItemId: ID
}
"A country that has postal codes in the directory."
type PostalCodeCountry {
"The country, as ISO 3166-1 alpha-2 code of two letters; case does not matter."
countryCode: String!
"The number of entries (postal code and place pairs) of the country."
entryCount: Int!
}
"A place that belongs to a postal code in a country. A postal code can have several places, and the same place can have several postal codes."
type PostalCodeEntry {
"The country, as ISO 3166-1 alpha-2 code of two letters; case does not matter."
countryCode: String!
"The postal code, as text with leading zeros, at most 10 characters."
postalCode: String!
"The name of the place, at most 50 characters."
city: String!
}
"A request for prices that is sent to one supplier. It has line items, which are read through 'QueryPriceInquiryLineItemsByPriceInquiryId'. A price inquiry is not a purchase order: it expects nothing into stock, has no status and no workflow; the supplier's answer is entered as the prices of the lines, and 'ConvertPriceInquiryToPurchaseOrder' turns it into an order."
type PriceInquiry {
"The ID of the price inquiry."
id: ID!
"The price inquiry number. It is drawn from the number range of price inquiries when the inquiry is created and cannot be changed through the API; empty for an older price inquiry without one."
number: String!
"Whether the price inquiry is marked as confirmed, which is the only mark a price inquiry has: it is usually set when the supplier has answered. Set with 'ConfirmPriceInquiry', reset with 'ResetPriceInquiryConfirmation'."
isConfirmed: Boolean!
"The ID of the supplier. It cannot be changed; copy the price inquiry to another supplier with 'CopyPriceInquiry'."
supplierId: ID!
"The supplier's address and contact person on the price inquiry. 'companyName' is the supplier's name."
supplierAddress: PurchaseOrderAddress
"The ID of the company that asks."
companyId: ID
"The billing address on the price inquiry, taken from the company."
billingAddress: PurchaseOrderAddress
"The delivery address on the price inquiry, taken from the warehouse."
deliveryAddress: PurchaseOrderAddress
"The ID of the warehouse the goods would be delivered to. Empty for an older price inquiry stored without one."
warehouseId: ID
"The language of the price inquiry as language tag (BCP 47), the supplier's language."
languageTag: String
"The currency of the price inquiry as currency code (ISO 4217 alpha-3, or with the prefix 'x-' for a currency defined by the tenant); the supplier's currency."
currencyCode: String!
"The factor that converts the currency of the price inquiry into the base currency."
exchangeRate: Decimal!
"When the goods are requested."
requestedDeliveryDate: DateTime
"A free reference."
referenceNumber: String
"A comment for internal use. It is not printed."
internalComment: String
"A note printed on the price inquiry."
printNote: String
"The net total of the lines in the currency of the price inquiry. Computed."
totalNetAmount: Decimal!
"When the price inquiry was printed last."
lastPrintedAt: DateTime
"When the price inquiry was mailed last."
lastMailedAt: DateTime
"When the price inquiry was created."
createdAt: DateTime
"The user who created the price inquiry."
createdBy: ID
}
"A discount or a charge on a price inquiry that was made from the purchase list: the ERP computes it from the supplier's conditions, as for an order. It cannot be written through this API."
type PriceInquiryAllowanceOrChargeLine implements PriceInquiryLineItem {
"The ID of the line."
id: ID!
"The ID of the price inquiry."
priceInquiryId: ID!
"The position of the line on the price inquiry."
sortOrder: Int!
"The name of the line: the item's name when it was added, or the text of a custom line."
name: String!
"The quantity asked for."
quantity: Decimal!
"The net price per unit in the currency of the price inquiry. It is the supplier's answer once it is entered; before that it is the price the ERP knows for the item and the supplier, or 0."
netUnitPrice: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The net amount of the line: quantity times unit price. Computed."
netAmount: Decimal!
"When the supplier is asked to deliver the line, or has said it would."
expectedDeliveryDate: DateTime
"A note on the line, printed on the price inquiry."
note: String
"Discriminator: the kind of the line."
lineItemType: PriceInquiryLineItemType!
"Which kind of allowance or charge the line is."
allowanceOrChargeType: PurchaseOrderAllowanceOrChargeType!
}
"A line created together with its price inquiry."
type PriceInquiryCreatedLineItem {
"The ID of the new line."
lineItemId: ID!
"The temporary identifier from the request, if one was sent."
clientId: String
}
"A free line without an item."
type PriceInquiryCustomLine implements PriceInquiryLineItem {
"The ID of the line."
id: ID!
"The ID of the price inquiry."
priceInquiryId: ID!
"The position of the line on the price inquiry."
sortOrder: Int!
"The name of the line: the item's name when it was added, or the text of a custom line."
name: String!
"The quantity asked for."
quantity: Decimal!
"The net price per unit in the currency of the price inquiry. It is the supplier's answer once it is entered; before that it is the price the ERP knows for the item and the supplier, or 0."
netUnitPrice: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The net amount of the line: quantity times unit price. Computed."
netAmount: Decimal!
"When the supplier is asked to deliver the line, or has said it would."
expectedDeliveryDate: DateTime
"A note on the line, printed on the price inquiry."
note: String
"Discriminator: the kind of the line."
lineItemType: PriceInquiryLineItemType!
"The number of the line, if one was given."
sku: String
}
"A line with an item."
type PriceInquiryItemLine implements PriceInquiryLineItem {
"The ID of the line."
id: ID!
"The ID of the price inquiry."
priceInquiryId: ID!
"The position of the line on the price inquiry."
sortOrder: Int!
"The name of the line: the item's name when it was added, or the text of a custom line."
name: String!
"The quantity asked for."
quantity: Decimal!
"The net price per unit in the currency of the price inquiry. It is the supplier's answer once it is entered; before that it is the price the ERP knows for the item and the supplier, or 0."
netUnitPrice: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The net amount of the line: quantity times unit price. Computed."
netAmount: Decimal!
"When the supplier is asked to deliver the line, or has said it would."
expectedDeliveryDate: DateTime
"A note on the line, printed on the price inquiry."
note: String
"Discriminator: the kind of the line."
lineItemType: PriceInquiryLineItemType!
"The ID of the item. Empty when the item was deleted after the line was added."
itemId: ID
"The item number (SKU) when the line was added."
sku: String
"The supplier's number for the item."
supplierSku: String
"The supplier's name for the item."
supplierItemName: String
"The supplier's packaging unit, for example a carton."
packagingUnit: String
"How many units the packaging unit holds."
packagingQuantity: Decimal
"The supplier's delivery time for the item in days."
deliveryTimeInDays: Int
}
"A price inquiry in a list: the properties to find and sort price inquiries by. Read the full price inquiry with 'GetPriceInquiry'."
type PriceInquiryListEntry {
"The ID of the price inquiry."
id: ID!
"The price inquiry number; empty for an older price inquiry without one."
number: String!
"Whether the price inquiry is marked as confirmed."
isConfirmed: Boolean!
"The ID of the supplier."
supplierId: ID!
"The supplier's name on the price inquiry."
supplierName: String
"The ID of the company that asks."
companyId: ID
"The ID of the warehouse the goods would be delivered to."
warehouseId: ID
"The currency of the price inquiry as currency code."
currencyCode: String!
"The net total of the lines in the currency of the price inquiry. Computed."
totalNetAmount: Decimal!
"When the goods are requested."
requestedDeliveryDate: DateTime
"A free reference."
referenceNumber: String
"When the price inquiry was printed last."
lastPrintedAt: DateTime
"When the price inquiry was mailed last."
lastMailedAt: DateTime
"When the price inquiry was created."
createdAt: DateTime
}
"Prints the customer on a printer of the machine that runs the API. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is CUSTOMER_NOT_FOUND (no customer with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_PRINTER_REQUIRED (no printer is given and none is configured); errorCode is OUTPUT_PRINTER_NOT_FOUND (the printer is not installed on the machine that runs the API); errorCode is OUTPUT_PRINTER_NOT_AVAILABLE (the API runs where no printers exist, for example in the cloud). - Response"
type PrintCustomerCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Prints the delivery note on a printer of the machine that runs the API. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is DELIVERY_NOTE_NOT_FOUND (no delivery note with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_PRINTER_REQUIRED (no printer is given and none is configured); errorCode is OUTPUT_PRINTER_NOT_FOUND (the printer is not installed on the machine that runs the API); errorCode is OUTPUT_PRINTER_NOT_AVAILABLE (the API runs where no printers exist, for example in the cloud). - Response"
type PrintDeliveryNoteCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Prints the dunning notice on a printer of the machine that runs the API. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is DUNNING_NOTICE_NOT_FOUND (no dunning notice with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_PRINTER_REQUIRED (no printer is given and none is configured); errorCode is OUTPUT_PRINTER_NOT_FOUND (the printer is not installed on the machine that runs the API); errorCode is OUTPUT_PRINTER_NOT_AVAILABLE (the API runs where no printers exist, for example in the cloud). - Response"
type PrintDunningNoticeCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Prints the inventory count on a printer of the machine that runs the API. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is INVENTORY_COUNT_NOT_FOUND (no inventory count with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_PRINTER_REQUIRED (no printer is given and none is configured); errorCode is OUTPUT_PRINTER_NOT_FOUND (the printer is not installed on the machine that runs the API); errorCode is OUTPUT_PRINTER_NOT_AVAILABLE (the API runs where no printers exist, for example in the cloud). - Response"
type PrintInventoryCountCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Prints item labels on a printer of the machine that runs the API; all labels of one call are one print job. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is OUTPUT_LABEL_LIMIT_EXCEEDED (more than 500 entries; split the selection into several calls); errorCode is OUTPUT_LABEL_ENTRY_INVALID (an entry has no valid ID or a quantity below 1); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_PRINTER_REQUIRED (no printer is given and none is configured); errorCode is OUTPUT_PRINTER_NOT_FOUND (the printer is not installed on the machine that runs the API); errorCode is OUTPUT_PRINTER_NOT_AVAILABLE (the API runs where no printers exist, for example in the cloud). - Response"
type PrintItemLabelsCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Prints package ID labels on a printer of the machine that runs the API; all labels of one call are one print job. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is OUTPUT_LABEL_LIMIT_EXCEEDED (more than 500 entries; split the selection into several calls); errorCode is OUTPUT_LABEL_ENTRY_INVALID (an entry has no valid ID or a quantity below 1); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_PRINTER_REQUIRED (no printer is given and none is configured); errorCode is OUTPUT_PRINTER_NOT_FOUND (the printer is not installed on the machine that runs the API); errorCode is OUTPUT_PRINTER_NOT_AVAILABLE (the API runs where no printers exist, for example in the cloud). - Response"
type PrintPackageIdLabelsCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Prints the pick list on a printer of the machine that runs the API. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is PICK_LIST_NOT_FOUND (no pick list with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_PRINTER_REQUIRED (no printer is given and none is configured); errorCode is OUTPUT_PRINTER_NOT_FOUND (the printer is not installed on the machine that runs the API); errorCode is OUTPUT_PRINTER_NOT_AVAILABLE (the API runs where no printers exist, for example in the cloud). - Response"
type PrintPickListCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Prints the purchase order on a printer of the machine that runs the API. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is PURCHASE_ORDER_NOT_FOUND (no purchase order with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_PRINTER_REQUIRED (no printer is given and none is configured); errorCode is OUTPUT_PRINTER_NOT_FOUND (the printer is not installed on the machine that runs the API); errorCode is OUTPUT_PRINTER_NOT_AVAILABLE (the API runs where no printers exist, for example in the cloud). - Response"
type PrintPurchaseOrderCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Prints the return on a printer of the machine that runs the API. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is RETURN_NOT_FOUND (no return with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_PRINTER_REQUIRED (no printer is given and none is configured); errorCode is OUTPUT_PRINTER_NOT_FOUND (the printer is not installed on the machine that runs the API); errorCode is OUTPUT_PRINTER_NOT_AVAILABLE (the API runs where no printers exist, for example in the cloud). - Response"
type PrintReturnCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Prints the sales credit note on a printer of the machine that runs the API. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_CREDIT_NOTE_NOT_FOUND (no sales credit note with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_PRINTER_REQUIRED (no printer is given and none is configured); errorCode is OUTPUT_PRINTER_NOT_FOUND (the printer is not installed on the machine that runs the API); errorCode is OUTPUT_PRINTER_NOT_AVAILABLE (the API runs where no printers exist, for example in the cloud). - Response"
type PrintSalesCreditNoteCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Prints the sales invoice on a printer of the machine that runs the API. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_INVOICE_NOT_FOUND (no sales invoice with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_PRINTER_REQUIRED (no printer is given and none is configured); errorCode is OUTPUT_PRINTER_NOT_FOUND (the printer is not installed on the machine that runs the API); errorCode is OUTPUT_PRINTER_NOT_AVAILABLE (the API runs where no printers exist, for example in the cloud). - Response"
type PrintSalesInvoiceCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Prints the sales invoice correction on a printer of the machine that runs the API. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_INVOICE_CORRECTION_NOT_FOUND (no sales invoice correction with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_PRINTER_REQUIRED (no printer is given and none is configured); errorCode is OUTPUT_PRINTER_NOT_FOUND (the printer is not installed on the machine that runs the API); errorCode is OUTPUT_PRINTER_NOT_AVAILABLE (the API runs where no printers exist, for example in the cloud). - Response"
type PrintSalesInvoiceCorrectionCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Prints the sales order on a printer of the machine that runs the API. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_ORDER_NOT_FOUND (no sales order with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_PRINTER_REQUIRED (no printer is given and none is configured); errorCode is OUTPUT_PRINTER_NOT_FOUND (the printer is not installed on the machine that runs the API); errorCode is OUTPUT_PRINTER_NOT_AVAILABLE (the API runs where no printers exist, for example in the cloud). - Response"
type PrintSalesOrderCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Prints the sales quotation on a printer of the machine that runs the API. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_QUOTATION_NOT_FOUND (no sales quotation with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_PRINTER_REQUIRED (no printer is given and none is configured); errorCode is OUTPUT_PRINTER_NOT_FOUND (the printer is not installed on the machine that runs the API); errorCode is OUTPUT_PRINTER_NOT_AVAILABLE (the API runs where no printers exist, for example in the cloud). - Response"
type PrintSalesQuotationCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Prints SSCC labels on a printer of the machine that runs the API; all labels of one call are one print job. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is OUTPUT_LABEL_LIMIT_EXCEEDED (more than 500 entries; split the selection into several calls); errorCode is OUTPUT_LABEL_ENTRY_INVALID (an entry has no valid ID or a quantity below 1); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_PRINTER_REQUIRED (no printer is given and none is configured); errorCode is OUTPUT_PRINTER_NOT_FOUND (the printer is not installed on the machine that runs the API); errorCode is OUTPUT_PRINTER_NOT_AVAILABLE (the API runs where no printers exist, for example in the cloud). - Response"
type PrintSsccLabelsCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Prints storage location labels on a printer of the machine that runs the API; all labels of one call are one print job. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is OUTPUT_LABEL_LIMIT_EXCEEDED (more than 500 entries; split the selection into several calls); errorCode is OUTPUT_LABEL_ENTRY_INVALID (an entry has no valid ID or a quantity below 1); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_PRINTER_REQUIRED (no printer is given and none is configured); errorCode is OUTPUT_PRINTER_NOT_FOUND (the printer is not installed on the machine that runs the API); errorCode is OUTPUT_PRINTER_NOT_AVAILABLE (the API runs where no printers exist, for example in the cloud). - Response"
type PrintStorageLocationLabelsCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"A product group is a label to classify items. It has a name and no hierarchy. Each item belongs to at most one product group."
type ProductGroup {
"The ID of the product group."
id: ID!
"The name of the product group. It is never empty and has at most 255 characters."
name: String!
}
"Whether one action on a product group would be allowed right now, and if not, why not."
type ProductGroupActionAvailability {
"The stable key of the action: 'delete'."
action: String!
"Whether the action would go through right now."
isAllowed: Boolean!
"The reasons why it would not. Empty when it is allowed."
blockers: [ProductGroupActionBlocker!]!
}
"One reason why an action on a product group is not allowed."
type ProductGroupActionBlocker {
"Stable machine-readable code of the reason, for example PRODUCT_GROUP_IS_ASSIGNED_TO_ITEMS."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"What can be done with a product group right now. A hint for user interfaces that can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type ProductGroupAllowedActions {
"One entry per action."
actions: [ProductGroupActionAvailability!]!
}
"Defines for which items a custom field applies. A field applies to an item if the item's product group is listed or if the item has no product group and that case is included. With no product group listed and that case excluded, the field applies to no item."
type ProductGroupRestriction {
"Indicates that the field applies to items without a product group."
includesItemsWithoutProductGroup: Boolean!
"The product groups the field applies to."
productGroupIds: [ID!]!
}
"Tax codes that replace those of a rate for the items of one product group."
type ProductGroupTaxCodeOverride {
"The product group."
productGroupId: ID!
"The tax code for taxable sales. Empty means the tax code of the rate applies."
taxableTaxCodeId: ID
"The tax code for tax-free intra-community deliveries to business customers in another EU country. Empty means the tax code of the rate applies."
intraCommunityDeliveryTaxCodeId: ID
"The tax code for sales under the reverse-charge procedure. Empty means the tax code of the rate applies."
reverseChargeTaxCodeId: ID
"The tax code for tax-exempt sales: exports from the EU and sales made exempt on purpose. Empty means the tax code of the rate applies."
exemptTaxCodeId: ID
}
"A production item. It is an item that is manufactured according to its bills of materials."
type ProductionItem {
"The ID of the production item."
id: ID!
"The ID of the item underlying this production item."
itemId: ID!
"Defines the type of lot size configuration for this production item."
lotType: LotType!
"Defines the type of manufacturing of this production item."
productionType: ProductionType!
"The ID of a template to be used for printing an item label when a lot is completed, or null if no item label is printed on completion."
lotLabelTemplateId: ID
"The ID of a template to be used for printing an item label for each produced unit when a lot is completed, or null if no item label is printed for each produced unit on completion."
singleItemLabelTemplateId: ID
"The timestamp when the production item was created."
createdAt: DateTime!
"The timestamp when the production item was last changed. Equals the creation timestamp if it has not been changed yet."
changedAt: DateTime!
"The ID of the user who last changed the production item, or null if it has not been changed yet."
changedBy: ID
"The lot sizes of the production item, or null if it has no lot sizes."
lotSizes: [LotSize!]!
"The bills of materials of the production item, together with their components."
billsOfMaterials: [BillOfMaterials!]!
}
"An item condition that is selected for a production item. A produced unit of the production item can end up in each of its selected item conditions. The default item condition is always selected."
type ProductionItemCondition {
"The ID of the production item for which the item condition is selected."
productionItemId: ID!
"The ID of the item condition that is selected for the production item."
itemConditionId: ID!
"The average percentage of produced units of the production item that resulted in this item condition. It is calculated from the recorded production results and cannot be set. For an item condition other than the default item condition, it is 0 if no production results have been recorded for it yet."
sharePercentage: Decimal!
}
"A production order. It produces one production item according to one of its bills of materials."
type ProductionOrder {
"The ID of this production order."
id: ID!
"The issue number of this production order. It is assigned on creation."
issueNumber: String!
"The ID of the production item produced by this production order (see GetProductionItemById)."
productionItemId: ID!
"The ID of the bill of materials used to produce the production item (see GetBillOfMaterialsById)."
billOfMaterialsId: ID!
"The ID of the disposition this production order originates from. Not set if the production order was not created from a disposition."
dispositionId: ID
"The planned number of lots."
lotCount: Int!
"The planned size of each lot."
lotSize: Decimal!
"The planned total quantity to be produced. It is at most the lot count multiplied by the lot size; any difference is produced in excess."
targetTotalQuantity: Decimal!
"The quantity produced so far."
actualQuantity: Decimal!
"The progress of this production order in percent, between 0 (not started) and 100 (completed)."
progress: Decimal!
"The planned start of this production order."
targetStartAt: DateTime
"The planned completion of this production order."
targetCompletionAt: DateTime
"The reported start of this production order."
actualStartAt: DateTime
"The reported completion of this production order."
actualCompletionAt: DateTime
"The planned delivery date of this production order."
deliveryAt: DateTime
"The project number associated with this production order. Empty if none is set."
projectNumber: String!
"The reference number of the order underlying this production order. Empty if none is set."
referenceNumber: String!
"An additional note on this production order that is displayed during production. Empty if none is set."
notice: String!
"The ID of the resource type whose workbenches may produce this production order (see GetResourceTypeById). At most one of ResourceTypeId and ResourceId is set; if neither is set, any workbench may produce the production order. Changed by ChangeProductionOrderResourceAssignment."
resourceTypeId: ID
"The ID of the resource (always a workbench) to which this production order is assigned (see GetResourceById). At most one of ResourceTypeId and ResourceId is set; if neither is set, any workbench may produce the production order. Changed by ChangeProductionOrderResourceAssignment."
resourceId: ID
"The point in time at which this production order was released. Not set while the production order has not been released."
releasedAt: DateTime
"The ID of the user who released this production order. Not set while the production order has not been released."
releasedBy: ID
"The point in time at which this production order was created (issued)."
createdAt: DateTime!
"The ID of the user who created this production order."
createdBy: ID!
"The point in time at which this production order was last changed."
changedAt: DateTime!
"The ID of the user who last changed this production order."
changedBy: ID!
}
"A price inquiry that was created from purchase list entries."
type PurchaseListCreatedPriceInquiry {
"The ID of the new price inquiry."
priceInquiryId: ID!
"The number of the new price inquiry."
number: String!
"The ID of the supplier."
supplierId: ID!
"The ID of the receiving warehouse."
warehouseId: ID!
}
"A purchase order that was created from purchase list entries."
type PurchaseListCreatedPurchaseOrder {
"The ID of the new purchase order."
purchaseOrderId: ID!
"The number of the new purchase order."
number: String!
"The ID of the supplier."
supplierId: ID!
"The ID of the receiving warehouse."
warehouseId: ID!
}
"An entry of the purchase list: how much of an item is to be bought, optionally from which supplier and for which warehouse. The purchase list is the working set from which purchase orders and price inquiries are made. There is at most one entry per item, warehouse and supplier."
type PurchaseListEntry {
"The ID of the entry."
id: ID!
"The ID of the item."
itemId: ID!
"The item number (SKU) of the item. Computed."
sku: String
"The name of the item. Computed."
itemName: String
"The quantity to buy."
quantity: Decimal!
"The ID of the supplier the item is to be bought from. Empty when none is chosen; such an entry is not ordered."
supplierId: ID
"The ID of the warehouse the goods are for. Empty when none is chosen; the order then uses the supplier's default warehouse, else the first active warehouse that is no drop shipping target."
warehouseId: ID
"A free note. Entries that are made from sales documents name the document here."
note: String
"The quantity that would be ordered: 'quantity', raised to the supplier's minimum order quantity and rounded up to its order interval. Empty when the entry has no supplier. Computed."
orderQuantity: Decimal
"The net price per unit that the ERP would use at 'orderQuantity': the lowest price of the supplier's quantity scale that applies, else the supplier's price for the item, in the supplier's currency. Empty when the entry has no supplier. Computed."
netUnitPrice: Decimal
"'orderQuantity' times 'netUnitPrice', in the supplier's currency. Empty when the entry has no supplier. Computed."
netAmount: Decimal
"The currency of 'netUnitPrice' and 'netAmount': the supplier's currency as currency code (ISO 4217 alpha-3, or with the prefix 'x-' for a currency defined by the tenant). Empty when the entry has no supplier. Computed."
currencyCode: String
"The supplier's delivery time for the item in days. Empty when the entry has no supplier or the supplier gives none. Computed."
deliveryTimeInDays: Int
"When the entry was created."
createdAt: DateTime!
"The user who created the entry."
createdBy: ID
}
"Whether one action is allowed for a purchase order. Keys today: RELEASE, MARK_AS_SENT, CONFIRM, RESET_CONFIRMATION, COMPLETE, CANCEL, CHANGE_WAREHOUSE, RECEIVE_GOODS, COPY, DELETE."
type PurchaseOrderActionAvailability {
"The key of the action, for example RELEASE. A client that does not know a key ignores the entry."
actionId: String!
"Whether the action is allowed right now."
isAllowed: Boolean!
"The reasons why it is not, empty when it is allowed."
blockers: [PurchaseOrderActionBlocker!]!
}
"A reason why an action is not allowed right now."
type PurchaseOrderActionBlocker {
"Stable machine-readable code of the reason, for example PURCHASE_ORDER_NOT_RELEASED. A client treats an unknown code as a reason that forbids the action."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"An address on a purchase order: a copy that belongs to the order. It does not follow the master data of the supplier, company, warehouse or customer it was taken from. On the supplier address the person fields name the contact person."
type PurchaseOrderAddress {
"The company name."
companyName: String
"An additional line for the company."
additionalCompanyLine: String
"The salutation of the person."
salutation: String
"The title of the person."
title: String
"The first name of the person."
firstName: String
"The last name of the person."
lastName: String
"The street and house number."
street: String
"An additional address line."
additionalAddressLine: String
"The postal code."
postalCode: String
"The city."
city: String
"The state or region."
state: String
"The country as ISO 3166-1 alpha-2 code."
countryCode: String
"The phone number."
phoneNumber: String
"The fax number."
faxNumber: String
"The mobile phone number."
mobilePhoneNumber: String
"The e-mail address."
emailAddress: String
}
"A discount or a charge the ERP computes from the supplier's conditions whenever the item and custom lines change. It cannot be written."
type PurchaseOrderAllowanceOrChargeLine implements PurchaseOrderLineItem {
"The ID of the line item."
id: ID!
"The ID of the purchase order."
purchaseOrderId: ID!
"The position of the line on the order. Allowances and charges come last."
sortOrder: Int!
"The name of the line: the item's name when it was added, the text of a custom line, the name of an allowance or charge."
name: String!
"The ordered quantity. Cancelling reduces it to the delivered quantity."
quantity: Decimal!
"The net price per unit in the order currency. Negative for a discount."
netUnitPrice: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The net amount of the line: quantity times unit price. Computed."
netAmount: Decimal!
"A note on the line, printed on the order documents."
note: String
"What the supplier confirmed for the line. Empty when nothing is confirmed."
confirmation: PurchaseOrderLineItemConfirmation
"Discriminator: the kind of the line."
lineItemType: PurchaseOrderLineItemType!
"What the line stands for."
allowanceOrChargeType: PurchaseOrderAllowanceOrChargeType!
}
"What can be done with a purchase order right now. It is a hint for user interfaces and can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type PurchaseOrderAllowedActions {
"One entry per action, allowed or not."
actions: [PurchaseOrderActionAvailability!]!
}
"A line item created together with its purchase order."
type PurchaseOrderCreatedLineItem {
"The ID of the new line item."
lineItemId: ID!
"The temporary identifier from the request, if one was sent."
clientId: String
}
"A free line without an item. It is delivered like an item line but never booked into stock."
type PurchaseOrderCustomLine implements PurchaseOrderLineItem {
"The ID of the line item."
id: ID!
"The ID of the purchase order."
purchaseOrderId: ID!
"The position of the line on the order. Allowances and charges come last."
sortOrder: Int!
"The name of the line: the item's name when it was added, the text of a custom line, the name of an allowance or charge."
name: String!
"The ordered quantity. Cancelling reduces it to the delivered quantity."
quantity: Decimal!
"The net price per unit in the order currency. Negative for a discount."
netUnitPrice: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The net amount of the line: quantity times unit price. Computed."
netAmount: Decimal!
"A note on the line, printed on the order documents."
note: String
"What the supplier confirmed for the line. Empty when nothing is confirmed."
confirmation: PurchaseOrderLineItemConfirmation
"Discriminator: the kind of the line."
lineItemType: PurchaseOrderLineItemType!
"The quantity received so far. It can be higher than the ordered quantity."
deliveredQuantity: Decimal!
"The quantity still expected: the confirmed quantity, or the ordered quantity when none is confirmed, minus the delivered quantity, never below 0; 0 once the order is completed."
openQuantity: Decimal!
"When the line is expected. The ERP sets it to the day of the receipt that delivers the line completely, and to the day of every receipt booked from an advance shipping notice."
expectedDeliveryDate: DateTime
"A free number of the line."
sku: String
}
"Goods booked into stock against a line item. A later relocation within the warehouse can split a receipt into several records with their own location. Receipts of custom lines, of items without stock management and of drop shipping orders book no stock and have no record; they show only in the delivered quantity of the line."
type PurchaseOrderGoodsReceipt {
"The ID of the goods receipt."
id: ID!
"The ID of the purchase order."
purchaseOrderId: ID!
"The ID of the line item."
lineItemId: ID!
"The ID of the item."
itemId: ID!
"The ID of the warehouse the goods are in."
warehouseId: ID!
"The ID of the storage location the goods were booked to."
storageLocationId: ID!
"The quantity of this record."
quantity: Decimal!
"The batch number of the received stock."
batchNumber: String
"The shelf life expiration date (best-before date) of the received stock."
shelfLifeExpirationDate: DateTime
"The number on the supplier's delivery note."
deliveryNoteNumber: String
"The purchase price per unit in the base currency, with which the stock is valued."
unitPurchasePrice: Decimal!
"The day the goods were received."
receivedAt: DateTime
}
"A line with an item."
type PurchaseOrderItemLine implements PurchaseOrderLineItem {
"The ID of the line item."
id: ID!
"The ID of the purchase order."
purchaseOrderId: ID!
"The position of the line on the order. Allowances and charges come last."
sortOrder: Int!
"The name of the line: the item's name when it was added, the text of a custom line, the name of an allowance or charge."
name: String!
"The ordered quantity. Cancelling reduces it to the delivered quantity."
quantity: Decimal!
"The net price per unit in the order currency. Negative for a discount."
netUnitPrice: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The net amount of the line: quantity times unit price. Computed."
netAmount: Decimal!
"A note on the line, printed on the order documents."
note: String
"What the supplier confirmed for the line. Empty when nothing is confirmed."
confirmation: PurchaseOrderLineItemConfirmation
"Discriminator: the kind of the line."
lineItemType: PurchaseOrderLineItemType!
"The quantity received so far. It can be higher than the ordered quantity."
deliveredQuantity: Decimal!
"The quantity still expected: the confirmed quantity, or the ordered quantity when none is confirmed, minus the delivered quantity, never below 0; 0 once the order is completed."
openQuantity: Decimal!
"When the line is expected. The ERP sets it to the day of the receipt that delivers the line completely, and to the day of every receipt booked from an advance shipping notice."
expectedDeliveryDate: DateTime
"The ID of the item. Empty when the item was deleted after the line was added."
itemId: ID
"The item number (SKU) when the line was added."
sku: String
"The supplier's number for the item."
supplierSku: String
"The supplier's name for the item."
supplierItemName: String
"The supplier's packaging unit, for example a carton."
packagingUnit: String
"How many units the packaging unit holds."
packagingQuantity: Decimal
"The supplier's delivery time for the item in days."
deliveryTimeInDays: Int
}
"What the supplier confirmed for a line. Values that are empty were not confirmed separately."
type PurchaseOrderLineItemConfirmation {
"The confirmed quantity. When set, the open quantity is based on it instead of the ordered quantity."
quantity: Decimal
"The confirmed delivery date."
deliveryDate: DateTime
"The confirmed net price per unit in the order currency. When set, goods receipts are valued with it."
netUnitPrice: Decimal
}
"A purchase order in a list: the properties to find and sort orders by. Read the full order with 'GetPurchaseOrder'."
type PurchaseOrderListEntry {
"The ID of the purchase order."
id: ID!
"The kind of the order."
purchaseOrderType: PurchaseOrderType!
"The purchase order number; empty for an older order without one."
number: String!
"Where the order stands."
status: PurchaseOrderStatus!
"Whether an order to a warehouse is overdue. Computed."
isOverdue: Boolean!
"Whether the supplier has confirmed the order."
isConfirmed: Boolean!
"The ID of the supplier."
supplierId: ID!
"The supplier's name on the order."
supplierName: String
"The ID of the company that orders."
companyId: ID
"The ID of the receiving warehouse. Empty for a drop shipping order."
warehouseId: ID
"The ID of the receiving customer. Empty for an order to a warehouse."
customerId: ID
"The currency of the order as currency code (ISO 4217 alpha-3, or with the prefix 'x-' for a currency defined by the tenant)."
currencyCode: String!
"The net total of the order in its currency. Computed."
totalNetAmount: Decimal!
"When the goods are requested."
requestedDeliveryDate: DateTime
"The supplier's number for the order."
supplierDocumentNumber: String
"A free reference; for a drop shipping order from a sales delivery the sales order number."
referenceNumber: String
"When the order was first marked as sent."
sentAt: DateTime
"When the order was created."
createdAt: DateTime
}
"A manual workflow event of purchase orders, as set up in the workflow management of the ERP. Triggering it on an order runs the workflows that react to it."
type PurchaseOrderManualWorkflowEvent {
"The ID of the manual workflow event, to trigger it with 'TriggerPurchaseOrderWorkflowEvent'."
id: ID!
"The name of the event, as the ERP shows it."
name: String!
"The position of the event in the list of manual events."
sortOrder: Int!
"The menu groups the event belongs to. Empty when it is not grouped."
groups: [PurchaseOrderManualWorkflowEventGroup!]!
"How many active workflows react to the event. Raising an event without any does nothing. Computed."
activeWorkflowCount: Int!
}
"A group of manual events as the ERP shows it in its menu."
type PurchaseOrderManualWorkflowEventGroup {
"The ID of the group."
id: ID!
"The name of the group."
name: String!
}
"The result of one line of a goods receipt, in the order of the request."
type PurchaseOrderReceivedLine {
"The ID of the line item."
lineItemId: ID!
"The ID of the goods receipt booked into stock. Empty when the line books no stock (custom line, item without stock management, drop shipping order)."
goodsReceiptId: ID
}
"How far the actually used quantity may deviate from the planned quantity in one direction."
type QuantityDeviationConfiguration {
"The permitted deviation in percent of the planned quantity, or null if the deviation is unlimited. Not negative."
tolerance: Decimal
"Whether a comment must be entered when the actual quantity deviates from the planned quantity in this direction."
isCommentMandatoryOnDeviation: Boolean!
}
"A connection to a list of items."
type QueryAdditionalCostTypesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryAdditionalCostTypesEdge!]
"A flattened list of the nodes."
nodes: [AdditionalCostType!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryAdditionalCostTypesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: AdditionalCostType!
}
"A connection to a list of items."
type QueryAdvanceShippingNoticePackagesByAdvanceShippingNoticeIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryAdvanceShippingNoticePackagesByAdvanceShippingNoticeIdEdge!]
"A flattened list of the nodes."
nodes: [AdvanceShippingNoticePackage!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryAdvanceShippingNoticePackagesByAdvanceShippingNoticeIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: AdvanceShippingNoticePackage!
}
"A connection to a list of items."
type QueryAdvanceShippingNoticesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryAdvanceShippingNoticesEdge!]
"A flattened list of the nodes."
nodes: [AdvanceShippingNoticeListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryAdvanceShippingNoticesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: AdvanceShippingNoticeListEntry!
}
"A connection to a list of items."
type QueryAppRegistrationsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryAppRegistrationsEdge!]
"A flattened list of the nodes."
nodes: [AppRegistration!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryAppRegistrationsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: AppRegistration!
}
"A connection to a list of items."
type QueryAttributesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryAttributesEdge!]
"A flattened list of the nodes."
nodes: [AttributeListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryAttributesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: AttributeListEntry!
}
"A connection to a list of items."
type QueryBillOfMaterialsByProductionItemIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryBillOfMaterialsByProductionItemIdEdge!]
"A flattened list of the nodes."
nodes: [BillOfMaterials!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryBillOfMaterialsByProductionItemIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: BillOfMaterials!
}
"A connection to a list of items."
type QueryBillOfMaterialsChildComponentsByParentIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryBillOfMaterialsChildComponentsByParentIdEdge!]
"A flattened list of the nodes."
nodes: [BillOfMaterialsChildComponent!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryBillOfMaterialsChildComponentsByParentIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: BillOfMaterialsChildComponent!
}
"A connection to a list of items."
type QueryBillOfMaterialsComponentsByBillOfMaterialsIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryBillOfMaterialsComponentsByBillOfMaterialsIdEdge!]
"A flattened list of the nodes."
nodes: [BillOfMaterialsParentComponent!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryBillOfMaterialsComponentsByBillOfMaterialsIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: BillOfMaterialsParentComponent!
}
"A connection to a list of items."
type QueryCategoriesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCategoriesEdge!]
"A flattened list of the nodes."
nodes: [CategoryListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCategoriesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CategoryListEntry!
}
"A connection to a list of items."
type QueryCategoryCustomFieldsByCategoryIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCategoryCustomFieldsByCategoryIdEdge!]
"A flattened list of the nodes."
nodes: [CategoryCustomField!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCategoryCustomFieldsByCategoryIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CategoryCustomField!
}
"A connection to a list of items."
type QueryCategoryDescriptionsByCategoryIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCategoryDescriptionsByCategoryIdEdge!]
"A flattened list of the nodes."
nodes: [CategoryDescription!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCategoryDescriptionsByCategoryIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CategoryDescription!
}
"A connection to a list of items."
type QueryCategoryDiscountsByCategoryIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCategoryDiscountsByCategoryIdEdge!]
"A flattened list of the nodes."
nodes: [CategoryDiscount!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCategoryDiscountsByCategoryIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CategoryDiscount!
}
"A connection to a list of items."
type QueryCategoryHiddenCustomerGroupsByCategoryIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCategoryHiddenCustomerGroupsByCategoryIdEdge!]
"A flattened list of the nodes."
nodes: [CategoryHiddenCustomerGroup!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCategoryHiddenCustomerGroupsByCategoryIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CategoryHiddenCustomerGroup!
}
"A connection to a list of items."
type QueryCategoryImagesByCategoryIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCategoryImagesByCategoryIdEdge!]
"A flattened list of the nodes."
nodes: [CategoryImage!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCategoryImagesByCategoryIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CategoryImage!
}
"A connection to a list of items."
type QueryCategoryItemEntriesByCategoryIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCategoryItemEntriesByCategoryIdEdge!]
"A flattened list of the nodes."
nodes: [CategoryItemEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCategoryItemEntriesByCategoryIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CategoryItemEntry!
}
"A connection to a list of items."
type QueryCategorySalesChannelsByCategoryIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCategorySalesChannelsByCategoryIdEdge!]
"A flattened list of the nodes."
nodes: [CategorySalesChannel!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCategorySalesChannelsByCategoryIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CategorySalesChannel!
}
"A connection to a list of items."
type QueryCharacteristicGroupsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCharacteristicGroupsEdge!]
"A flattened list of the nodes."
nodes: [CharacteristicGroup!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCharacteristicGroupsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CharacteristicGroup!
}
"A connection to a list of items."
type QueryCharacteristicsByCharacteristicGroupIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCharacteristicsByCharacteristicGroupIdEdge!]
"A flattened list of the nodes."
nodes: [CharacteristicListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCharacteristicsByCharacteristicGroupIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CharacteristicListEntry!
}
"A connection to a list of items."
type QueryCharacteristicsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCharacteristicsEdge!]
"A flattened list of the nodes."
nodes: [CharacteristicListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCharacteristicsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CharacteristicListEntry!
}
"A connection to a list of items."
type QueryCharacteristicValuesByCharacteristicIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCharacteristicValuesByCharacteristicIdEdge!]
"A flattened list of the nodes."
nodes: [CharacteristicValueListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCharacteristicValuesByCharacteristicIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CharacteristicValueListEntry!
}
"A connection to a list of items."
type QueryCombinationProposalsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCombinationProposalsEdge!]
"A flattened list of the nodes."
nodes: [CombinationProposal!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCombinationProposalsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CombinationProposal!
}
"A connection to a list of items."
type QueryCompaniesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCompaniesEdge!]
"A flattened list of the nodes."
nodes: [CompanyListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCompaniesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CompanyListEntry!
}
"A connection to a list of items."
type QueryCompanyCustomFieldsByCompanyIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCompanyCustomFieldsByCompanyIdEdge!]
"A flattened list of the nodes."
nodes: [CompanyCustomField!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCompanyCustomFieldsByCompanyIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CompanyCustomField!
}
"A connection to a list of items."
type QueryCompanyEmailOAuthProvidersConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCompanyEmailOAuthProvidersEdge!]
"A flattened list of the nodes."
nodes: [CompanyEmailOAuthProvider!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCompanyEmailOAuthProvidersEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CompanyEmailOAuthProvider!
}
"A connection to a list of items."
type QueryCompanyRetentionPeriodsByCompanyIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCompanyRetentionPeriodsByCompanyIdEdge!]
"A flattened list of the nodes."
nodes: [CompanyRetentionPeriod!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCompanyRetentionPeriodsByCompanyIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CompanyRetentionPeriod!
}
"A connection to a list of items."
type QueryCompanyVatIdsByCompanyIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCompanyVatIdsByCompanyIdEdge!]
"A flattened list of the nodes."
nodes: [CompanyVatId!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCompanyVatIdsByCompanyIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CompanyVatId!
}
"A connection to a list of items."
type QueryConditionItemsByItemIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryConditionItemsByItemIdEdge!]
"A flattened list of the nodes."
nodes: [ConditionItem!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryConditionItemsByItemIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ConditionItem!
}
"A connection to a list of items."
type QueryConfigurationGroupReferencesByItemIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryConfigurationGroupReferencesByItemIdEdge!]
"A flattened list of the nodes."
nodes: [ConfigurationGroupReference!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryConfigurationGroupReferencesByItemIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ConfigurationGroupReference!
}
"A connection to a list of items."
type QueryCountriesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCountriesEdge!]
"A flattened list of the nodes."
nodes: [Country!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCountriesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: Country!
}
"A connection to a list of items."
type QueryCountryStatesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCountryStatesEdge!]
"A flattened list of the nodes."
nodes: [CountryState!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCountryStatesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CountryState!
}
"A connection to a list of items."
type QueryCrossSellingGroupsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCrossSellingGroupsEdge!]
"A flattened list of the nodes."
nodes: [CrossSellingGroup!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCrossSellingGroupsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CrossSellingGroup!
}
"A connection to a list of items."
type QueryCurrentUserPermissionsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCurrentUserPermissionsEdge!]
"A flattened list of the nodes."
nodes: [CurrentUserPermission!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCurrentUserPermissionsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CurrentUserPermission!
}
"A connection to a list of items."
type QueryCustomerAddressesByCustomerIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCustomerAddressesByCustomerIdEdge!]
"A flattened list of the nodes."
nodes: [CustomerAddress!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCustomerAddressesByCustomerIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CustomerAddress!
}
"A connection to a list of items."
type QueryCustomerBankAccountsByCustomerIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCustomerBankAccountsByCustomerIdEdge!]
"A flattened list of the nodes."
nodes: [CustomerBankAccount!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCustomerBankAccountsByCustomerIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CustomerBankAccount!
}
"A connection to a list of items."
type QueryCustomerCategoriesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCustomerCategoriesEdge!]
"A flattened list of the nodes."
nodes: [CustomerCategory!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCustomerCategoriesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CustomerCategory!
}
"A connection to a list of items."
type QueryCustomerCategoryDiscountsByCustomerIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCustomerCategoryDiscountsByCustomerIdEdge!]
"A flattened list of the nodes."
nodes: [CustomerCategoryDiscount!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCustomerCategoryDiscountsByCustomerIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CustomerCategoryDiscount!
}
"A connection to a list of items."
type QueryCustomerContactsByCustomerIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCustomerContactsByCustomerIdEdge!]
"A flattened list of the nodes."
nodes: [CustomerContact!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCustomerContactsByCustomerIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CustomerContact!
}
"A connection to a list of items."
type QueryCustomerGroupNamesByCustomerGroupIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCustomerGroupNamesByCustomerGroupIdEdge!]
"A flattened list of the nodes."
nodes: [CustomerGroupName!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCustomerGroupNamesByCustomerGroupIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CustomerGroupName!
}
"A connection to a list of items."
type QueryCustomerGroupPriceListsByItemIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCustomerGroupPriceListsByItemIdEdge!]
"A flattened list of the nodes."
nodes: [CustomerGroupPriceList!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCustomerGroupPriceListsByItemIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CustomerGroupPriceList!
}
"A connection to a list of items."
type QueryCustomerGroupsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCustomerGroupsEdge!]
"A flattened list of the nodes."
nodes: [CustomerGroup!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCustomerGroupsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CustomerGroup!
}
"A connection to a list of items."
type QueryCustomerHistoryEntriesByCustomerIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCustomerHistoryEntriesByCustomerIdEdge!]
"A flattened list of the nodes."
nodes: [CustomerHistoryEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCustomerHistoryEntriesByCustomerIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CustomerHistoryEntry!
}
"A connection to a list of items."
type QueryCustomerLabelsByCustomerIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCustomerLabelsByCustomerIdEdge!]
"A flattened list of the nodes."
nodes: [CustomerLabel!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCustomerLabelsByCustomerIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CustomerLabel!
}
"A connection to a list of items."
type QueryCustomerManualWorkflowEventsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCustomerManualWorkflowEventsEdge!]
"A flattened list of the nodes."
nodes: [CustomerManualWorkflowEvent!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCustomerManualWorkflowEventsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CustomerManualWorkflowEvent!
}
"A connection to a list of items."
type QueryCustomerNotesByCustomerIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCustomerNotesByCustomerIdEdge!]
"A flattened list of the nodes."
nodes: [CustomerNote!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCustomerNotesByCustomerIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CustomerNote!
}
"A connection to a list of items."
type QueryCustomerOpenItemsByCustomerIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCustomerOpenItemsByCustomerIdEdge!]
"A flattened list of the nodes."
nodes: [CustomerOpenItem!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCustomerOpenItemsByCustomerIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CustomerOpenItem!
}
"A connection to a list of items."
type QueryCustomerPriceListsByItemIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCustomerPriceListsByItemIdEdge!]
"A flattened list of the nodes."
nodes: [CustomerPriceList!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCustomerPriceListsByItemIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CustomerPriceList!
}
"A connection to a list of items."
type QueryCustomerPrintTextsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCustomerPrintTextsEdge!]
"A flattened list of the nodes."
nodes: [CustomerPrintText!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCustomerPrintTextsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CustomerPrintText!
}
"A connection to a list of items."
type QueryCustomerPrintTextTranslationsByCustomerPrintTextIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCustomerPrintTextTranslationsByCustomerPrintTextIdEdge!]
"A flattened list of the nodes."
nodes: [CustomerPrintTextTranslation!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCustomerPrintTextTranslationsByCustomerPrintTextIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CustomerPrintTextTranslation!
}
"A connection to a list of items."
type QueryCustomerSalesChannelAccountsByCustomerIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCustomerSalesChannelAccountsByCustomerIdEdge!]
"A flattened list of the nodes."
nodes: [CustomerSalesChannelAccount!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCustomerSalesChannelAccountsByCustomerIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CustomerSalesChannelAccount!
}
"A connection to a list of items."
type QueryCustomersConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCustomersEdge!]
"A flattened list of the nodes."
nodes: [CustomerListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCustomersEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CustomerListEntry!
}
"A connection to a list of items."
type QueryCustomFieldsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryCustomFieldsEdge!]
"A flattened list of the nodes."
nodes: [CustomFieldListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryCustomFieldsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: CustomFieldListEntry!
}
"A connection to a list of items."
type QueryDeliveryNoteLineItemsByDeliveryNoteIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryDeliveryNoteLineItemsByDeliveryNoteIdEdge!]
"A flattened list of the nodes."
nodes: [DeliveryNoteLineItem!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryDeliveryNoteLineItemsByDeliveryNoteIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: DeliveryNoteLineItem!
}
"A connection to a list of items."
type QueryDeliveryNoteManualWorkflowEventsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryDeliveryNoteManualWorkflowEventsEdge!]
"A flattened list of the nodes."
nodes: [DeliveryNoteManualWorkflowEvent!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryDeliveryNoteManualWorkflowEventsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: DeliveryNoteManualWorkflowEvent!
}
"A connection to a list of items."
type QueryDeliveryNotesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryDeliveryNotesEdge!]
"A flattened list of the nodes."
nodes: [DeliveryNoteListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryDeliveryNotesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: DeliveryNoteListEntry!
}
"A connection to a list of items."
type QueryDispositionsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryDispositionsEdge!]
"A flattened list of the nodes."
nodes: [Disposition!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryDispositionsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: Disposition!
}
"A connection to a list of items."
type QueryDunningLevelsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryDunningLevelsEdge!]
"A flattened list of the nodes."
nodes: [DunningLevel!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryDunningLevelsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: DunningLevel!
}
"A connection to a list of items."
type QueryDunningNoticesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryDunningNoticesEdge!]
"A flattened list of the nodes."
nodes: [DunningNotice!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryDunningNoticesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: DunningNotice!
}
"A connection to a list of items."
type QueryDunningProposalsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryDunningProposalsEdge!]
"A flattened list of the nodes."
nodes: [DunningProposal!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryDunningProposalsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: DunningProposal!
}
"A connection to a list of items."
type QueryDunningRunsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryDunningRunsEdge!]
"A flattened list of the nodes."
nodes: [DunningRun!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryDunningRunsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: DunningRun!
}
"A connection to a list of items."
type QueryFreeTextVariationsByItemIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryFreeTextVariationsByItemIdEdge!]
"A flattened list of the nodes."
nodes: [FreeTextVariation!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryFreeTextVariationsByItemIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: FreeTextVariation!
}
"A connection to a list of items."
type QueryIncomingInvoiceAdditionalCostsByIncomingInvoiceIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryIncomingInvoiceAdditionalCostsByIncomingInvoiceIdEdge!]
"A flattened list of the nodes."
nodes: [IncomingInvoiceAdditionalCost!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryIncomingInvoiceAdditionalCostsByIncomingInvoiceIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: IncomingInvoiceAdditionalCost!
}
"A connection to a list of items."
type QueryIncomingInvoiceLineItemAdditionalCostsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryIncomingInvoiceLineItemAdditionalCostsEdge!]
"A flattened list of the nodes."
nodes: [IncomingInvoiceLineItemAdditionalCost!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryIncomingInvoiceLineItemAdditionalCostsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: IncomingInvoiceLineItemAdditionalCost!
}
"A connection to a list of items."
type QueryIncomingInvoiceLineItemsByIncomingInvoiceIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryIncomingInvoiceLineItemsByIncomingInvoiceIdEdge!]
"A flattened list of the nodes."
nodes: [IncomingInvoiceLineItem!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryIncomingInvoiceLineItemsByIncomingInvoiceIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: IncomingInvoiceLineItem!
}
"A connection to a list of items."
type QueryIncomingInvoiceManualWorkflowEventsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryIncomingInvoiceManualWorkflowEventsEdge!]
"A flattened list of the nodes."
nodes: [IncomingInvoiceManualWorkflowEvent!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryIncomingInvoiceManualWorkflowEventsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: IncomingInvoiceManualWorkflowEvent!
}
"A connection to a list of items."
type QueryIncomingInvoicePaymentsByIncomingInvoiceIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryIncomingInvoicePaymentsByIncomingInvoiceIdEdge!]
"A flattened list of the nodes."
nodes: [IncomingInvoicePayment!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryIncomingInvoicePaymentsByIncomingInvoiceIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: IncomingInvoicePayment!
}
"A connection to a list of items."
type QueryIncomingInvoicePurchaseOrdersByIncomingInvoiceIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryIncomingInvoicePurchaseOrdersByIncomingInvoiceIdEdge!]
"A flattened list of the nodes."
nodes: [IncomingInvoicePurchaseOrder!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryIncomingInvoicePurchaseOrdersByIncomingInvoiceIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: IncomingInvoicePurchaseOrder!
}
"A connection to a list of items."
type QueryIncomingInvoicesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryIncomingInvoicesEdge!]
"A flattened list of the nodes."
nodes: [IncomingInvoiceListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryIncomingInvoicesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: IncomingInvoiceListEntry!
}
"A connection to a list of items."
type QueryInventoryCountsByWarehouseIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryInventoryCountsByWarehouseIdEdge!]
"A flattened list of the nodes."
nodes: [InventoryCount!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryInventoryCountsByWarehouseIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: InventoryCount!
}
"A connection to a list of items."
type QueryItemAttributesByItemIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryItemAttributesByItemIdEdge!]
"A flattened list of the nodes."
nodes: [ItemAttribute!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryItemAttributesByItemIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ItemAttribute!
}
"A connection to a list of items."
type QueryItemCategoriesByItemIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryItemCategoriesByItemIdEdge!]
"A flattened list of the nodes."
nodes: [ItemCategory!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryItemCategoriesByItemIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ItemCategory!
}
"A connection to a list of items."
type QueryItemCharacteristicsByItemIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryItemCharacteristicsByItemIdEdge!]
"A flattened list of the nodes."
nodes: [ItemCharacteristic!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryItemCharacteristicsByItemIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ItemCharacteristic!
}
"A connection to a list of items."
type QueryItemConditionMarketplacesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryItemConditionMarketplacesEdge!]
"A flattened list of the nodes."
nodes: [ItemConditionMarketplace!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryItemConditionMarketplacesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ItemConditionMarketplace!
}
"A connection to a list of items."
type QueryItemConditionsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryItemConditionsEdge!]
"A flattened list of the nodes."
nodes: [ItemConditionListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryItemConditionsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ItemConditionListEntry!
}
"A connection to a list of items."
type QueryItemContainersByItemIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryItemContainersByItemIdEdge!]
"A flattened list of the nodes."
nodes: [ItemContainer!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryItemContainersByItemIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ItemContainer!
}
"A connection to a list of items."
type QueryItemCrossSellingGroupsByItemIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryItemCrossSellingGroupsByItemIdEdge!]
"A flattened list of the nodes."
nodes: [ItemCrossSellingGroup!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryItemCrossSellingGroupsByItemIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ItemCrossSellingGroup!
}
"A connection to a list of items."
type QueryItemCustomFieldsByItemIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryItemCustomFieldsByItemIdEdge!]
"A flattened list of the nodes."
nodes: [ItemCustomField!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryItemCustomFieldsByItemIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ItemCustomField!
}
"A connection to a list of items."
type QueryItemDeliveryStatusesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryItemDeliveryStatusesEdge!]
"A flattened list of the nodes."
nodes: [ItemDeliveryStatus!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryItemDeliveryStatusesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ItemDeliveryStatus!
}
"A connection to a list of items."
type QueryItemDescriptionsByItemIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryItemDescriptionsByItemIdEdge!]
"A flattened list of the nodes."
nodes: [ItemDescription!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryItemDescriptionsByItemIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ItemDescription!
}
"A connection to a list of items."
type QueryItemDownloadsByItemIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryItemDownloadsByItemIdEdge!]
"A flattened list of the nodes."
nodes: [ItemDownload!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryItemDownloadsByItemIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ItemDownload!
}
"A connection to a list of items."
type QueryItemImagesByItemIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryItemImagesByItemIdEdge!]
"A flattened list of the nodes."
nodes: [ItemImage!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryItemImagesByItemIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ItemImage!
}
"A connection to a list of items."
type QueryItemLabelsByItemIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryItemLabelsByItemIdEdge!]
"A flattened list of the nodes."
nodes: [ItemLabel!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryItemLabelsByItemIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ItemLabel!
}
"A connection to a list of items."
type QueryItemManualWorkflowEventsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryItemManualWorkflowEventsEdge!]
"A flattened list of the nodes."
nodes: [ItemManualWorkflowEvent!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryItemManualWorkflowEventsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ItemManualWorkflowEvent!
}
"A connection to a list of items."
type QueryItemMediaByItemIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryItemMediaByItemIdEdge!]
"A flattened list of the nodes."
nodes: [ItemMedium!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryItemMediaByItemIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ItemMedium!
}
"A connection to a list of items."
type QueryItemPackagingsByItemIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryItemPackagingsByItemIdEdge!]
"A flattened list of the nodes."
nodes: [ItemPackaging!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryItemPackagingsByItemIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ItemPackaging!
}
"A connection to a list of items."
type QueryItemPriceDetailsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryItemPriceDetailsEdge!]
"A flattened list of the nodes."
nodes: [ItemPriceDetails!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryItemPriceDetailsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ItemPriceDetails!
}
"A connection to a list of items."
type QueryItemSalesChannelsByItemIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryItemSalesChannelsByItemIdEdge!]
"A flattened list of the nodes."
nodes: [ItemSalesChannel!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryItemSalesChannelsByItemIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ItemSalesChannel!
}
"A connection to a list of items."
type QueryItemsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryItemsEdge!]
"A flattened list of the nodes."
nodes: [ItemListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryItemsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ItemListEntry!
}
"A connection to a list of items."
type QueryItemStandardGrossPricesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryItemStandardGrossPricesEdge!]
"A flattened list of the nodes."
nodes: [ItemStandardGrossPrice!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryItemStandardGrossPricesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ItemStandardGrossPrice!
}
"A connection to a list of items."
type QueryItemSuppliersByItemIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryItemSuppliersByItemIdEdge!]
"A flattened list of the nodes."
nodes: [ItemSupplier!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryItemSuppliersByItemIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ItemSupplier!
}
"A connection to a list of items."
type QueryItemUploadsByItemIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryItemUploadsByItemIdEdge!]
"A flattened list of the nodes."
nodes: [ItemUpload!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryItemUploadsByItemIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ItemUpload!
}
"A connection to a list of items."
type QueryItemWarehouseStockLimitsByItemIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryItemWarehouseStockLimitsByItemIdEdge!]
"A flattened list of the nodes."
nodes: [ItemWarehouseStockLimit!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryItemWarehouseStockLimitsByItemIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ItemWarehouseStockLimit!
}
"A connection to a list of items."
type QueryKitComponentsByItemIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryKitComponentsByItemIdEdge!]
"A flattened list of the nodes."
nodes: [KitComponent!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryKitComponentsByItemIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: KitComponent!
}
"A connection to a list of items."
type QueryLabelEntityTypesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryLabelEntityTypesEdge!]
"A flattened list of the nodes."
nodes: [LabelEntityType!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryLabelEntityTypesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: LabelEntityType!
}
"A connection to a list of items."
type QueryLabelsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryLabelsEdge!]
"A flattened list of the nodes."
nodes: [Label!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryLabelsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: Label!
}
"A connection to a list of items."
type QueryLanguagesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryLanguagesEdge!]
"A flattened list of the nodes."
nodes: [Language!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryLanguagesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: Language!
}
"A connection to a list of items."
type QueryLineItemTypeTaxCodeOverridesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryLineItemTypeTaxCodeOverridesEdge!]
"A flattened list of the nodes."
nodes: [LineItemTypeTaxCodeOverride!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryLineItemTypeTaxCodeOverridesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: LineItemTypeTaxCodeOverride!
}
"A connection to a list of items."
type QueryLoggedInUsersConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryLoggedInUsersEdge!]
"A flattened list of the nodes."
nodes: [LoggedInUser!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryLoggedInUsersEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: LoggedInUser!
}
"A connection to a list of items."
type QueryLotSizesByProductionItemIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryLotSizesByProductionItemIdEdge!]
"A flattened list of the nodes."
nodes: [LotSize!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryLotSizesByProductionItemIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: LotSize!
}
"A connection to a list of items."
type QueryManufacturersConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryManufacturersEdge!]
"A flattened list of the nodes."
nodes: [ManufacturerListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryManufacturersEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ManufacturerListEntry!
}
"A connection to a list of items."
type QueryMeasurementUnitsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryMeasurementUnitsEdge!]
"A flattened list of the nodes."
nodes: [MeasurementUnitListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryMeasurementUnitsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: MeasurementUnitListEntry!
}
"A connection to a list of items."
type QueryNumberRangesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryNumberRangesEdge!]
"A flattened list of the nodes."
nodes: [NumberRange!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryNumberRangesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: NumberRange!
}
"A connection to a list of items."
type QueryNumberRangeTypesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryNumberRangeTypesEdge!]
"A flattened list of the nodes."
nodes: [NumberRangeType!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryNumberRangeTypesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: NumberRangeType!
}
"A connection to a list of items."
type QueryOnHoldReasonsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryOnHoldReasonsEdge!]
"A flattened list of the nodes."
nodes: [OnHoldReason!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryOnHoldReasonsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: OnHoldReason!
}
"A connection to a list of items."
type QueryOperationResourceGroupsByOperationIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryOperationResourceGroupsByOperationIdEdge!]
"A flattened list of the nodes."
nodes: [OperationResourceGroup!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryOperationResourceGroupsByOperationIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: OperationResourceGroup!
}
"A connection to a list of items."
type QueryOperationResourcesByOperationIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryOperationResourcesByOperationIdEdge!]
"A flattened list of the nodes."
nodes: [OperationResource!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryOperationResourcesByOperationIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: OperationResource!
}
"A connection to a list of items."
type QueryOperationsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryOperationsEdge!]
"A flattened list of the nodes."
nodes: [Operation!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryOperationsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: Operation!
}
"A connection to a list of items."
type QueryOperationStepsByOperationIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryOperationStepsByOperationIdEdge!]
"A flattened list of the nodes."
nodes: [OperationStep!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryOperationStepsByOperationIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: OperationStep!
}
"A connection to a list of items."
type QueryOperationStepTextsByOperationStepIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryOperationStepTextsByOperationStepIdEdge!]
"A flattened list of the nodes."
nodes: [OperationStepText!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryOperationStepTextsByOperationStepIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: OperationStepText!
}
"A connection to a list of items."
type QueryOutputDocumentTypesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryOutputDocumentTypesEdge!]
"A flattened list of the nodes."
nodes: [OutputDocumentTypeInfo!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryOutputDocumentTypesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: OutputDocumentTypeInfo!
}
"A connection to a list of items."
type QueryOutputTemplatesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryOutputTemplatesEdge!]
"A flattened list of the nodes."
nodes: [OutputTemplateListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryOutputTemplatesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: OutputTemplateListEntry!
}
"A connection to a list of items."
type QueryOutputTemplateSetsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryOutputTemplateSetsEdge!]
"A flattened list of the nodes."
nodes: [OutputTemplateSet!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryOutputTemplateSetsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: OutputTemplateSet!
}
"A connection to a list of items."
type QueryPackagesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryPackagesEdge!]
"A flattened list of the nodes."
nodes: [DeliveryPackage!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryPackagesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: DeliveryPackage!
}
"A connection to a list of items."
type QueryPackagingMaterialsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryPackagingMaterialsEdge!]
"A flattened list of the nodes."
nodes: [PackagingMaterial!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryPackagingMaterialsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: PackagingMaterial!
}
"A connection to a list of items."
type QueryPaymentAccountsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryPaymentAccountsEdge!]
"A flattened list of the nodes."
nodes: [PaymentAccount!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryPaymentAccountsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: PaymentAccount!
}
"A connection to a list of items."
type QueryPaymentChangesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryPaymentChangesEdge!]
"A flattened list of the nodes."
nodes: [PaymentChange!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryPaymentChangesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: PaymentChange!
}
"A connection to a list of items."
type QueryPaymentMethodsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryPaymentMethodsEdge!]
"A flattened list of the nodes."
nodes: [PaymentMethodListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryPaymentMethodsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: PaymentMethodListEntry!
}
"A connection to a list of items."
type QueryPaymentMethodTranslationsByPaymentMethodIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryPaymentMethodTranslationsByPaymentMethodIdEdge!]
"A flattened list of the nodes."
nodes: [PaymentMethodTranslation!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryPaymentMethodTranslationsByPaymentMethodIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: PaymentMethodTranslation!
}
"A connection to a list of items."
type QueryPaymentProvidersConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryPaymentProvidersEdge!]
"A flattened list of the nodes."
nodes: [PaymentProvider!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryPaymentProvidersEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: PaymentProvider!
}
"A connection to a list of items."
type QueryPaymentsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryPaymentsEdge!]
"A flattened list of the nodes."
nodes: [Payment!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryPaymentsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: Payment!
}
"A connection to a list of items."
type QueryPaymentTransactionAssignmentsByPaymentTransactionIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryPaymentTransactionAssignmentsByPaymentTransactionIdEdge!]
"A flattened list of the nodes."
nodes: [PaymentTransactionAssignment!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryPaymentTransactionAssignmentsByPaymentTransactionIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: PaymentTransactionAssignment!
}
"A connection to a list of items."
type QueryPaymentTransactionManualWorkflowEventsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryPaymentTransactionManualWorkflowEventsEdge!]
"A flattened list of the nodes."
nodes: [PaymentTransactionManualWorkflowEvent!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryPaymentTransactionManualWorkflowEventsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: PaymentTransactionManualWorkflowEvent!
}
"A connection to a list of items."
type QueryPaymentTransactionsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryPaymentTransactionsEdge!]
"A flattened list of the nodes."
nodes: [PaymentTransaction!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryPaymentTransactionsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: PaymentTransaction!
}
"A connection to a list of items."
type QueryPermissionsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryPermissionsEdge!]
"A flattened list of the nodes."
nodes: [Permission!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryPermissionsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: Permission!
}
"A connection to a list of items."
type QueryPickListLineItemsByPickListIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryPickListLineItemsByPickListIdEdge!]
"A flattened list of the nodes."
nodes: [PickListLineItem!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryPickListLineItemsByPickListIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: PickListLineItem!
}
"A connection to a list of items."
type QueryPickListsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryPickListsEdge!]
"A flattened list of the nodes."
nodes: [PickListListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryPickListsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: PickListListEntry!
}
"A connection to a list of items."
type QueryPickListTemplatesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryPickListTemplatesEdge!]
"A flattened list of the nodes."
nodes: [PickListTemplateListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryPickListTemplatesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: PickListTemplateListEntry!
}
"A connection to a list of items."
type QueryPostalCodeEntriesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryPostalCodeEntriesEdge!]
"A flattened list of the nodes."
nodes: [PostalCodeEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryPostalCodeEntriesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: PostalCodeEntry!
}
"A connection to a list of items."
type QueryPriceInquiriesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryPriceInquiriesEdge!]
"A flattened list of the nodes."
nodes: [PriceInquiryListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryPriceInquiriesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: PriceInquiryListEntry!
}
"A connection to a list of items."
type QueryPriceInquiryLineItemsByPriceInquiryIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryPriceInquiryLineItemsByPriceInquiryIdEdge!]
"A flattened list of the nodes."
nodes: [PriceInquiryLineItem!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryPriceInquiryLineItemsByPriceInquiryIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: PriceInquiryLineItem!
}
"A connection to a list of items."
type QueryProductGroupsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryProductGroupsEdge!]
"A flattened list of the nodes."
nodes: [ProductGroup!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryProductGroupsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ProductGroup!
}
"A connection to a list of items."
type QueryProductGroupTaxCodeOverridesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryProductGroupTaxCodeOverridesEdge!]
"A flattened list of the nodes."
nodes: [ProductGroupTaxCodeOverride!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryProductGroupTaxCodeOverridesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ProductGroupTaxCodeOverride!
}
"A connection to a list of items."
type QueryProductionItemConditionsByProductionItemIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryProductionItemConditionsByProductionItemIdEdge!]
"A flattened list of the nodes."
nodes: [ProductionItemCondition!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryProductionItemConditionsByProductionItemIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ProductionItemCondition!
}
"A connection to a list of items."
type QueryProductionItemsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryProductionItemsEdge!]
"A flattened list of the nodes."
nodes: [ProductionItem!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryProductionItemsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ProductionItem!
}
"A connection to a list of items."
type QueryProductionOrdersConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryProductionOrdersEdge!]
"A flattened list of the nodes."
nodes: [ProductionOrder!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryProductionOrdersEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ProductionOrder!
}
"A connection to a list of items."
type QueryPurchaseListEntriesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryPurchaseListEntriesEdge!]
"A flattened list of the nodes."
nodes: [PurchaseListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryPurchaseListEntriesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: PurchaseListEntry!
}
"A connection to a list of items."
type QueryPurchaseOrderGoodsReceiptsByPurchaseOrderIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryPurchaseOrderGoodsReceiptsByPurchaseOrderIdEdge!]
"A flattened list of the nodes."
nodes: [PurchaseOrderGoodsReceipt!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryPurchaseOrderGoodsReceiptsByPurchaseOrderIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: PurchaseOrderGoodsReceipt!
}
"A connection to a list of items."
type QueryPurchaseOrderLineItemsByPurchaseOrderIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryPurchaseOrderLineItemsByPurchaseOrderIdEdge!]
"A flattened list of the nodes."
nodes: [PurchaseOrderLineItem!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryPurchaseOrderLineItemsByPurchaseOrderIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: PurchaseOrderLineItem!
}
"A connection to a list of items."
type QueryPurchaseOrderManualWorkflowEventsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryPurchaseOrderManualWorkflowEventsEdge!]
"A flattened list of the nodes."
nodes: [PurchaseOrderManualWorkflowEvent!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryPurchaseOrderManualWorkflowEventsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: PurchaseOrderManualWorkflowEvent!
}
"A connection to a list of items."
type QueryPurchaseOrdersConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryPurchaseOrdersEdge!]
"A flattened list of the nodes."
nodes: [PurchaseOrderListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryPurchaseOrdersEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: PurchaseOrderListEntry!
}
"A connection to a list of items."
type QueryRefundChangesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryRefundChangesEdge!]
"A flattened list of the nodes."
nodes: [RefundChange!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryRefundChangesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: RefundChange!
}
"A connection to a list of items."
type QueryRefundsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryRefundsEdge!]
"A flattened list of the nodes."
nodes: [Refund!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryRefundsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: Refund!
}
"A connection to a list of items."
type QueryResourceCategoriesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryResourceCategoriesEdge!]
"A flattened list of the nodes."
nodes: [ResourceCategory!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryResourceCategoriesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ResourceCategory!
}
"A connection to a list of items."
type QueryResourceGroupsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryResourceGroupsEdge!]
"A flattened list of the nodes."
nodes: [ResourceGroup!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryResourceGroupsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ResourceGroup!
}
"A connection to a list of items."
type QueryResourcesByResourceGroupIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryResourcesByResourceGroupIdEdge!]
"A flattened list of the nodes."
nodes: [Resource!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryResourcesByResourceGroupIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: Resource!
}
"A connection to a list of items."
type QueryResourcesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryResourcesEdge!]
"A flattened list of the nodes."
nodes: [Resource!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryResourcesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: Resource!
}
"A connection to a list of items."
type QueryResourceTypesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryResourceTypesEdge!]
"A flattened list of the nodes."
nodes: [ResourceType!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryResourceTypesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ResourceType!
}
"A connection to a list of items."
type QueryRestockSuggestionDestinationAreaEntriesByDestinationAreaIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryRestockSuggestionDestinationAreaEntriesByDestinationAreaIdEdge!]
"A flattened list of the nodes."
nodes: [RestockSuggestionDestinationAreaEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryRestockSuggestionDestinationAreaEntriesByDestinationAreaIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: RestockSuggestionDestinationAreaEntry!
}
"A connection to a list of items."
type QueryRestockSuggestionDestinationAreasConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryRestockSuggestionDestinationAreasEdge!]
"A flattened list of the nodes."
nodes: [RestockSuggestionDestinationArea!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryRestockSuggestionDestinationAreasEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: RestockSuggestionDestinationArea!
}
"A connection to a list of items."
type QueryRestockSuggestionItemExclusionsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryRestockSuggestionItemExclusionsEdge!]
"A flattened list of the nodes."
nodes: [RestockSuggestionItemExclusion!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryRestockSuggestionItemExclusionsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: RestockSuggestionItemExclusion!
}
"A connection to a list of items."
type QueryRestockSuggestionStartAreaEntriesByStartAreaIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryRestockSuggestionStartAreaEntriesByStartAreaIdEdge!]
"A flattened list of the nodes."
nodes: [RestockSuggestionStartAreaEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryRestockSuggestionStartAreaEntriesByStartAreaIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: RestockSuggestionStartAreaEntry!
}
"A connection to a list of items."
type QueryRestockSuggestionStartAreasConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryRestockSuggestionStartAreasEdge!]
"A flattened list of the nodes."
nodes: [RestockSuggestionStartArea!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryRestockSuggestionStartAreasEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: RestockSuggestionStartArea!
}
"A connection to a list of items."
type QueryRestockSuggestionTemplatesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryRestockSuggestionTemplatesEdge!]
"A flattened list of the nodes."
nodes: [RestockSuggestionTemplateListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryRestockSuggestionTemplatesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: RestockSuggestionTemplateListEntry!
}
"A connection to a list of items."
type QueryReturnExchangeItemsByReturnIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryReturnExchangeItemsByReturnIdEdge!]
"A flattened list of the nodes."
nodes: [ReturnExchangeItem!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryReturnExchangeItemsByReturnIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ReturnExchangeItem!
}
"A connection to a list of items."
type QueryReturnLabelsByReturnIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryReturnLabelsByReturnIdEdge!]
"A flattened list of the nodes."
nodes: [ReturnLabel!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryReturnLabelsByReturnIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ReturnLabel!
}
"A connection to a list of items."
type QueryReturnLineItemsByReturnIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryReturnLineItemsByReturnIdEdge!]
"A flattened list of the nodes."
nodes: [ReturnLineItem!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryReturnLineItemsByReturnIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ReturnLineItem!
}
"A connection to a list of items."
type QueryReturnLineItemStateChangesByReturnIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryReturnLineItemStateChangesByReturnIdEdge!]
"A flattened list of the nodes."
nodes: [ReturnLineItemStateChange!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryReturnLineItemStateChangesByReturnIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ReturnLineItemStateChange!
}
"A connection to a list of items."
type QueryReturnManualWorkflowEventsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryReturnManualWorkflowEventsEdge!]
"A flattened list of the nodes."
nodes: [ReturnManualWorkflowEvent!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryReturnManualWorkflowEventsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ReturnManualWorkflowEvent!
}
"A connection to a list of items."
type QueryReturnReasonsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryReturnReasonsEdge!]
"A flattened list of the nodes."
nodes: [ReturnReasonListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryReturnReasonsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ReturnReasonListEntry!
}
"A connection to a list of items."
type QueryReturnsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryReturnsEdge!]
"A flattened list of the nodes."
nodes: [Return!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryReturnsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: Return!
}
"A connection to a list of items."
type QueryReturnStatesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryReturnStatesEdge!]
"A flattened list of the nodes."
nodes: [ReturnState!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryReturnStatesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ReturnState!
}
"A connection to a list of items."
type QueryRevenueAccountAssignmentsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryRevenueAccountAssignmentsEdge!]
"A flattened list of the nodes."
nodes: [RevenueAccountAssignment!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryRevenueAccountAssignmentsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: RevenueAccountAssignment!
}
"A connection to a list of items."
type QuerySalesCreditNoteCancellationLineItemsBySalesCreditNoteCancellationIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesCreditNoteCancellationLineItemsBySalesCreditNoteCancellationIdEdge!]
"A flattened list of the nodes."
nodes: [SalesCreditNoteCancellationLineItem!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesCreditNoteCancellationLineItemsBySalesCreditNoteCancellationIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesCreditNoteCancellationLineItem!
}
"A connection to a list of items."
type QuerySalesCreditNoteCancellationsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesCreditNoteCancellationsEdge!]
"A flattened list of the nodes."
nodes: [SalesCreditNoteCancellation!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesCreditNoteCancellationsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesCreditNoteCancellation!
}
"A connection to a list of items."
type QuerySalesCreditNoteLineItemsBySalesCreditNoteIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesCreditNoteLineItemsBySalesCreditNoteIdEdge!]
"A flattened list of the nodes."
nodes: [SalesCreditNoteLineItem!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesCreditNoteLineItemsBySalesCreditNoteIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesCreditNoteLineItem!
}
"A connection to a list of items."
type QuerySalesCreditNotesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesCreditNotesEdge!]
"A flattened list of the nodes."
nodes: [SalesCreditNote!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesCreditNotesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesCreditNote!
}
"A connection to a list of items."
type QuerySalesInvoiceCancellationLineItemsBySalesInvoiceCancellationIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesInvoiceCancellationLineItemsBySalesInvoiceCancellationIdEdge!]
"A flattened list of the nodes."
nodes: [SalesInvoiceCancellationLineItem!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesInvoiceCancellationLineItemsBySalesInvoiceCancellationIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesInvoiceCancellationLineItem!
}
"A connection to a list of items."
type QuerySalesInvoiceCancellationReasonsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesInvoiceCancellationReasonsEdge!]
"A flattened list of the nodes."
nodes: [SalesInvoiceCancellationReason!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesInvoiceCancellationReasonsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesInvoiceCancellationReason!
}
"A connection to a list of items."
type QuerySalesInvoiceCancellationsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesInvoiceCancellationsEdge!]
"A flattened list of the nodes."
nodes: [SalesInvoiceCancellation!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesInvoiceCancellationsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesInvoiceCancellation!
}
"A connection to a list of items."
type QuerySalesInvoiceCorrectableLineItemsBySalesInvoiceIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesInvoiceCorrectableLineItemsBySalesInvoiceIdEdge!]
"A flattened list of the nodes."
nodes: [SalesInvoiceCorrectableLineItem!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesInvoiceCorrectableLineItemsBySalesInvoiceIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesInvoiceCorrectableLineItem!
}
"A connection to a list of items."
type QuerySalesInvoiceCorrectionCancellationReasonsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesInvoiceCorrectionCancellationReasonsEdge!]
"A flattened list of the nodes."
nodes: [SalesInvoiceCorrectionCancellationReason!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesInvoiceCorrectionCancellationReasonsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesInvoiceCorrectionCancellationReason!
}
"A connection to a list of items."
type QuerySalesInvoiceCorrectionLineItemsBySalesInvoiceCorrectionIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesInvoiceCorrectionLineItemsBySalesInvoiceCorrectionIdEdge!]
"A flattened list of the nodes."
nodes: [SalesInvoiceCorrectionLineItem!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesInvoiceCorrectionLineItemsBySalesInvoiceCorrectionIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesInvoiceCorrectionLineItem!
}
"A connection to a list of items."
type QuerySalesInvoiceCorrectionsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesInvoiceCorrectionsEdge!]
"A flattened list of the nodes."
nodes: [SalesInvoiceCorrection!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesInvoiceCorrectionsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesInvoiceCorrection!
}
"A connection to a list of items."
type QuerySalesInvoiceFilesBySalesInvoiceIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesInvoiceFilesBySalesInvoiceIdEdge!]
"A flattened list of the nodes."
nodes: [SalesInvoiceFile!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesInvoiceFilesBySalesInvoiceIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesInvoiceFile!
}
"A connection to a list of items."
type QuerySalesInvoiceLineItemFilesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesInvoiceLineItemFilesEdge!]
"A flattened list of the nodes."
nodes: [SalesInvoiceLineItemFile!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesInvoiceLineItemFilesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesInvoiceLineItemFile!
}
"A connection to a list of items."
type QuerySalesInvoiceLineItemsBySalesInvoiceIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesInvoiceLineItemsBySalesInvoiceIdEdge!]
"A flattened list of the nodes."
nodes: [SalesInvoiceLineItem!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesInvoiceLineItemsBySalesInvoiceIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesInvoiceLineItem!
}
"A connection to a list of items."
type QuerySalesInvoiceManualWorkflowEventsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesInvoiceManualWorkflowEventsEdge!]
"A flattened list of the nodes."
nodes: [SalesInvoiceManualWorkflowEvent!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesInvoiceManualWorkflowEventsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesInvoiceManualWorkflowEvent!
}
"A connection to a list of items."
type QuerySalesInvoicePaymentBalanceChangesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesInvoicePaymentBalanceChangesEdge!]
"A flattened list of the nodes."
nodes: [SalesInvoicePaymentBalanceChange!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesInvoicePaymentBalanceChangesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesInvoicePaymentBalanceChange!
}
"A connection to a list of items."
type QuerySalesInvoicePaymentBalancesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesInvoicePaymentBalancesEdge!]
"A flattened list of the nodes."
nodes: [SalesInvoicePaymentBalance!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesInvoicePaymentBalancesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesInvoicePaymentBalance!
}
"A connection to a list of items."
type QuerySalesInvoicesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesInvoicesEdge!]
"A flattened list of the nodes."
nodes: [SalesInvoiceListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesInvoicesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesInvoiceListEntry!
}
"A connection to a list of items."
type QuerySalesLineItemDeliverabilitiesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesLineItemDeliverabilitiesEdge!]
"A flattened list of the nodes."
nodes: [SalesLineItemDeliverability!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesLineItemDeliverabilitiesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesLineItemDeliverability!
}
"A connection to a list of items."
type QuerySalesLineItemsBySalesOrderIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesLineItemsBySalesOrderIdEdge!]
"A flattened list of the nodes."
nodes: [SalesLineItem!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesLineItemsBySalesOrderIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesLineItem!
}
"A connection to a list of items."
type QuerySalesLineItemsBySalesQuotationIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesLineItemsBySalesQuotationIdEdge!]
"A flattened list of the nodes."
nodes: [SalesLineItem!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesLineItemsBySalesQuotationIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesLineItem!
}
"A connection to a list of items."
type QuerySalesOrderCancellationReasonMarketplacesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesOrderCancellationReasonMarketplacesEdge!]
"A flattened list of the nodes."
nodes: [SalesOrderCancellationReasonMarketplace!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesOrderCancellationReasonMarketplacesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesOrderCancellationReasonMarketplace!
}
"A connection to a list of items."
type QuerySalesOrderCancellationReasonsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesOrderCancellationReasonsEdge!]
"A flattened list of the nodes."
nodes: [SalesOrderCancellationReason!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesOrderCancellationReasonsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesOrderCancellationReason!
}
"A connection to a list of items."
type QuerySalesOrderCustomFieldsBySalesOrderIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesOrderCustomFieldsBySalesOrderIdEdge!]
"A flattened list of the nodes."
nodes: [SalesOrderCustomField!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesOrderCustomFieldsBySalesOrderIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesOrderCustomField!
}
"A connection to a list of items."
type QuerySalesOrderDropShippingPurchaseOrdersBySalesOrderIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesOrderDropShippingPurchaseOrdersBySalesOrderIdEdge!]
"A flattened list of the nodes."
nodes: [SalesOrderDropShippingPurchaseOrder!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesOrderDropShippingPurchaseOrdersBySalesOrderIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesOrderDropShippingPurchaseOrder!
}
"A connection to a list of items."
type QuerySalesOrderFilesBySalesOrderIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesOrderFilesBySalesOrderIdEdge!]
"A flattened list of the nodes."
nodes: [SalesOrderFile!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesOrderFilesBySalesOrderIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesOrderFile!
}
"A connection to a list of items."
type QuerySalesOrderLineItemCustomFieldsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesOrderLineItemCustomFieldsEdge!]
"A flattened list of the nodes."
nodes: [SalesOrderLineItemCustomField!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesOrderLineItemCustomFieldsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesOrderLineItemCustomField!
}
"A connection to a list of items."
type QuerySalesOrderLineItemFilesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesOrderLineItemFilesEdge!]
"A flattened list of the nodes."
nodes: [SalesOrderLineItemFile!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesOrderLineItemFilesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesOrderLineItemFile!
}
"A connection to a list of items."
type QuerySalesOrderManualWorkflowEventsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesOrderManualWorkflowEventsEdge!]
"A flattened list of the nodes."
nodes: [SalesOrderManualWorkflowEvent!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesOrderManualWorkflowEventsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesOrderManualWorkflowEvent!
}
"A connection to a list of items."
type QuerySalesOrderNotesBySalesOrderIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesOrderNotesBySalesOrderIdEdge!]
"A flattened list of the nodes."
nodes: [SalesOrderNote!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesOrderNotesBySalesOrderIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesOrderNote!
}
"A connection to a list of items."
type QuerySalesOrdersConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesOrdersEdge!]
"A flattened list of the nodes."
nodes: [SalesOrderListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesOrdersEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesOrderListEntry!
}
"A connection to a list of items."
type QuerySalesQuotationFilesBySalesQuotationIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesQuotationFilesBySalesQuotationIdEdge!]
"A flattened list of the nodes."
nodes: [SalesQuotationFile!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesQuotationFilesBySalesQuotationIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesQuotationFile!
}
"A connection to a list of items."
type QuerySalesQuotationManualWorkflowEventsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesQuotationManualWorkflowEventsEdge!]
"A flattened list of the nodes."
nodes: [SalesQuotationManualWorkflowEvent!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesQuotationManualWorkflowEventsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesQuotationManualWorkflowEvent!
}
"A connection to a list of items."
type QuerySalesQuotationNotesBySalesQuotationIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesQuotationNotesBySalesQuotationIdEdge!]
"A flattened list of the nodes."
nodes: [SalesQuotationNote!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesQuotationNotesBySalesQuotationIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesQuotationNote!
}
"A connection to a list of items."
type QuerySalesQuotationsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesQuotationsEdge!]
"A flattened list of the nodes."
nodes: [SalesQuotationListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesQuotationsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesQuotationListEntry!
}
"A connection to a list of items."
type QuerySalesSubscriptionFilesBySalesSubscriptionIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesSubscriptionFilesBySalesSubscriptionIdEdge!]
"A flattened list of the nodes."
nodes: [SalesSubscriptionFile!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesSubscriptionFilesBySalesSubscriptionIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesSubscriptionFile!
}
"A connection to a list of items."
type QuerySalesSubscriptionLineItemsBySalesSubscriptionIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesSubscriptionLineItemsBySalesSubscriptionIdEdge!]
"A flattened list of the nodes."
nodes: [SalesSubscriptionLineItem!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesSubscriptionLineItemsBySalesSubscriptionIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesSubscriptionLineItem!
}
"A connection to a list of items."
type QuerySalesSubscriptionSalesOrdersBySalesSubscriptionIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesSubscriptionSalesOrdersBySalesSubscriptionIdEdge!]
"A flattened list of the nodes."
nodes: [SalesSubscriptionSalesOrder!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesSubscriptionSalesOrdersBySalesSubscriptionIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesSubscriptionSalesOrder!
}
"A connection to a list of items."
type QuerySalesSubscriptionsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesSubscriptionsEdge!]
"A flattened list of the nodes."
nodes: [SalesSubscriptionListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesSubscriptionsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesSubscriptionListEntry!
}
"A connection to a list of items."
type QuerySalesUnitsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySalesUnitsEdge!]
"A flattened list of the nodes."
nodes: [SalesUnitListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySalesUnitsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SalesUnitListEntry!
}
"A connection to a list of items."
type QuerySelectionVariationsByItemIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySelectionVariationsByItemIdEdge!]
"A flattened list of the nodes."
nodes: [SelectionVariation!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySelectionVariationsByItemIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SelectionVariation!
}
"A connection to a list of items."
type QuerySessionsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySessionsEdge!]
"A flattened list of the nodes."
nodes: [SessionInfo!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySessionsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SessionInfo!
}
"A connection to a list of items."
type QuerySettingsNodesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySettingsNodesEdge!]
"A flattened list of the nodes."
nodes: [SettingsNode!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySettingsNodesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SettingsNode!
}
"A connection to a list of items."
type QuerySettingValuesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySettingValuesEdge!]
"A flattened list of the nodes."
nodes: [SettingValueEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySettingValuesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: SettingValueEntry!
}
"A connection to a list of items."
type QueryShippingAccountsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryShippingAccountsEdge!]
"A flattened list of the nodes."
nodes: [ShippingAccount!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryShippingAccountsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ShippingAccount!
}
"A connection to a list of items."
type QueryShippingAppMethodsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryShippingAppMethodsEdge!]
"A flattened list of the nodes."
nodes: [ShippingAppMethod!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryShippingAppMethodsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ShippingAppMethod!
}
"A connection to a list of items."
type QueryShippingClassesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryShippingClassesEdge!]
"A flattened list of the nodes."
nodes: [ShippingClass!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryShippingClassesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ShippingClass!
}
"A connection to a list of items."
type QueryShippingMethodsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryShippingMethodsEdge!]
"A flattened list of the nodes."
nodes: [ShippingMethodListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryShippingMethodsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ShippingMethodListEntry!
}
"A connection to a list of items."
type QueryShippingMethodTaxCodeOverridesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryShippingMethodTaxCodeOverridesEdge!]
"A flattened list of the nodes."
nodes: [ShippingMethodTaxCodeOverride!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryShippingMethodTaxCodeOverridesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ShippingMethodTaxCodeOverride!
}
"A connection to a list of items."
type QueryShippingMethodTranslationsByShippingMethodIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryShippingMethodTranslationsByShippingMethodIdEdge!]
"A flattened list of the nodes."
nodes: [ShippingMethodTranslation!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryShippingMethodTranslationsByShippingMethodIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ShippingMethodTranslation!
}
"A connection to a list of items."
type QueryShippingProviderCapabilitiesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryShippingProviderCapabilitiesEdge!]
"A flattened list of the nodes."
nodes: [ShippingProviderCapability!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryShippingProviderCapabilitiesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ShippingProviderCapability!
}
"A connection to a list of items."
type QueryShippingProvidersConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryShippingProvidersEdge!]
"A flattened list of the nodes."
nodes: [ShippingProvider!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryShippingProvidersEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ShippingProvider!
}
"A connection to a list of items."
type QueryShippingRunOrdersByShippingRunIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryShippingRunOrdersByShippingRunIdEdge!]
"A flattened list of the nodes."
nodes: [ShippingRunOrder!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryShippingRunOrdersByShippingRunIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ShippingRunOrder!
}
"A connection to a list of items."
type QueryShippingRunsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryShippingRunsEdge!]
"A flattened list of the nodes."
nodes: [ShippingRun!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryShippingRunsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: ShippingRun!
}
"A connection to a list of items."
type QueryStockPostingTypesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryStockPostingTypesEdge!]
"A flattened list of the nodes."
nodes: [StockPostingType!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryStockPostingTypesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: StockPostingType!
}
"A connection to a list of items."
type QueryStockTransferLineItemsByStockTransferIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryStockTransferLineItemsByStockTransferIdEdge!]
"A flattened list of the nodes."
nodes: [StockTransferLineItem!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryStockTransferLineItemsByStockTransferIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: StockTransferLineItem!
}
"A connection to a list of items."
type QueryStockTransfersConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryStockTransfersEdge!]
"A flattened list of the nodes."
nodes: [StockTransfer!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryStockTransfersEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: StockTransfer!
}
"A connection to a list of items."
type QueryStorageLocationChangeSetCreatedLocationsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryStorageLocationChangeSetCreatedLocationsEdge!]
"A flattened list of the nodes."
nodes: [StorageLocationListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryStorageLocationChangeSetCreatedLocationsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: StorageLocationListEntry!
}
"A connection to a list of items."
type QueryStorageLocationsByWarehouseIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryStorageLocationsByWarehouseIdEdge!]
"A flattened list of the nodes."
nodes: [StorageLocationListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryStorageLocationsByWarehouseIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: StorageLocationListEntry!
}
"A connection to a list of items."
type QueryStorageLocationTypesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryStorageLocationTypesEdge!]
"A flattened list of the nodes."
nodes: [StorageLocationType!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryStorageLocationTypesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: StorageLocationType!
}
"A connection to a list of items."
type QuerySuppliersConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QuerySuppliersEdge!]
"A flattened list of the nodes."
nodes: [Supplier!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QuerySuppliersEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: Supplier!
}
"A connection to a list of items."
type QueryTaxClassesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryTaxClassesEdge!]
"A flattened list of the nodes."
nodes: [TaxClass!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryTaxClassesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: TaxClass!
}
"A connection to a list of items."
type QueryTaxCodesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryTaxCodesEdge!]
"A flattened list of the nodes."
nodes: [TaxCode!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryTaxCodesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: TaxCode!
}
"A connection to a list of items."
type QueryTaxRatePresetsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryTaxRatePresetsEdge!]
"A flattened list of the nodes."
nodes: [TaxRatePreset!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryTaxRatePresetsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: TaxRatePreset!
}
"A connection to a list of items."
type QueryTaxRatesByTaxZoneIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryTaxRatesByTaxZoneIdEdge!]
"A flattened list of the nodes."
nodes: [TaxRate!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryTaxRatesByTaxZoneIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: TaxRate!
}
"A connection to a list of items."
type QueryTaxZoneCountriesByTaxZoneIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryTaxZoneCountriesByTaxZoneIdEdge!]
"A flattened list of the nodes."
nodes: [TaxZoneCountry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryTaxZoneCountriesByTaxZoneIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: TaxZoneCountry!
}
"A connection to a list of items."
type QueryTaxZonesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryTaxZonesEdge!]
"A flattened list of the nodes."
nodes: [TaxZone!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryTaxZonesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: TaxZone!
}
"A connection to a list of items."
type QueryTextBlockGroupsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryTextBlockGroupsEdge!]
"A flattened list of the nodes."
nodes: [TextBlockGroup!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryTextBlockGroupsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: TextBlockGroup!
}
"A connection to a list of items."
type QueryTextBlocksConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryTextBlocksEdge!]
"A flattened list of the nodes."
nodes: [TextBlock!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryTextBlocksEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: TextBlock!
}
"A connection to a list of items."
type QueryTextBlockTranslationsByTextBlockIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryTextBlockTranslationsByTextBlockIdEdge!]
"A flattened list of the nodes."
nodes: [TextBlockTranslation!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryTextBlockTranslationsByTextBlockIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: TextBlockTranslation!
}
"A connection to a list of items."
type QueryTextBlockUsagesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryTextBlockUsagesEdge!]
"A flattened list of the nodes."
nodes: [TextBlockUsage!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryTextBlockUsagesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: TextBlockUsage!
}
"A connection to a list of items."
type QueryTransactionColorsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryTransactionColorsEdge!]
"A flattened list of the nodes."
nodes: [TransactionColor!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryTransactionColorsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: TransactionColor!
}
"A connection to a list of items."
type QueryTransactionStatusesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryTransactionStatusesEdge!]
"A flattened list of the nodes."
nodes: [TransactionStatus!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryTransactionStatusesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: TransactionStatus!
}
"A connection to a list of items."
type QueryUnitCodesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryUnitCodesEdge!]
"A flattened list of the nodes."
nodes: [UnitCode!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryUnitCodesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: UnitCode!
}
"A connection to a list of items."
type QueryUserGroupMembersByUserGroupIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryUserGroupMembersByUserGroupIdEdge!]
"A flattened list of the nodes."
nodes: [UserGroupMember!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryUserGroupMembersByUserGroupIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: UserGroupMember!
}
"A connection to a list of items."
type QueryUserGroupPermissionsByUserGroupIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryUserGroupPermissionsByUserGroupIdEdge!]
"A flattened list of the nodes."
nodes: [UserGroupPermission!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryUserGroupPermissionsByUserGroupIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: UserGroupPermission!
}
"A connection to a list of items."
type QueryUserGroupsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryUserGroupsEdge!]
"A flattened list of the nodes."
nodes: [UserGroup!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryUserGroupsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: UserGroup!
}
"A connection to a list of items."
type QueryUsersConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryUsersEdge!]
"A flattened list of the nodes."
nodes: [User!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryUsersEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: User!
}
"A connection to a list of items."
type QueryVariationAxesByItemIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryVariationAxesByItemIdEdge!]
"A flattened list of the nodes."
nodes: [VariationAxis!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryVariationAxesByItemIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: VariationAxis!
}
"A connection to a list of items."
type QueryVariationCombinationsByItemIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryVariationCombinationsByItemIdEdge!]
"A flattened list of the nodes."
nodes: [VariationCombination!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryVariationCombinationsByItemIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: VariationCombination!
}
"A connection to a list of items."
type QueryWarehouseCapabilityStatesByWarehouseIdConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryWarehouseCapabilityStatesByWarehouseIdEdge!]
"A flattened list of the nodes."
nodes: [WarehouseCapabilityState!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryWarehouseCapabilityStatesByWarehouseIdEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: WarehouseCapabilityState!
}
"A connection to a list of items."
type QueryWarehousesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryWarehousesEdge!]
"A flattened list of the nodes."
nodes: [WarehouseListEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryWarehousesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: WarehouseListEntry!
}
"A connection to a list of items."
type QueryWarehouseSettingsNodesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryWarehouseSettingsNodesEdge!]
"A flattened list of the nodes."
nodes: [WarehouseSettingsNode!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryWarehouseSettingsNodesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: WarehouseSettingsNode!
}
"A connection to a list of items."
type QueryWarehouseSettingValuesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryWarehouseSettingValuesEdge!]
"A flattened list of the nodes."
nodes: [WarehouseSettingValueEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryWarehouseSettingValuesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: WarehouseSettingValueEntry!
}
"A connection to a list of items."
type QueryWorkerSyncErrorsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryWorkerSyncErrorsEdge!]
"A flattened list of the nodes."
nodes: [WorkerSyncError!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryWorkerSyncErrorsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: WorkerSyncError!
}
"A connection to a list of items."
type QueryWorkerSyncRunsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryWorkerSyncRunsEdge!]
"A flattened list of the nodes."
nodes: [WorkerSyncRun!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryWorkerSyncRunsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: WorkerSyncRun!
}
"A connection to a list of items."
type QueryWorkerSyncsConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryWorkerSyncsEdge!]
"A flattened list of the nodes."
nodes: [WorkerSync!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryWorkerSyncsEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: WorkerSync!
}
"A connection to a list of items."
type QueryWorkflowLogEntriesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryWorkflowLogEntriesEdge!]
"A flattened list of the nodes."
nodes: [WorkflowLogEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryWorkflowLogEntriesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: WorkflowLogEntry!
}
"A connection to a list of items."
type QueryWorkflowQueueEntriesConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of edges."
edges: [QueryWorkflowQueueEntriesEdge!]
"A flattened list of the nodes."
nodes: [WorkflowQueueEntry!]
"Identifies the total count of items in the connection."
totalCount: Int! @cost(weight: "10")
}
"An edge in a connection."
type QueryWorkflowQueueEntriesEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: WorkflowQueueEntry!
}
"A setting with one choice out of a few. The value type is Choice. The options source names a GraphQL query."
type RadioGroupNode implements SettingsNode {
"Discriminator of the node kind."
kind: SettingsNodeKind!
"The stable ID of the node. For an input it equals the setting key, for example sales.invoice.dueDays."
id: String!
"The ID of the group the node belongs to. Absent for a top-level node."
parentId: String
"The depth in the tree. A top-level node has level 1."
level: Int!
"The position among the nodes of the same parent. Lower comes first."
sortOrder: Int!
"The text shown for the node, in the language of the caller."
label: String
"A further text, in the language of the caller."
description: String
"A link to a help page."
helpUrl: String
"Extra words the search finds the node by."
keywords: [String!]!
"The scopes the setting can be stored for. Almost every setting has only Global."
scopes: [SettingsScope!]!
"The Wawi permission the caller needs to see and change the node."
requiredPermission: String
"Whether the caller cannot change the setting."
isReadOnly: Boolean!
"Rules that make the node visible, enabled or required depending on other settings."
dependencies: [SettingsDependency!]!
"The key of the setting this input edits. It is also the ID of the node."
settingKey: String!
"The type of the value the setting holds."
valueType: SettingValueType!
"Whether the setting needs a value."
isRequired: Boolean!
"Whether a change only takes effect after Wawi restarts."
requiresRestart: Boolean!
"A warning to show before a change is saved, for example about data that changes as a consequence."
changeWarning: String
"The default the setting has when nobody sets a value."
defaultValue: SettingValue
"The current value of the setting for the scope asked for. Only filled when includeValues is true; a handler field, resolved from the value store."
currentValue: SettingValueEntry
"The fixed options. Absent when the options come from a source."
options: [ChoiceOption!]!
"Where to read the options from when they are master data. Absent when the options are fixed."
optionsSource: ResourceReference
}
"Receives the goods of one delivery for a sent purchase order: any number of item and custom lines in one transaction, all of them or none. Item lines are booked into stock at the default location of the warehouse; custom lines, items without stock management and every line of a drop shipping order only count as delivered. The delivered quantities grow, a fully delivered line gets the day of the receipt as its delivery date, and the order becomes partially delivered or completed. The stock on order, the supplier's delivery time and the average purchase price follow the settings of the ERP. Raises the workflow event 'changed' when the status of the order changes, and 'completed' when the order is completed by it. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: an invalid request, for example no line, a quantity of 0, decimals for an item that is not divisible (PURCHASE_ORDER_QUANTITY_NOT_WHOLE), a warehouse on a drop shipping order (WAREHOUSE_NOT_ALLOWED), or PURCHASE_ORDER_BATCH_NUMBER_REQUIRED, PURCHASE_ORDER_BATCH_NUMBER_NOT_ALLOWED, PURCHASE_ORDER_SHELF_LIFE_EXPIRATION_DATE_REQUIRED, PURCHASE_ORDER_SHELF_LIFE_EXPIRATION_DATE_NOT_ALLOWED, PURCHASE_ORDER_SERIAL_NUMBERS_REQUIRED, PURCHASE_ORDER_SERIAL_NUMBERS_NOT_ALLOWED, PURCHASE_ORDER_SERIAL_NUMBER_COUNT_MISMATCH or PURCHASE_ORDER_SERIAL_NUMBER_DUPLICATE; PURCHASE_ORDER_NOT_FOUND or PURCHASE_ORDER_LINE_ITEM_NOT_FOUND (the order or a line was not found); WAREHOUSE_NOT_FOUND (the warehouse was not found); PURCHASE_ORDER_NOT_SENT or PURCHASE_ORDER_COMPLETED (the order is not open for deliveries); WAREHOUSE_NOT_RECEIVABLE (the warehouse cannot receive goods directly); PURCHASE_ORDER_LINE_ITEM_NOT_RECEIVABLE (an allowance or charge, or an item that cannot be received: variation parent, stock variation, bill of materials, partial-quantity item); PURCHASE_ORDER_LINE_ITEM_NOT_OPEN (nothing is open on the line); PURCHASE_ORDER_SERIAL_NUMBER_ALREADY_IN_STOCK. - Response"
type ReceivePurchaseOrderGoodsCommandResponse {
"One entry per line of the request, in the same order, with the ID of the goods receipt booked into stock."
lines: [PurchaseOrderReceivedLine!]!
}
"Books returned goods into stock: sets the condition, splits the line item where needed and sets Announced line items to Arrived. - Response"
type ReceiveReturnGoodsCommandResponse {
"The ID of the state of the return after the booking, derived from its line items."
returnStateId: ID!
"One ID per request line, in the same order: the line item that holds the booked quantity."
returnLineItemIds: [ID!]!
}
"Records money paid back outside the ERP for a sales credit note, as a negative payment. No money is moved. - Response"
type RecordSalesCreditNotePayoutCommandResponse {
"The ID of the new payment."
paymentId: ID!
}
"Records money paid back outside the ERP for a sales invoice correction, as a negative payment. No money is moved. - Response"
type RecordSalesInvoiceCorrectionPayoutCommandResponse {
"The ID of the new payment."
paymentId: ID!
}
"Records money received for a sales invoice. By default the amount is distributed: first to this invoice and its open dunning fee, with a rest within the cash discount its payment terms allow written off as cash discount, then to the other open, finalised invoices of the same sales order and finally to the order. With 'distribute' false the whole amount is recorded on this invoice. One call can therefore record several payments; the response lists them all. Omitting 'amount' records the open amount. A sales invoice or order that becomes fully paid starts its workflows. Errors: SALES_INVOICE_NOT_FOUND (the sales invoice was not found); PAYMENT_METHOD_NOT_FOUND (the payment method was not found); AMOUNT_NOT_POSITIVE (the amount is not greater than 0); SALES_INVOICE_IS_DRAFT (the invoice is a draft; finalise it first); SALES_INVOICE_CANCELLED (the invoice is cancelled; the payments of a cancelled invoice belong to the sales order, record the payment there); NO_OPEN_AMOUNT ('amount' was omitted and nothing is open); OPEN_AMOUNT_CHANGED (the open amount differs from 'expectedOpenAmount'). - Response"
type RecordSalesInvoicePaymentCommandResponse {
"The IDs of all payments the call recorded."
paymentIds: [ID!]!
}
"Records money received for a sales order. By default the amount is distributed: first to the open, finalised invoices of the order, oldest first, then to their open dunning fees; a rest of an invoice within the cash discount its payment terms allow is written off as cash discount; what is left goes to the order, so an overpayment stays on the order. With 'distribute' false the whole amount is recorded on the sales order. One call can therefore record several payments; the response lists them all. Omitting 'amount' records the open amount. A cancelled sales order still takes payments, for example money that arrives after the cancellation; the order is then overpaid and the money can be refunded with 'CreateSalesOrderRefund'. A sales order or invoice that becomes fully paid starts its workflows. Errors: SALES_ORDER_NOT_FOUND (the sales order was not found); PAYMENT_METHOD_NOT_FOUND (the payment method was not found); AMOUNT_NOT_POSITIVE (the amount is not greater than 0; record money paid back with 'RecordSalesOrderPayout'); NO_OPEN_AMOUNT ('amount' was omitted and nothing is open); OPEN_AMOUNT_CHANGED (the open amount differs from 'expectedOpenAmount'). - Response"
type RecordSalesOrderPaymentCommandResponse {
"The IDs of all payments the call recorded."
paymentIds: [ID!]!
}
"Records money paid back to the customer outside the ERP for an overpaid or cancelled sales order, for example in cash or by a transfer made elsewhere. It records a payment with a negative amount on the order; no money is moved. Money paid back for an invoice correction is recorded on the correction ('RecordSalesInvoiceCorrectionPayout'). To let the ERP pay the money back, create a refund with 'CreateSalesOrderRefund' instead. Errors: SALES_ORDER_NOT_FOUND (the sales order was not found); PAYMENT_METHOD_NOT_FOUND (the payment method was not found); AMOUNT_NOT_POSITIVE (the amount is not greater than 0); SALES_INVOICE_CORRECTION_WITHOUT_PAYOUT_EXISTS (an invoice correction of the order has not been paid out yet; record the payout on the correction). - Response"
type RecordSalesOrderPayoutCommandResponse {
"The ID of the new payment."
paymentId: ID!
}
"Fetches the current reference rates of the European Central Bank, converts them to the default currency and sets the rate of every currency the source knows and whose rate changes. Currencies the source does not know keep their rate and are listed as skipped. This is what the daily refresh does. If the source and the tenant have no currency in common, nothing changes and the result is empty. - Response"
type RefreshCurrencyExchangeRatesCommandResponse {
"The currencies whose rate changed, with the old and the new rate."
updated: [CurrencyExchangeRateChange!]!
"The codes of the currencies the source does not know."
skippedCodes: [String!]!
}
"Money the ERP pays back to a customer through a payment account. Creating it books a payout on the sales document at once."
type Refund {
"The ID of the refund."
id: ID!
"Where the refund stands."
status: RefundStatus!
"How the refund moves the money."
method: RefundMethod!
"The amount paid back, positive, with two decimals."
amount: Decimal!
"The currency of the amount (ISO 4217)."
currencyCode: String!
"The payment account that carries out the refund."
paymentAccountId: ID!
"The customer who gets the money."
customerId: ID
"The sales invoice correction the refund pays out. Empty for a sales credit note, and after the correction is cancelled."
salesInvoiceCorrectionId: ID
"The sales credit note the refund pays out. Empty after the credit note is cancelled; its payout then has no document."
salesCreditNoteId: ID
"The sales order the refund belongs to, through its payout or its invoice correction. Empty for a sales credit note."
salesOrderId: ID
"The payout the refund booked on the sales document. Empty without a document; GetPayment no longer finds it once the credit note is cancelled."
payoutPaymentId: ID
"The earlier payment that is refunded."
refundedPaymentId: ID
"The earlier incoming payment transaction that is refunded. Set exactly when 'method' is 'PaymentTransaction'."
refundedPaymentTransactionId: ID
"The outgoing transaction of the payment provider or the bank that carries out the refund, once it is imported and matched."
confirmingPaymentTransactionId: ID
"The name of the recipient."
recipientName: String!
"The account of the recipient: the IBAN for a bank transfer, otherwise the account at the payment provider as far as it is known, for example an e-mail address."
recipientAccount: String
"The BIC of the recipient's bank."
recipientBic: String
"The text the recipient sees with the money."
paymentReference: String!
"An internal note that is not sent to the payment provider or the bank."
internalNote: String
"The ID the payment provider gave the refund when it accepted it. Banks return none."
providerTransactionId: String
"The message of the last failed attempt to send the refund."
lastErrorMessage: String
"When the last attempt to send the refund failed."
lastErrorAt: DateTime
"When the refund was created."
createdAt: DateTime!
"The user who created the refund."
createdBy: ID
"When the refund was sent successfully."
sentAt: DateTime
"The user who sent the refund."
sentBy: ID
}
"Whether one action is allowed for a refund. The action is a key, not an enum, because the list of actions can grow without a change of the schema. Keys today: Update, Delete, Send."
type RefundActionAvailability {
"The key of the action. A client that does not know a key ignores the entry."
actionId: String!
"Whether the action is allowed right now."
isAllowed: Boolean!
"The reasons why it is not, empty when it is allowed."
blockers: [RefundActionBlocker!]!
}
"One reason why an action on a refund is not allowed."
type RefundActionBlocker {
"The stable machine-readable code of the reason, for example REFUND_ALREADY_SENT."
code: String!
"A human-readable explanation in the language of the request."
message: String
}
"What can be done with a refund right now. It is a hint for user interfaces and can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type RefundAllowedActions {
"One entry per action, allowed or not."
actions: [RefundActionAvailability!]!
}
"An entry of the refund change history: a refund was created or changed, or it was deleted."
type RefundChange {
"The ID of the refund."
refundId: ID!
"The sales order of the refund as of this entry."
salesOrderId: ID
"The sales invoice correction the refund pays out, as of this entry."
salesInvoiceCorrectionId: ID
"The sales credit note the refund pays out, as of this entry."
salesCreditNoteId: ID
"The payout the refund booked on the sales document, as of this entry."
payoutPaymentId: ID
"The customer who gets the money, as of this entry."
customerId: ID
"The current state of the refund, read at query time. Empty when the refund no longer exists."
refund: Refund
"True when the refund was deleted. A later entry for the same ID wins."
isDeleted: Boolean!
"When the entry became readable in the change history (UTC)."
changedAt: DateTime!
}
"Creates a refund of what is left of an incoming payment transaction that belongs to no sales document, for example money that was paid twice or by mistake. The money goes back to the payer through the payment account of the transaction; nothing is booked on a document. Send it with 'SendRefund'. Read it with 'GetRefund'. Errors: PAYMENT_TRANSACTION_NOT_FOUND (the payment transaction was not found); PAYMENT_ACCOUNT_HIDDEN (the payment account is hidden; show it with 'ShowPaymentAccount' first); PAYMENT_TRANSACTION_NOT_REFUNDABLE (nothing of the transaction is left to refund ('refundableAmount' is 0), or it is not an incoming transaction); PAYMENT_ACCOUNT_CANNOT_TRANSFER (the payment account cannot send money); AMOUNT_NOT_POSITIVE (the amount is not greater than 0); AMOUNT_EXCEEDS_REFUNDABLE_AMOUNT (the amount is more than 'refundableAmount'); REFUNDABLE_AMOUNT_CHANGED (the refundable amount of the transaction differs from 'expectedRefundableAmount'). - Response"
type RefundPaymentTransactionRemainderCommandResponse {
"The ID of the new refund."
refundId: ID!
}
"What can be refunded for a sales document and how. It is computed on request; nothing is stored."
type RefundProposal {
"What can still be refunded. For a correction or credit note its amount minus its payouts; for a sales order what it is overpaid by."
refundableAmount: Decimal!
"The currency of the amounts (ISO 4217)."
currencyCode: String!
"The customer who would get the money."
customerId: ID
"A suggested text for the recipient."
paymentReference: String!
"One entry per way to refund a part of the amount. Empty when nothing can be refunded."
items: [RefundProposalItem!]!
}
"One way to refund a part of the refundable amount."
type RefundProposalItem {
"How this part would be refunded."
method: RefundMethod!
"The suggested amount."
amount: Decimal!
"The most this part can refund: what is left of the transaction, at most the amount of the payment it created; for a bank transfer the rest of the refundable amount."
maximumAmount: Decimal!
"The incoming payment transaction to refund. Set exactly when 'method' is 'PaymentTransaction'."
paymentTransactionId: ID
"The payment account that received the transaction. Empty for a bank transfer, where the caller chooses a bank account that can send transfers."
paymentAccountId: ID
"The payment of the sales document (for an invoice correction, of the corrected invoice) that the transaction created."
refundedPaymentId: ID
"The name of the payer of the transaction, when known."
recipientName: String
"The account of the payer, when known."
recipientAccount: String
"The BIC of the payer's bank, when known."
recipientBic: String
}
"A regular sellable item without stock management."
type RegularItem implements Item {
"The ID of the item."
id: ID!
"Name of the item in the default language."
name: String!
"Whether the item is active. An inactive item cannot be sold or used as a kit component."
isActive: Boolean!
"The ID of the product group."
productGroupId: ID
"The ID of the manufacturer."
manufacturerId: ID
"The ID of the item condition, for example new or used."
conditionId: ID
"The ID of the delivery status of the item (the master data of delivery statuses, for example \"in stock\" or \"ships in 3 days\")."
deliveryStatusId: ID
"The variation parent this item is a combination of. Absent when the item is no combination. Read-only for every kind of item: the assignment is maintained at the parent only (items/variation-parents/{itemId}/combinations)."
variationParentId: ID
"Every trait that applies to the item, ordered by rank, the first being the kind in 'itemType'. The kind is the first rule that applies; the others would otherwise be lost (a stock-managed variation parent is a VariationParent with the trait StockItem, a stock-managed kit made of divisible parts is a Kit with the trait DivisibleStockItem). Only the fields of the kind are part of the model; sub-resources are offered by the kind. Clients must tolerate values they do not know."
traits: [ItemType!]!
"When the item was created."
createdAt: DateTime
"When the item was last changed."
changedAt: DateTime
"Discriminator of the item kind."
itemType: ItemType!
"The identifiers of the item, each in its own property."
identifiers: TradeItemIdentifiers!
"The ID of the tax class."
taxClassId: ID
"The ID of the shipping class."
shippingClassId: ID
"Outer dimensions as shipped. Absent when none are maintained."
dimensions: ItemDimensions
"Weights. Absent when none are maintained."
weights: ItemWeights
"Customs information. Absent when none is maintained."
customs: ItemCustoms
"Sales unit, packaging unit and content with its base price. Absent when none is maintained."
units: ItemUnits
"The containers the item is also traded in. Empty when it has none."
containers: [ItemContainer!]!
}
"Replaces the list of allowed values of a value list field. Removing or renaming entries is always possible; existing values of items and categories are changed or cleared accordingly. Values on other records (customers, companies, sales orders, production) are not changed. - Response"
type ReplaceCustomFieldAllowedValuesCommandResponse {
"The allowed values in the order they are offered."
allowedValues: [String!]!
}
"Announces a file and returns a short-lived URL to upload its bytes to (step 1 of the upload). - Response"
type RequestFileUploadCommandResponse {
"The blob identifier of the request."
blobIdentifier: UUID!
"The short-lived URL to send the bytes to. It works only for this blob identifier."
uploadUrl: String!
"The HTTP method of the upload, for example PUT."
uploadMethod: String!
"The headers to send with the bytes."
uploadHeaders: [FileUploadHeader!]!
"When the upload URL expires."
expiresAt: DateTime!
}
"Makes sure nothing of a subscription is due before a date, for example to pause it or to skip periods. Line items due before the date move to it (to the next date of their cadence on or after it); line items due later stay as they are; line items that end before the date end. Nothing is stored as paused. - Response"
type RescheduleSalesSubscriptionCommandResponse {
"The state of the subscription after the call."
status: SalesSubscriptionStatus!
"The earliest next due date after the call. Empty when the subscription has ended."
nextDueDate: DateTime
}
"Clears the error of the last run: the sync keeps sleeping, no longer reports lastResult Failed and runs nothing. - Response"
type ResetWorkerSyncErrorCommandResponse {
"The key of the action that was requested: Start, Stop, Restart, RunOnce or ResetError."
actionId: String!
"When the request was accepted."
requestedAt: DateTime!
}
"Deletes the syncs of ALL tenants with their intervals while the worker is stopped; it needs the explicit confirmation. - Response"
type ResetWorkerSyncsCommandResponse {
"How many syncs were deleted."
removedSyncCount: Int!
}
"A fixed argument of a resource reference."
type ResourceArgument {
"The name of the argument."
name: String!
"The value of the argument."
value: String!
}
"A resource category. It determines which properties a resource has (e.g. workbench, machine or employee). Resource categories are predefined and cannot be created, changed or deleted."
type ResourceCategory {
"The ID of this resource category."
id: ID!
"The name of this resource category."
name: String!
"Whether this resource category is visible to users."
isVisible: Boolean!
"Whether this resource category is enabled for use."
isEnabled: Boolean!
}
"A resource group. It groups resources of one resource category, independent of their resource type."
type ResourceGroup {
"The ID of this resource group."
id: ID!
"The name of this resource group."
name: String!
"The ID of the resource category of this resource group (see QueryResourceCategories). The group can only contain resources of this category. Changed by ChangeResourceGroupCategory."
categoryId: ID!
"The point in time at which this resource group was created."
createdAt: DateTime!
"The point in time at which this resource group was last changed."
changedAt: DateTime!
}
"Points to a GraphQL query another domain serves and says how to read it: which query, which property is the value and which the label. A client fetches the options itself, with the permissions of the caller. Used for choices whose options are master data."
type ResourceReference {
"The name of the GraphQL query field that lists the options, for example QueryPaymentMethods."
query: String!
"The property of an entry that is stored as the value, for example id."
valueProperty: String!
"The property of an entry that is shown, for example name."
labelProperty: String!
"The property of an entry that holds a further text."
descriptionProperty: String
"The argument of the query for searching while typing. Absent when the list is not searchable."
searchArgument: String
"Arguments to always send, for example isActive: true."
fixedArguments: [ResourceArgument!]!
}
"A resource type. It groups resources of one category with common properties."
type ResourceType {
"The ID of this resource type."
id: ID!
"The name of this resource type."
name: String!
"The ID of the resource category this resource type belongs to (see QueryResourceCategories). Only resources of this category can have this resource type. It cannot be changed."
categoryId: ID!
"The point in time at which this resource type was created."
createdAt: DateTime!
"The point in time at which this resource type was last changed."
changedAt: DateTime!
}
"Asks the worker to stop the sync and start it again. - Response"
type RestartWorkerSyncCommandResponse {
"The key of the action that was requested: Start, Stop, Restart, RunOnce or ResetError."
actionId: String!
"When the request was accepted."
requestedAt: DateTime!
}
"Manual corrections of the suggested quantities."
type RestockSuggestionAdjustmentSettings {
"When set, a percentage added to every suggested quantity above 0, rounded up; -100 or more. Empty: none."
surchargePercent: Int
"When set, the demand planned by hand for the items counts as soon as its target date is no more than this many days away; 0 or more. Planned demand without a target date or without a warehouse, area or storage location never counts. Empty: demand planned by hand does not count."
manualDemandBufferDays: Int
}
"An entry created together with its area."
type RestockSuggestionAreaCreatedEntry {
"The ID of the new entry."
entryId: ID!
"The temporary identifier from the request, if one was sent."
clientId: String
}
"A purchase order created from the request lines of one supplier and one warehouse."
type RestockSuggestionCreatedPurchaseOrder {
"The ID of the new purchase order."
purchaseOrderId: ID!
"The number of the new purchase order."
number: String!
"The ID of the supplier."
supplierId: ID!
"The ID of the receiving warehouse."
warehouseId: ID!
"Whether the order started released; else it is open and waits for 'ReleasePurchaseOrder'."
isReleased: Boolean!
"The new item lines, in the order of the request lines."
lineItems: [RestockSuggestionCreatedPurchaseOrderLineItem!]!
}
"A line item created from a request line."
type RestockSuggestionCreatedPurchaseOrderLineItem {
"The ID of the new purchase order line item."
lineItemId: ID!
"The temporary identifier from the request, if one was sent."
clientId: String
}
"What counts as open demand: which open sales orders, and which other requests. When no payment state is chosen at all, no open sales order counts. The payment, on-hold and due-date choices apply to stock transfers counted as demand as well."
type RestockSuggestionDemandSettings {
"Whether paid open sales orders count."
includePaidSalesOrders: Boolean!
"Which unpaid open sales orders count."
unpaidSalesOrders: RestockSuggestionUnpaidSalesOrders!
"Whether open sales orders whose payment method delivers before payment count, paid or not."
includeSalesOrdersDeliveredBeforePayment: Boolean!
"Whether sales orders on hold count. A sales order held for a reason that excludes it from the purchase list never counts."
includeOnHoldSalesOrders: Boolean!
"When set, only sales orders whose delivery is due within this many days after the calculation, or that have no date, count; 0 or more. Empty: every open sales order counts."
salesOrderDueWithinDays: Int
"Whether open availability requests from the online shop count as demand, one unit per request."
includeAvailabilityRequests: Boolean!
"Whether the orders of sales channels that are not imported as sales orders yet count as demand."
includeExternalReservations: Boolean!
"Which open stock transfers of the item count as demand, as sales orders do. Known values: NONE (none), AMAZON_FULFILLMENT_ONLY (the transfers the ERP treats as transfers to Amazon fulfillment: those without an inbound purchase order, which includes direct transfers between the company's warehouses), EXCEPT_AMAZON_FULFILLMENT (the transfers with an inbound purchase order), ALL (every transfer). A client treats an unknown value as not supported. The server refuses an unknown value."
stockTransfersAsDemand: String!
}
"A destination area: the warehouses a calculation covers the demand of, in their priority. The demand of open sales orders is put on the warehouse with the highest priority."
type RestockSuggestionDestinationArea {
"The ID of the destination area."
id: ID!
"The name of the destination area."
name: String!
"Whether the destination area can be used in settings. An inactive one keeps its entries."
isActive: Boolean!
}
"An entry with one storage location, from an earlier version of the ERP. It is calculated, but cannot be created any more."
type RestockSuggestionDestinationAreaStorageLocationEntry implements RestockSuggestionDestinationAreaEntry {
"The ID of the entry."
id: ID!
"The ID of the destination area."
destinationAreaId: ID!
"The discriminator: the kind of the entry."
entryType: RestockSuggestionDestinationAreaEntryType!
"The priority of the entry among the entries of its area: 1 is the highest, the entries are numbered without gaps."
priority: Int!
"The ID of the warehouse of the storage location."
warehouseId: ID!
"The ID of the storage location."
storageLocationId: ID!
}
"An entry with an area of a warehouse with storage location management, from an earlier version of the ERP. It is calculated, but cannot be created any more."
type RestockSuggestionDestinationAreaWarehouseAreaEntry implements RestockSuggestionDestinationAreaEntry {
"The ID of the entry."
id: ID!
"The ID of the destination area."
destinationAreaId: ID!
"The discriminator: the kind of the entry."
entryType: RestockSuggestionDestinationAreaEntryType!
"The priority of the entry among the entries of its area: 1 is the highest, the entries are numbered without gaps."
priority: Int!
"The ID of the warehouse of the area."
warehouseId: ID!
"The ID of the warehouse area."
warehouseAreaId: ID!
}
"An entry with a whole warehouse."
type RestockSuggestionDestinationAreaWarehouseEntry implements RestockSuggestionDestinationAreaEntry {
"The ID of the entry."
id: ID!
"The ID of the destination area."
destinationAreaId: ID!
"The discriminator: the kind of the entry."
entryType: RestockSuggestionDestinationAreaEntryType!
"The priority of the entry among the entries of its area: 1 is the highest, the entries are numbered without gaps."
priority: Int!
"The ID of the warehouse."
warehouseId: ID!
}
"Where the goods go: the warehouses whose demand is covered, and the stock limits that apply there."
type RestockSuggestionDestinationSettings {
"Which warehouses get their demand covered."
destinationSelection: RestockSuggestionDestinationSelection!
"The destination area whose warehouses get their demand covered, in their priority; an active one. Required exactly when 'destinationSelection' is 'DESTINATION_AREA'."
destinationAreaId: ID
"The one warehouse that gets its demand covered; an active one. Required exactly when 'destinationSelection' is 'WAREHOUSE'."
warehouseId: ID
"How the demand of several destination warehouses is suggested. Only effective with a destination area of more than one warehouse."
demandAllocation: RestockSuggestionDemandAllocation!
"Whether a suggestion stays within the item's maximum stock of the warehouse, counting the stock, the inflow and what the stock settings add; what goes beyond it is suggested for the warehouses of lower priority."
limitToMaximumStock: Boolean!
"Whether the item's minimum stock over all warehouses is topped up, spread over the destination warehouses by their priority."
fillGlobalMinimumStock: Boolean!
"Whether the item's minimum stock of each destination warehouse is topped up."
fillWarehouseMinimumStock: Boolean!
}
"The forecast of the demand from the past consumption: the consumption per day of a period, multiplied by the days the forecast covers. The consumption is the quantity of the sales orders created in the period: what was delivered from the destination warehouse plus what is still open."
type RestockSuggestionForecastSettings {
"Whether and from which period the past consumption is projected onto the coming days."
forecastType: RestockSuggestionForecastType!
"How many days before the calculation, today included, the consumption is measured; 1 or more. Required exactly when 'forecastType' is 'LAST_DAYS'."
lastDays: Int
"The first day of the measured period, as a calendar day in the time zone of the ERP. Required exactly when 'forecastType' is 'CUSTOM_PERIOD'."
periodStart: DateTime
"The last day of the measured period, included, as a calendar day in the time zone of the ERP; not before 'periodStart'. Required exactly when 'forecastType' is 'CUSTOM_PERIOD'."
periodEnd: DateTime
"The period relative to the day of the calculation, resolved anew at every calculation as the ERP's period selection does. Required exactly when 'forecastType' is 'RELATIVE_PERIOD'. Known values: THIS_YEAR, LAST_YEAR, YEAR_BEFORE_LAST, LAST_TWO_YEARS, LAST_THREE_YEARS, THIS_QUARTER, LAST_QUARTER, QUARTER_BEFORE_LAST, THIRD_LAST_QUARTER, THIS_AND_LAST_QUARTER, Q1_THIS_YEAR, Q2_THIS_YEAR, Q3_THIS_YEAR, Q4_THIS_YEAR, Q1_LAST_YEAR, Q2_LAST_YEAR, Q3_LAST_YEAR, Q4_LAST_YEAR, Q1_YEAR_BEFORE_LAST, Q2_YEAR_BEFORE_LAST, Q3_YEAR_BEFORE_LAST, Q4_YEAR_BEFORE_LAST, THIS_MONTH, LAST_MONTH, MONTH_BEFORE_LAST, SINCE_START_OF_LAST_MONTH, SINCE_START_OF_MONTH_BEFORE_LAST, THIS_WEEK, LAST_WEEK, WEEK_BEFORE_LAST, SINCE_START_OF_LAST_WEEK, SINCE_START_OF_WEEK_BEFORE_LAST, LAST_SEVEN_DAYS, TODAY, YESTERDAY, DAY_BEFORE_YESTERDAY. A client treats an unknown value as not supported. The server refuses an unknown value."
relativePeriod: String
"How many coming days the forecast covers, 0 or more."
horizonDays: Int!
"Whether the consumption per day is computed over the days on which the item was in stock instead of all days of the period. It changes the suggested quantity only with a forecast."
onlyDaysWithStock: Boolean!
"Whether the quantities returned in the period, from all warehouses, are subtracted from the consumption. It changes the suggested quantity only with a forecast."
subtractReturns: Boolean!
"When set, a sales order whose quantity in the period exceeds this percentage of the item's average quantity per delivery counts as an order peak and is left out of the consumption; 100 or more. Empty: every sales order counts. It changes the suggested quantity only with a forecast."
orderPeakThresholdPercent: Int
}
"An item excluded from restock suggestions: it never appears in a calculation. It can still be ordered by hand and put on the purchase list."
type RestockSuggestionItemExclusion {
"The ID of the item."
itemId: ID!
"The item's SKU."
sku: String!
"The item's name in the default language. Empty when the item has none in that language."
itemName: String
}
"The settings of a restock suggestion calculation, grouped as in the dialog of the ERP: sources, destination, forecast, stock, demand and corrections. A setting that only works together with another one is kept but has no effect without it. A template the ERP keeps in its simple mode reads with the values the ERP calculates with in that mode."
type RestockSuggestionSettings {
"The sources."
source: RestockSuggestionSourceSettings!
"The destination."
destination: RestockSuggestionDestinationSettings!
"The forecast."
forecast: RestockSuggestionForecastSettings!
"The stock."
stock: RestockSuggestionStockSettings!
"The open demand."
demand: RestockSuggestionDemandSettings!
"The corrections."
adjustments: RestockSuggestionAdjustmentSettings!
}
"Where the goods come from: the suppliers or warehouses that may cover the demand, and how their quantities are limited."
type RestockSuggestionSourceSettings {
"Which sources may cover the demand. Known values: ALL_SUPPLIERS (every supplier of the item, active or not, except the company's own production; the supplier created last is used first, the others only get what it cannot cover), CHEAPEST_SUPPLIER (the supplier with the lowest purchase price for the item, without currency conversion, on a tie the default supplier; not the own production), FASTEST_SUPPLIER (the supplier with the shortest delivery time, on a tie the default supplier; not the own production), DEFAULT_SUPPLIER (the item's default supplier, also the own production), START_AREA (the entries of a start area, in their priority), SUPPLIER (one supplier; calculation only). A client treats an unknown value as not supported. The server refuses an unknown value."
sourceSelection: String!
"The start area whose entries are the sources, in their priority; an active one. Required exactly when 'sourceSelection' is 'START_AREA'."
startAreaId: ID
"The one supplier whose items are suggested. Required exactly when 'sourceSelection' is 'SUPPLIER'."
supplierId: ID
"Whether items that no supplier delivers are suggested as well, as suggestions without a source."
includeItemsWithoutSupplier: Boolean!
"Whether a suggestion from a supplier stays within the supplier stock recorded for the item, also when the supplier's stock is not maintained, which then usually limits it to 0. A suggestion from a source warehouse always stays within what that warehouse can give."
limitToSupplierStock: Boolean!
"Whether a suggestion from a supplier is raised to the supplier's minimum order quantity and rounded up to its order interval, without going beyond the maximum stock and the supplier stock."
applyOrderQuantityRules: Boolean!
}
"A start area: the sources a calculation may order or move goods from, in their priority. A source with a lower priority only gets what the sources above it do not cover."
type RestockSuggestionStartArea {
"The ID of the start area."
id: ID!
"The name of the start area."
name: String!
"Whether the start area can be used in settings. An inactive one keeps its entries."
isActive: Boolean!
}
"An entry with the company's own production."
type RestockSuggestionStartAreaProductionEntry implements RestockSuggestionStartAreaEntry {
"The ID of the entry."
id: ID!
"The ID of the start area."
startAreaId: ID!
"The discriminator: the kind of the entry."
entryType: RestockSuggestionStartAreaEntryType!
"The priority of the entry among the entries of its area: 1 is the highest, the entries are numbered without gaps."
priority: Int!
"The ID of the production supplier. It can be ordered from, but the supplier queries do not list it."
supplierId: ID!
}
"An entry with a supplier."
type RestockSuggestionStartAreaSupplierEntry implements RestockSuggestionStartAreaEntry {
"The ID of the entry."
id: ID!
"The ID of the start area."
startAreaId: ID!
"The discriminator: the kind of the entry."
entryType: RestockSuggestionStartAreaEntryType!
"The priority of the entry among the entries of its area: 1 is the highest, the entries are numbered without gaps."
priority: Int!
"The ID of the supplier."
supplierId: ID!
}
"An entry with a source warehouse. Suggestions from it become stock transfers; a warehouse that is a destination of the same calculation is left out."
type RestockSuggestionStartAreaWarehouseEntry implements RestockSuggestionStartAreaEntry {
"The ID of the entry."
id: ID!
"The ID of the start area."
startAreaId: ID!
"The discriminator: the kind of the entry."
entryType: RestockSuggestionStartAreaEntryType!
"The priority of the entry among the entries of its area: 1 is the highest, the entries are numbered without gaps."
priority: Int!
"The ID of the source warehouse."
warehouseId: ID!
}
"What counts as stock of a destination warehouse besides its own stock."
type RestockSuggestionStockSettings {
"Whether the open quantities of released purchase orders that were not sent yet count as inflow."
includeReleasedPurchaseOrders: Boolean!
"Whether the open quantities of sent and partially delivered purchase orders count as inflow."
includeSentPurchaseOrders: Boolean!
"For which warehouse an inflow counts. Only effective when purchase orders count as inflow."
inflowAllocation: RestockSuggestionInflowAllocation!
"When set, only purchase order lines expected within this many days after the calculation, or without a date, count as inflow; 0 or more. Empty: every open line counts. Only effective when purchase orders count as inflow."
inflowDueWithinDays: Int
"Whether the stock suppliers hold for the item counts, for supplier items whose stock the ERP maintains."
includeSupplierStock: Boolean!
"Whether the quantities on the purchase list count as stock of their warehouse; a quantity without a warehouse counts for the warehouse with the highest priority."
includePurchaseListQuantities: Boolean!
"Whether the open quantities of stock transfers to the warehouse count as stock."
includeOpenStockTransfers: Boolean!
"Whether the stock in transit to the warehouse, in the transit warehouses of stock transfers, counts as stock."
includeStockInTransit: Boolean!
"Whether the stock on locked storage locations counts as available."
includeStockOnLockedStorageLocations: Boolean!
"Whether the stock on storage locations locked for delivery counts as available."
includeStockOnStorageLocationsLockedForDelivery: Boolean!
"Whether the stock on clearance storage locations counts. Only effective for warehouses with storage location management."
includeStockOnClearanceStorageLocations: Boolean!
"Whether the stock on return storage locations counts. Only effective for warehouses with storage location management."
includeStockOnReturnStorageLocations: Boolean!
}
"Saved settings of the restock suggestion calculation, shared by all users. A template saved in the ERP without settings reads with the defaults."
type RestockSuggestionTemplate {
"The ID of the template."
id: ID!
"The name of the template. Names need not be unique."
name: String!
"The settings. An area or supplier they refer to may have been deleted or deactivated since; a calculation with the template then refuses."
settings: RestockSuggestionSettings!
}
"A template in a list."
type RestockSuggestionTemplateListEntry {
"The ID of the template."
id: ID!
"The name of the template."
name: String!
}
"A return of goods by a customer with its header data. Line items, labels and exchange items are read with their own queries."
type Return {
"The user who created the return."
createdBy: ID!
"When the return was created."
createdAt: DateTime!
"The ID of the return."
id: ID!
"The ID of the warehouse the goods are returned to."
warehouseId: ID
"The ID of the state of the return: the state of the line item that is least far along."
stateId: ID!
"The ID of the sales order the return belongs to. Null for a return without a sales order."
salesOrderId: ID
"The ID of the sales invoice correction for the sales order of the return. Null until it is created."
salesInvoiceCorrectionId: ID
"The ID of the exchange sales order created from the return. Null until it is created."
exchangeSalesOrderId: ID
"The ID of the customer. It is the customer of the sales order."
customerId: ID!
"The ID of the company the return belongs to."
companyId: ID!
"The address the goods are picked up from. Null when there is no pickup."
pickupAddress: ReturnPickupAddress
"Whether the return is reported to the sales channel of the sales order."
transmitToSalesChannel: Boolean!
"Whether the shipping costs are credited in the sales invoice correction."
refundShippingCosts: Boolean!
"How the return was announced: EMAIL, MANUAL, PHONE, FAX, FULFILLMENT_NETWORK, SCX, API, AMAZON; treat others as unknown. Null if not known."
origin: String
"The return number. It is assigned from the number range of the company."
number: String!
"A comment for internal use."
internalComment: String
"A number of the return in another system, for example the sales channel."
externalNumber: String
"A comment that can be shown to the customer."
externalComment: String
"The currency of the correction amount and the exchange items as ISO 4217 code, uppercase in responses, for example 'EUR'."
currencyCode: String
"Whether a returned bill of materials is credited completely in the sales invoice correction."
creditBillOfMaterialsCompletely: Boolean!
"How coupons are credited in the sales invoice correction. Known values: NONE, FULL, PROPORTIONAL; treat others as unknown."
couponCreditMode: String!
"The comment on the correction amount."
correctionAmountComment: String
"A gross amount added to the sales invoice correction as a free line item. Null means none."
correctionAmount: Decimal
"The contact person of the customer for this return."
contact: String
}
"Whether one action is allowed for a return or a line item."
type ReturnActionAvailability {
"The reasons why it is not, empty when it is allowed."
blockers: [ReturnActionBlocker!]!
"Whether the action is allowed right now."
isAllowed: Boolean!
"The stable key of the action, for example 'UPDATE' or 'SPLIT'. Treat unknown keys as not allowed."
action: String!
}
"One reason why an action is not allowed."
type ReturnActionBlocker {
"The ID of the line item that causes the block, if it is a single one."
returnLineItemId: ID
"Human-readable explanation in the language of the request."
message: String
"Stable machine-readable code of the reason, for example RETURN_HAS_ARRIVED_LINE_ITEMS."
code: String!
}
"What can be done with a return and its line items right now. It is a hint for user interfaces; every action checks again."
type ReturnAllowedActions {
"The ID of the return."
returnId: ID!
"The allowed actions per line item."
lineItems: [ReturnLineItemAllowedActions!]!
"Actions on the return: UPDATE, DELETE, CREATE_LINE_ITEM, UPDATE_EXCHANGE_ITEMS, CREATE_EXCHANGE_SALES_ORDER, CREATE_SALES_INVOICE_CORRECTIONS, CREATE_LABEL, GENERATE_LABELS."
actions: [ReturnActionAvailability!]!
}
"An item the customer gets in exchange for the return. Exchange items become the line items of the exchange sales order."
type ReturnExchangeItem {
"The ID of the exchange item."
id: ID!
"The ID of the item."
itemId: ID!
"The tax rate in percent, from the tax settings of the sales order."
taxRate: Decimal!
"The net sales price per unit."
salesPriceNet: Decimal!
"The gross sales price per unit, from the net price and the tax rate."
salesPriceGross: Decimal!
"The quantity."
quantity: Decimal!
"A note on the exchange item."
note: String
"The discount in percent."
discountPercent: Decimal!
}
"A return label for a return: the tracking number and whether a label file exists. The file itself is not part of the model."
type ReturnLabel {
"The user who added the label."
createdBy: ID
"When the label was added."
createdAt: DateTime
"The ID of the return label."
id: ID!
"The ID of the shipping method. Null when a custom shipping method name is used."
shippingMethodId: ID
"The ID of the return."
returnId: ID!
"The tracking number of the return shipment."
trackingNumber: String
"Whether a label file is stored for the label."
hasLabelFile: Boolean!
"The name of a shipping method that is not set up in Wawi."
customShippingMethodName: String
}
"A line item of a return: what is returned, how much, why and in which state."
type ReturnLineItem {
"The ID of the line item."
id: ID!
"The ID of the state of the line item."
stateId: ID!
"The ID of the return reason. Null when no reason was given."
returnReasonId: ID
"The ID of the return."
returnId: ID!
"The ID of the item. Null when the item was deleted."
itemId: ID
"The ID of the condition of the returned goods. Null when none was recorded."
itemConditionId: ID
"The ID of the delivery note line item that is returned. Null for a line item without one."
deliveryNoteLineItemId: ID
"The SKU of the item, as stored on the line item."
sku: String
"A comment on the return reason."
returnReasonComment: String
"The returned quantity."
quantity: Decimal!
"The name of the item, as stored on the line item."
name: String
"A comment on the condition of the goods."
itemConditionComment: String
"Whether the line item is credited in the sales invoice correction."
includeInSalesInvoiceCorrection: Boolean!
}
"What can be done with one line item of a return right now."
type ReturnLineItemAllowedActions {
"The ID of the line item."
returnLineItemId: ID!
"Actions on the line item: UPDATE, DELETE, SPLIT, CREATE_STATE_CHANGE, RECEIVE_GOODS. Treat unknown keys as not allowed."
actions: [ReturnActionAvailability!]!
}
"One change of the state of a return line item. The newest change of a line item is its current state."
type ReturnLineItemStateChange {
"The user who set the state."
createdBy: ID!
"When the state was set."
createdAt: DateTime!
"The ID of the state that was set."
stateId: ID!
"The ID of the line item."
returnLineItemId: ID!
"The comment given with the change."
comment: String
}
"An event a user can raise by hand on a return (the manual workflows menu in the Wawi). The workflows that listen to it start; raising it raises the event, not a single workflow."
type ReturnManualWorkflowEvent {
"The ID of the event."
id: ID!
"The display name of the event."
name: String!
"The position in the menu of the Wawi."
sortOrder: Int!
"How many active workflows listen to the event. Raising an event without any does nothing."
activeWorkflowCount: Int!
"The menu groups the event belongs to. Empty when it is not grouped."
groups: [ReturnManualWorkflowEventGroup!]!
}
"A group of manual events as the Wawi shows it in its menu."
type ReturnManualWorkflowEventGroup {
"The ID of the group."
id: ID!
"The name of the group."
name: String!
}
"The address the goods are picked up from."
type ReturnPickupAddress {
"The academic title."
title: String
"The street and house number."
street: String
"The state or region."
state: String
"The salutation."
salutation: String
"The postal code."
postalCode: String
"The customer number of a parcel station or post office, for example the DHL post number."
postId: String
"The phone number."
phoneNumber: String
"The mobile phone number."
mobileNumber: String
"The last name."
lastName: String
"The first name."
firstName: String
"The fax number."
fax: String
"The email address."
emailAddress: String
"The country as ISO 3166-1 alpha-2 code, uppercase in responses, for example 'DE'."
countryCode: String!
"The company name."
company: String
"The city."
city: String
"An additional company line."
additionalCompanyLine: String
"An additional address line."
additionalAddressLine: String
}
"A reason why a return line item is sent back, for example 'item arrived damaged'. Used for the detail."
type ReturnReason {
"The ID of the return reason."
id: ID!
"The name and the description in each active language the return reason has. At least the default language."
translations: [ReturnReasonTranslation!]!
"The colour of the return reason as #RRGGBB in capital letters."
color: String!
"The position of the return reason in selection lists, starting at 1."
sortOrder: Int!
"Whether the warehouse offers the return reason."
isVisibleInWms: Boolean!
"Where the return reason can be chosen."
restriction: ReturnReasonRestriction!
"The reason of the JTL Fulfillment Network this return reason is assigned to. Null if it is not assigned. Read only."
fulfillmentNetworkMapping: ReturnReasonFulfillmentNetworkMapping
"Whether this is the built-in return reason 'no reason given'. It cannot be deleted and its name in the default language cannot be changed."
isSystem: Boolean!
}
"Whether one action is allowed for a return reason."
type ReturnReasonActionAvailability {
"The stable key of the action: 'DELETE'."
action: String!
"Whether the action is allowed right now."
isAllowed: Boolean!
"The reasons why it is not, empty when it is allowed."
blockers: [ReturnReasonActionBlocker!]!
}
"One reason why an action on a return reason is not allowed."
type ReturnReasonActionBlocker {
"Stable machine-readable code of the reason, for example RETURN_REASON_IS_SYSTEM."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"What can be done with a return reason right now. It is a hint for user interfaces and can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type ReturnReasonAllowedActions {
"The actions, one entry per action."
actions: [ReturnReasonActionAvailability!]!
}
"The assignment of a return reason to a reason of the JTL Fulfillment Network."
type ReturnReasonFulfillmentNetworkMapping {
"The name of the reason of the JTL Fulfillment Network, for example OrderedByMistake."
reasonName: String!
"Whether this return reason is the one used when the fulfillment network reports its reason."
isDefault: Boolean!
}
"A return reason in a list: without the restrictions and the assignment to the fulfillment network."
type ReturnReasonListEntry {
"The ID of the return reason."
id: ID!
"The name and the description in each active language the return reason has."
translations: [ReturnReasonTranslation!]!
"The colour of the return reason as #RRGGBB in capital letters."
color: String!
"The position of the return reason in selection lists, starting at 1."
sortOrder: Int!
"Whether the warehouse offers the return reason."
isVisibleInWms: Boolean!
"Whether this is the built-in return reason 'no reason given'."
isSystem: Boolean!
}
"Where a return reason can be chosen. Both properties apply together: an item must be in one of the product groups and in one of the categories, when both are not empty."
type ReturnReasonRestriction {
"The product groups the return reason is restricted to; only items of these product groups can take it. Empty means no limit by product group."
productGroupIds: [ID!]!
"The categories the return reason is restricted to; only items of these categories can take it. Empty means no limit by category."
categoryIds: [ID!]!
}
"The name and description of a return reason in one language."
type ReturnReasonTranslation {
"The language as BCP 47 tag in canonical form (language lower-case, region upper-case, script title-case), for example 'de' or 'de-AT'."
languageTag: String!
"The name in that language."
name: String!
"The description in that language. Null if there is none."
description: String
}
"A state a return line item can be in. There are three system states, one per stage of the return process, and the states users add below them. Used for the detail and for the list."
type ReturnState {
"The ID of the return state."
id: ID!
"The ID of the system state this state is below. Null for the three system states themselves."
parentId: ID
"The stage of the return process. A state below a system state has the stage of that system state."
type: ReturnStateType!
"The name in each active language the return state has. At least the default language."
translations: [ReturnStateTranslation!]!
"The position among the states with the same parent, starting at 1. The system states cannot be moved."
sortOrder: Int!
"Whether the warehouse offers the return state."
isVisibleInWms: Boolean!
"Whether the return state can be set on return line items. System states are always active."
isActive: Boolean!
"Whether this is one of the three system states. Only their names can be changed."
isSystem: Boolean!
}
"Whether one action is allowed for a return state."
type ReturnStateActionAvailability {
"The stable key of the action: 'DELETE', 'DEACTIVATE' or 'ACTIVATE'."
action: String!
"Whether the action is allowed right now."
isAllowed: Boolean!
"The reasons why it is not, empty when it is allowed."
blockers: [ReturnStateActionBlocker!]!
}
"One reason why an action on a return state is not allowed."
type ReturnStateActionBlocker {
"Stable machine-readable code of the reason, for example RETURN_STATE_IS_SYSTEM."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"What can be done with a return state right now. It is a hint for user interfaces and can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type ReturnStateAllowedActions {
"The actions, one entry per action."
actions: [ReturnStateActionAvailability!]!
}
"The name of a return state in one language."
type ReturnStateTranslation {
"The language as BCP 47 tag in canonical form (language lower-case, region upper-case, script title-case), for example 'de' or 'de-AT'."
languageTag: String!
"The name in that language."
name: String!
}
"The revenue account a sale is posted to in one context: a tax zone, a tax class and a tax treatment, and for an override also the product group, shipping method or type of line item. The revenue account belongs to the tax code that applies in that context."
type RevenueAccountAssignment {
"The tax zone of the context."
taxZoneId: ID!
"The tax class of the context."
taxClassId: ID!
"How the sale is taxed in the context."
taxTreatment: TaxTreatment!
"Whether the assignment comes from the rate or from an override, and from which kind. Known values: RATE, PRODUCT_GROUP, SHIPPING_METHOD, LINE_ITEM_TYPE. New values can be added without a contract change."
scope: String!
"The product group. Set only for the scope ProductGroup."
productGroupId: ID
"The shipping method. Set only for the scope ShippingMethod."
shippingMethodId: ID
"The type of line item. Set only for the scope LineItemType. Known values: CUSTOM, SHIPPING, COUPON, PAYMENT, SHIPPING_SURCHARGE, NEW_CUSTOMER_COUPON, CASH_ON_DELIVERY, SHIPPING_SURCHARGE_ITEM, PACKING, GIFT_FOR_FREE, TRUSTED_SHOPS, INTEREST_PREMIUM, PROCESSING_FEE, CARTON, RETURN_DELIVERY, MULTI_PURPOSE_VOUCHER, MULTI_PURPOSE_VOUCHER_DIGITAL, SINGLE_PURPOSE_VOUCHER, SINGLE_PURPOSE_VOUCHER_DIGITAL, SINGLE_PURPOSE_VOUCHER_REDEMPTION. New types can be added without a contract change."
lineItemType: String
"The tax code that applies in the context. Empty when it is not fixed (see 'TaxCodeSource')."
taxCodeId: ID
"Where the tax code comes from when it is not fixed: the line with the highest value or with the highest rate. Set only for the scope ShippingMethod; then there is no tax code and no revenue account here. Known values: TAX_CODE, LINE_WITH_HIGHEST_VALUE, LINE_WITH_HIGHEST_RATE. New values can be added without a contract change."
taxCodeSource: String
"The revenue account of the tax code. Empty when the tax code has none, which is a gap in the setup; filter for it to find such gaps."
revenueAccount: String
}
"Asks the worker to run an idle, unlocked sync once now, outside its interval; interval and state stay as they were. - Response"
type RunWorkerSyncOnceCommandResponse {
"The key of the action that was requested: Start, Stop, Restart, RunOnce or ResetError."
actionId: String!
"When the request was accepted."
requestedAt: DateTime!
}
"A postal address on a sales document. It is a copy: changing the customer does not change it."
type SalesAddress {
"The academic title."
title: String
"The street and house number."
street: String
"The state or region."
state: String
"The salutation."
salutation: String
"The postal code."
postalCode: String
"The customer number of a parcel station or post office, for example the DHL post number."
postId: String
"The phone number."
phoneNumber: String
"The mobile phone number."
mobileNumber: String
"The last name."
lastName: String
"The first name."
firstName: String
"The fax number."
fax: String
"The email address."
emailAddress: String
"The country as ISO 3166-1 alpha-2 code, for example 'DE'."
countryCode: String!
"The company name."
company: String
"The city."
city: String
"An additional company line."
additionalCompanyLine: String
"An additional address line."
additionalAddressLine: String
}
"A currency a sales channel supports."
type SalesChannelCurrency {
"The currency as ISO 4217 code."
currencyCode: String!
"Whether it is the default currency of the sales channel."
isDefault: Boolean!
}
"A customer group of a sales channel."
type SalesChannelCustomerGroup {
"The ID of the customer group."
id: ID!
"Name of the customer group in the default language."
name: String!
"Whether it is the default customer group of the sales channel."
isDefault: Boolean!
}
"A surcharge on the price of an item that applies in one sales channel when a variation value is chosen. It takes precedence over the default surcharge of the value."
type SalesChannelSurcharge {
"The sales channel the surcharge applies in."
salesChannelId: ID!
"Surcharge in net."
surchargeNet: Decimal!
}
"A charge such as shipping, a payment fee or gift wrap."
type SalesChargeLineItem implements SalesLineItem {
"The ID of the line item."
id: ID!
"The net total of the line item after discount."
totalSalesPriceNet: Decimal!
"The gross total of the line item after discount."
totalSalesPriceGross: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The position of the line item in the document."
sortOrder: Int!
"The unit the quantity is sold in, for example 'pcs'."
salesUnit: String
"The net price per unit."
salesPriceNet: Decimal!
"The gross price per unit."
salesPriceGross: Decimal!
"The quantity."
quantity: Decimal!
"The net purchase price per unit when the line item was added."
purchasePriceNet: Decimal!
"A note on the line item."
note: String
"The name printed on the document."
name: String!
"The discount in percent."
discountPercent: Decimal!
"Discriminator of the line item type."
type: SalesLineItemType!
"The ID of the item the charge comes from, if any."
itemId: ID
"The type of the charge. Known values: SHIPPING, SHIPPING_SURCHARGE, SHIPPING_SURCHARGE_ITEM, PAYMENT_FEE, CASH_ON_DELIVERY_FEE, GIFT_WRAP, INTEREST, HANDLING_FEE, TRUSTED_SHOPS, RETURN_DELIVERY, FREE_GIFT. The type of a charge line item."
chargeType: String!
}
"A credit note to a customer without a sales invoice, also a draft. Positive amounts are a credit to the customer."
type SalesCreditNote {
"The ID of the document."
id: ID!
"The ID of the sales channel the document came from."
salesChannelId: ID
"The ID of the customer."
customerId: ID
"The ID of the company that issued the document."
companyId: ID
"The billing address as printed on the document."
billingAddress: SalesAddress
"The VAT ID of the customer as printed on the document."
vatIdNumber: String
"The exchange rate of the shipping country currency to the currency of the company."
shippingCountryCurrencyFactor: Decimal!
"The currency of the shipping country as ISO 4217 code, for example EUR."
shippingCountryCurrencyCode: String
"The revenue account for bookkeeping."
revenueAccount: String
"When the document was last printed."
printedAt: DateTime
"The number of the document. Empty for a draft."
number: String
"A note printed on the document."
note: String
"The net total of all line items."
netTotal: Decimal!
"When the document was last sent by e-mail."
mailedAt: DateTime
"The language of the document as BCP 47 language tag, for example de. Wawi currently holds only the language subtag."
languageTag: String
"The gross total of all line items."
grossTotal: Decimal!
"The GLN (global location number) of the customer as printed on the document."
gln: String
"The customer number at the time of the document."
customerNumber: String
"The exchange rate to the currency of the company."
currencyFactor: Decimal!
"The currency of the document as ISO 4217 code, for example EUR."
currencyCode: String
"The ID of the cancellation document when the credit note is cancelled. See GetSalesCreditNoteCancellation."
salesCreditNoteCancellationId: ID
"The user who created the credit note."
createdBy: ID
"Whether the credit note is a draft or final."
status: SalesCreditNoteStatus!
"Whether the credit note was created outside Wawi, for example by a marketplace."
isExternal: Boolean!
"Whether the credit note is cancelled."
isCancelled: Boolean!
"A free status text set by the user."
customStatus: String
"When the credit note was created in Wawi."
createdAt: DateTime
}
"Whether one action on a sales credit note is allowed right now."
type SalesCreditNoteActionAvailability {
"The key of the action, for example CANCEL_SALES_CREDIT_NOTE. A client that does not know a key ignores the entry."
actionId: String!
"The reasons why it is not, empty when it is allowed. A refused action sends the same codes in extensions.blockers."
blockers: [SalesCreditNoteActionBlocker!]!
"Whether the action is allowed right now."
isAllowed: Boolean!
}
"One reason why an action on a sales credit note is not allowed. A refused action sends these in extensions.blockers."
type SalesCreditNoteActionBlocker {
"Human-readable explanation in the language of the request."
message: String
"Stable code of the reason in UPPER_SNAKE_CASE. New codes can be added; treat an unknown code as 'not allowed'."
code: String!
}
"What can be done with a sales credit note right now. A hint only; the action checks again and sends the same codes in extensions.blockers."
type SalesCreditNoteAllowedActions {
"One entry per action, allowed or not."
actions: [SalesCreditNoteActionAvailability!]!
}
"A document that cancels a sales credit note. Its amounts are negative."
type SalesCreditNoteCancellation {
"The ID of the document."
id: ID!
"The ID of the sales channel the document came from."
salesChannelId: ID
"The ID of the customer."
customerId: ID
"The ID of the company that issued the document."
companyId: ID
"The billing address as printed on the document."
billingAddress: SalesAddress
"The VAT ID of the customer as printed on the document."
vatIdNumber: String
"The exchange rate of the shipping country currency to the currency of the company."
shippingCountryCurrencyFactor: Decimal!
"The currency of the shipping country as ISO 4217 code, for example EUR."
shippingCountryCurrencyCode: String
"The revenue account for bookkeeping."
revenueAccount: String
"When the document was last printed."
printedAt: DateTime
"The number of the document. Empty for a draft."
number: String
"A note printed on the document."
note: String
"The net total of all line items."
netTotal: Decimal!
"When the document was last sent by e-mail."
mailedAt: DateTime
"The language of the document as BCP 47 language tag, for example de. Wawi currently holds only the language subtag."
languageTag: String
"The gross total of all line items."
grossTotal: Decimal!
"The GLN (global location number) of the customer as printed on the document."
gln: String
"The customer number at the time of the document."
customerNumber: String
"The exchange rate to the currency of the company."
currencyFactor: Decimal!
"The currency of the document as ISO 4217 code, for example EUR."
currencyCode: String
"The ID of the cancelled sales credit note."
cancelledSalesCreditNoteId: ID!
"The user who cancelled."
cancelledBy: ID
"The reason, see GetSalesInvoiceCorrectionCancellationReason. Empty when no reason was given."
cancellationReasonId: ID
"When the credit note was cancelled."
cancelledAt: DateTime
"The name of the cancellation reason. Empty when no reason was given or the reason was deleted."
cancellationReason: String
"The comment given with the cancellation."
cancellationComment: String
}
"A line item of a document that cancels a sales credit note. Its amounts are negative."
type SalesCreditNoteCancellationLineItem {
"The ID of the line item."
id: ID!
"The parent line item when this is a component of a kit."
parentLineItemId: ID
"The ID of the item. Empty for a free line or a deleted item."
itemId: ID
"The code of the unit the quantity is given in. The codes come from QueryUnitCodes."
unitCode: String
"The net total of the line item after discount."
totalSalesPriceNet: Decimal!
"The gross total of the line item after discount."
totalSalesPriceGross: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The position of the line item on the document."
sortOrder: Int!
"The SKU of the item at the time of the document."
sku: String
"The net price per unit."
salesPriceNet: Decimal!
"The gross price per unit."
salesPriceGross: Decimal!
"The quantity. It is always positive."
quantity: Decimal!
"The name of the line item as printed on the document."
name: String
"Whether the line item books back a cash discount."
isCashDiscountCounterBooking: Boolean!
"The discount in percent."
discountPercent: Decimal!
"The ID of the cancellation document."
salesCreditNoteCancellationId: ID!
"The variation values of the item, for example size. Empty for other line items."
variations: [SalesCreditNoteLineItemVariation!]!
}
"A line item of a sales credit note. It has no sales order or sales invoice line behind it."
type SalesCreditNoteLineItem {
"The ID of the line item."
id: ID!
"The parent line item when this is a component of a kit."
parentLineItemId: ID
"The ID of the item. Empty for a free line or a deleted item."
itemId: ID
"The code of the unit the quantity is given in. The codes come from QueryUnitCodes."
unitCode: String
"The net total of the line item after discount."
totalSalesPriceNet: Decimal!
"The gross total of the line item after discount."
totalSalesPriceGross: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The position of the line item on the document."
sortOrder: Int!
"The SKU of the item at the time of the document."
sku: String
"The net price per unit."
salesPriceNet: Decimal!
"The gross price per unit."
salesPriceGross: Decimal!
"The quantity. It is always positive."
quantity: Decimal!
"The name of the line item as printed on the document."
name: String
"Whether the line item books back a cash discount."
isCashDiscountCounterBooking: Boolean!
"The discount in percent."
discountPercent: Decimal!
"The ID of the sales credit note."
salesCreditNoteId: ID!
"The variation values of the item, for example size. Empty for other line items."
variations: [SalesCreditNoteLineItemVariation!]!
}
"A variation value of an item line item, for example a size. Names can be empty when the variation no longer exists."
type SalesCreditNoteLineItemVariation {
"The ID of the chosen value."
variationValueId: ID!
"The ID of the variation. Empty when it no longer exists."
variationId: ID
"The chosen value. Empty when it no longer exists."
value: String
"The net surcharge per unit for this value, as stored on the document."
surchargeNet: Decimal!
"The name of the variation, for example 'Size'. Empty when it no longer exists."
name: String
}
"A free line item without an item of the catalog."
type SalesCustomLineItem implements SalesLineItem {
"The ID of the line item."
id: ID!
"The net total of the line item after discount."
totalSalesPriceNet: Decimal!
"The gross total of the line item after discount."
totalSalesPriceGross: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The position of the line item in the document."
sortOrder: Int!
"The unit the quantity is sold in, for example 'pcs'."
salesUnit: String
"The net price per unit."
salesPriceNet: Decimal!
"The gross price per unit."
salesPriceGross: Decimal!
"The quantity."
quantity: Decimal!
"The net purchase price per unit when the line item was added."
purchasePriceNet: Decimal!
"A note on the line item."
note: String
"The name printed on the document."
name: String!
"The discount in percent."
discountPercent: Decimal!
"Discriminator of the line item type."
type: SalesLineItemType!
"A free SKU of the line item."
sku: String
}
"A discount such as a coupon. Its price is negative."
type SalesDiscountLineItem implements SalesLineItem {
"The ID of the line item."
id: ID!
"The net total of the line item after discount."
totalSalesPriceNet: Decimal!
"The gross total of the line item after discount."
totalSalesPriceGross: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The position of the line item in the document."
sortOrder: Int!
"The unit the quantity is sold in, for example 'pcs'."
salesUnit: String
"The net price per unit."
salesPriceNet: Decimal!
"The gross price per unit."
salesPriceGross: Decimal!
"The quantity."
quantity: Decimal!
"The net purchase price per unit when the line item was added."
purchasePriceNet: Decimal!
"A note on the line item."
note: String
"The name printed on the document."
name: String!
"The discount in percent."
discountPercent: Decimal!
"Discriminator of the line item type."
type: SalesLineItemType!
"The type of the discount. Known values: COUPON, NEW_CUSTOMER_COUPON, LEGACY_VOUCHER. The type of a discount line item."
discountType: String!
}
"A sales invoice: the bill for the goods and services of one or more sales orders. A draft has no number and can be edited; a finalized invoice is binding and is changed only by cancelling it or by a correction. Line items are read with \"QuerySalesInvoiceLineItemsBySalesInvoiceId\". Payment state and amounts are read with \"GetSalesInvoicePaymentBalance\"."
type SalesInvoice {
"The ID of the sales invoice."
id: ID!
"The invoice number. Absent for a draft."
number: String
"Where the invoice stands: DRAFT, FINALIZED or CANCELLED."
status: SalesInvoiceStatus!
"Whether the invoice was created outside the ERP and only recorded here."
isExternal: Boolean!
"The invoice date."
invoiceDate: DateTime!
"The date from which the payment term runs."
valueDate: DateTime!
"The start of the delivery or service period."
serviceDateFrom: DateTime
"The end of the delivery or service period."
serviceDateTo: DateTime
"When the invoice was created."
createdAt: DateTime!
"The user who created the invoice."
createdBy: ID
"The name of the user who created the invoice."
createdByName: String
"The company that issued the invoice."
companyId: ID
"The name of the company."
companyName: String
"The ID of the customer."
customerId: ID
"The customer number as recorded on the invoice."
customerNumber: String
"The name of the customer group as recorded on the invoice."
customerGroupName: String
"The accounts receivable number of the customer."
accountsReceivableNumber: Int
"The VAT ID on the invoice."
vatId: String
"The sales channel the invoice belongs to. Tenant-local, composite identifier, not a UUID. Valid values are listed by the sales channel endpoint (GET)."
salesChannelId: ID!
"The name of the sales channel."
salesChannelName: String
"The language of the invoice as BCP 47 language tag, for example de or de-AT: language subtag in lower case, region subtag in upper case. Wawi currently holds only the two-letter language subtag."
languageTag: String
"The currency of the invoice as ISO 4217 code."
currencyCode: String!
"How the invoice is taxed, with the values of the tax treatment of the taxes API: TAXABLE, INTRA_COMMUNITY_DELIVERY, REVERSE_CHARGE or EXEMPT. New values can be added; treat an unknown value as unknown."
taxTreatment: String!
"The ID of the payment method."
paymentMethodId: ID
"The name of the payment method."
paymentMethodName: String
"The ID of the shipping method."
shippingMethodId: ID
"The name of the shipping method."
shippingMethodName: String
"The billing address. A copy: changing the customer does not change it."
billingAddress: SalesAddress!
"The address the goods are shipped to. A copy."
shipmentAddress: SalesAddress!
"The payment terms."
paymentTerms: SalesInvoicePaymentTerms!
"The sales orders the invoice was created for."
salesOrders: [SalesInvoiceSalesOrderReference!]!
"The order number of the external system."
externalSalesOrderNumber: String
"The date of the last shipment of the goods."
lastShippingDate: DateTime
"An internal note on the invoice."
note: String
"A comment of the customer."
customerComment: String
"A text printed on the invoice."
printText: String
"The net total; never negated, so a normal invoice is not negative."
netTotal: Decimal!
"The gross total; never negated, so a normal invoice is not negative."
grossTotal: Decimal!
"When the invoice was last printed."
printedAt: DateTime
"When the invoice was last sent by mail."
mailedAt: DateTime
"Whether a correction of the invoice exists that is not cancelled."
hasCorrection: Boolean!
"The gross total of the corrections that are not cancelled."
correctionGrossTotal: Decimal!
"Whether the invoice is archived."
isArchived: Boolean!
"Whether dunning is blocked for the invoice. It is changed with the dunning block of the invoice."
isDunningBlocked: Boolean!
"The current dunning level; absent when the invoice was not dunned."
dunningLevel: Int
"When the invoice was last dunned."
dunnedAt: DateTime
"The ID of the cancellation document. Only when the invoice is cancelled."
salesInvoiceCancellationId: ID
"The ID of the cancellation reason, the same ID the cancel input takes; the reason is read by this ID from the cancellation reasons of sales invoices. Only when the invoice is cancelled; Wawi stores 0 when no reason was given, returned as null. The reason may have been deleted since (the cancellation keeps the ID), then the ID no longer resolves."
cancellationReasonId: ID
"The name of the cancellation reason. Only when the invoice is cancelled."
cancellationReason: String
"The comment on the cancellation. Only when the invoice is cancelled."
cancellationComment: String
"The user who cancelled the invoice. Only when the invoice is cancelled."
cancelledBy: ID
"The name of the user who cancelled the invoice."
cancelledByName: String
"When the invoice was cancelled. Only when the invoice is cancelled."
cancelledAt: DateTime
}
"Whether one action is allowed right now."
type SalesInvoiceActionAvailability {
"Stable key of the action in UPPER_SNAKE_CASE, for example FINALIZE_SALES_INVOICE. New actions can be added."
actionId: String!
"Whether the action is allowed right now."
isAllowed: Boolean!
"The reasons why it is not allowed. Empty when it is allowed."
blockers: [SalesInvoiceActionBlocker!]!
}
"One reason why an action on a sales invoice cannot be done."
type SalesInvoiceActionBlocker {
"Stable machine-readable code of the reason in UPPER_SNAKE_CASE, for example SALES_INVOICE_NOT_DRAFT. New codes can be added; treat an unknown code as 'not allowed'."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"What can be done with a sales invoice right now. A hint for user interfaces that can be outdated with the next change; the action itself always checks again and refuses with the same codes. Actions: UPDATE_SALES_INVOICE, DELETE_SALES_INVOICE, UPDATE_SALES_INVOICE_LINE_ITEM, DELETE_SALES_INVOICE_LINE_ITEM, CREATE_SALES_INVOICE_SHIPPING_LINE_ITEM, FINALIZE_SALES_INVOICE, CANCEL_SALES_INVOICE."
type SalesInvoiceAllowedActions {
"One entry per action, allowed or not."
actions: [SalesInvoiceActionAvailability!]!
}
"A line item of a cancellation document. Positive when it cancels a sales invoice, negative when it cancels a correction."
type SalesInvoiceCancellationLineItem {
"The ID of the line item."
id: ID!
"The parent line item when this is a component of a kit."
parentLineItemId: ID
"The ID of the item. Empty for a free line or a deleted item."
itemId: ID
"The code of the unit the quantity is given in. The codes come from QueryUnitCodes."
unitCode: String
"The net total of the line item after discount."
totalSalesPriceNet: Decimal!
"The gross total of the line item after discount."
totalSalesPriceGross: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The position of the line item on the document."
sortOrder: Int!
"The SKU of the item at the time of the document."
sku: String
"The net price per unit."
salesPriceNet: Decimal!
"The gross price per unit."
salesPriceGross: Decimal!
"The quantity. It is always positive."
quantity: Decimal!
"The name of the line item as printed on the document."
name: String
"Whether the line item books back a cash discount."
isCashDiscountCounterBooking: Boolean!
"The discount in percent."
discountPercent: Decimal!
"The ID of the sales order line item this line comes from."
salesOrderLineItemId: ID
"The ID of the sales invoice line item this line cancels."
salesInvoiceLineItemId: ID
"The ID of the cancellation document."
salesInvoiceCancellationId: ID!
"The variation values of the item, for example size. Empty for other line items."
variations: [SalesInvoiceCorrectionLineItemVariation!]!
}
"A document that cancels a sales invoice. Its amounts are positive."
type SalesInvoiceCancellationOfSalesInvoice implements SalesInvoiceCancellation {
"The ID of the document."
id: ID!
"The ID of the sales channel the document came from."
salesChannelId: ID
"The ID of the customer."
customerId: ID
"The ID of the company that issued the document."
companyId: ID
"The billing address as printed on the document."
billingAddress: SalesAddress
"The VAT ID of the customer as printed on the document."
vatIdNumber: String
"The exchange rate of the shipping country currency to the currency of the company."
shippingCountryCurrencyFactor: Decimal!
"The currency of the shipping country as ISO 4217 code, for example EUR."
shippingCountryCurrencyCode: String
"The revenue account for bookkeeping."
revenueAccount: String
"When the document was last printed."
printedAt: DateTime
"The number of the document. Empty for a draft."
number: String
"A note printed on the document."
note: String
"The net total of all line items."
netTotal: Decimal!
"When the document was last sent by e-mail."
mailedAt: DateTime
"The language of the document as BCP 47 language tag, for example de. Wawi currently holds only the language subtag."
languageTag: String
"The gross total of all line items."
grossTotal: Decimal!
"The GLN (global location number) of the customer as printed on the document."
gln: String
"The customer number at the time of the document."
customerNumber: String
"The exchange rate to the currency of the company."
currencyFactor: Decimal!
"The currency of the document as ISO 4217 code, for example EUR."
currencyCode: String
"The ID of the sales invoice the cancelled document belongs to."
salesInvoiceId: ID!
"The user who cancelled."
cancelledBy: ID
"The number of the sales invoice the cancelled document belongs to."
salesInvoiceNumber: String
"Whether the cancelled document was created outside Wawi, for example by a marketplace. Always false for a cancelled sales invoice."
isExternal: Boolean!
"Which document is cancelled. It selects the variant."
documentType: SalesInvoiceCancellationDocumentType!
"When the document was cancelled."
cancelledAt: DateTime
"The name of the cancellation reason. Empty when no reason was given or the reason was deleted."
cancellationReason: String
"The comment given with the cancellation."
cancellationComment: String
"The ID of the cancelled sales invoice."
cancelledSalesInvoiceId: ID!
"The ID of the reason, see GetSalesInvoiceCancellationReason. Empty when no reason was given."
cancellationReasonId: ID
}
"A document that cancels a sales invoice correction. Its amounts are negative."
type SalesInvoiceCancellationOfSalesInvoiceCorrection implements SalesInvoiceCancellation {
"The ID of the document."
id: ID!
"The ID of the sales channel the document came from."
salesChannelId: ID
"The ID of the customer."
customerId: ID
"The ID of the company that issued the document."
companyId: ID
"The billing address as printed on the document."
billingAddress: SalesAddress
"The VAT ID of the customer as printed on the document."
vatIdNumber: String
"The exchange rate of the shipping country currency to the currency of the company."
shippingCountryCurrencyFactor: Decimal!
"The currency of the shipping country as ISO 4217 code, for example EUR."
shippingCountryCurrencyCode: String
"The revenue account for bookkeeping."
revenueAccount: String
"When the document was last printed."
printedAt: DateTime
"The number of the document. Empty for a draft."
number: String
"A note printed on the document."
note: String
"The net total of all line items."
netTotal: Decimal!
"When the document was last sent by e-mail."
mailedAt: DateTime
"The language of the document as BCP 47 language tag, for example de. Wawi currently holds only the language subtag."
languageTag: String
"The gross total of all line items."
grossTotal: Decimal!
"The GLN (global location number) of the customer as printed on the document."
gln: String
"The customer number at the time of the document."
customerNumber: String
"The exchange rate to the currency of the company."
currencyFactor: Decimal!
"The currency of the document as ISO 4217 code, for example EUR."
currencyCode: String
"The ID of the sales invoice the cancelled document belongs to."
salesInvoiceId: ID!
"The user who cancelled."
cancelledBy: ID
"The number of the sales invoice the cancelled document belongs to."
salesInvoiceNumber: String
"Whether the cancelled document was created outside Wawi, for example by a marketplace. Always false for a cancelled sales invoice."
isExternal: Boolean!
"Which document is cancelled. It selects the variant."
documentType: SalesInvoiceCancellationDocumentType!
"When the document was cancelled."
cancelledAt: DateTime
"The name of the cancellation reason. Empty when no reason was given or the reason was deleted."
cancellationReason: String
"The comment given with the cancellation."
cancellationComment: String
"The ID of the cancelled sales invoice correction."
cancelledSalesInvoiceCorrectionId: ID!
"The ID of the reason, see GetSalesInvoiceCorrectionCancellationReason. Empty when no reason was given."
cancellationReasonId: ID
}
"A reason for cancelling a sales invoice. The model serves list and detail alike."
type SalesInvoiceCancellationReason {
"The name of the reason."
name: String!
"Whether a comment has to be given when a document is cancelled with this reason."
isCommentRequired: Boolean!
"Whether Wawi created the reason itself during setup. System reasons cannot be changed or deleted, because Wawi relies on them, for example as the fallback when a cancellation comes in without a reason."
isSystem: Boolean!
"The ID of the cancellation reason for sales invoices."
id: ID!
}
"A charge such as shipping or a payment fee."
type SalesInvoiceChargeLineItem implements SalesInvoiceLineItem {
"The ID of the line item."
id: ID!
"The position of the line item on the invoice."
sortOrder: Int!
"The name of the line item."
name: String!
"A note on the line item."
note: String
"The quantity."
quantity: Decimal!
"The unit the quantity is sold in, for example 'pcs'."
salesUnit: String
"The net price per unit."
salesPriceNet: Decimal!
"The gross price per unit."
salesPriceGross: Decimal!
"The discount in percent."
discountPercent: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The net total of the line item after discount."
totalSalesPriceNet: Decimal!
"The gross total of the line item after discount."
totalSalesPriceGross: Decimal!
"The line item of the sales order this line item comes from. Absent for a line item without an order link; only those can change quantity, price, discount and tax rate on a draft."
salesOrderLineItemId: ID
"Discriminator of the line item type."
type: SalesLineItemType!
"The item behind the charge, if any."
itemId: ID
"The type of the charge. Known values: SHIPPING, SHIPPING_SURCHARGE, SHIPPING_SURCHARGE_ITEM, PAYMENT_FEE, CASH_ON_DELIVERY_FEE, GIFT_WRAP, INTEREST, HANDLING_FEE, TRUSTED_SHOPS, RETURN_DELIVERY, FREE_GIFT. New values can be added; treat an unknown value as unknown."
chargeType: String!
}
"A line item of a sales invoice with what is invoiced, already credited and still open for a correction."
type SalesInvoiceCorrectableLineItem {
"The ID of the sales order line item the invoice line comes from."
salesOrderLineItemId: ID
"The ID of the sales invoice line item. Use it in CreateSalesInvoiceCorrection."
salesInvoiceLineItemId: ID!
"The ID of the sales invoice."
salesInvoiceId: ID!
"The ID of the item. Empty for a free line or a deleted item."
itemId: ID
"The tax rate in percent."
taxRate: Decimal!
"The position of the line item on the sales invoice."
sortOrder: Int!
"The SKU of the item on the sales invoice."
sku: String
"The net price per unit on the sales invoice. A correction line uses it when no price is sent."
salesPriceNet: Decimal!
"The net amount still open for a correction. Never below zero."
remainingTotalNet: Decimal!
"The gross amount still open for a correction. Never below zero."
remainingTotalGross: Decimal!
"The quantity still open for a correction. Never below zero."
remainingQuantity: Decimal!
"The name of the line item on the sales invoice."
name: String
"The net total of the line item on the sales invoice."
invoicedTotalNet: Decimal!
"The gross total of the line item on the sales invoice."
invoicedTotalGross: Decimal!
"The quantity on the sales invoice."
invoicedQuantity: Decimal!
"The net amount already credited, drafts included and cancelled corrections left out."
creditedTotalNet: Decimal!
"The gross amount already credited, drafts included and cancelled corrections left out."
creditedTotalGross: Decimal!
"The quantity already credited, drafts included, cancelled corrections left out. Only lines that lower the ordered quantity count."
creditedQuantity: Decimal!
}
"A sales invoice correction for a sales invoice, also a draft. Positive amounts are a credit to the customer."
type SalesInvoiceCorrection {
"The ID of the document."
id: ID!
"The ID of the sales channel the document came from."
salesChannelId: ID
"The ID of the customer."
customerId: ID
"The ID of the company that issued the document."
companyId: ID
"The billing address as printed on the document."
billingAddress: SalesAddress
"The VAT ID of the customer as printed on the document."
vatIdNumber: String
"The exchange rate of the shipping country currency to the currency of the company."
shippingCountryCurrencyFactor: Decimal!
"The currency of the shipping country as ISO 4217 code, for example EUR."
shippingCountryCurrencyCode: String
"The revenue account for bookkeeping."
revenueAccount: String
"When the document was last printed."
printedAt: DateTime
"The number of the document. Empty for a draft."
number: String
"A note printed on the document."
note: String
"The net total of all line items."
netTotal: Decimal!
"When the document was last sent by e-mail."
mailedAt: DateTime
"The language of the document as BCP 47 language tag, for example de. Wawi currently holds only the language subtag."
languageTag: String
"The gross total of all line items."
grossTotal: Decimal!
"The GLN (global location number) of the customer as printed on the document."
gln: String
"The customer number at the time of the document."
customerNumber: String
"The exchange rate to the currency of the company."
currencyFactor: Decimal!
"The currency of the document as ISO 4217 code, for example EUR."
currencyCode: String
"The ID of the sales invoice the correction belongs to."
salesInvoiceId: ID!
"The ID of the cancellation document when the correction is cancelled. See GetSalesInvoiceCancellation."
salesInvoiceCancellationId: ID
"The ID of the return the correction was created from."
returnId: ID
"The user who created the correction."
createdBy: ID
"Whether the refund is passed on to the sales channel."
transferRefundToSalesChannel: Boolean!
"Whether the correction is a draft or final."
status: SalesInvoiceCorrectionStatus!
"The number of the sales invoice the correction belongs to."
salesInvoiceNumber: String
"Whether the correction was created outside Wawi, for example by a marketplace."
isExternal: Boolean!
"Whether the correction is cancelled."
isCancelled: Boolean!
"A free status text set by the user."
customStatus: String
"When the correction was created in Wawi."
createdAt: DateTime
}
"Whether one action on a sales invoice correction is allowed right now."
type SalesInvoiceCorrectionActionAvailability {
"The key of the action, for example CANCEL_SALES_INVOICE_CORRECTION. A client that does not know a key ignores the entry."
actionId: String!
"The reasons why it is not, empty when it is allowed. A refused action sends the same codes in extensions.blockers."
blockers: [SalesInvoiceCorrectionActionBlocker!]!
"Whether the action is allowed right now."
isAllowed: Boolean!
}
"One reason why an action on a sales invoice correction is not allowed. A refused action sends these in extensions.blockers."
type SalesInvoiceCorrectionActionBlocker {
"Human-readable explanation in the language of the request."
message: String
"Stable code of the reason in UPPER_SNAKE_CASE. New codes can be added; treat an unknown code as 'not allowed'."
code: String!
}
"What can be done with a sales invoice correction right now. A hint only; the action checks again and sends the same codes in extensions.blockers."
type SalesInvoiceCorrectionAllowedActions {
"One entry per action, allowed or not."
actions: [SalesInvoiceCorrectionActionAvailability!]!
}
"A reason for cancelling a sales invoice correction. The model serves list and detail alike."
type SalesInvoiceCorrectionCancellationReason {
"The name of the reason."
name: String!
"Whether a comment has to be given when a document is cancelled with this reason."
isCommentRequired: Boolean!
"Whether Wawi created the reason itself during setup. System reasons cannot be changed or deleted, because Wawi relies on them, for example as the fallback when a cancellation comes in without a reason."
isSystem: Boolean!
"The ID of the cancellation reason for sales invoice corrections."
id: ID!
}
"A line item created together with its sales invoice correction."
type SalesInvoiceCorrectionCreatedLineItem {
"The ID of the sales invoice line item the new line credits."
salesInvoiceLineItemId: ID!
"The ID of the new line item."
salesInvoiceCorrectionLineItemId: ID!
"The temporary ID of the request line, if one was sent."
clientId: String
}
"A line item of a sales invoice correction."
type SalesInvoiceCorrectionLineItem {
"The ID of the line item."
id: ID!
"The parent line item when this is a component of a kit."
parentLineItemId: ID
"The ID of the item. Empty for a free line or a deleted item."
itemId: ID
"The code of the unit the quantity is given in. The codes come from QueryUnitCodes."
unitCode: String
"The net total of the line item after discount."
totalSalesPriceNet: Decimal!
"The gross total of the line item after discount."
totalSalesPriceGross: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The position of the line item on the document."
sortOrder: Int!
"The SKU of the item at the time of the document."
sku: String
"The net price per unit."
salesPriceNet: Decimal!
"The gross price per unit."
salesPriceGross: Decimal!
"The quantity. It is always positive."
quantity: Decimal!
"The name of the line item as printed on the document."
name: String
"Whether the line item books back a cash discount."
isCashDiscountCounterBooking: Boolean!
"The discount in percent."
discountPercent: Decimal!
"The ID of the sales order line item this line comes from."
salesOrderLineItemId: ID
"The ID of the sales invoice line item this line corrects."
salesInvoiceLineItemId: ID
"The ID of the sales invoice correction."
salesInvoiceCorrectionId: ID!
"The variation values of the item, for example size. Empty for other line items."
variations: [SalesInvoiceCorrectionLineItemVariation!]!
"Whether the line item lowers the ordered quantity of the sales order."
reducesOrderedQuantity: Boolean!
"Whether the line item lowers the delivered quantity of the sales order."
reducesDeliveredQuantity: Boolean!
}
"A variation value of an item line item, for example a size. Names can be empty when the variation no longer exists."
type SalesInvoiceCorrectionLineItemVariation {
"The ID of the chosen value."
variationValueId: ID!
"The ID of the variation. Empty when it no longer exists."
variationId: ID
"The chosen value. Empty when it no longer exists."
value: String
"The net surcharge per unit for this value, as stored on the document."
surchargeNet: Decimal!
"The name of the variation, for example 'Size'. Empty when it no longer exists."
name: String
}
"A free line item."
type SalesInvoiceCustomLineItem implements SalesInvoiceLineItem {
"The ID of the line item."
id: ID!
"The position of the line item on the invoice."
sortOrder: Int!
"The name of the line item."
name: String!
"A note on the line item."
note: String
"The quantity."
quantity: Decimal!
"The unit the quantity is sold in, for example 'pcs'."
salesUnit: String
"The net price per unit."
salesPriceNet: Decimal!
"The gross price per unit."
salesPriceGross: Decimal!
"The discount in percent."
discountPercent: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The net total of the line item after discount."
totalSalesPriceNet: Decimal!
"The gross total of the line item after discount."
totalSalesPriceGross: Decimal!
"The line item of the sales order this line item comes from. Absent for a line item without an order link; only those can change quantity, price, discount and tax rate on a draft."
salesOrderLineItemId: ID
"Discriminator of the line item type."
type: SalesLineItemType!
"A SKU, if the line has one."
sku: String
}
"A discount such as a coupon."
type SalesInvoiceDiscountLineItem implements SalesInvoiceLineItem {
"The ID of the line item."
id: ID!
"The position of the line item on the invoice."
sortOrder: Int!
"The name of the line item."
name: String!
"A note on the line item."
note: String
"The quantity."
quantity: Decimal!
"The unit the quantity is sold in, for example 'pcs'."
salesUnit: String
"The net price per unit."
salesPriceNet: Decimal!
"The gross price per unit."
salesPriceGross: Decimal!
"The discount in percent."
discountPercent: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The net total of the line item after discount."
totalSalesPriceNet: Decimal!
"The gross total of the line item after discount."
totalSalesPriceGross: Decimal!
"The line item of the sales order this line item comes from. Absent for a line item without an order link; only those can change quantity, price, discount and tax rate on a draft."
salesOrderLineItemId: ID
"Discriminator of the line item type."
type: SalesLineItemType!
"The type of the discount. Known values: COUPON, NEW_CUSTOMER_COUPON, LEGACY_VOUCHER. New values can be added; treat an unknown value as unknown."
discountType: String!
}
"Where a sales invoice stands in the dunning procedure."
type SalesInvoiceDunningStatus {
"The ID of the sales invoice."
salesInvoiceId: ID!
"Whether dunning is blocked for this invoice."
isBlocked: Boolean!
"Whether dunning is blocked for the customer of the invoice, which blocks all of its invoices."
isBlockedByCustomer: Boolean!
"Whether the invoice has at least one dunning notice."
isDunned: Boolean!
"The ID of the current notice. Empty if the invoice has not been dunned."
currentDunningNoticeId: ID
"The level number of the current notice. Empty if the invoice has not been dunned."
currentLevelNumber: Int
"The dunning date of the current notice. Empty if the invoice has not been dunned."
lastDunningDate: DateTime
"The current payment due date: the one of the current notice, or of the invoice if it has not been dunned or the notice sets none."
paymentDueDate: DateTime
"The dunning fee the invoice currently carries: the fee of its current notice. 0 if it has not been dunned."
fee: Decimal!
"The part of that fee that has not been paid yet. Dunning fees are paid as payments of the invoice with the payment type for dunning fees."
openFee: Decimal!
"The ISO 4217 code of the currency of the invoice."
currencyCode: String!
"The next notice and whether it can be issued now."
nextNotice: DunningNextNotice!
}
"A file attached to a sales invoice. Only the metadata and a reference: the content is not part of this API, download it from DownloadUrl. Files are uploaded with the master data file upload."
type SalesInvoiceFile {
"The ID of the attachment."
id: ID!
"The user who attached the file."
createdBy: ID
"The size of the file in bytes."
size: Long!
"The name of the file."
fileName: String!
"When the file was attached."
createdAt: DateTime!
"The ID of the file in the blob storage, if it is stored there. 'GetFileById' returns its state."
blobIdentifier: UUID
"A short-lived signed download URL of the file, if one can be created. Do not store it."
downloadUrl: String
}
"A line item for an item of the catalog."
type SalesInvoiceItemLineItem implements SalesInvoiceLineItem {
"The ID of the line item."
id: ID!
"The position of the line item on the invoice."
sortOrder: Int!
"The name of the line item."
name: String!
"A note on the line item."
note: String
"The quantity."
quantity: Decimal!
"The unit the quantity is sold in, for example 'pcs'."
salesUnit: String
"The net price per unit."
salesPriceNet: Decimal!
"The gross price per unit."
salesPriceGross: Decimal!
"The discount in percent."
discountPercent: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The net total of the line item after discount."
totalSalesPriceNet: Decimal!
"The gross total of the line item after discount."
totalSalesPriceGross: Decimal!
"The line item of the sales order this line item comes from. Absent for a line item without an order link; only those can change quantity, price, discount and tax rate on a draft."
salesOrderLineItemId: ID
"Discriminator of the line item type."
type: SalesLineItemType!
"The parent line item when this is a component of a kit or configurable item."
parentLineItemId: ID
"The ID of the item."
itemId: ID!
"The variation values chosen for the item."
variations: [SalesLineItemVariation!]!
"Where the line item stands in a kit or a configurable item."
structure: SalesItemStructure!
"The SKU of the item."
sku: String!
}
"A file attached to a sales invoice line item. Only the metadata and a reference: the content is not part of this API, download it from DownloadUrl. Files are uploaded with the master data file upload."
type SalesInvoiceLineItemFile {
"The ID of the attachment."
id: ID!
"The user who attached the file."
createdBy: ID
"The size of the file in bytes."
size: Long!
"The name of the file."
fileName: String!
"When the file was attached."
createdAt: DateTime!
"The ID of the file in the blob storage, if it is stored there. 'GetFileById' returns its state."
blobIdentifier: UUID
"A short-lived signed download URL of the file, if one can be created. Do not store it."
downloadUrl: String
}
"An entry of the invoice overview: a sales invoice or the cancellation document of a sales invoice. 'documentType' tells which. The fields that exist only for invoices are absent for a cancellation document. Amounts are never negated: invoices and cancellation documents are both positive. Payment state and amounts are read with \"GetSalesInvoicePaymentBalance\"."
type SalesInvoiceListEntry {
"Whether the entry is an invoice (INVOICE) or a cancellation document (CANCELLATION)."
documentType: SalesInvoiceDocumentType!
"The ID of the invoice. Only for an invoice."
id: ID
"The ID of the cancellation document. For a cancellation document, and for a cancelled invoice (the document that cancelled it)."
salesInvoiceCancellationId: ID
"The invoice a cancellation document cancels. Only for a cancellation document."
cancelledSalesInvoiceId: ID
"The number of the invoice or of the cancellation document. Absent for a draft."
number: String
"Where the invoice stands. Only for an invoice."
status: SalesInvoiceStatus
"Whether the invoice was created outside the ERP. Only for an invoice."
isExternal: Boolean
"The invoice date, or the date of the cancellation document."
invoiceDate: DateTime!
"The date from which the payment term runs. Only for an invoice."
valueDate: DateTime
"The start of the delivery or service period. Only for an invoice."
serviceDateFrom: DateTime
"The end of the delivery or service period. Only for an invoice."
serviceDateTo: DateTime
"When the invoice was created. Only for an invoice."
createdAt: DateTime
"The user who created the document."
createdBy: ID
"The name of the user who created the document."
createdByName: String
"The company that issued the document."
companyId: ID
"The name of the company."
companyName: String
"The ID of the customer."
customerId: ID
"The customer number as recorded on the document."
customerNumber: String
"The name of the customer group. Only for an invoice."
customerGroupName: String
"The accounts receivable number. Only for an invoice."
accountsReceivableNumber: Int
"The VAT ID on the invoice. Only for an invoice."
vatId: String
"The sales channel the document belongs to. Tenant-local, composite identifier, not a UUID. Valid values are listed by the sales channel endpoint (GET)."
salesChannelId: ID
"The name of the sales channel."
salesChannelName: String
"The language of the document as BCP 47 language tag, for example de or de-AT: language subtag in lower case, region subtag in upper case. Wawi currently holds only the two-letter language subtag."
languageTag: String
"The currency of the document as ISO 4217 code."
currencyCode: String
"How the invoice is taxed, with the values of the tax treatment of the taxes API: TAXABLE, INTRA_COMMUNITY_DELIVERY, REVERSE_CHARGE or EXEMPT. New values can be added; treat an unknown value as unknown. Only for an invoice."
taxTreatment: String
"The ID of the payment method. Only for an invoice."
paymentMethodId: ID
"The name of the payment method. Only for an invoice."
paymentMethodName: String
"The ID of the shipping method. Only for an invoice."
shippingMethodId: ID
"The name of the shipping method. Only for an invoice."
shippingMethodName: String
"The sales orders the invoice was created for. Empty for a cancellation document."
salesOrders: [SalesInvoiceSalesOrderReference!]!
"The order number of the external system. Only for an invoice."
externalSalesOrderNumber: String
"The date of the last shipment. Only for an invoice."
lastShippingDate: DateTime
"An internal note on the document."
note: String
"A comment of the customer. Only for an invoice."
customerComment: String
"The net total; never negated."
netTotal: Decimal!
"The gross total; never negated."
grossTotal: Decimal!
"The date payment is due. Only for an invoice."
paymentDueDate: DateTime
"When the document was last printed."
printedAt: DateTime
"When the document was last sent by mail."
mailedAt: DateTime
"Whether a correction of the invoice exists that is not cancelled. Only for an invoice."
hasCorrection: Boolean
"The gross total of the corrections that are not cancelled. Only for an invoice."
correctionGrossTotal: Decimal
"Whether the invoice is archived. Only for an invoice."
isArchived: Boolean
"Whether dunning is blocked. Only for an invoice."
isDunningBlocked: Boolean
"The current dunning level. Only for an invoice."
dunningLevel: Int
"When the invoice was last dunned. Only for an invoice."
dunnedAt: DateTime
"The ID of the cancellation reason, the same ID the cancel input takes; the reason is read by this ID from the cancellation reasons of sales invoices. Only when the invoice is cancelled; Wawi stores 0 when no reason was given, returned as null. The reason may have been deleted since (the cancellation keeps the ID), then the ID no longer resolves."
cancellationReasonId: ID
"The name of the cancellation reason."
cancellationReason: String
"The comment on the cancellation."
cancellationComment: String
"The user who cancelled."
cancelledBy: ID
"The name of the user who cancelled."
cancelledByName: String
"When it was cancelled."
cancelledAt: DateTime
"The company name. Of the billing address, flattened for filtering and sorting."
billingAddressCompany: String
"The first name. Of the billing address, flattened for filtering and sorting."
billingAddressFirstName: String
"The last name. Of the billing address, flattened for filtering and sorting."
billingAddressLastName: String
"The street and house number. Of the billing address, flattened for filtering and sorting."
billingAddressStreet: String
"The postal code. Of the billing address, flattened for filtering and sorting."
billingAddressPostalCode: String
"The city. Of the billing address, flattened for filtering and sorting."
billingAddressCity: String
"The country as ISO 3166-1 alpha-2 code. Of the billing address, flattened for filtering and sorting."
billingAddressCountryCode: String
"The company name. Of the shipping address, flattened for filtering and sorting."
shipmentAddressCompany: String
"The first name. Of the shipping address, flattened for filtering and sorting."
shipmentAddressFirstName: String
"The last name. Of the shipping address, flattened for filtering and sorting."
shipmentAddressLastName: String
"The street and house number. Of the shipping address, flattened for filtering and sorting."
shipmentAddressStreet: String
"The postal code. Of the shipping address, flattened for filtering and sorting."
shipmentAddressPostalCode: String
"The city. Of the shipping address, flattened for filtering and sorting."
shipmentAddressCity: String
"The country as ISO 3166-1 alpha-2 code. Of the shipping address, flattened for filtering and sorting."
shipmentAddressCountryCode: String
}
"An event a user can raise by hand on a sales invoice (the manual workflows menu in the Wawi). The workflows that listen to it start; raising it raises the event, not a single workflow."
type SalesInvoiceManualWorkflowEvent {
"The ID of the event."
id: ID!
"The display name of the event."
name: String!
"The position in the menu of the Wawi."
sortOrder: Int!
"How many active workflows listen to the event. Raising an event without any does nothing."
activeWorkflowCount: Int!
"The menu groups the event belongs to. Empty when it is not grouped."
groups: [SalesInvoiceManualWorkflowEventGroup!]!
}
"A group of manual events as the Wawi shows it in its menu."
type SalesInvoiceManualWorkflowEventGroup {
"The ID of the group."
id: ID!
"The name of the group."
name: String!
}
"A line item that the system writes itself; the API only reads it."
type SalesInvoiceOtherLineItem implements SalesInvoiceLineItem {
"The ID of the line item."
id: ID!
"The position of the line item on the invoice."
sortOrder: Int!
"The name of the line item."
name: String!
"A note on the line item."
note: String
"The quantity."
quantity: Decimal!
"The unit the quantity is sold in, for example 'pcs'."
salesUnit: String
"The net price per unit."
salesPriceNet: Decimal!
"The gross price per unit."
salesPriceGross: Decimal!
"The discount in percent."
discountPercent: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The net total of the line item after discount."
totalSalesPriceNet: Decimal!
"The gross total of the line item after discount."
totalSalesPriceGross: Decimal!
"The line item of the sales order this line item comes from. Absent for a line item without an order link; only those can change quantity, price, discount and tax rate on a draft."
salesOrderLineItemId: ID
"Discriminator of the line item type."
type: SalesLineItemType!
"The type of the line item. Known values: CARTON, SINGLE_PURPOSE_VOUCHER_REDEMPTION, UNKNOWN. New values can be added; treat an unknown value as unknown."
otherType: String!
}
"What is due, paid and open for a sales invoice. It counts the payments of the invoice and of its invoice corrections."
type SalesInvoicePaymentBalance {
"The ID of the sales invoice."
salesInvoiceId: ID!
"The currency of the amounts (ISO 4217)."
currencyCode: String!
"The gross amount of the invoice."
grossAmount: Decimal!
"The gross amount of its invoice corrections."
creditedAmount: Decimal!
"What the customer has to pay: the gross amount minus the credited amount; for a cancelled invoice 0 minus the credited amount."
amountDue: Decimal!
"What counts as paid: the payments of the invoice and of its invoice corrections, including cash discount write-offs and payouts (negative). Payments towards the dunning fee do not count; see 'openDunningFee'."
paidAmount: Decimal!
"'amountDue' minus 'paidAmount'. Negative while an invoice correction has not been paid out."
openAmount: Decimal!
"How far the invoice is paid. A cancelled invoice counts as paid."
paymentStatus: DocumentPaymentStatus!
"When the invoice became fully paid. Empty while it is not fully paid."
paidAt: DateTime
"The date by which the invoice is to be paid."
paymentDueDate: DateTime
"The dunning fee charged with the latest dunning notice, 0 when there is none."
dunningFee: Decimal!
"The part of the dunning fee that is not paid yet."
openDunningFee: Decimal!
}
"An entry of the payment balance change history of sales invoices: a balance changed or its invoice was deleted."
type SalesInvoicePaymentBalanceChange {
"The ID of the sales invoice."
salesInvoiceId: ID!
"The current payment balance of the sales invoice, read at query time. Empty when the invoice no longer exists."
paymentBalance: SalesInvoicePaymentBalance
"True when the sales invoice was deleted and has no balance any more."
isDeleted: Boolean!
"When the entry became readable in the change history (UTC)."
changedAt: DateTime!
}
"The payment terms of a sales invoice."
type SalesInvoicePaymentTerms {
"The days until payment is due."
paymentDueDays: Int
"The date payment is due: the value date plus the due days, or the date a dunning notice set."
paymentDueDate: DateTime
"The cash discount in percent."
cashDiscountPercent: Decimal
"The days within which the cash discount applies."
cashDiscountDays: Int
}
"A sales order an invoice was created for. A partial invoice names the same order as other invoices; an invoice created for several orders names all of them."
type SalesInvoiceSalesOrderReference {
"The ID of the sales order."
salesOrderId: ID!
"The number of the sales order."
salesOrderNumber: String
}
"The totals of the invoices of one currency in a date range."
type SalesInvoiceTotals {
"The currency as ISO 4217 code."
currencyCode: String!
"The sum of the gross totals."
grossTotal: Decimal!
"The sum of the net totals."
netTotal: Decimal!
"The gross total minus the net total, computed once per currency after both sums."
vatTotal: Decimal!
"The number of invoices in the range."
documentCount: Int!
}
"A voucher that is sold."
type SalesInvoiceVoucherLineItem implements SalesInvoiceLineItem {
"The ID of the line item."
id: ID!
"The position of the line item on the invoice."
sortOrder: Int!
"The name of the line item."
name: String!
"A note on the line item."
note: String
"The quantity."
quantity: Decimal!
"The unit the quantity is sold in, for example 'pcs'."
salesUnit: String
"The net price per unit."
salesPriceNet: Decimal!
"The gross price per unit."
salesPriceGross: Decimal!
"The discount in percent."
discountPercent: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The net total of the line item after discount."
totalSalesPriceNet: Decimal!
"The gross total of the line item after discount."
totalSalesPriceGross: Decimal!
"The line item of the sales order this line item comes from. Absent for a line item without an order link; only those can change quantity, price, discount and tax rate on a draft."
salesOrderLineItemId: ID
"Discriminator of the line item type."
type: SalesLineItemType!
"The kind of voucher."
voucherType: SalesVoucherType!
}
"A line item for an item of the catalog."
type SalesItemLineItem implements SalesLineItem {
"The ID of the line item."
id: ID!
"The net total of the line item after discount."
totalSalesPriceNet: Decimal!
"The gross total of the line item after discount."
totalSalesPriceGross: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The position of the line item in the document."
sortOrder: Int!
"The unit the quantity is sold in, for example 'pcs'."
salesUnit: String
"The net price per unit."
salesPriceNet: Decimal!
"The gross price per unit."
salesPriceGross: Decimal!
"The quantity."
quantity: Decimal!
"The net purchase price per unit when the line item was added."
purchasePriceNet: Decimal!
"A note on the line item."
note: String
"The name printed on the document."
name: String!
"The discount in percent."
discountPercent: Decimal!
"Discriminator of the line item type."
type: SalesLineItemType!
"The parent line item when this is a component of a kit or configurable item."
parentLineItemId: ID
"The ID of the item."
itemId: ID!
"The variation values chosen for the item, for example size or a free text."
variations: [SalesLineItemVariation!]!
"Where the line item stands in a kit or a configurable item."
structure: SalesItemStructure!
"The SKU of the item."
sku: String!
"Whether the item is active today. An inactive item stays on the document but cannot be added again."
isItemActive: Boolean!
}
"The delivery state of one line item of a sales order."
type SalesLineItemDeliverability {
"The ID of the sales order."
salesOrderId: ID!
"The ID of the line item."
salesLineItemId: ID!
"How much of the open quantity can be delivered from own stock and counted supplier stock."
status: SalesLineItemDeliverabilityStatus!
"The open quantity that own stock does not cover."
shortfallQuantityOwnStock: Decimal!
"The open quantity that own stock and counted supplier stock do not cover."
shortfallQuantity: Decimal!
"How much of the open quantity can be delivered from own stock only."
ownStockStatus: SalesLineItemDeliverabilityStatus!
"The quantity that is not delivered yet."
openQuantity: Decimal!
"Whether the item of the line has a shipping lock, so the line is not delivered."
isShippingLocked: Boolean!
"Whether a supplier of the item offers drop shipping for this line."
isDropShippingAvailable: Boolean!
"The quantity on delivery notes so far."
deliveredQuantity: Decimal!
}
"A variation value chosen for an item line item, for example a size or a free text."
type SalesLineItemVariation {
"The ID of the chosen value. Empty for a free text."
variationValueId: ID
"The ID of the variation."
variationId: ID!
"The chosen value or the free text."
value: String!
"The net surcharge per unit for this value."
surchargeNet: Decimal!
"The name of the variation, for example 'Size'."
name: String!
}
"A sales order with its header data, addresses and status. The line items are read with 'QuerySalesLineItemsBySalesOrderId'."
type SalesOrder {
"The user who created the sales order."
createdBy: ID
"When the sales order was created in Wawi."
createdAt: DateTime!
"The ID of the sales order."
id: ID!
"The ID of the shipping method."
shippingMethodId: ID
"The ID of the sales channel the sales order came from."
salesChannelId: ID
"The ID of the user responsible for the sales order."
responsibleUserId: ID
"The ID of the process status."
processStatusId: ID
"The ID of the payment method."
paymentMethodId: ID
"The ID of the reason why the sales order is on hold."
onHoldReasonId: ID
"The ID of the customer."
customerId: ID!
"The ID of the company that sells."
companyId: ID!
"How and when the sales order is to be shipped."
shippingDetails: SalesOrderShippingDetails!
"The address the goods are shipped to."
shipmentAddress: SalesAddress!
"The payment terms."
paymentTerms: SalesOrderPaymentTerms!
"The billing address."
billingAddress: SalesAddress!
"The VAT ID of the customer on this sales order."
vatIdNumber: String
"The overall status as the order list shows it."
status: SalesOrderStatus!
"How far the sales order has been invoiced."
salesInvoiceStatus: SalesOrderSalesInvoiceStatus!
"A text printed on the documents."
printText: String
"How far the sales order has been paid."
paymentStatus: SalesOrderPaymentStatus!
"The date of the sales order."
orderDate: DateTime!
"The number of the sales order."
number: String!
"An internal note."
note: String
"The net total of all line items."
netTotal: Decimal!
"The language of the documents as BCP 47 language tag, for example de or de-AT. Language subtag in lower case, region subtag in upper case; case does not matter on input. Wawi currently holds only the two-letter language subtag."
languageTag: String!
"Whether the sales order is pending, for example while a payment is checked."
isPending: Boolean!
"Whether the sales order is locked for delivery, for example while it is on hold."
isLockedForDelivery: Boolean!
"Whether the sales order was cancelled."
isCancelled: Boolean!
"The gross total of all line items."
grossTotal: Decimal!
"The number of the sales order on the sales channel."
externalNumber: String
"Whether the sales order can still be changed."
editability: SalesOrderEditability!
"How far the sales order has been delivered."
deliveryStatus: SalesOrderDeliveryStatus!
"The order number of the customer."
customerOrderNumber: String
"The customer number at the time of the sales order."
customerNumber: String
"The comment of the customer."
customerComment: String
"The currency as ISO 4217 code."
currencyCode: String!
"The exchange rate to the currency of the company."
currencyFactor: Decimal!
}
"One action of the action catalogue. The ID is the stable key that allowed-actions returns."
type SalesOrderAction {
"The stable key of the action, for example Cancel."
id: String!
"The name of the action in the language of the request."
name: String!
"What the action does, in the language of the request."
description: String
}
"Whether one action is allowed. The keys come from QuerySalesOrderActions; clients ignore unknown keys."
type SalesOrderActionAvailability {
"The key of the action from QuerySalesOrderActions, for example Cancel."
actionId: String!
"The reasons why it is not, empty when it is allowed. A refused action sends the same codes in extensions.blockers."
blockers: [SalesOrderActionBlocker!]!
"Whether the action is allowed right now."
isAllowed: Boolean!
}
"One reason why an action on a sales order is not allowed. A refused action sends these in extensions.blockers."
type SalesOrderActionBlocker {
"Human-readable explanation in the language of the request."
message: String
"Stable machine-readable code of the reason, for example SalesOrderHasDeliveryNote."
code: String!
}
"What can be done with a sales order right now. A hint only; each action checks again and refuses with the same codes in extensions.blockers."
type SalesOrderAllowedActions {
"One entry per action, allowed or not."
actions: [SalesOrderActionAvailability!]!
}
"A yes or no."
type SalesOrderBooleanFieldValue implements SalesOrderFieldValue {
"Discriminator of the value variant."
type: SalesOrderFieldValueType!
"Whether it is yes."
flag: Boolean!
}
"A reason for cancelling a sales order. The model serves list and detail alike. It also carries the mapping of the reason to the cancellation reasons of the sales platforms."
type SalesOrderCancellationReason {
"The name of the reason."
name: String!
"Whether a comment has to be given when a document is cancelled with this reason."
isCommentRequired: Boolean!
"Whether Wawi created the reason itself during setup. System reasons cannot be changed or deleted, because Wawi relies on them, for example as the fallback when a cancellation comes in without a reason."
isSystem: Boolean!
"The ID of the cancellation reason for sales orders."
id: ID!
"The cancellation reason of each sales platform the reason is mapped to. A platform without an entry has no mapping; 'QuerySalesOrderCancellationReasonMarketplaces' describes the platforms and what a missing entry means."
marketplaceCodes: [SalesOrderCancellationReasonMarketplaceCode!]!
}
"A sales platform that cancellation reasons for sales orders can be mapped to, with the values it offers."
type SalesOrderCancellationReasonMarketplace {
"The key of the platform."
marketplace: String!
"The name of the platform in the language of the request."
name: String!
"The values the platform offers. Empty when the platform takes any text up to 50 characters (see the description of the operation)."
codes: [SalesOrderCancellationReasonMarketplaceCodeOption!]!
}
"The value of one sales platform that a cancellation reason for sales orders is mapped to, for example the reason 'NoInventory' of Amazon."
type SalesOrderCancellationReasonMarketplaceCode {
"The key of the sales platform, one of those that 'QuerySalesOrderCancellationReasonMarketplaces' returns."
marketplace: String!
"The code of the platform's value. For a platform with a list of values one of the codes that 'QuerySalesOrderCancellationReasonMarketplaces' returns for it."
code: String!
}
"One value of a sales platform."
type SalesOrderCancellationReasonMarketplaceCodeOption {
"The code of the value."
code: String!
"The name of the value in the language of the request."
name: String!
}
"The value of a custom field (German 'Eigenes Feld') of a sales order. It has no language."
type SalesOrderCustomField {
"The ID of the custom field."
customFieldId: ID!
"The value."
value: SalesOrderFieldValue
}
"A date with time."
type SalesOrderDateFieldValue implements SalesOrderFieldValue {
"Discriminator of the value variant."
type: SalesOrderFieldValueType!
"The date. Only the calendar date counts, the time of day is ignored."
date: DateTime!
}
"A decimal number."
type SalesOrderDecimalFieldValue implements SalesOrderFieldValue {
"Discriminator of the value variant."
type: SalesOrderFieldValueType!
"The number."
number: Decimal!
}
"Whether a sales order can be delivered now, and why not."
type SalesOrderDeliverability {
"The sales order."
salesOrderId: ID!
"Whether the open quantities can be delivered from the stock of all warehouses (or the given warehouse)."
deliverability: DeliverabilityLevel!
"The same from own stock only, without drop shipping."
deliverabilityFromOwnStock: DeliverabilityLevel!
"Whether the sales order has no open quantity left."
isDelivered: Boolean!
"Why the sales order cannot be delivered now, for example SALES_ORDER_ON_HOLD, SALES_ORDER_NOT_PAID, CUSTOMER_BLOCKED, SHIPPING_LOCKED, SHIPPING_METHOD_MISSING, SALES_ORDER_ALREADY_DELIVERED. Empty when it can be delivered."
blockers: [DeliveryBlocker!]!
}
"A supplier purchase order that ships line items of a sales order directly to the customer."
type SalesOrderDropShippingPurchaseOrder {
"The ID of the supplier purchase order."
id: ID!
"The ID of the supplier who ships."
supplierId: ID!
"The ID of the sales order."
salesOrderId: ID!
"The delivery note that was created together with the purchase order."
deliveryNoteId: ID
"The state of the drop shipping."
status: SalesOrderDropShippingStatus!
}
"A file attached to a sales order. Only the metadata and a reference: the content is not part of this API, download it from DownloadUrl. Files are uploaded with the master data file upload."
type SalesOrderFile {
"The ID of the attachment."
id: ID!
"The user who attached the file."
createdBy: ID
"The size of the file in bytes."
size: Long!
"The name of the file."
fileName: String!
"When the file was attached."
createdAt: DateTime!
"The ID of the file in the blob storage, if it is stored there. 'GetFileById' returns its state."
blobIdentifier: UUID
"A short-lived signed download URL of the file, if one can be created. Do not store it."
downloadUrl: String
}
"A whole number."
type SalesOrderIntegerFieldValue implements SalesOrderFieldValue {
"Discriminator of the value variant."
type: SalesOrderFieldValueType!
"The number."
number: Int!
}
"The value of a custom field (German 'Eigenes Feld') of a sales order line item. It has no language."
type SalesOrderLineItemCustomField {
"The ID of the custom field."
customFieldId: ID!
"The value."
value: SalesOrderFieldValue
}
"A file attached to a sales order line item. Only the metadata and a reference: the content is not part of this API, download it from DownloadUrl. Files are uploaded with the master data file upload."
type SalesOrderLineItemFile {
"The ID of the attachment."
id: ID!
"The user who attached the file."
createdBy: ID
"The size of the file in bytes."
size: Long!
"The name of the file."
fileName: String!
"When the file was attached."
createdAt: DateTime!
"The ID of the file in the blob storage, if it is stored there. 'GetFileById' returns its state."
blobIdentifier: UUID
"A short-lived signed download URL of the file, if one can be created. Do not store it."
downloadUrl: String
}
"A sales order as a light list entry."
type SalesOrderListEntry {
"The ID of the sales order."
id: ID!
"The ID of the shipping method."
shippingMethodId: ID
"The ID of the sales channel the sales order came from."
salesChannelId: ID
"The ID of the process status."
processStatusId: ID
"The ID of the payment method."
paymentMethodId: ID
"The ID of the reason why the sales order is on hold."
onHoldReasonId: ID
"The ID of the customer."
customerId: ID!
"The ID of the company that sells."
companyId: ID!
"The overall status as the order list shows it."
status: SalesOrderStatus!
"How far the sales order has been invoiced."
salesInvoiceStatus: SalesOrderSalesInvoiceStatus!
"How far the sales order has been paid."
paymentStatus: SalesOrderPaymentStatus!
"The date of the sales order."
orderDate: DateTime!
"The number of the sales order."
number: String!
"The net total of all line items."
netTotal: Decimal!
"Whether the sales order is pending, for example while a payment is checked."
isPending: Boolean!
"Whether the sales order was cancelled."
isCancelled: Boolean!
"The gross total of all line items."
grossTotal: Decimal!
"The number of the sales order on the sales channel."
externalNumber: String
"How far the sales order has been delivered."
deliveryStatus: SalesOrderDeliveryStatus!
"The order number of the customer."
customerOrderNumber: String
"The customer number at the time of the sales order."
customerNumber: String
"The currency as ISO 4217 code."
currencyCode: String!
"When the sales order was created in Wawi."
createdAt: DateTime!
}
"An event a user can raise by hand on a sales order (the manual workflows menu in the Wawi). The workflows that listen to it start; raising it raises the event, not a single workflow."
type SalesOrderManualWorkflowEvent {
"The ID of the event."
id: ID!
"The display name of the event."
name: String!
"The position in the menu of the Wawi."
sortOrder: Int!
"How many active workflows listen to the event. Raising an event without any does nothing."
activeWorkflowCount: Int!
"The menu groups the event belongs to. Empty when it is not grouped."
groups: [SalesOrderManualWorkflowEventGroup!]!
}
"A group of manual events as the Wawi shows it in its menu."
type SalesOrderManualWorkflowEventGroup {
"The ID of the group."
id: ID!
"The name of the group."
name: String!
}
"A note on a sales order, kept in the history of the customer."
type SalesOrderNote {
"The ID of the note."
id: ID!
"The user who wrote the note."
createdBy: ID
"How the content of the note reached the company."
type: SalesOrderNoteType!
"The text of the note."
text: String!
"When the note was written."
createdAt: DateTime!
}
"What is due, paid and open for a sales order. It counts the payments of the order and of its invoices and their invoice corrections, so the order shows the whole picture."
type SalesOrderPaymentBalance {
"The ID of the sales order."
salesOrderId: ID!
"The currency of the amounts (ISO 4217)."
currencyCode: String!
"The gross amount of the order."
grossAmount: Decimal!
"The gross amount of the invoice corrections of its invoices."
creditedAmount: Decimal!
"What the customer has to pay: the gross amount minus the credited amount; for a cancelled order 0 minus the credited amount."
amountDue: Decimal!
"What counts as paid: the payments of the order and of its invoices and invoice corrections, including cash discount write-offs and payouts (negative). Payments towards dunning fees do not count."
paidAmount: Decimal!
"'amountDue' minus 'paidAmount'. Negative when the order is overpaid; a cancelled order is overpaid by everything paid."
openAmount: Decimal!
"How much the order is overpaid: the negative open amount as a positive number, otherwise 0. This is what 'CreateSalesOrderRefund' can refund."
overpaidAmount: Decimal!
"How far the order is paid."
paymentStatus: DocumentPaymentStatus!
"When the order became fully paid: the date of its last payment, or its creation date when nothing is due. Empty while it is not fully paid."
paidAt: DateTime
}
"The payment terms of a sales order."
type SalesOrderPaymentTerms {
"The days until payment is due."
paymentDueDays: Int
"The cash discount in percent."
cashDiscountPercent: Decimal
"The days within which the cash discount applies."
cashDiscountDays: Int
}
"How and when a sales order is to be shipped."
type SalesOrderShippingDetails {
"The priority when sales orders are delivered."
shippingPriority: Int!
"The planned shipping date."
shippingDate: DateTime
"The sales order is not shipped before this date."
shipFromDate: DateTime
"The maximum delivery time in days."
maxDeliveryDays: Int
"Extra weight in kilograms added to the weight of the items."
extraWeight: Decimal!
"The delivery date the customer was told."
estimatedDeliveryDate: DateTime
}
"A text value."
type SalesOrderTextFieldValue implements SalesOrderFieldValue {
"Discriminator of the value variant."
type: SalesOrderFieldValueType!
"The text."
text: String!
}
"A line item of a type that is only read, such as a carton."
type SalesOtherLineItem implements SalesLineItem {
"The ID of the line item."
id: ID!
"The net total of the line item after discount."
totalSalesPriceNet: Decimal!
"The gross total of the line item after discount."
totalSalesPriceGross: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The position of the line item in the document."
sortOrder: Int!
"The unit the quantity is sold in, for example 'pcs'."
salesUnit: String
"The net price per unit."
salesPriceNet: Decimal!
"The gross price per unit."
salesPriceGross: Decimal!
"The quantity."
quantity: Decimal!
"The net purchase price per unit when the line item was added."
purchasePriceNet: Decimal!
"A note on the line item."
note: String
"The name printed on the document."
name: String!
"The discount in percent."
discountPercent: Decimal!
"Discriminator of the line item type."
type: SalesLineItemType!
"The type of the line item. Known values: CARTON, SINGLE_PURPOSE_VOUCHER_REDEMPTION, UNKNOWN. The type of a line item that can only be read."
otherType: String!
}
"A sales price calculated from net to gross or from gross to net for a tax class. Amounts are not rounded: the net price is kept with 13 decimal places, the gross price is the exact product of net price and tax factor. Clients round for display. Prices are in the default currency of the tenant."
type SalesPriceCalculation {
"The net price: the given net price, or the given gross price divided by (1 + tax rate / 100)."
salesPriceNet: Decimal!
"The gross price: the given gross price, or the given net price times (1 + tax rate / 100)."
salesPriceGross: Decimal!
"The tax rate in percent that was applied, for example 19 for 19 percent."
taxRatePercent: Decimal!
"The tax class that was applied: the requested one, or the default tax class when none was requested."
taxClassId: ID!
"True when no tax class was requested and the default tax class was applied."
isDefaultTaxClassApplied: Boolean!
"The company whose country determined the tax rate: the requested company, or the first active company when none was requested."
companyId: ID!
"The country of the company as ISO 3166-1 alpha-2 code."
countryCode: String!
"The currency of the prices as ISO 4217 code: the default currency of the tenant."
currencyCode: String!
}
"A sales quotation with its addresses and texts. The line items are read with 'QuerySalesLineItemsBySalesQuotationId'."
type SalesQuotation {
"The ID of the sales quotation."
id: ID!
"The ID of the shipping method."
shippingMethodId: ID
"The IDs of the sales orders created from the quotation. Read them with GetSalesOrder."
salesOrderIds: [ID!]!
"The ID of the sales channel the quotation belongs to."
salesChannelId: ID
"The ID of the user responsible for the quotation."
responsibleUserId: ID
"The ID of the process status."
processStatusId: ID
"The ID of the payment method."
paymentMethodId: ID
"The ID of the customer."
customerId: ID!
"The user who created the quotation."
createdBy: ID
"The ID of the company that sells."
companyId: ID!
"The shipment address."
shipmentAddress: SalesAddress
"The payment terms."
paymentTerms: SalesQuotationPaymentTerms!
"The billing address."
billingAddress: SalesAddress
"The VAT ID of the customer on this sales quotation."
vatIdNumber: String
"The state of the quotation."
status: SalesQuotationStatus!
"The date of the quotation."
quotationDate: DateTime!
"When the quotation was printed last. Empty when it was never printed."
printedAt: DateTime
"A text printed on the quotation."
printText: String
"The quotation number."
number: String!
"An internal note."
note: String
"The net total of all line items."
netTotal: Decimal!
"When the quotation was sent by email last. Empty when it was never sent."
mailedAt: DateTime
"The language of the documents as ISO 639-1 code."
languageTag: String!
"Whether the quotation can still be changed."
editability: SalesQuotationEditability!
"Whether the quotation is still being written by another process. A pending quotation cannot be changed."
isPending: Boolean!
"The gross total of all line items."
grossTotal: Decimal!
"A number from another system."
externalNumber: String
"The delivery date that the quotation promises."
estimatedDeliveryDate: DateTime
"The order number of the customer."
customerOrderNumber: String
"The customer number at the time the quotation was created."
customerNumber: String
"A comment from or for the customer."
customerComment: String
"The currency as ISO 4217 code."
currencyCode: String!
"The exchange rate to the currency of the company."
currencyFactor: Decimal!
"When the quotation was created in Wawi."
createdAt: DateTime!
}
"One action of the action catalogue. The ID is the stable key that allowed-actions returns."
type SalesQuotationAction {
"The stable key of the action, for example Cancel or CreateSalesOrder."
id: String!
"The name of the action in the language of the request."
name: String!
"What the action does, in the language of the request."
description: String
}
"Whether one action is allowed on the sales quotation right now."
type SalesQuotationActionAvailability {
"The key of the action from QuerySalesQuotationActions, for example Cancel."
actionId: String!
"Why the action is not allowed. Empty when it is allowed."
blockers: [SalesQuotationActionBlocker!]!
"Whether the action is allowed."
isAllowed: Boolean!
}
"One reason why an action is not allowed."
type SalesQuotationActionBlocker {
"A text for the user in the language of the request."
message: String
"The machine-readable reason, the same code the action returns in extensions.blockers."
code: String!
}
"What can be done with a sales quotation right now. The action itself checks again and refuses with the same blocker codes."
type SalesQuotationAllowedActions {
"One entry per action, allowed or not."
actions: [SalesQuotationActionAvailability!]!
}
"A file attached to a sales quotation. Only the metadata and a reference: the content is not part of this API, download it from DownloadUrl. Files are uploaded with the master data file upload."
type SalesQuotationFile {
"The ID of the attachment."
id: ID!
"The user who attached the file."
createdBy: ID
"The size of the file in bytes."
size: Long!
"The name of the file."
fileName: String!
"When the file was attached."
createdAt: DateTime!
"The ID of the file in the blob storage, if it is stored there."
blobIdentifier: UUID
"A signed download URL of the file, if one can be created."
downloadUrl: String
}
"A sales quotation as a light list item."
type SalesQuotationListEntry {
"The ID of the sales quotation."
id: ID!
"The ID of the sales channel the quotation belongs to."
salesChannelId: ID
"The ID of the user responsible for the quotation."
responsibleUserId: ID
"The ID of the process status."
processStatusId: ID
"The ID of the customer."
customerId: ID!
"The ID of the company that sells."
companyId: ID!
"The state of the quotation."
status: SalesQuotationStatus!
"The date of the quotation."
quotationDate: DateTime!
"When the quotation was printed last. Empty when it was never printed."
printedAt: DateTime
"The quotation number."
number: String!
"The net total of all line items."
netTotal: Decimal!
"When the quotation was sent by email last. Empty when it was never sent."
mailedAt: DateTime
"Whether the quotation is still being written by another process. A pending quotation cannot be changed."
isPending: Boolean!
"The gross total of all line items."
grossTotal: Decimal!
"A number from another system."
externalNumber: String
"The customer number at the time the quotation was created."
customerNumber: String
"The currency as ISO 4217 code."
currencyCode: String!
"When the quotation was created in Wawi."
createdAt: DateTime!
}
"An event a user can raise by hand on a sales quotation. Raising it starts every workflow that listens to it."
type SalesQuotationManualWorkflowEvent {
"The ID of the event."
id: ID!
"The display name of the event."
name: String!
"The position in the menu of the Wawi."
sortOrder: Int!
"How many active workflows listen to the event. Raising an event without any does nothing."
activeWorkflowCount: Int!
"The menu groups the event belongs to. Empty when it is not grouped."
groups: [SalesQuotationManualWorkflowEventGroup!]!
}
"A group of manual events as the Wawi shows it in its menu."
type SalesQuotationManualWorkflowEventGroup {
"The ID of the group."
id: ID!
"The name of the group."
name: String!
}
"A note on a sales quotation, kept in the history of the customer."
type SalesQuotationNote {
"The ID of the note."
id: ID!
"The user who wrote the note."
createdBy: ID
"How the content of the note reached the company."
type: SalesQuotationNoteType!
"The text of the note."
text: String!
"When the note was written."
createdAt: DateTime!
}
"The payment terms of a sales quotation."
type SalesQuotationPaymentTerms {
"The days until payment is due."
paymentDueDays: Int
"The cash discount in percent."
cashDiscountPercent: Decimal
"The days within which the cash discount applies."
cashDiscountDays: Int
}
"A subscription: a recurring sales document from which follow-up sales orders are created. Its line items, with their schedules, have their own operations."
type SalesSubscription {
"When the subscription was created."
createdAt: DateTime!
"The user who created the subscription."
createdBy: ID!
"The ID of the subscription."
id: ID!
"The subscription number."
number: String!
"A number from another system. Follow-up sales orders take it over."
externalNumber: String
"The ID of the customer."
customerId: ID!
"The ID of the company that sells."
companyId: ID!
"The user responsible for the subscription."
responsibleUserId: ID
"The state of the subscription, derived from its recurring line items."
status: SalesSubscriptionStatus!
"Whether at least one line item is due today, counting its lead time. Then a follow-up sales order can be created."
isDue: Boolean!
"The earliest next due date of the line items. Empty when the subscription has ended."
nextDueDate: DateTime
"Whether at least one follow-up sales order was created from the subscription."
hasFollowUpOrders: Boolean!
"The currency as ISO 4217 code, for example 'EUR'."
currencyCode: String!
"The language of the documents as BCP 47 language tag, for example de or de-AT. Language subtag in lower case, region subtag in upper case; case does not matter on input. Wawi currently holds only the two-letter language subtag."
languageTag: String!
"The ID of the payment method."
paymentMethodId: ID
"The ID of the shipping method."
shippingMethodId: ID
"The ID of the process status."
processStatusId: ID
"The payment terms."
paymentTerms: SalesSubscriptionPaymentTerms!
"The billing address."
billingAddress: SalesSubscriptionAddress
"The shipping address."
shipmentAddress: SalesSubscriptionAddress
"An internal note."
note: String
"A comment from the customer."
customerComment: String
"The net total of one billing of all line items, in the currency of the subscription."
netTotal: Decimal!
"The gross total of one billing of all line items, in the currency of the subscription."
grossTotal: Decimal!
}
"An address of a subscription. Follow-up sales orders take it over."
type SalesSubscriptionAddress {
"The salutation."
salutation: String
"The academic title."
title: String
"The first name."
firstName: String
"The last name."
lastName: String
"The company name."
company: String
"An additional company line."
additionalCompanyLine: String
"The street and house number."
street: String
"An additional address line."
additionalAddressLine: String
"The postal code."
postalCode: String
"The city."
city: String
"The state or region."
state: String
"The country as ISO 3166-1 alpha-2 code, for example 'DE'."
countryCode: String
"The email address."
emailAddress: String
"The phone number."
phoneNumber: String
"The mobile phone number."
mobileNumber: String
"The VAT identification number."
vatId: String
"The post number for parcel lockers."
postId: String
"The fax number."
fax: String
"The Global Location Number."
gln: String
"Whether customs documents are required for shipments to this address."
customsDocumentsRequired: Boolean!
}
"A cash discount for early payment."
type SalesSubscriptionCashDiscount {
"The discount in percent, greater than 0 and at most 100."
percent: Decimal!
"Days within which the discount applies."
days: Int!
}
"A charge that is part of every follow-up sales order."
type SalesSubscriptionChargeLineItem implements SalesSubscriptionLineItem {
"The ID of the line item."
id: ID!
"The name printed on the sales order."
name: String!
"The quantity billed per period."
quantity: Decimal!
"The net price per unit."
salesPriceNet: Decimal!
"The discount in percent."
discountPercent: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The position of the line item in the subscription."
sortOrder: Int!
"A note on the line item."
note: String
"Discriminator of the line-item kind."
kind: SalesSubscriptionLineItemKind!
"The type of the charge. Known values: SHIPPING, SHIPPING_SURCHARGE, SHIPPING_SURCHARGE_ITEM, PAYMENT_FEE, CASH_ON_DELIVERY_FEE, GIFT_WRAP, INTEREST, HANDLING_FEE, TRUSTED_SHOPS, RETURN_DELIVERY, FREE_GIFT. The type of a charge line item."
chargeType: String!
"For a free gift or a shipping surcharge for an item: the ID of the item."
itemId: ID
}
"A free line without an item."
type SalesSubscriptionCustomLineItem implements SalesSubscriptionLineItem {
"The ID of the line item."
id: ID!
"The name printed on the sales order."
name: String!
"The quantity billed per period."
quantity: Decimal!
"The net price per unit."
salesPriceNet: Decimal!
"The discount in percent."
discountPercent: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The position of the line item in the subscription."
sortOrder: Int!
"A note on the line item."
note: String
"Discriminator of the line-item kind."
kind: SalesSubscriptionLineItemKind!
"When the line item is billed."
schedule: SalesSubscriptionSchedule!
}
"A discount that is part of every follow-up sales order."
type SalesSubscriptionDiscountLineItem implements SalesSubscriptionLineItem {
"The ID of the line item."
id: ID!
"The name printed on the sales order."
name: String!
"The quantity billed per period."
quantity: Decimal!
"The net price per unit."
salesPriceNet: Decimal!
"The discount in percent."
discountPercent: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The position of the line item in the subscription."
sortOrder: Int!
"A note on the line item."
note: String
"Discriminator of the line-item kind."
kind: SalesSubscriptionLineItemKind!
"The type of the discount. Known values: COUPON, NEW_CUSTOMER_COUPON, LEGACY_VOUCHER. The type of a discount line item."
discountType: String!
}
"A file attached to a sales subscription. Only the metadata and a reference: the content is not part of this API, download it from DownloadUrl. Files are uploaded with the master data file upload."
type SalesSubscriptionFile {
"The ID of the attachment."
id: ID!
"The user who attached the file."
createdBy: ID
"The size of the file in bytes."
size: Long!
"The name of the file."
fileName: String!
"When the file was attached."
createdAt: DateTime!
"The ID of the file in the blob storage, if it is stored there. 'GetFileById' returns its state."
blobIdentifier: UUID
"A short-lived signed download URL of the file, if one can be created. Do not store it."
downloadUrl: String
}
"A line item for an item of the catalog."
type SalesSubscriptionItemLineItem implements SalesSubscriptionLineItem {
"The ID of the line item."
id: ID!
"The name printed on the sales order."
name: String!
"The quantity billed per period."
quantity: Decimal!
"The net price per unit."
salesPriceNet: Decimal!
"The discount in percent."
discountPercent: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The position of the line item in the subscription."
sortOrder: Int!
"A note on the line item."
note: String
"Discriminator of the line-item kind."
kind: SalesSubscriptionLineItemKind!
"The ID of the item."
itemId: ID!
"The SKU of the item."
sku: String!
"For a component of a bill of materials or a configuration: the line item it belongs to. A component follows its parent and has no schedule of its own."
parentLineItemId: ID
"When the line item is billed. Empty for a component, which follows its parent."
schedule: SalesSubscriptionSchedule
}
"A subscription in a list."
type SalesSubscriptionListEntry {
"The ID of the subscription."
id: ID!
"The subscription number."
number: String!
"A number from another system."
externalNumber: String
"The ID of the customer."
customerId: ID!
"The customer number."
customerNumber: String
"The ID of the company that sells."
companyId: ID!
"The state of the subscription, derived from its recurring line items."
status: SalesSubscriptionStatus!
"Whether at least one line item is due today, counting its lead time. Then a follow-up sales order can be created."
isDue: Boolean!
"The earliest next due date of the line items. Empty when the subscription has ended."
nextDueDate: DateTime
"The currency as ISO 4217 code."
currencyCode: String!
"The net total of one billing."
netTotal: Decimal!
"The gross total of one billing."
grossTotal: Decimal!
"When the subscription was created."
createdAt: DateTime!
}
"A line item that cannot be written through the API. It is not part of follow-up sales orders."
type SalesSubscriptionOtherLineItem implements SalesSubscriptionLineItem {
"The ID of the line item."
id: ID!
"The name printed on the sales order."
name: String!
"The quantity billed per period."
quantity: Decimal!
"The net price per unit."
salesPriceNet: Decimal!
"The discount in percent."
discountPercent: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The position of the line item in the subscription."
sortOrder: Int!
"A note on the line item."
note: String
"Discriminator of the line-item kind."
kind: SalesSubscriptionLineItemKind!
"The type of the line item. Known values: CARTON, SINGLE_PURPOSE_VOUCHER_REDEMPTION, UNKNOWN. The type of a line item that cannot be written through the API. A client treats a value it does not know as 'UNKNOWN'."
otherType: String!
}
"The payment terms that follow-up sales orders get."
type SalesSubscriptionPaymentTerms {
"Days until payment is due."
paymentDueDays: Int
"The cash discount for early payment. Empty means none."
cashDiscount: SalesSubscriptionCashDiscount
}
"A follow-up sales order created from the subscription."
type SalesSubscriptionSalesOrder {
"The ID of the sales order. Read it with the sales-order operations."
salesOrderId: ID!
"The sales order number."
salesOrderNumber: String!
"The date of the sales order."
salesOrderDate: DateTime!
}
"When a recurring line item is billed. Each recurring line item has its own schedule."
type SalesSubscriptionSchedule {
"How often the line item becomes due."
cadence: SalesSubscriptionCadence!
"For the custom cadence: the number of units between two due dates, 1 to 999. Empty for the other cadences."
every: Int
"For the custom cadence: the unit of 'every'. Empty for the other cadences."
unit: SalesSubscriptionIntervalUnit
"The first day the schedule applies."
startDate: DateTime!
"The last day a period can be due. Empty if the line item has no end."
endDate: DateTime
"How many days before the due date the follow-up sales order is created, 0 to 9999."
leadTimeDays: Int!
"The date of the next period to bill. Empty when the line item has ended."
nextDueDate: DateTime
"When the last follow-up sales order with this line item was created. Empty if none was created yet."
lastSalesOrderCreatedAt: DateTime
}
"A voucher sold in every period."
type SalesSubscriptionVoucherLineItem implements SalesSubscriptionLineItem {
"The ID of the line item."
id: ID!
"The name printed on the sales order."
name: String!
"The quantity billed per period."
quantity: Decimal!
"The net price per unit."
salesPriceNet: Decimal!
"The discount in percent."
discountPercent: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The position of the line item in the subscription."
sortOrder: Int!
"A note on the line item."
note: String
"Discriminator of the line-item kind."
kind: SalesSubscriptionLineItemKind!
"The type of the voucher."
voucherType: SalesSubscriptionVoucherType!
"When the line item is billed."
schedule: SalesSubscriptionSchedule!
}
"A sales unit: the unit an item is sold or packed in, for example piece, carton or pallet."
type SalesUnit {
"The ID of the sales unit."
id: ID!
"The name in the default language."
name: String!
"The UN/CEFACT unit code shown on e-invoices for items with this sales unit, for example 'XBX'. Values stored before can be of any format; a value written through the API has 2 or 3 letters or digits (see 'QueryUnitCodes'). Empty when none is set."
unitCode: String
"Whether Wawi created this sales unit for itself, for example '100 g' as the packaging unit of an item with a base price. Hidden sales units are not offered for selection and cannot be changed."
isHidden: Boolean!
"The names, one per language. Always contains the default language."
translations: [SalesUnitTranslation!]!
}
"Whether one action is allowed for a sales unit."
type SalesUnitActionAvailability {
"The stable key of the action: 'UPDATE' or 'DELETE'."
action: String!
"Whether the action is allowed right now."
isAllowed: Boolean!
"The reasons why it is not, empty when it is allowed."
blockers: [UnitActionBlocker!]!
}
"What can be done with a sales unit right now. It is a hint for user interfaces and can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type SalesUnitAllowedActions {
"One entry per action."
actions: [SalesUnitActionAvailability!]!
}
"A sales unit as a list entry, with its name in one language."
type SalesUnitListEntry {
"The ID of the sales unit."
id: ID!
"The name in the requested language; the name in the default language when there is none in it."
name: String!
"The UN/CEFACT unit code shown on e-invoices for items with this sales unit, for example 'XBX'. Empty when none is set."
unitCode: String
"Whether Wawi created this sales unit for itself, for example '100 g' as the packaging unit of an item with a base price. Hidden sales units are not offered for selection and cannot be changed."
isHidden: Boolean!
}
"The name of a sales unit in one language."
type SalesUnitTranslation {
"The language as BCP 47 tag in canonical form (language lower-case, region upper-case, script title-case), for example 'de' or 'de-AT'."
languageTag: String!
"The name of the sales unit in this language."
name: String!
}
"A voucher that is sold."
type SalesVoucherLineItem implements SalesLineItem {
"The ID of the line item."
id: ID!
"The net total of the line item after discount."
totalSalesPriceNet: Decimal!
"The gross total of the line item after discount."
totalSalesPriceGross: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The position of the line item in the document."
sortOrder: Int!
"The unit the quantity is sold in, for example 'pcs'."
salesUnit: String
"The net price per unit."
salesPriceNet: Decimal!
"The gross price per unit."
salesPriceGross: Decimal!
"The quantity."
quantity: Decimal!
"The net purchase price per unit when the line item was added."
purchasePriceNet: Decimal!
"A note on the line item."
note: String
"The name printed on the document."
name: String!
"The discount in percent."
discountPercent: Decimal!
"Discriminator of the line item type."
type: SalesLineItemType!
"The type of the voucher."
voucherType: SalesVoucherType!
}
"A custom field without further configuration."
type ScalarCustomField implements CustomField {
"The ID of the custom field."
id: ID!
"The shape of the field. Value list fields carry allowed values, all other fields do not."
kind: CustomFieldKind!
"The data type of the field. It cannot be changed after the field was created. Known keys: 'INTEGER', 'DECIMAL', 'TEXT', 'SHORT_TEXT', 'CHECKBOX', 'VALUE_LIST', 'URL', 'EMAIL', 'PHONE', 'COUNTRY_ISO', 'PRICE', 'DATE'. New keys can be added; handle an unknown key as not known, never as a failure."
dataType: String!
"The kind of record the field belongs to. It cannot be changed after the field was created. Known keys: 'ITEM', 'CATEGORY', 'CUSTOMER', 'SALES_ORDER', 'SALES_ORDER_LINE_ITEM', 'COMPANY', 'OPERATION', 'PRODUCTION_ITEM', 'PRODUCTION_ORDER', 'RESOURCE'. New keys can be added; handle an unknown key as not known, never as a failure."
entityType: String!
"The name of the group the field is displayed under. Fields of one group are shown together. Null for fields that belong to no group."
groupName: String
"The name of the field. It is unique among the fields of the same entity type when a field is created or renamed; existing data may contain duplicates."
name: String!
"An internal description of the field."
description: String
"Where user interfaces show the field. Null for sales orders and sales order line items, which have no display location. Known keys: 'GENERAL', 'CUSTOM_FIELDS_TAB'. New keys can be added; handle an unknown key as not known, never as a failure."
displayLocation: String
"Indicates that a value is expected for this field. This is a hint for user interfaces; the API does not enforce it."
isRequired: Boolean!
"Indicates that user interfaces hide the field. Hidden fields stay readable and writable through the API."
isHidden: Boolean!
"The position of the field within its group. The API does not store a group order; sort groups by 'groupName'."
sortOrder: Int!
"Restricts the field to items of certain product groups in user interfaces. Only available for item fields."
productGroupRestriction: ProductGroupRestriction
}
"A secret. Reading shows only whether it is set; the secret itself is never returned. To set one, use NewSettingValue.secretValue."
type SecretValue implements SettingValue {
"Discriminator of the value type."
valueType: SettingValueType!
"Whether a secret is stored. The only thing a read returns."
isSet: Boolean!
}
"A simple selection variation of an item: the customer chooses one of several values, each of which can change price, weight, item number and GTIN. It is not a variation axis: it does not create combinations and has no item of its own per value. An item that becomes a variation parent turns its selection variations into axes."
type SelectionVariation {
"The ID of the selection variation."
id: ID!
"Display name in the default language."
name: String!
"The display name per language. Never null."
names: [LocalizedText!]!
"How the shop shows the variation. The style is one of DROPDOWN, RADIO_BUTTONS, IMAGE_SWATCHES or TEXT_SWATCHES. It changes how the axis is shown in the shop, not which fields exist. The list can grow with the shops; a client treats a value it does not know like DROPDOWN."
style: String!
"Zero-based position among the variations of the item."
position: Int!
"The values in their order. Never null."
values: [VariationValue!]!
}
"Sends a test e-mail with the stored mail settings of the company to the given address and returns how it went. A failed send is not an error of the request: the call answers 200 with succeeded false and the message of the mail server in errorMessage. The test is only meaningful with a recipient whose domain differs from the mail server. The settings must exist; they are not changed. - Response"
type SendCompanyTestEmailCommandResponse {
"Whether the mail server accepted the test e-mail."
succeeded: Boolean!
"The error message of the mail server or the mail connection when the test failed, otherwise not set."
errorMessage: String
}
"Sends a pending or failed refund to the payment provider or the bank. The response tells whether it was accepted ('Sent') or refused ('Failed', with the message of the provider); a refusal is a result, not an error of the call, and the refund can be changed and sent again. Payment accounts that need an interactive confirmation, for example a TAN for online banking, cannot send from here. Errors: REFUND_NOT_FOUND (the refund was not found); REFUND_ALREADY_SENT (the refund was sent or confirmed already); REFUND_SENDING_IN_PROGRESS (another payment reconciliation process (sending refunds or fetching transactions) is running right now; try again later); PAYMENT_ACCOUNT_REQUIRES_INTERACTION (the payment account needs an interactive confirmation to send). - Response"
type SendRefundCommandResponse {
"The status after the attempt: 'Sent' or 'Failed'."
status: RefundStatus!
"The ID the payment provider gave the refund, when it was accepted."
providerTransactionId: String
"The message of the provider, when it was refused."
errorMessage: String
}
"One session of an application: who runs it, where, and whether it still reports. It contains personal data."
type SessionInfo {
"The stable key of the application."
applicationId: String!
"The name of the application."
applicationName: String!
"The user who is logged in. Absent for a service without a user."
userId: ID
"The name of the user."
userName: String
"The name of the computer the session runs on."
host: String!
"The number of the process on that computer."
processNumber: Int!
"When the session started."
loggedInAt: DateTime!
"The latest sign of life."
lastHeartbeatAt: DateTime!
"Whether the session reported within the timeout."
isAlive: Boolean!
"Whether the session was asked to log off."
isTerminationRequested: Boolean!
}
"One run of an action."
type SettingsActionExecution {
"The ID of the run."
id: String!
"The ID of the action."
actionId: String!
"The state of the run."
status: ActionStatus!
"A text for the user, in the language of the caller."
message: String
"When the run started."
startedAt: DateTime!
"When the run finished. Absent while it runs."
finishedAt: DateTime
}
"A rule that makes a node visible, enabled or required depending on other settings."
type SettingsDependency {
"What the rule changes."
effect: DependencyEffect!
"How the conditions combine."
match: DependencyMatch!
"The conditions. At least one."
conditions: [DependencyCondition!]!
}
"The value of one setting."
type SettingValueEntry {
"The key of the setting."
settingKey: String!
"For whom the value applies."
scope: SettingsScope!
"For the scopes User and Workstation: the user the value is for."
userId: ID
"For the scope Workstation: the name of the workstation."
workstation: String
"The value. The default when nobody set one."
value: SettingValue
"Whether the value is the default or was set."
source: ValueSource!
"When the value was last changed. Absent for a default."
changedAt: DateTime
"The user who last changed the value. Absent for a default."
changedBy: ID
"Whether the caller cannot change the value."
isReadOnly: Boolean!
}
"A shipping account: the access of the Wawi to a shipping provider for one purpose. Only what identifies and classifies the account is part of the API. User name, password, tokens, customer and billing numbers, bank data and the sender address are never part of the API; 'credentialsStatus' only says whether they are set."
type ShippingAccount {
"The ID of the shipping account."
id: ID!
"The name the account has in the Wawi."
displayName: String!
"The shipping provider the account belongs to."
providerId: ID!
"What the account is used for, as the key of a capability: LABEL_CREATION, RETURN_LABELS or TRACKING_ACCOUNT. Which of them a provider supports is in 'ShippingProvider.capabilities'."
capabilityId: String!
"The account this one refines for a single company. Empty for the account that applies to all companies."
parentAccountId: ID
"The company the account is for. Empty for an account that applies to all companies; set exactly when 'parentAccountId' is set."
companyId: ID
"Whether it is a test account of the provider. A test account cannot be changed and not deleted."
isTestAccount: Boolean!
"Whether the credentials of the account are set, as a stable key in UPPER_SNAKE. Known keys: NOT_CONFIGURED (no credentials are stored, or they are incomplete), CONFIGURED (credentials are stored), TOKEN_EXPIRED (the account signs in with a token that is no longer valid; it has to be authorised again in the Wawi). New keys can be added; a client treats a key it does not know as not usable. The credentials themselves are never part of the API."
credentialsStatus: String!
"Whether a shipping method uses the account. Computed; an account in use cannot be deleted."
isInUse: Boolean!
}
"Whether one action is allowed for a shipping account. Keys today: delete."
type ShippingAccountActionAvailability {
"The stable key of the action in UPPER_SNAKE. Known key: DELETE. A client that does not know a key ignores the entry."
action: String!
"Whether the action is allowed right now."
isAllowed: Boolean!
"The reasons why it is not, empty when it is allowed."
blockers: [ShippingAccountActionBlocker!]!
}
"One reason why an action on a shipping account is not allowed."
type ShippingAccountActionBlocker {
"Stable machine-readable code of the reason, for example SHIPPING_ACCOUNT_IN_USE."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"What can be done with a shipping account right now. It is a hint for user interfaces and can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type ShippingAccountAllowedActions {
"One entry per action, allowed or not."
actions: [ShippingAccountActionAvailability!]!
}
"The method of the Shipping app a shipping method is assigned to."
type ShippingAppAssignment {
"The ID of the method in the Shipping app."
shippingAppMethodId: String!
"The name of the method in the Shipping app, as last synchronised."
name: String
"Whether the assignment is active."
isActive: Boolean
}
"A method of the Shipping app a shipping method can be assigned to."
type ShippingAppMethod {
"The ID of the method in the Shipping app."
id: String!
"The name of the method in the Shipping app."
name: String!
}
"A shipping class. Items carry one; shipping configurations and pick list templates can be limited to classes. Used for the detail and for the list."
type ShippingClass {
"The ID of the shipping class."
id: ID!
"The name of the shipping class. It is unique, regardless of upper and lower case."
name: String!
}
"Whether one action on a shipping class would be allowed right now, and if not, why not."
type ShippingClassActionAvailability {
"The stable key of the action: 'delete'."
action: String!
"Whether the action would go through right now."
isAllowed: Boolean!
"The reasons why it would not. Empty when it is allowed."
blockers: [ShippingClassActionBlocker!]!
}
"One reason why an action on a shipping class is not allowed."
type ShippingClassActionBlocker {
"Stable machine-readable code of the reason, for example SHIPPING_CLASS_IS_USED_BY_ITEMS."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"What can be done with a shipping class right now. It is a hint for user interfaces and can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type ShippingClassAllowedActions {
"One entry per action."
actions: [ShippingClassActionAvailability!]!
}
"The result of a label request for one package."
type ShippingLabelResult {
"The package."
packageId: ID!
"Whether the label was created."
isCreated: Boolean!
"The tracking number of the new label."
trackingNumber: String
"Why the label was not created, for example SHIPPING_METHOD_NOT_MAPPED or SHIPPING_SERVICE_REJECTED."
errorCode: String
"The message of the shipping service, in its language."
errorMessage: String
}
"A shipping method with all its settings. Texts per language are under translations."
type ShippingMethod {
"The ID of the shipping method."
id: ID!
"The name in the default language."
name: String
"Whether the shipping method can be chosen for new orders."
isActive: Boolean!
"Who created the shipping method."
origin: ShippingMethodOrigin!
"How shipping data is handed over to the carrier. Stable key in UPPER_SNAKE. Known values: NONE, TEMPLATE, JTL_SHIPPING, SELLER_FULFILLED_PRIME, SHIPPING_PLATFORM, FFN_PRIME, SHIPPING_APP. New values can be added; a client that does not know a value ignores or tolerates it."
exportMode: String!
"The shipping costs, gross."
grossPrice: Decimal!
"From this order value on, shipping is free. Absent when there is no such limit."
freeShippingFromOrderValue: Decimal
"The weight of the packaging that is added to the weight of the goods."
additionalWeight: Decimal!
"What the shipping costs the merchant, net."
netPurchasePrice: Decimal!
"The tax class of the shipping costs. Empty when the tax rate is determined from the order."
taxClassId: ID
"How the tax rate of the shipping costs is determined. Stable key in UPPER_SNAKE. Known values: TAX_CLASS, HIGHEST_GROSS_POSITION, HIGHEST_VAT_POSITION. New values can be added; a client that does not know a value ignores or tolerates it."
taxRateDetermination: String!
"The priority of the shipping method, from -5 to 5."
priority: Int!
"Whether and how packages have to be weighed. Stable key in UPPER_SNAKE. Known values: NONE, WITH_PRESET, WITHOUT_PRESET, WITH_SCALE, EVEN_DISTRIBUTION. New values can be added; a client that does not know a value ignores or tolerates it."
weighingRequirement: String
"How the tracking ID is entered. Stable key in UPPER_SNAKE. Known values: NONE, MANUAL, VIA_SHIPPING_DATA_IMPORT. New values can be added; a client that does not know a value ignores or tolerates it."
trackingIdEntry: String
"A regular expression the tracking ID has to match."
trackingIdPattern: String
"The tracking ID is cut from this position on. Absent, together with trackingIdCutTo, when the tracking ID is not cut."
trackingIdCutFrom: Int
"The tracking ID is cut up to this position. Absent, together with trackingIdCutFrom, when the tracking ID is not cut."
trackingIdCutTo: Int
"The link to the tracking page."
trackingUrlTemplate: String
"Whether a shipping mail is sent to the customer."
sendShippingMail: Boolean!
"Whether labels are printed on dispatch."
printLabels: Boolean
"Whether the start position on the label sheet is asked before printing."
askLabelStartPosition: Boolean
"What marketplaces are told about the shipping method."
marketplaces: ShippingMethodMarketplaces!
"Whether the shipping method is suitable for Amazon Prime. It follows from the export mode."
isAmazonPrime: Boolean!
"For an automatically created shipping method: the own shipping method it is mapped to. Orders and packages of the automatic one are then handled as the own one."
mainShippingMethodId: ID
}
"Whether an action is allowed right now."
type ShippingMethodActionAvailability {
"The stable key of the action in UPPER_SNAKE. Known keys: ACTIVATE (make the shipping method available again), DEACTIVATE (take it out of use), CONVERT_TO_OWN (turn an automatically created shipping method into an own one), DELETE. New keys can be added; a client that does not know a key ignores the entry."
actionId: String!
"Whether the action is allowed."
isAllowed: Boolean!
"The reasons the action is refused. Empty when it is allowed."
blockers: [ShippingMethodActionBlocker!]!
}
"A reason an action is refused."
type ShippingMethodActionBlocker {
"The error code of the reason."
code: String!
"A readable text."
message: String
}
"What can be done with a shipping method right now."
type ShippingMethodAllowedActions {
"One entry per action."
actions: [ShippingMethodActionAvailability!]!
}
"A shipping method in the list."
type ShippingMethodListEntry {
"The ID of the shipping method."
id: ID!
"The name in the default language."
name: String
"Whether the shipping method can be chosen for new orders."
isActive: Boolean!
"Who created the shipping method."
origin: ShippingMethodOrigin!
"How shipping data is handed over to the carrier. Stable key in UPPER_SNAKE. Known values: NONE, TEMPLATE, JTL_SHIPPING, SELLER_FULFILLED_PRIME, SHIPPING_PLATFORM, FFN_PRIME, SHIPPING_APP. New values can be added; a client that does not know a value ignores or tolerates it."
exportMode: String!
"Whether the shipping method is assigned to a method of the Shipping app."
hasShippingAppAssignment: Boolean!
}
"What marketplaces are told about a shipping method."
type ShippingMethodMarketplaces {
"The carrier name sent to Amazon with the shipping confirmation. Free text; empty when none is set."
amazonCarrierCode: String
"The carrier sent to eBay with the shipping confirmation. Free text; empty when none is set."
ebayCarrierCode: String
"Sent to the marketplace instead of the name of the shipping method."
shippingServiceName: String
}
"Tax codes that replace those of a rate for the shipping line item of one shipping method."
type ShippingMethodTaxCodeOverride {
"The shipping method."
shippingMethodId: ID!
"Where the tax code for taxable sales comes from. Empty means no override."
taxableTaxCode: ShippingTaxCodeChoice
"Where the tax code for tax-free intra-community deliveries to business customers in another EU country comes from. Empty means no override."
intraCommunityDeliveryTaxCode: ShippingTaxCodeChoice
"Where the tax code for sales under the reverse-charge procedure comes from. Empty means no override."
reverseChargeTaxCode: ShippingTaxCodeChoice
"Where the tax code for tax-exempt sales comes from. Empty means no override."
exemptTaxCode: ShippingTaxCodeChoice
}
"The name of a shipping method in one language."
type ShippingMethodTranslation {
"The language as BCP 47 language tag, for example de or de-AT: language subtag in lower case, region subtag in upper case. Case does not matter on input. Wawi currently holds only the two-letter language subtag."
languageTag: String!
"Whether this is the default language."
isDefaultLanguage: Boolean!
"The name in this language."
name: String
}
"A shipping provider that the Wawi can create labels with (the label connection of the Wawi, not a shipping method and not a method of the Shipping app). The list is part of the application and read only; a provider is only an entry here, its credentials live in shipping accounts."
type ShippingProvider {
"The ID of the shipping provider. Fixed by the application and the same in every client."
id: ID!
"The name of the shipping provider, for example 'DHL Versenden 4.0'. A product name, not translated."
name: String!
"Whether the connection is still in a beta phase."
isBeta: Boolean!
"Whether the application still offers the provider for new settings. A provider that is not selectable stays in the list because shipping methods and accounts can still refer to it."
isSelectable: Boolean!
"Position in the order the application shows the providers in. Smaller comes first."
displayOrder: Int!
"The keys of the capabilities the provider offers, see 'QueryShippingProviderCapabilities'. A client that does not know a key ignores it."
capabilities: [String!]!
"Whether at least one shipping account of the provider for creating labels has credentials. Computed; says nothing about the validity of the credentials."
isConfigured: Boolean!
"How many shipping accounts of the provider exist, test accounts and accounts of single companies included."
accountCount: Int!
}
"One capability of shipping providers. A capability is identified by a stable key; the list grows with the application."
type ShippingProviderCapability {
"The stable key of the capability: LABEL_CREATION, RETURN_LABELS, TRACKING_ACCOUNT or SHIPMENT_TRACKING. A client that does not know a key shows the name."
capabilityId: String!
"The name of the capability, in the language of the caller."
name: String!
"A description of the capability, in the language of the caller."
description: String
}
"A shipping run: many sales orders delivered in one go."
type ShippingRun {
"The ID of the shipping run."
id: UUID!
"Where the run stands."
status: ShippingRunStatus!
"Whether sales orders that are only partially deliverable were delivered partially."
allowPartialDelivery: Boolean!
"Whether labels were requested for the new packages."
createShippingLabels: Boolean!
"Whether the new packages were marked as shipped."
markAsShipped: Boolean!
"How many sales orders the run contains."
totalCount: Int!
"How many were delivered."
deliveredCount: Int!
"How many were skipped because they are blocked or not deliverable."
skippedCount: Int!
"How many were not delivered because the delivery failed."
failedCount: Int!
"How many delivered sales orders have at least one package without a label although labels were requested."
labelFailedCount: Int!
"When the run was accepted."
requestedAt: DateTime!
"The user who started the run."
requestedBy: ID
"When the run ended. Absent while it is queued or running."
finishedAt: DateTime
"The error code when the run failed."
failureCode: String
}
"What a shipping run did with one sales order."
type ShippingRunOrder {
"The shipping run."
shippingRunId: UUID!
"The sales order."
salesOrderId: ID!
"Zero-based position of the sales order in the request."
position: Int!
"What the run did with the sales order."
outcome: ShippingRunOrderOutcome!
"The delivery notes the run created for the sales order. Empty unless it was delivered."
deliveryNoteIds: [ID!]!
"Why the sales order was skipped or failed. Empty when it was delivered."
blockers: [DeliveryBlocker!]!
"The label result per new package when labels were requested. Empty otherwise."
shippingLabelResults: [ShippingLabelResult!]!
}
"Where the tax code of a shipping line item comes from."
type ShippingTaxCodeChoice {
"Where the tax code comes from. Known values: TAX_CODE, LINE_WITH_HIGHEST_VALUE, LINE_WITH_HIGHEST_RATE. New values can be added without a contract change."
source: String!
"The tax code. Set only when the source is TaxCode."
taxCodeId: ID
}
"A voucher item for a single-purpose voucher. It is taxed when sold and neither shipped nor traded by identifiers."
type SinglePurposeVoucherItem implements Item {
"The ID of the item."
id: ID!
"Name of the item in the default language."
name: String!
"Whether the item is active. An inactive item cannot be sold or used as a kit component."
isActive: Boolean!
"The ID of the product group."
productGroupId: ID
"The ID of the manufacturer."
manufacturerId: ID
"The ID of the item condition, for example new or used."
conditionId: ID
"The ID of the delivery status of the item (the master data of delivery statuses, for example \"in stock\" or \"ships in 3 days\")."
deliveryStatusId: ID
"The variation parent this item is a combination of. Absent when the item is no combination. Read-only for every kind of item: the assignment is maintained at the parent only (items/variation-parents/{itemId}/combinations)."
variationParentId: ID
"Every trait that applies to the item, ordered by rank, the first being the kind in 'itemType'. The kind is the first rule that applies; the others would otherwise be lost (a stock-managed variation parent is a VariationParent with the trait StockItem, a stock-managed kit made of divisible parts is a Kit with the trait DivisibleStockItem). Only the fields of the kind are part of the model; sub-resources are offered by the kind. Clients must tolerate values they do not know."
traits: [ItemType!]!
"When the item was created."
createdAt: DateTime
"When the item was last changed."
changedAt: DateTime
"Discriminator of the item kind."
itemType: ItemType!
"The identifiers of the item: its item number."
identifiers: BasicItemIdentifiers!
"The ID of the tax class."
taxClassId: ID
"Settings of the voucher that is sold."
voucher: VoucherSettings!
}
"The special price of an item for one customer group in one sales channel."
type SpecialPriceEntry {
"The sales channel the special price applies in."
salesChannelId: ID!
"The customer group the special price applies to."
customerGroupId: ID!
"The net special price."
netPrice: Decimal!
}
"Limits the special price to the time the item has enough stock. The object is present when the special price is limited by stock."
type SpecialPriceStockRestriction {
"The special price applies while the stock is at least this quantity."
minimumStockQuantity: Decimal!
}
"The period in which a special price applies. The object is present when the special price is limited by date."
type SpecialPriceValidity {
"The start of the period."
from: DateTime!
"The end of the period. Absent when the period has no end."
until: DateTime
}
"Splits a line item: the given quantity moves to a new line item with the same data. - Response"
type SplitReturnLineItemCommandResponse {
"The ID of the new line item."
returnLineItemId: ID!
}
"Moves line items or quantities into a new sales order. Fails with a GraphQL error whose extensions.code is SalesOrderCannotBeSplit. - Response"
type SplitSalesOrderCommandResponse {
"The ID of the new sales order."
newSalesOrderId: ID!
}
"An ISO 4217 code a currency can be created with, and whether the tenant already has it. A code that is not in this list can only be used as a tenant-defined code with the prefix 'x-'."
type StandardCurrencyCode {
"The ISO 4217 alpha-3 code in capitals."
code: String!
"A display name of the currency, for orientation only."
name: String
"Whether the tenant already has a currency with this code."
isConfigured: Boolean!
}
"A condition that is posted to the item in the standard condition."
type StandardItemCondition implements ItemCondition {
"The ID of the item condition."
id: ID!
"How the condition deals with stock. It cannot be changed after the condition was created."
stockHandling: ItemConditionStockHandling!
"The name in each language it has, including languages that are no longer active. It always has a name in the standard language of the Wawi."
translations: [ItemConditionTranslation!]!
"The colour as hex value with a leading '#', shown in the warehouse. Null when none."
color: String
"The position in lists; smaller comes first."
sortOrder: Int!
"Whether the condition can be chosen. Inactive conditions stay on the items and returns that already carry them."
isActive: Boolean!
"Whether it is the standard condition that items without another condition carry. Computed; there is exactly one."
isDefault: Boolean!
"Whether it was delivered with the Wawi. A system condition cannot be deleted. Computed."
isSystem: Boolean!
"Where the condition can be chosen."
restriction: ItemConditionRestriction!
"The values of the sales platforms the condition is mapped to. A platform without an entry has no mapping."
marketplaceCodes: [ItemConditionMarketplaceCode!]!
}
"The standard prices of an item in one currency. The base sales price is the starting point of every customer group that has no price list of its own in that currency."
type StandardPrices {
"The currency of the prices as ISO 4217 code. Prices are stored in the default currency of the tenant and converted on the fly into other currencies."
currencyCode: String!
"The base net sales price of the item. Every customer group without a price list of its own takes it over."
salesPriceNet: Decimal
"Manufacturer's suggested retail price."
suggestedRetailPrice: Decimal
"Net price the item was last purchased for. Read-only, it follows from the goods receipts."
lastPurchasePriceNet: Decimal
"Present when the prices were converted from the default currency of the tenant."
conversion: CurrencyConversion
"Whether automatic discounts are not applied to the item."
ignoreDiscounts: Boolean!
}
"A warehouse without storage location management. This is the base type: the plain warehouse, created with the plain creation."
type StandardWarehouse implements Warehouse {
"The ID of the warehouse."
id: ID!
"The name of the warehouse. It is unique among the active warehouses."
name: String!
"The short name of the warehouse."
shortName: String
"A free description of the warehouse."
description: String
"Whether the warehouse is active. An inactive warehouse takes no new stock postings and no new orders."
isActive: Boolean!
"The priority of the warehouse when orders are delivered: orders are served from the warehouse with the lowest number first."
deliveryPriority: Int!
"The ID of the company the warehouse belongs to."
companyId: ID
"The digit from 0 to 9 that the warehouse puts into the shipping unit numbers (NVE) of its shipments."
nveExtensionDigit: String
"Whether the stock of the warehouse is left out of the available stock."
isLockedForAvailableStock: Boolean!
"Whether the warehouse manages storage locations that this API shows (true for a warehouse with storage location management). Every other warehouse has one storage location internally, which the API does not show; its storage location operations fail with errorCode WAREHOUSE_TYPE_DOES_NOT_SUPPORT_STORAGE_LOCATIONS."
hasStorageLocations: Boolean!
"Whether stock can be posted on the warehouse directly, by a stock posting. True only for an active warehouse of the type 'Standard'; every other warehouse takes stock through the processes of its own system."
allowsDirectStockPosting: Boolean!
"Discriminator of the warehouse type."
warehouseType: WarehouseType!
"Whether the warehouse is locked for delivery: its stock stays available but orders are not delivered from it."
isLockedForDelivery: Boolean!
"The postal address of the warehouse with its contact person."
address: WarehouseAddress!
"The capabilities of the warehouse and whether each is enabled. One entry per capability; a capability the kind does not offer is listed as not available."
capabilities: [WarehouseCapabilityState!]!
"Present when an item that does not exist yet is created on goods receipt. Absent when goods receipt never creates items."
newItemOnReceipt: NewItemOnReceipt
}
"Starts the OAuth sign-in of a mailbox and returns the address the client has to open in the browser. The client only runs the sign-in there and catches the redirect to the redirect address of the configuration. Wawi runs the protocol itself (state, code verifier, token exchange with the client secret), so the client never needs these. The returned state ties the two steps together; the sign-in expires after the time given. - Response"
type StartCompanyEmailOAuthCommandResponse {
"The address to open in the browser."
authorizationUrl: String!
"The redirect address of the configuration the client has to catch."
redirectUri: String!
"The value that ties the sign-in to its completion. It is returned to Wawi in the second step."
state: String!
"Until when the sign-in can be completed."
expiresAt: DateTime!
}
"Asks the worker to start every sync a user stopped (state Deactivated); syncs with an open request are skipped. - Response"
type StartDeactivatedWorkerSyncsCommandResponse {
"How many syncs were asked to start."
requestedCount: Int!
"How many deactivated syncs were skipped."
skippedCount: Int!
"One entry per deactivated sync, with the reason when it was skipped."
results: [WorkerSyncActionResult!]!
}
"Starts a fetch of the transactions of a payment account from its bank or payment provider. The run works asynchronously; read its state with 'GetPaymentAccountImportRun'. New transactions are saved, known ones are updated, import filters and workflows apply; afterwards the automatic assignment runs when it is switched on in the settings. When the bank asks for a confirmation or the credentials are invalid, the run fails and the ERP locks the automatic import of the account. Errors: PAYMENT_ACCOUNT_NOT_FOUND (the payment account was not found); PAYMENT_ACCOUNT_HIDDEN (the payment account is hidden; show it with 'ShowPaymentAccount' first); PAYMENT_ACCOUNT_IS_EXTERNAL (the account is an external account; its transactions are delivered with 'ImportPaymentTransaction'); PAYMENT_ACCOUNT_REQUIRES_INTERACTION (the account needs an interactive confirmation (for example a TAN) or a file to be fetched); PAYMENT_PROVIDER_NOT_LICENSED (the licence does not cover the payment provider of the account); LICENSE_CHECK_UNAVAILABLE (the licence could not be checked right now; try again later); PAYMENT_RECONCILIATION_IN_PROGRESS (another fetch of transactions is running right now; try again later); IMPORT_RUN_PERIOD_INVALID ('from' is after 'to'). - Response"
type StartPaymentAccountImportCommandResponse {
"The ID of the import run."
importRunId: ID!
}
"Asks the worker to start a suspended, deactivated or locked sync; a locked one runs only once its account is unlocked. - Response"
type StartWorkerSyncCommandResponse {
"The key of the action that was requested: Start, Stop, Restart, RunOnce or ResetError."
actionId: String!
"When the request was accepted."
requestedAt: DateTime!
}
"An item with stock managed in whole units."
type StockItem implements Item {
"The ID of the item."
id: ID!
"Name of the item in the default language."
name: String!
"Whether the item is active. An inactive item cannot be sold or used as a kit component."
isActive: Boolean!
"The ID of the product group."
productGroupId: ID
"The ID of the manufacturer."
manufacturerId: ID
"The ID of the item condition, for example new or used."
conditionId: ID
"The ID of the delivery status of the item (the master data of delivery statuses, for example \"in stock\" or \"ships in 3 days\")."
deliveryStatusId: ID
"The variation parent this item is a combination of. Absent when the item is no combination. Read-only for every kind of item: the assignment is maintained at the parent only (items/variation-parents/{itemId}/combinations)."
variationParentId: ID
"Every trait that applies to the item, ordered by rank, the first being the kind in 'itemType'. The kind is the first rule that applies; the others would otherwise be lost (a stock-managed variation parent is a VariationParent with the trait StockItem, a stock-managed kit made of divisible parts is a Kit with the trait DivisibleStockItem). Only the fields of the kind are part of the model; sub-resources are offered by the kind. Clients must tolerate values they do not know."
traits: [ItemType!]!
"When the item was created."
createdAt: DateTime
"When the item was last changed."
changedAt: DateTime
"Discriminator of the item kind."
itemType: ItemType!
"The identifiers of the item, each in its own property."
identifiers: TradeItemIdentifiers!
"The ID of the tax class."
taxClassId: ID
"The ID of the shipping class."
shippingClassId: ID
"Outer dimensions as shipped. Absent when none are maintained."
dimensions: ItemDimensions
"Weights. Absent when none are maintained."
weights: ItemWeights
"Customs information. Absent when none is maintained."
customs: ItemCustoms
"Sales unit, packaging unit and content with its base price. Absent when none is maintained."
units: ItemUnits
"The containers the item is also traded in. Empty when it has none."
containers: [ItemContainer!]!
"Settings of the stock management."
stockManagement: StockManagement!
"How the units are traced: not at all, by batch / shelf life expiration date, or by serial number."
tracking: StockTracking!
}
"Settings every stock-managed item has, whatever the way its stock is quantified or traced."
type StockManagement {
"Allows selling more than is physically in stock."
allowNegativeStock: Boolean!
"Safety stock that is held back and not offered for sale."
buffer: Int!
"Minimum stock level across all warehouses. Falling below it flags the item for reordering."
globalMinimumStockLevel: Decimal!
}
"The reason of a stock posting, for example goods receipt, goods issue, correction or return. Every stock movement carries one. The list is part of the application: the types are fixed, none can be created, changed or deleted over the API. The direction of a posting is not part of the type but of the posting; 'directions' says in which directions the application uses the type."
type StockPostingType {
"The ID of the posting type. Fixed by the application and the same in every client."
id: ID!
"The name of the posting type. Not translated: it is the name stored with the type."
name: String
"Whether the application knows the type and can handle it. Computed; every type that ships with the ERP is a system type, and a system type cannot be changed or deleted."
isSystem: Boolean!
"The directions the application uses the type in: one for a goods receipt, two for a correction, three for a transfer; none for a type that does not move stock (a reservation). Computed from the use in the application."
directions: [StockPostingDirection!]!
}
"How the units of an item are traced: not at all, by batch / shelf life expiration date (Lot) or by serial number (Serial). 'lotTracking' is only present for Lot and 'serialNumberTracking' only for Serial; a value for the other kind is refused with 400. (One model with a kind and optional fields, because the generator cannot map a polymorphic type inside a variant of another polymorphic type.)"
type StockTracking {
"How the units are traced."
kind: StockTrackingKind!
"What the stock postings carry to trace the lots. Present only for Lot, required there."
lotTracking: LotTrackingType
"At which point of the goods flow serial numbers are captured. Present only for Serial, required there."
serialNumberTracking: SerialNumberTrackingType
}
"Transfer of items from one standard warehouse to another. On shipping, the items leave the source warehouse and are held in a transit warehouse until the target warehouse receives them, so the available stock stays unchanged during the transfer."
type StockTransfer {
"Unique identifier of the stock transfer."
id: ID!
"Current state of the stock transfer: open, in transit or completed."
status: StockTransferStatus!
"Warehouse the items are transferred from."
sourceWarehouseId: ID!
"Warehouse the items are transferred to."
targetWarehouseId: ID!
"Warehouse that holds the items while they are on the way. It is determined automatically for the pair of source and target warehouse."
transitWarehouseId: ID!
"Shipping method used to move the items from the source to the target warehouse."
shippingMethodId: ID!
"Date on which the items are expected to arrive in the target warehouse."
expectedDeliveryDate: DateTime
"Internal note on the stock transfer."
note: String
"Date and time the stock transfer was created."
createdAt: DateTime!
}
"Whether one action is currently allowed on a stock transfer and, if not, why."
type StockTransferActionAvailability {
"Stable key of the action in UPPER_SNAKE. Known keys: UPDATE (change the shipping method, the expected delivery date or the note), CREATE_LINE_ITEM, UPDATE_LINE_ITEM, DELETE_LINE_ITEM, TO_TRANSIT (ship the items into the transit warehouse), FROM_TRANSIT (receive items in the target warehouse), WRITE_OFF_TRANSIT (write off the quantities still in transit and complete the stock transfer), CANCEL (cancel before shipping). New keys can be added; a client that does not know a key ignores the entry."
actionId: String!
"Indicates whether the action is currently allowed."
isAllowed: Boolean!
"Reasons why the action is not allowed. Empty when the action is allowed."
blockers: [StockTransferActionBlocker!]!
}
"Reason why an action on a stock transfer is not allowed."
type StockTransferActionBlocker {
"Stable error code of the reason. Unknown codes must be treated as not allowed."
code: String!
"Human-readable description of the reason."
message: String!
}
"Actions that are currently allowed on a stock transfer. The result is a hint for user interfaces and can be outdated when the action is performed; every action validates itself again."
type StockTransferActionList {
"One entry per action."
actions: [StockTransferActionAvailability!]!
}
"Item and quantity to transfer, with the quantities reached in each phase of the transfer. The shipped quantity equals the sum of the quantities in transit, received and written off."
type StockTransferLineItem {
"Unique identifier of the line item."
id: ID!
"Item that is transferred."
itemId: ID!
"Quantity of the item to transfer."
quantity: Decimal!
"Quantity that has left the source warehouse."
shippedQuantity: Decimal!
"Quantity currently held in the transit warehouse."
inTransitQuantity: Decimal!
"Quantity received in the target warehouse."
receivedQuantity: Decimal!
"Quantity posted out of the transit warehouse because it did not arrive."
writtenOffQuantity: Decimal!
}
"A suggestion to move stock from a source warehouse to the destination warehouse. It is turned into a stock transfer with 'CreateStockTransfer': 'sourceWarehouseId' as its source, 'warehouseId' as its target."
type StockTransferRestockSuggestion implements RestockSuggestion {
"The discriminator: where the suggestion gets its goods from."
restockSuggestionType: RestockSuggestionType!
"The ID of the item."
itemId: ID!
"The item's SKU."
sku: String!
"The item's name in the default language."
itemName: String!
"The ID of the destination warehouse the suggestion is for."
warehouseId: ID!
"The quantity suggested, 0 or more."
suggestedQuantity: Decimal!
"The quantity needed before the minimum order quantity, the order interval and the percentage surcharge are applied."
demandQuantity: Decimal!
"The open quantity, still to be picked, of the open sales orders and stock transfers that count as demand, for the item in all warehouses. It is set off against the destination warehouse with the highest priority only."
openSalesOrderQuantity: Decimal!
"The forecast demand of the coming days from the past consumption. Empty without a forecast."
forecastQuantity: Decimal
"The consumption in the measured period, without the order peaks left out: the quantity of the sales orders created in the period, delivered from the destination warehouse plus still open. Without a forecast the period is the last 30 days."
consumedQuantity: Decimal!
"The consumption in the last 30 days."
consumedQuantityLast30Days: Decimal!
"The consumption per day in the measured period. Empty when nothing was consumed."
dailyConsumption: Decimal
"The consumption of the period left out as order peaks. Empty when peaks are not left out or none occurred."
peakQuantity: Decimal
"The average quantity per delivery in the period, the basis of the peak detection. Empty when peaks are not left out."
averageQuantityPerDelivery: Decimal
"On how many days of the period the item was in stock. Only with 'onlyDaysWithStock'."
daysWithStock: Int
"How many open availability requests exist for the item. They count, one unit each, only with 'includeAvailabilityRequests', and only for the destination warehouse with the highest priority."
availabilityRequestCount: Int!
"The demand planned by hand that counts. Empty when such demand does not count."
manualDemandQuantity: Decimal
"The stock counted for the destination warehouse: its stock without what is not available, plus, by the stock settings, the stock in transit, the open stock transfers to it and the purchase list quantities."
stockQuantity: Decimal!
"The stock counted, plus the supplier stock where the settings count it, minus what open sales orders and external reservations take."
availableQuantity: Decimal!
"What is missing when the available quantity is below 0; else 0."
shortageQuantity: Decimal!
"The stock that is not counted as available: on locked storage locations or storage locations locked for delivery, and on clearance and return storage locations, as the stock settings decide. Empty when 'includeStockOnStorageLocationsLockedForDelivery' is set."
blockedForDeliveryQuantity: Decimal
"The quantity of the item in orders of sales channels that are not imported yet; 0 when there are none. It counts as demand only with 'includeExternalReservations'."
externallyReservedQuantity: Decimal!
"The quantity of the item on the purchase list for the destination warehouse; quantities without a warehouse are added for the warehouse with the highest priority. It counts as stock only with 'includePurchaseListQuantities'."
purchaseListQuantity: Decimal!
"The item's minimum stock for the destination warehouse; with 'fillGlobalMinimumStock', the part of the minimum stock over all warehouses that falls on this warehouse. It is added to the suggestion only when a minimum stock is topped up. Empty when the item has none."
minimumStock: Decimal
"The item's minimum stock over all warehouses. Empty when it has none."
globalMinimumStock: Decimal
"The item's maximum stock of the destination warehouse. Empty when it has none or the settings do not limit to it."
maximumStock: Decimal
"The inflow from purchase orders set off against this suggestion: the open quantity of the source supplier's purchase orders to the destination warehouse; with 'inflowAllocation' 'FIRST_WAREHOUSE', the share of the inflow of all suppliers taken by this warehouse. 0 for suggestions from a source warehouse or without a source."
consideredInflowQuantity: Decimal!
"The open quantity of the purchase orders that count as inflow, for all warehouses."
inflowAllWarehousesQuantity: Decimal!
"The open quantity of all sent and partially delivered purchase orders of the item, whatever the settings."
totalInflowQuantity: Decimal!
"The quantity the percentage surcharge added. Empty without a surcharge."
surchargeQuantity: Decimal
"The item's average net purchase price, in the base currency."
averageNetPurchasePrice: Decimal
"The item's last net purchase price, in the base currency."
lastNetPurchasePrice: Decimal
"The ID of the source warehouse."
sourceWarehouseId: ID!
"What the source warehouse can give: its stock without what is locked for delivery and what open stock transfers to the destination warehouses take already."
sourceAvailableQuantity: Decimal!
"The shipping method last used for stock transfers from this source to this destination warehouse. Empty when none was used yet."
defaultShippingMethodId: ID
}
"Asks the worker to stop the sync; it stays deactivated, also after a restart of the worker, until a user starts it. - Response"
type StopWorkerSyncCommandResponse {
"The key of the action that was requested: Start, Stop, Restart, RunOnce or ResetError."
actionId: String!
"When the request was accepted."
requestedAt: DateTime!
}
"A storage location of a warehouse with storage location management. Stock and the items assigned to the location are read through the stock queries, not here."
type StorageLocation {
"The ID of the storage location."
id: ID!
"The warehouse the location belongs to."
warehouseId: ID!
"The name of the location, at most 50 characters."
name: String!
"A free comment."
comment: String
"The type of the location."
locationType: StorageLocationType!
"The status of the location."
status: StorageLocationStatus!
"Whether the stock on the location is left out of the available stock."
isLockedForAvailableStock: Boolean!
"The priority of the location."
priority: Int!
"The sort number that orders the locations for the picking route."
sortNumber: Int
"Size and load capacity. Absent when none is maintained."
dimensions: StorageLocationDimensions
}
"Whether one action is allowed for a storage location. The action is a key, not an enum, because the list of actions can grow without a change of the schema. Keys today: Delete, Activate, Deactivate, Lock, ChangeType."
type StorageLocationActionAvailability {
"The key of the action in UPPER_SNAKE. Known keys: DELETE, ACTIVATE, DEACTIVATE, LOCK, CHANGE_TYPE. A client that does not know a key ignores the entry."
actionId: String!
"Whether the action is allowed right now."
isAllowed: Boolean!
"The reasons why it is not, empty when it is allowed."
blockers: [StorageLocationActionBlocker!]!
}
"One reason why an action on a storage location is not allowed."
type StorageLocationActionBlocker {
"Stable machine-readable code of the reason, for example STORAGE_LOCATION_HAS_STOCK."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"What can be done with a storage location right now. A hint that can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type StorageLocationAllowedActions {
"One entry per action, allowed or not."
actions: [StorageLocationActionAvailability!]!
}
"A change set of storage locations and how far it is."
type StorageLocationChangeSet {
"The ID of the change set."
changeSetId: UUID!
"Where the run stands."
status: ChangeSetStatus!
"How many rows the request contained."
totalCount: Int!
"How many locations the set created. Zero until it succeeded; the run is one transaction, so nothing is visible before."
createdCount: Int!
"How many locations the set changed."
updatedCount: Int!
"How many locations the set deactivated."
deactivatedCount: Int!
"When the request was accepted."
requestedAt: DateTime!
"When the run ended. Absent while it is queued or running."
finishedAt: DateTime
"The error code when the run failed."
failureCode: String
}
"Size and load capacity of a storage location. A property is absent when no value or limit is maintained for it."
type StorageLocationDimensions {
"Width."
width: Decimal
"Length."
length: Decimal
"Height."
height: Decimal
"The highest weight the location carries. Absent means no limit."
maxWeight: Decimal
}
"How the names of the storage locations of a warehouse are built when they are generated: up to five dimensions, joined in their order. The layout only generates names; the names of existing locations stay editable."
type StorageLocationLayout {
"Between one and five dimensions in their order."
dimensions: [StorageLocationLayoutDimension!]!
}
"One dimension of the location layout, for example the shelf, the compartment or the level."
type StorageLocationLayoutDimension {
"The name of the dimension, at most 255 characters."
name: String!
"The separator written between this dimension and the next in the name of a location: one of '-', '/', '.', ':', ' ' or empty. Ignored for the last dimension."
separator: String!
"How many characters the dimension has in the name."
length: Int!
"Which characters the dimension uses."
labelType: LayoutLabelType!
}
"One row of the storage location list."
type StorageLocationListEntry {
"The ID of the storage location."
id: ID!
"The warehouse the location belongs to."
warehouseId: ID!
"The name of the location."
name: String!
"The type of the location."
locationType: StorageLocationType!
"The status of the location."
status: StorageLocationStatus!
"Whether the stock on the location is left out of the available stock."
isLockedForAvailableStock: Boolean!
"The sort number."
sortNumber: Int
}
"The type of a storage location, from a fixed list of the system (read it with QueryStorageLocationTypes). The ID is stable and is the key to write; name and description are texts in the language of the caller, as in the earlier storage location type of the API."
type StorageLocationType {
"The stable ID of the type."
id: UUID!
"The name of the type, in the language of the caller, for example Shelf."
name: String!
"A description of the type, in the language of the caller."
description: String
"Whether a storage location of this type can be created through the API. The system creates the locations of the types goods receipt, box and picking trolley itself."
isCreatable: Boolean!
"Whether a storage location can be changed from or to this type. Only shelf, quarantine, pallet, retail, carton, bulk storage and transfer locations can."
isInterchangeable: Boolean!
}
"The value of one dimension of a subset item, for example its length. Which dimensions exist is defined by the dimension set of the item; the dimensions have nothing to do with the outer dimensions of the item."
type SubsetDimensionValue {
"The ID of the dimension of the dimension set."
dimensionId: ID!
"The value of the dimension."
value: Decimal!
"The smallest value a subset may take in this dimension. Absent when there is no lower limit."
minimumValue: Decimal
"The largest value a subset may take in this dimension. Absent when there is no upper limit."
maximumValue: Decimal
"The unit of the values."
unitId: ID!
}
"How a subset item is reserved for an order: complete, or as needed. 'commissioningPercentage' is only present for AsNeeded, required there; a value for Complete is refused with 400. (One model with a mode and an optional field, for the same reason as 'StockTracking'.)"
type SubsetReservation {
"How the subset is reserved."
mode: SubsetReservationMode!
"Share, in percent from 0 to 100, that is picked for an order. Present only for AsNeeded, required there."
commissioningPercentage: Int
}
"An item with stock managed in subsets. Serial numbers, batch and shelf life expiration dates are not possible, so none can be read here."
type SubsetStockItem implements Item {
"The ID of the item."
id: ID!
"Name of the item in the default language."
name: String!
"Whether the item is active. An inactive item cannot be sold or used as a kit component."
isActive: Boolean!
"The ID of the product group."
productGroupId: ID
"The ID of the manufacturer."
manufacturerId: ID
"The ID of the item condition, for example new or used."
conditionId: ID
"The ID of the delivery status of the item (the master data of delivery statuses, for example \"in stock\" or \"ships in 3 days\")."
deliveryStatusId: ID
"The variation parent this item is a combination of. Absent when the item is no combination. Read-only for every kind of item: the assignment is maintained at the parent only (items/variation-parents/{itemId}/combinations)."
variationParentId: ID
"Every trait that applies to the item, ordered by rank, the first being the kind in 'itemType'. The kind is the first rule that applies; the others would otherwise be lost (a stock-managed variation parent is a VariationParent with the trait StockItem, a stock-managed kit made of divisible parts is a Kit with the trait DivisibleStockItem). Only the fields of the kind are part of the model; sub-resources are offered by the kind. Clients must tolerate values they do not know."
traits: [ItemType!]!
"When the item was created."
createdAt: DateTime
"When the item was last changed."
changedAt: DateTime
"Discriminator of the item kind."
itemType: ItemType!
"The identifiers of the item, each in its own property."
identifiers: TradeItemIdentifiers!
"The ID of the tax class."
taxClassId: ID
"The ID of the shipping class."
shippingClassId: ID
"Outer dimensions as shipped. Absent when none are maintained."
dimensions: ItemDimensions
"Weights. Absent when none are maintained."
weights: ItemWeights
"Customs information. Absent when none is maintained."
customs: ItemCustoms
"Sales unit, packaging unit and content with its base price. Absent when none is maintained."
units: ItemUnits
"Settings of the stock management."
stockManagement: StockManagement!
"The dimension set of the item. It defines which dimensions the item has, for example length and width for a roll, and how stock and price are calculated from them."
dimensionSetId: ID!
"One value per dimension of the dimension set. Never null."
subsetDimensions: [SubsetDimensionValue!]!
"How much of the item is reserved for production."
reservation: SubsetReservation!
}
"A supplier that the merchant purchases goods from."
type Supplier {
"The ID of the supplier."
id: ID!
"The supplier number."
supplierNumber: String
"The merchant's own customer number at the supplier."
supplierAccountNumber: String
"The company name of the supplier."
companyName: String
"A free-text note on the status of the supplier. It has no meaning for the system; the name 'status' is kept free for a real state of the supplier."
statusNote: String
"The postal address of the supplier."
address: SupplierAddress!
"The contact details of the supplier."
contact: SupplierContact!
"The delivery and order conditions of the supplier."
deliveryConditions: SupplierDeliveryConditions!
"The payment conditions of the supplier."
paymentConditions: SupplierPaymentConditions!
"The dropshipping settings of the supplier. Null when the supplier does not support dropshipping."
dropshipping: SupplierDropshipping
"The language of the supplier as BCP 47 tag, for example 'de' or 'de-AT'. Case does not matter on input; the output uses the canonical form (language lower case, region upper case)."
languageTag: String
"The currency of the supplier as an ISO 4217 alpha-3 code in uppercase, for example 'EUR'."
currencyCode: String
"The creditor number of the supplier in accounting."
creditorNumber: Int
"The VAT identification number of the supplier."
vatId: String
"Whether purchases from the supplier are exempt from VAT."
isVatExempt: Boolean!
"Whether the supplier is excluded from the purchase list."
isExcludedFromPurchaseList: Boolean!
"The own company that purchase orders to the supplier are placed for by default."
defaultCompanyId: ID!
"The warehouse that goods ordered from the supplier are delivered to by default."
defaultWarehouseId: ID!
"The website of the supplier."
website: String
"A free-text comment on the supplier."
comment: String
"The date and time the supplier was created. Empty for suppliers without a recorded creation date."
createdAt: DateTime
"The date and time the supplier was last changed."
changedAt: DateTime!
}
"Whether one action on a supplier would be allowed right now, and if not, why not."
type SupplierActionAvailability {
"The stable key of the action: 'deactivate'."
action: String!
"Whether the action would go through right now."
isAllowed: Boolean!
"The reasons why it would not. Empty when it is allowed."
blockers: [SupplierActionBlocker!]!
}
"One reason why an action on a supplier is not allowed."
type SupplierActionBlocker {
"Stable machine-readable code of the reason, for example SUPPLIER_DEACTIVATE_BLOCKED_OPEN_ORDERS."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"The postal address of a supplier."
type SupplierAddress {
"The salutation of the addressee."
salutation: String
"The first name of the addressee."
firstName: String
"The last name of the addressee."
lastName: String
"An additional line for the company name."
additionalCompanyLine: String
"The street and house number."
street: String
"An additional address line."
additionalAddressLine: String
"The postal code."
postalCode: String
"The city."
city: String
"The state or region."
state: String
"The country as an ISO 3166-1 alpha-2 code in uppercase, for example 'DE'."
countryCode: String
}
"What can be done with a supplier right now. A hint for user interfaces that can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type SupplierAllowedActions {
"One entry per action."
actions: [SupplierActionAvailability!]!
}
"The contact details of a supplier."
type SupplierContact {
"The name of the contact person."
contactName: String
"The email address."
emailAddress: String
"The main phone number."
phoneNumber: String
"The direct-dial extension."
phoneExtension: String
"The fax number."
faxNumber: String
}
"The delivery and order conditions of a supplier."
type SupplierDeliveryConditions {
"The usual delivery time of the supplier in days."
deliveryTimeInDays: Int
"The minimum order value of the supplier, net, in the currency of the supplier. Null when none is set."
minimumOrderValueAmount: Decimal
"The surcharge the supplier charges for orders below the minimum order value, net, in the currency of the supplier. Null when none is set."
smallQuantitySurchargeAmount: Decimal
"The freight cost the supplier charges per order, net, in the currency of the supplier. Null when none is set."
freightCostAmount: Decimal
"The order value from which the supplier delivers free of freight cost, net, in the currency of the supplier. Null when none is set."
freeShippingThresholdAmount: Decimal
"The VAT rate in percent applied to line items without an item."
vatRateForCustomLineItems: Decimal!
"Whether the discount scale of the supplier is applied to the total value of a purchase order instead of each line item."
appliesDiscountScalePerOrder: Boolean!
"A note on the delivery conditions."
note: String
}
"The dropshipping settings of a supplier that supports dropshipping."
type SupplierDropshipping {
"Whether sales orders paid cash on delivery may be dropshipped by the supplier."
allowsCashOnDelivery: Boolean!
"Whether line items without an item may be dropshipped by the supplier."
allowsCustomLineItems: Boolean!
}
"How the supplier packs the item. Description and quantity belong together."
type SupplierPackageUnit {
"Name of the packaging unit of the supplier."
description: String!
"How many units of the item the packaging unit holds."
quantity: Decimal!
}
"The payment conditions of a supplier."
type SupplierPaymentConditions {
"The number of days within which invoices of the supplier are due."
paymentTermInDays: Int
"The cash discount in percent that the supplier grants for early payment. Null when none is granted."
cashDiscountPercentage: Decimal
"The number of days within which the cash discount applies."
cashDiscountDays: Int
}
"A suggestion to order from a supplier, also from the company's own production."
type SupplierRestockSuggestion implements RestockSuggestion {
"The discriminator: where the suggestion gets its goods from."
restockSuggestionType: RestockSuggestionType!
"The ID of the item."
itemId: ID!
"The item's SKU."
sku: String!
"The item's name in the default language."
itemName: String!
"The ID of the destination warehouse the suggestion is for."
warehouseId: ID!
"The quantity suggested, 0 or more."
suggestedQuantity: Decimal!
"The quantity needed before the minimum order quantity, the order interval and the percentage surcharge are applied."
demandQuantity: Decimal!
"The open quantity, still to be picked, of the open sales orders and stock transfers that count as demand, for the item in all warehouses. It is set off against the destination warehouse with the highest priority only."
openSalesOrderQuantity: Decimal!
"The forecast demand of the coming days from the past consumption. Empty without a forecast."
forecastQuantity: Decimal
"The consumption in the measured period, without the order peaks left out: the quantity of the sales orders created in the period, delivered from the destination warehouse plus still open. Without a forecast the period is the last 30 days."
consumedQuantity: Decimal!
"The consumption in the last 30 days."
consumedQuantityLast30Days: Decimal!
"The consumption per day in the measured period. Empty when nothing was consumed."
dailyConsumption: Decimal
"The consumption of the period left out as order peaks. Empty when peaks are not left out or none occurred."
peakQuantity: Decimal
"The average quantity per delivery in the period, the basis of the peak detection. Empty when peaks are not left out."
averageQuantityPerDelivery: Decimal
"On how many days of the period the item was in stock. Only with 'onlyDaysWithStock'."
daysWithStock: Int
"How many open availability requests exist for the item. They count, one unit each, only with 'includeAvailabilityRequests', and only for the destination warehouse with the highest priority."
availabilityRequestCount: Int!
"The demand planned by hand that counts. Empty when such demand does not count."
manualDemandQuantity: Decimal
"The stock counted for the destination warehouse: its stock without what is not available, plus, by the stock settings, the stock in transit, the open stock transfers to it and the purchase list quantities."
stockQuantity: Decimal!
"The stock counted, plus the supplier stock where the settings count it, minus what open sales orders and external reservations take."
availableQuantity: Decimal!
"What is missing when the available quantity is below 0; else 0."
shortageQuantity: Decimal!
"The stock that is not counted as available: on locked storage locations or storage locations locked for delivery, and on clearance and return storage locations, as the stock settings decide. Empty when 'includeStockOnStorageLocationsLockedForDelivery' is set."
blockedForDeliveryQuantity: Decimal
"The quantity of the item in orders of sales channels that are not imported yet; 0 when there are none. It counts as demand only with 'includeExternalReservations'."
externallyReservedQuantity: Decimal!
"The quantity of the item on the purchase list for the destination warehouse; quantities without a warehouse are added for the warehouse with the highest priority. It counts as stock only with 'includePurchaseListQuantities'."
purchaseListQuantity: Decimal!
"The item's minimum stock for the destination warehouse; with 'fillGlobalMinimumStock', the part of the minimum stock over all warehouses that falls on this warehouse. It is added to the suggestion only when a minimum stock is topped up. Empty when the item has none."
minimumStock: Decimal
"The item's minimum stock over all warehouses. Empty when it has none."
globalMinimumStock: Decimal
"The item's maximum stock of the destination warehouse. Empty when it has none or the settings do not limit to it."
maximumStock: Decimal
"The inflow from purchase orders set off against this suggestion: the open quantity of the source supplier's purchase orders to the destination warehouse; with 'inflowAllocation' 'FIRST_WAREHOUSE', the share of the inflow of all suppliers taken by this warehouse. 0 for suggestions from a source warehouse or without a source."
consideredInflowQuantity: Decimal!
"The open quantity of the purchase orders that count as inflow, for all warehouses."
inflowAllWarehousesQuantity: Decimal!
"The open quantity of all sent and partially delivered purchase orders of the item, whatever the settings."
totalInflowQuantity: Decimal!
"The quantity the percentage surcharge added. Empty without a surcharge."
surchargeQuantity: Decimal
"The item's average net purchase price, in the base currency."
averageNetPurchasePrice: Decimal
"The item's last net purchase price, in the base currency."
lastNetPurchasePrice: Decimal
"The ID of the supplier. For the own production, the ID of the production supplier; it can be ordered from, but the supplier queries do not list it."
supplierId: ID!
"Whether the supplier is the company's own production. Ordering from it starts the production planning."
isProduction: Boolean!
"The supplier's number for the item."
supplierSku: String
"Whether the supplier is the item's default supplier."
isDefaultSupplier: Boolean!
"The supplier stock recorded for the item. It counts as stock only with 'includeSupplierStock' and only where the supplier item's stock is maintained."
supplierStockQuantity: Decimal!
"The supplier's minimum order quantity for the item."
minimumOrderQuantity: Decimal
"The supplier's order interval: the item is ordered in multiples of it."
orderInterval: Decimal
"The supplier's net purchase price for the item, in 'currencyCode'."
supplierNetPurchasePrice: Decimal
"The currency of 'supplierNetPurchasePrice' as currency code (ISO 4217 alpha-3, or with the prefix 'x-' for a currency defined by the tenant)."
currencyCode: String
}
"The stock of the supplier is considered for the item. The object is present when it is."
type SupplierStock {
"The stock the supplier has of the item."
stockLevel: Decimal!
}
"Whether one action is possible for a sync, and if not, why."
type SyncActionAvailability {
"The key of the action: Start, Stop, Restart, RunOnce or ResetError. The list of actions can grow, so it is a key and not an enum; a client that does not know a key ignores the entry."
actionId: String!
"Whether the action is possible now."
isAllowed: Boolean!
"All reasons it is not. Empty when it is allowed."
blockers: [WorkerActionBlocker!]!
}
"An API version the server serves, with its lifecycle."
type SystemApiVersion {
"The major version of the API."
version: Int!
"The Wawi version that removes this API version. Empty if no removal is planned."
sunsetIn: String
"The major version that replaces this one. Empty if there is none."
successorVersion: Int
"The lifecycle: PREVIEW, ACTIVE or DEPRECATED. Clients must accept values they do not know."
lifecycle: String!
"The Wawi version that introduced this API version."
introducedIn: String!
}
"What this server runs: the Wawi version, the build and the API versions it serves. No database or host names."
type SystemInfo {
"The Wawi version."
productVersion: String!
"The build number of the server."
buildNumber: String!
"The API versions this server serves."
apiVersions: [SystemApiVersion!]!
}
"One reason why an action is not allowed."
type TaxActionBlocker {
"Stable machine-readable code of the reason, for example TAX_CLASS_IS_DEFAULT."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"A tax class. Items, shipping methods and line items carry a tax class; a tax zone gives each tax class its rate."
type TaxClass {
"The ID of the tax class."
id: ID!
"The name of the tax class."
name: String!
"The kind of rate the tax class stands for. Empty when the tax class has none."
rateType: TaxRateType
"Whether this is the default tax class. Line items without a tax class of their own, for example of items without one, are taxed with it."
isDefault: Boolean!
}
"Whether one action is allowed for a tax class."
type TaxClassActionAvailability {
"The key of the action. Known values: DELETE, MAKE_DEFAULT. New actions can be added without a contract change."
action: String!
"Whether the action is allowed right now."
isAllowed: Boolean!
"The reasons why it is not, empty when it is allowed."
blockers: [TaxActionBlocker!]!
}
"What can be done with a tax class right now. It is a hint for user interfaces and can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type TaxClassAllowedActions {
"One entry per action."
actions: [TaxClassActionAvailability!]!
}
"A tax code: the posting key and accounts that accounting books a sale with."
type TaxCode {
"The ID of the tax code."
id: ID!
"The number of the tax code, unique. It is the posting key handed to accounting."
number: Int!
"The name of the tax code."
name: String!
"The general ledger account for the tax."
taxAccount: String
"The account for cash discounts."
cashDiscountAccount: String
"The revenue account."
revenueAccount: String
"The account for bonuses."
bonusAccount: String
"The account for write-offs."
writeOffAccount: String
"The account for down payments."
downPaymentAccount: String
"Whether the accounts are automatic accounts in accounting. The posting key is then not handed over with the posting."
isAutomaticAccount: Boolean!
}
"Whether one action is allowed for a tax code."
type TaxCodeActionAvailability {
"The key of the action. Known values: DELETE, CHANGE_NUMBER. New actions can be added without a contract change."
action: String!
"Whether the action is allowed right now."
isAllowed: Boolean!
"The reasons why it is not, empty when it is allowed."
blockers: [TaxActionBlocker!]!
}
"What can be done with a tax code right now. It is a hint for user interfaces and can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type TaxCodeAllowedActions {
"One entry per action."
actions: [TaxCodeActionAvailability!]!
}
"A gap or contradiction in the tax configuration. Issues do not block anything, but sales they affect cannot be taxed correctly."
type TaxConfigurationIssue {
"The kind of issue. Known values: NO_DEFAULT_TAX_CLASS, SEVERAL_DEFAULT_TAX_CLASSES, COUNTRY_IN_SEVERAL_TAX_ZONES, COUNTRIES_WITHOUT_TAX_ZONE, TAX_CLASS_WITHOUT_RATE, TAX_RATE_WITHOUT_TAX_CODE, VAT_ID_COUNTRY_WITHOUT_TAX_ZONE. New values can be added without a contract change."
code: String!
"Human-readable explanation in the language of the request."
message: String!
"The company concerned, if any."
companyId: ID
"The departure country concerned, if any."
departureCountryCode: String
"The tax zone concerned, if any."
taxZoneId: ID
"The tax class concerned, if any."
taxClassId: ID
"The destination country concerned, if any."
countryCode: String
"The state concerned, if any."
stateCode: String
}
"How a sale is taxed: the tax zone, the tax treatment, the VAT ID of the company and the rate of each tax class."
type TaxDetermination {
"The company that sells."
companyId: ID!
"The country goods are shipped from, as ISO 3166-1 alpha-2 code."
departureCountryCode: String!
"The country the tax refers to, as ISO 3166-1 alpha-2 code. With a valid VAT ID it is the country of the VAT ID, otherwise the country of the address."
destinationCountryCode: String!
"The state the tax refers to, for example CA. Empty when the whole country applies."
destinationStateCode: String
"Whether the customer counts as a business customer, which is the case when the given VAT ID is formally valid."
isBusinessCustomer: Boolean!
"How the sale is taxed."
taxTreatment: TaxTreatment!
"The tax zone that applies."
taxZoneId: ID!
"The VAT ID of the company to show on the documents of the sale. Empty when the company has none for the country in question."
companyVatId: String
"The rate of each tax class that has a rate in the tax zone."
rates: [TaxDeterminationRate!]!
}
"The rate that applies to one tax class."
type TaxDeterminationRate {
"The tax class."
taxClassId: ID!
"The rate in percent; 0 when the sale is tax-free."
ratePercent: Decimal!
"The tax code of the rate for the determined tax treatment, without the overrides for product groups, shipping methods and line item types."
taxCodeId: ID
}
"The rate of one tax class in one tax zone, with the tax codes for each tax treatment."
type TaxRate {
"The tax class the rate is for."
taxClassId: ID!
"The tax rate in percent, with at most two decimals."
ratePercent: Decimal!
"The tax code for taxable sales. Empty means none."
taxableTaxCodeId: ID
"The tax code for tax-free intra-community deliveries to business customers in another EU country. Empty means none."
intraCommunityDeliveryTaxCodeId: ID
"The tax code for sales under the reverse-charge procedure. Empty means none."
reverseChargeTaxCodeId: ID
"The tax code for tax-exempt sales: exports from the EU and sales made exempt on purpose. Empty means none."
exemptTaxCodeId: ID
}
"A tax rate of a country as supplied with the ERP, used to set up tax zones."
type TaxRatePreset {
"The country, as ISO 3166-1 alpha-2 code."
countryCode: String!
"The state the rate applies to. Empty for the whole country."
stateCode: String
"The kind of rate."
rateType: TaxRateType!
"The rate in percent."
ratePercent: Decimal!
}
"A tax zone: the destination countries of one company and one departure country that are taxed with the same rates."
type TaxZone {
"The ID of the tax zone."
id: ID!
"The company the tax zone belongs to."
companyId: ID!
"The country goods are shipped from, as ISO 3166-1 alpha-2 code. The tax zone applies only to sales shipped from it."
departureCountryCode: String!
"The name of the tax zone."
name: String!
"Which VAT ID of the company is shown on documents of sales to business customers in this tax zone. Known values: AUTOMATIC, COMPANY_HOME_COUNTRY, DEPARTURE_COUNTRY. New values can be added without a contract change."
vatIdSourceForBusinesses: String!
"Which VAT ID of the company is shown on documents of sales to consumers in this tax zone. Known values: AUTOMATIC, COMPANY_HOME_COUNTRY, DEPARTURE_COUNTRY. New values can be added without a contract change."
vatIdSourceForConsumers: String!
}
"A destination country of a tax zone, or one state of it."
type TaxZoneCountry {
"The country, as ISO 3166-1 alpha-2 code."
countryCode: String!
"The state within the country, for example CA. Empty when the whole country belongs to the tax zone."
stateCode: String
}
"Ends a subscription at a date. Every recurring line item without an end date, or with a later one, gets this end date. Periods due up to the end date are still billed; next due dates after it are removed. Follow-up sales orders that were already created are not changed. Undo it by removing or moving the end dates of the line items. - Response"
type TerminateSalesSubscriptionCommandResponse {
"The state of the subscription after the call."
status: SalesSubscriptionStatus!
"The earliest next due date after the call. Empty when the subscription has ended."
nextDueDate: DateTime
}
"A reusable text that users insert into a customer, supplier, sales order, invoice or invoice correction, in one or more languages. The text itself is read with 'QueryTextBlockTranslationsByTextBlockId'."
type TextBlock {
"The ID of the text block."
id: ID!
"The ID of the group the text block is in."
groupId: ID!
"The name of the text block, 1 to 255 characters. Not unique."
name: String!
"Where the text block can be inserted: the key of an entry of 'QueryTextBlockUsages', for example salesOrder. The usage decides which variables the content can use."
usageKey: String!
"The key combination that inserts the text block in editors. Empty when it has none. Free text, not checked for conflicts."
shortcut: String
"The abbreviation that expands to the text block while typing. Empty when it has none. Free text, not checked for conflicts."
autoText: String
"The languages the text block has content in, as BCP 47 tags. Computed from the translations; empty when the text block has no content yet."
languageTags: [String!]!
}
"Whether one action is allowed for a text block."
type TextBlockActionAvailability {
"The action key: delete."
action: String!
"Whether the action is allowed right now."
isAllowed: Boolean!
"The reasons why it is not, empty when it is allowed."
blockers: [TextBlockActionBlocker!]!
}
"One reason why an action is not allowed."
type TextBlockActionBlocker {
"Stable machine-readable code of the reason."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"What can be done with a text block right now. It is a hint for user interfaces and can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type TextBlockAllowedActions {
"One entry per action."
actions: [TextBlockActionAvailability!]!
}
"A group of text blocks. Groups only organise the list; they say nothing about where a block can be used."
type TextBlockGroup {
"The ID of the text block group."
id: ID!
"The name of the group, 1 to 255 characters."
name: String!
}
"Whether one action is allowed for a text block group."
type TextBlockGroupActionAvailability {
"The action key: delete."
action: String!
"Whether the action is allowed right now."
isAllowed: Boolean!
"The reasons why it is not, empty when it is allowed."
blockers: [TextBlockGroupActionBlocker!]!
}
"One reason why an action is not allowed."
type TextBlockGroupActionBlocker {
"Stable machine-readable code of the reason, for example TEXT_BLOCK_GROUP_NOT_EMPTY."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"What can be done with a text block group right now. It is a hint for user interfaces and can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type TextBlockGroupAllowedActions {
"One entry per action."
actions: [TextBlockGroupActionAvailability!]!
}
"A text for the user."
type TextBlockNode implements SettingsNode {
"Discriminator of the node kind."
kind: SettingsNodeKind!
"The stable ID of the node. For an input it equals the setting key, for example sales.invoice.dueDays."
id: String!
"The ID of the group the node belongs to. Absent for a top-level node."
parentId: String
"The depth in the tree. A top-level node has level 1."
level: Int!
"The position among the nodes of the same parent. Lower comes first."
sortOrder: Int!
"The text shown for the node, in the language of the caller."
label: String
"A further text, in the language of the caller."
description: String
"A link to a help page."
helpUrl: String
"Extra words the search finds the node by."
keywords: [String!]!
"The scopes the setting can be stored for. Almost every setting has only Global."
scopes: [SettingsScope!]!
"The Wawi permission the caller needs to see and change the node."
requiredPermission: String
"Whether the caller cannot change the setting."
isReadOnly: Boolean!
"Rules that make the node visible, enabled or required depending on other settings."
dependencies: [SettingsDependency!]!
"The role of the text."
style: TextStyle!
"The text, in the language of the caller."
text: String!
}
"The content of a text block in one language."
type TextBlockTranslation {
"The language as BCP 47 tag."
languageTag: String!
"The content: HTML that may contain DotLiquid placeholders of the usage of the text block, for example {{ Customer.LastName }}. The placeholders are kept as written; they are replaced when the text is inserted."
content: String!
}
"A place a text block can be used. Every text block has exactly one usage."
type TextBlockUsage {
"The stable key of the usage, for example customer, supplier, salesOrder, salesInvoice or salesInvoiceCorrection."
key: String!
"The name of the usage in the language of the request."
name: String!
"What the content of a text block with this usage can refer to, for example the invoice and its customer."
description: String
}
"A text setting. The value type is Text, or Secret for the format Password."
type TextInputNode implements SettingsNode {
"Discriminator of the node kind."
kind: SettingsNodeKind!
"The stable ID of the node. For an input it equals the setting key, for example sales.invoice.dueDays."
id: String!
"The ID of the group the node belongs to. Absent for a top-level node."
parentId: String
"The depth in the tree. A top-level node has level 1."
level: Int!
"The position among the nodes of the same parent. Lower comes first."
sortOrder: Int!
"The text shown for the node, in the language of the caller."
label: String
"A further text, in the language of the caller."
description: String
"A link to a help page."
helpUrl: String
"Extra words the search finds the node by."
keywords: [String!]!
"The scopes the setting can be stored for. Almost every setting has only Global."
scopes: [SettingsScope!]!
"The Wawi permission the caller needs to see and change the node."
requiredPermission: String
"Whether the caller cannot change the setting."
isReadOnly: Boolean!
"Rules that make the node visible, enabled or required depending on other settings."
dependencies: [SettingsDependency!]!
"The key of the setting this input edits. It is also the ID of the node."
settingKey: String!
"The type of the value the setting holds."
valueType: SettingValueType!
"Whether the setting needs a value."
isRequired: Boolean!
"Whether a change only takes effect after Wawi restarts."
requiresRestart: Boolean!
"A warning to show before a change is saved, for example about data that changes as a consequence."
changeWarning: String
"The default the setting has when nobody sets a value."
defaultValue: SettingValue
"The current value of the setting for the scope asked for. Only filled when includeValues is true; a handler field, resolved from the value store."
currentValue: SettingValueEntry
"The kind of text."
format: TextFormat!
"The least length."
minLength: Int
"The greatest length."
maxLength: Int
"A regular expression the text must match."
pattern: String
"A text to show while empty."
placeholder: String
"Whether the text can have several lines."
isMultiline: Boolean!
"For the format Path: whether it is a file or a folder."
pathTarget: PathTarget
}
"A text."
type TextOptionValue implements OptionValue {
"Discriminator of the value type."
valueType: OptionValueType!
"The text."
value: String!
}
"A text."
type TextValue implements SettingValue {
"Discriminator of the value type."
valueType: SettingValueType!
"The text."
value: String!
}
"A text."
type TextWarehouseSettingValue implements WarehouseSettingValue {
"Discriminator of the value type."
valueType: WarehouseSettingValueType!
"The text."
value: String!
}
"One state the carrier reported for a package."
type TrackingEvent {
"Stable key of the state: Generated, StartParcelCenter, OnTheRoad, ParcelCenter, DestinationParcelCenter, DeliveryCar, Delivered, Info, Customs, Problem, Deregistered, ManuallySolved or Undefined. New keys can be added."
state: String!
"When the state was reported."
occurredAt: DateTime!
"The text of the carrier."
text: String
"Where the state was reported."
location: String
"The country of the location as ISO 3166-1 alpha-2 code."
countryCode: String
}
"The identifiers of an item that is traded. Every identifier has its own property; an identifier the item does not have is absent. Further GTINs of the item are the GTINs of its containers."
type TradeItemIdentifiers {
"The item number (SKU), unique among all items. Every item has one."
sku: String!
"Global Trade Item Number of the item, including EAN."
gtin: String
"Universal Product Code."
upc: String
"International Standard Book Number."
isbn: String
"Default Amazon Standard Identification Number."
asin: String
"Manufacturer part number (German 'Herstellerartikelnummer', HAN)."
manufacturerPartNumber: String
"eBay product identifier."
epid: String
"Fulfillment network SKU of JTL-Fulfillment Network."
jfsku: String
"Amazon fulfillment network SKU."
amazonFnsku: String
"Own free identifier of the shop owner for the item."
ownIdentifier: String
}
"A transaction colour: a colour with a meaning that users set on sales documents to mark them, for example red for 'urgent'. The list is global. Used for the detail and for the list."
type TransactionColor {
"The ID of the transaction colour. It stays the same when the colour is changed."
id: ID!
"The meaning of the colour. Null for colours created without one."
name: String
"The colour as #RRGGBB in capital letters. Unique among the transaction colours."
color: String!
}
"Whether one action is allowed for a transaction color."
type TransactionColorActionAvailability {
"The stable key of the action: 'DELETE'."
action: String!
"Whether the action is allowed right now."
isAllowed: Boolean!
"The reasons why it is not, empty when it is allowed."
blockers: [TransactionColorActionBlocker!]!
}
"One reason why an action on a transaction color is not allowed."
type TransactionColorActionBlocker {
"Stable machine-readable code of the reason, for example TRANSACTION_COLOR_IS_USED_BY_SALES_DOCUMENTS."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"What can be done with a transaction color right now. It is a hint for user interfaces and can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type TransactionColorAllowedActions {
"The actions, one entry per action."
actions: [TransactionColorActionAvailability!]!
}
"A transaction status: a label users set on sales documents to track their processing, for example 'waiting for payment'. Used for the detail and for the list."
type TransactionStatus {
"The ID of the transaction status."
id: ID!
"The name of the status. Unique among all transaction statuses, ignoring letter case, when a status is created or renamed; existing data may contain duplicates or no name."
name: String
"The kinds of sales documents the status can be chosen for. Empty if for none. Documents that already carry the status keep it when the list shrinks. Known keys: 'SALES_QUOTATION', 'SALES_ORDER', 'SUBSCRIPTION'. New keys can be added; pass back the keys you read, handle an unknown key as not known, never as a failure."
validFor: [String!]!
}
"Whether one action is allowed for a transaction status."
type TransactionStatusActionAvailability {
"The stable key of the action: 'DELETE'."
action: String!
"Whether the action is allowed right now."
isAllowed: Boolean!
"The reasons why it is not, empty when it is allowed."
blockers: [TransactionStatusActionBlocker!]!
}
"One reason why an action on a transaction status is not allowed."
type TransactionStatusActionBlocker {
"Stable machine-readable code of the reason, for example TRANSACTION_STATUS_IS_USED_BY_SALES_DOCUMENTS."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"What can be done with a transaction status right now. It is a hint for user interfaces and can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type TransactionStatusAllowedActions {
"The actions, one entry per action."
actions: [TransactionStatusActionAvailability!]!
}
"Removes one payment from a payment transaction: the payment is deleted, also when it existed before and was only linked, for example a payment from the shop. The fees of the transaction booked as order costs are removed with it, also when other payments of the transaction remain. The payment status of the document can change; a payout that is removed can make it fully paid and start its workflows. Only payments of sales documents can be removed here; payments of incoming invoices are changed there. Errors: PAYMENT_TRANSACTION_NOT_FOUND (the payment transaction was not found); PAYMENT_ACCOUNT_HIDDEN (the payment account is hidden; show it with 'ShowPaymentAccount' first); PAYMENT_NOT_FOUND (the payment was not found); PAYMENT_NOT_ASSIGNED_TO_TRANSACTION (the payment does not belong to the transaction); PAYMENT_NOT_UNASSIGNABLE (the payment is not a payment of a sales document, for example a payment of an incoming invoice); PAYMENT_CANNOT_BE_DELETED (the payment cannot be deleted. The error lists the blocker codes, the same as for 'DeletePayment': PAYMENT_BOOKED_BY_REFUND, PAYMENT_IS_VOUCHER_REDEMPTION). - Response"
type UnassignPaymentTransactionCommandResponse {
"What is left of the transaction afterwards."
openAmount: Decimal!
"How much of the transaction is assigned afterwards."
assignmentStatus: PaymentTransactionAssignmentStatus!
"Other transactions whose assigned and open amounts changed with this call: fee transactions that refer to this transaction and whose fees were booked on or removed from the sales order. Empty in most cases."
affectedPaymentTransactionIds: [ID!]!
}
"One reason why an action on a unit is not allowed."
type UnitActionBlocker {
"Stable machine-readable code of the reason, for example SALES_UNIT_USED_AS_SALES_UNIT_OF_ITEMS."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"An entry of the unit code catalogue: a code of UN/CEFACT Recommendation 20 (units of measurement) or 21 (types of packages), as used on e-invoices."
type UnitCode {
"The unit code in canonical form: uppercase, 2 or 3 characters."
code: String!
"The name of the unit as kept in the catalogue, in no particular language."
name: String
}
"The base price (German 'Grundpreis') of an effective price: the price converted to the reference quantity of the item, for example per liter. It is calculated from the price of the row, the content of the item and the conversion between the unit of the content and the reference unit."
type UnitPrice {
"The net price per reference quantity."
net: Decimal!
"The gross price per reference quantity. Present when the row has a gross price."
gross: Decimal
"The reference quantity the price refers to, for example 1 or 100."
referenceQuantity: Decimal!
"The unit of the reference quantity."
referenceUnitId: ID!
}
"A suggestion for an item that no supplier delivers. A purchase order needs a supplier; assign one when ordering ('assignItemToSupplier')."
type UnsourcedRestockSuggestion implements RestockSuggestion {
"The discriminator: where the suggestion gets its goods from."
restockSuggestionType: RestockSuggestionType!
"The ID of the item."
itemId: ID!
"The item's SKU."
sku: String!
"The item's name in the default language."
itemName: String!
"The ID of the destination warehouse the suggestion is for."
warehouseId: ID!
"The quantity suggested, 0 or more."
suggestedQuantity: Decimal!
"The quantity needed before the minimum order quantity, the order interval and the percentage surcharge are applied."
demandQuantity: Decimal!
"The open quantity, still to be picked, of the open sales orders and stock transfers that count as demand, for the item in all warehouses. It is set off against the destination warehouse with the highest priority only."
openSalesOrderQuantity: Decimal!
"The forecast demand of the coming days from the past consumption. Empty without a forecast."
forecastQuantity: Decimal
"The consumption in the measured period, without the order peaks left out: the quantity of the sales orders created in the period, delivered from the destination warehouse plus still open. Without a forecast the period is the last 30 days."
consumedQuantity: Decimal!
"The consumption in the last 30 days."
consumedQuantityLast30Days: Decimal!
"The consumption per day in the measured period. Empty when nothing was consumed."
dailyConsumption: Decimal
"The consumption of the period left out as order peaks. Empty when peaks are not left out or none occurred."
peakQuantity: Decimal
"The average quantity per delivery in the period, the basis of the peak detection. Empty when peaks are not left out."
averageQuantityPerDelivery: Decimal
"On how many days of the period the item was in stock. Only with 'onlyDaysWithStock'."
daysWithStock: Int
"How many open availability requests exist for the item. They count, one unit each, only with 'includeAvailabilityRequests', and only for the destination warehouse with the highest priority."
availabilityRequestCount: Int!
"The demand planned by hand that counts. Empty when such demand does not count."
manualDemandQuantity: Decimal
"The stock counted for the destination warehouse: its stock without what is not available, plus, by the stock settings, the stock in transit, the open stock transfers to it and the purchase list quantities."
stockQuantity: Decimal!
"The stock counted, plus the supplier stock where the settings count it, minus what open sales orders and external reservations take."
availableQuantity: Decimal!
"What is missing when the available quantity is below 0; else 0."
shortageQuantity: Decimal!
"The stock that is not counted as available: on locked storage locations or storage locations locked for delivery, and on clearance and return storage locations, as the stock settings decide. Empty when 'includeStockOnStorageLocationsLockedForDelivery' is set."
blockedForDeliveryQuantity: Decimal
"The quantity of the item in orders of sales channels that are not imported yet; 0 when there are none. It counts as demand only with 'includeExternalReservations'."
externallyReservedQuantity: Decimal!
"The quantity of the item on the purchase list for the destination warehouse; quantities without a warehouse are added for the warehouse with the highest priority. It counts as stock only with 'includePurchaseListQuantities'."
purchaseListQuantity: Decimal!
"The item's minimum stock for the destination warehouse; with 'fillGlobalMinimumStock', the part of the minimum stock over all warehouses that falls on this warehouse. It is added to the suggestion only when a minimum stock is topped up. Empty when the item has none."
minimumStock: Decimal
"The item's minimum stock over all warehouses. Empty when it has none."
globalMinimumStock: Decimal
"The item's maximum stock of the destination warehouse. Empty when it has none or the settings do not limit to it."
maximumStock: Decimal
"The inflow from purchase orders set off against this suggestion: the open quantity of the source supplier's purchase orders to the destination warehouse; with 'inflowAllocation' 'FIRST_WAREHOUSE', the share of the inflow of all suppliers taken by this warehouse. 0 for suggestions from a source warehouse or without a source."
consideredInflowQuantity: Decimal!
"The open quantity of the purchase orders that count as inflow, for all warehouses."
inflowAllWarehousesQuantity: Decimal!
"The open quantity of all sent and partially delivered purchase orders of the item, whatever the settings."
totalInflowQuantity: Decimal!
"The quantity the percentage surcharge added. Empty without a surcharge."
surchargeQuantity: Decimal
"The item's average net purchase price, in the base currency."
averageNetPurchasePrice: Decimal
"The item's last net purchase price, in the base currency."
lastNetPurchasePrice: Decimal
}
"Sets the standard sales price of an item from a gross price. The net price is calculated as gross price divided by (1 + tax rate / 100) and stored; the gross price itself is not stored. The tax rate is the rate of the tax class of the item in the country of the company, for a consumer in that country. An item without a tax class of its own is taxed with the default tax class. A rate of 0 percent is a valid rate. Use it when a user enters the gross price. To change the tax class and keep the gross price, change the tax class of the item first and then send the gross price again. The change has the same effects as changing the net sales price: customer group prices that are a percentage of the standard price follow, the item is sent to the sales channels again, and the item change workflow event is raised. The response carries what was stored and the tax rate that was used. Errors: PRICE_OUT_OF_RANGE (the gross price is negative or larger than 999999999999, as validation error); ITEM_NOT_FOUND (no item has this ID); ITEM_KIND_DOES_NOT_SUPPORT_SUB_RESOURCE (the item kind has no prices); COMPANY_NOT_FOUND, COMPANY_INACTIVE (see 'companyId'); DEFAULT_TAX_CLASS_NOT_FOUND (the item has no tax class of its own and there is no default tax class); TAX_ZONE_NOT_FOUND_FOR_DESTINATION (no tax zone of the company contains its own country); TAX_RATE_NOT_FOUND_FOR_TAX_CLASS (the tax zone has no rate for the tax class). - Response"
type UpdateItemStandardGrossPriceCommandResponse {
"The net sales price that was stored, with 13 decimal places."
salesPriceNet: Decimal!
"The tax rate in percent that was used."
taxRatePercent: Decimal!
"The tax class that was used: the tax class of the item, or the default tax class when the item has none of its own."
taxClassId: ID!
"True when the item has no tax class of its own and the default tax class was used."
isDefaultTaxClassApplied: Boolean!
"The company whose country determined the tax rate."
companyId: ID!
"The country of the company as ISO 3166-1 alpha-2 code."
countryCode: String!
"The currency of the price as ISO 4217 code: the default currency of the tenant."
currencyCode: String!
}
"Changes the schedule of a recurring line item. Only the properties that are sent change. The next due date is never recalculated by itself: it stays unless it is sent, and an end date before it ends the line item. To pause or skip periods, move the next due date. A line item that has ended needs a new next due date when its end date is removed or moved. - Response"
type UpdateSalesSubscriptionLineItemScheduleCommandResponse {
"The schedule after the change."
schedule: SalesSubscriptionSchedule!
}
"Renders the customer as an export document of its template set (XML, JSON or other text built with DotLiquid) and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is CUSTOMER_NOT_FOUND (no customer with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Response"
type UploadCustomerExportCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Renders the customer as a PDF and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is CUSTOMER_NOT_FOUND (no customer with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Response"
type UploadCustomerPdfCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Renders the delivery note as an export document of its template set (XML, JSON or other text built with DotLiquid) and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is DELIVERY_NOTE_NOT_FOUND (no delivery note with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Response"
type UploadDeliveryNoteExportCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Renders the delivery note as a PDF and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is DELIVERY_NOTE_NOT_FOUND (no delivery note with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Response"
type UploadDeliveryNotePdfCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Renders the dunning notice as a PDF and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is DUNNING_NOTICE_NOT_FOUND (no dunning notice with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Response"
type UploadDunningNoticePdfCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Renders the inventory count as an export document of its template set (XML, JSON or other text built with DotLiquid) and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is INVENTORY_COUNT_NOT_FOUND (no inventory count with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Response"
type UploadInventoryCountExportCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Renders the inventory count as a PDF and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is INVENTORY_COUNT_NOT_FOUND (no inventory count with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Response"
type UploadInventoryCountPdfCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Renders item labels as one PDF and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is OUTPUT_LABEL_LIMIT_EXCEEDED (more than 500 entries; split the selection into several calls); errorCode is OUTPUT_LABEL_ENTRY_INVALID (an entry has no valid ID or a quantity below 1); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Response"
type UploadItemLabelsPdfCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Renders package ID labels as one PDF and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is OUTPUT_LABEL_LIMIT_EXCEEDED (more than 500 entries; split the selection into several calls); errorCode is OUTPUT_LABEL_ENTRY_INVALID (an entry has no valid ID or a quantity below 1); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Response"
type UploadPackageIdLabelsPdfCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Renders the pick list as an export document of its template set (XML, JSON or other text built with DotLiquid) and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is PICK_LIST_NOT_FOUND (no pick list with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Response"
type UploadPickListExportCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Renders the pick list as a PDF and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is PICK_LIST_NOT_FOUND (no pick list with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Response"
type UploadPickListPdfCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Renders the purchase order as an export document of its template set (XML, JSON or other text built with DotLiquid) and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is PURCHASE_ORDER_NOT_FOUND (no purchase order with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Response"
type UploadPurchaseOrderExportCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Renders the purchase order as a PDF and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is PURCHASE_ORDER_NOT_FOUND (no purchase order with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Response"
type UploadPurchaseOrderPdfCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Renders the return as an export document of its template set (XML, JSON or other text built with DotLiquid) and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is RETURN_NOT_FOUND (no return with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Response"
type UploadReturnExportCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Renders the return as a PDF and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is RETURN_NOT_FOUND (no return with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Response"
type UploadReturnPdfCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Renders the pure e-invoice data (XRechnung or ZUGFeRD XML) of the sales credit note and uploads it to the given URL with a PUT request. The PDF of the document already carries its e-invoice data; use this call only when the XML alone is wanted. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_CREDIT_NOTE_NOT_FOUND (no sales credit note with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Response"
type UploadSalesCreditNoteEInvoiceCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Renders the sales credit note as an export document of its template set (XML, JSON or other text built with DotLiquid) and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_CREDIT_NOTE_NOT_FOUND (no sales credit note with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Response"
type UploadSalesCreditNoteExportCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Renders the sales credit note as a PDF and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_CREDIT_NOTE_NOT_FOUND (no sales credit note with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Response"
type UploadSalesCreditNotePdfCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Renders the pure e-invoice data (XRechnung or ZUGFeRD XML) of the sales invoice correction and uploads it to the given URL with a PUT request. The PDF of the document already carries its e-invoice data; use this call only when the XML alone is wanted. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_INVOICE_CORRECTION_NOT_FOUND (no sales invoice correction with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Response"
type UploadSalesInvoiceCorrectionEInvoiceCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Renders the sales invoice correction as an export document of its template set (XML, JSON or other text built with DotLiquid) and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_INVOICE_CORRECTION_NOT_FOUND (no sales invoice correction with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Response"
type UploadSalesInvoiceCorrectionExportCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Renders the sales invoice correction as a PDF and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_INVOICE_CORRECTION_NOT_FOUND (no sales invoice correction with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Response"
type UploadSalesInvoiceCorrectionPdfCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Renders the pure e-invoice data (XRechnung or ZUGFeRD XML) of the sales invoice and uploads it to the given URL with a PUT request. The PDF of the document already carries its e-invoice data; use this call only when the XML alone is wanted. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_INVOICE_NOT_FOUND (no sales invoice with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Response"
type UploadSalesInvoiceEInvoiceCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Renders the sales invoice as an export document of its template set (XML, JSON or other text built with DotLiquid) and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_INVOICE_NOT_FOUND (no sales invoice with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Response"
type UploadSalesInvoiceExportCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Renders the sales invoice as a PDF and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_INVOICE_NOT_FOUND (no sales invoice with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Response"
type UploadSalesInvoicePdfCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Renders the sales order as an export document of its template set (XML, JSON or other text built with DotLiquid) and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_ORDER_NOT_FOUND (no sales order with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Response"
type UploadSalesOrderExportCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Renders the sales order as a PDF and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_ORDER_NOT_FOUND (no sales order with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Response"
type UploadSalesOrderPdfCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Renders the sales quotation as an export document of its template set (XML, JSON or other text built with DotLiquid) and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_QUOTATION_NOT_FOUND (no sales quotation with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Response"
type UploadSalesQuotationExportCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Renders the sales quotation as a PDF and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_QUOTATION_NOT_FOUND (no sales quotation with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Response"
type UploadSalesQuotationPdfCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Renders SSCC labels as one PDF and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is OUTPUT_LABEL_LIMIT_EXCEEDED (more than 500 entries; split the selection into several calls); errorCode is OUTPUT_LABEL_ENTRY_INVALID (an entry has no valid ID or a quantity below 1); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Response"
type UploadSsccLabelsPdfCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"Renders storage location labels as one PDF and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is OUTPUT_LABEL_LIMIT_EXCEEDED (more than 500 entries; split the selection into several calls); errorCode is OUTPUT_LABEL_ENTRY_INVALID (an entry has no valid ID or a quantity below 1); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Response"
type UploadStorageLocationLabelsPdfCommandResponse {
"The ID of the output job."
outputJobId: UUID!
}
"A user of Wawi: a person, an API application or a system component."
type User {
"The ID of the user, as used in \"createdBy\" or \"changedBy\"."
id: ID!
"The kind of the user."
userType: UserType!
"The phone number of the user. Null if not set."
phoneNumber: String
"A free note about the user. Null if not set."
note: String
"The display name of the user."
name: String!
"The mobile phone number of the user. Null if not set."
mobilePhoneNumber: String
"The unique login name of the user."
login: String!
"The time of the last sign-in. Null if the user never signed in."
lastLoginAt: DateTime
"Whether the user is in the administrator group and so has all permissions. Read only."
isAdministrator: Boolean!
"Whether the user is active."
isActive: Boolean!
"The \"sub\" of the JTL cloud access token, opaque text without a fixed format. Null if not set."
identityProviderUserId: String
"The email address of the user. Null if not set."
emailAddress: String
"The department of the user. Null if not set."
department: String
}
"The company of a user in the current tenant."
type UserCompany {
"The ID of the user."
userId: ID!
"The ID of the company."
companyId: ID!
}
"A user group. Permissions are given to groups, not to single users."
type UserGroup {
"The ID of the user group."
id: ID!
"The name of the user group, unique among all user groups."
name: String!
"Whether this is the administrator group. Its members have all permissions."
isAdministrator: Boolean!
"What the group is for. Null if not set."
description: String
}
"A member of a user group."
type UserGroupMember {
"The ID of the user."
userId: ID!
"The ID of the user group."
userGroupId: ID!
}
"A permission given to a user group."
type UserGroupPermission {
"The ID of the user group."
userGroupId: ID!
"The ID of the permission."
permissionId: ID!
}
"Checks a template text for syntax errors. The text is parsed, not rendered, and nothing is stored. The result is empty if the text is valid. The text goes in the body because templates can be long. GraphQL only (new API rule). - Response"
type ValidateOutputTemplateTextCommandResponse {
"The syntax errors found, in the order of the text. Empty if the text is valid."
errors: [OutputTemplateError!]!
}
"A custom field whose value is one entry out of a list of allowed values."
type ValueListCustomField implements CustomField {
"The ID of the custom field."
id: ID!
"The shape of the field. Value list fields carry allowed values, all other fields do not."
kind: CustomFieldKind!
"The data type of the field. It cannot be changed after the field was created. Known keys: 'INTEGER', 'DECIMAL', 'TEXT', 'SHORT_TEXT', 'CHECKBOX', 'VALUE_LIST', 'URL', 'EMAIL', 'PHONE', 'COUNTRY_ISO', 'PRICE', 'DATE'. New keys can be added; handle an unknown key as not known, never as a failure."
dataType: String!
"The kind of record the field belongs to. It cannot be changed after the field was created. Known keys: 'ITEM', 'CATEGORY', 'CUSTOMER', 'SALES_ORDER', 'SALES_ORDER_LINE_ITEM', 'COMPANY', 'OPERATION', 'PRODUCTION_ITEM', 'PRODUCTION_ORDER', 'RESOURCE'. New keys can be added; handle an unknown key as not known, never as a failure."
entityType: String!
"The name of the group the field is displayed under. Fields of one group are shown together. Null for fields that belong to no group."
groupName: String
"The name of the field. It is unique among the fields of the same entity type when a field is created or renamed; existing data may contain duplicates."
name: String!
"An internal description of the field."
description: String
"Where user interfaces show the field. Null for sales orders and sales order line items, which have no display location. Known keys: 'GENERAL', 'CUSTOM_FIELDS_TAB'. New keys can be added; handle an unknown key as not known, never as a failure."
displayLocation: String
"Indicates that a value is expected for this field. This is a hint for user interfaces; the API does not enforce it."
isRequired: Boolean!
"Indicates that user interfaces hide the field. Hidden fields stay readable and writable through the API."
isHidden: Boolean!
"The position of the field within its group. The API does not store a group order; sort groups by 'groupName'."
sortOrder: Int!
"Restricts the field to items of certain product groups in user interfaces. Only available for item fields."
productGroupRestriction: ProductGroupRestriction
"The allowed values in the order they are offered."
allowedValues: [String!]!
}
"One axis of a variation, for example color, with its values."
type VariationAxis {
"The ID of the variation axis."
id: ID!
"Display name of the axis in the default language."
name: String!
"The display name of the axis per language. Never null."
names: [LocalizedText!]!
"How the shop shows the axis. The style is one of DROPDOWN, RADIO_BUTTONS, IMAGE_SWATCHES or TEXT_SWATCHES. It changes how the axis is shown in the shop, not which fields exist. The list can grow with the shops; a client treats a value it does not know like DROPDOWN."
style: String!
"Zero-based position of the axis within the variation."
position: Int!
"The values of the axis in their order. Never null."
values: [VariationValue!]!
}
"One combination of a variation parent: the item that is sold for one choice of values. The item is a normal item of any kind and does not know that it is a combination."
type VariationCombination {
"The ID of the item that is sold for this combination."
itemId: ID!
"The chosen value for every axis of the parent, one per axis."
values: [VariationValueAssignment!]!
}
"The parent of a variation combination. It is not sold, not shipped and holds no stock, so it has only its item number as identifier and none of the shipping, sales unit or container fields."
type VariationParentItem implements Item {
"The ID of the item."
id: ID!
"Name of the item in the default language."
name: String!
"Whether the item is active. An inactive item cannot be sold or used as a kit component."
isActive: Boolean!
"The ID of the product group."
productGroupId: ID
"The ID of the manufacturer."
manufacturerId: ID
"The ID of the item condition, for example new or used."
conditionId: ID
"The ID of the delivery status of the item (the master data of delivery statuses, for example \"in stock\" or \"ships in 3 days\")."
deliveryStatusId: ID
"The variation parent this item is a combination of. Absent when the item is no combination. Read-only for every kind of item: the assignment is maintained at the parent only (items/variation-parents/{itemId}/combinations)."
variationParentId: ID
"Every trait that applies to the item, ordered by rank, the first being the kind in 'itemType'. The kind is the first rule that applies; the others would otherwise be lost (a stock-managed variation parent is a VariationParent with the trait StockItem, a stock-managed kit made of divisible parts is a Kit with the trait DivisibleStockItem). Only the fields of the kind are part of the model; sub-resources are offered by the kind. Clients must tolerate values they do not know."
traits: [ItemType!]!
"When the item was created."
createdAt: DateTime
"When the item was last changed."
changedAt: DateTime
"Discriminator of the item kind."
itemType: ItemType!
"The identifiers of the item: its item number."
identifiers: BasicItemIdentifiers!
"The ID of the tax class."
taxClassId: ID
"The variation axes with their values. Never null; a parent without axes, which only legacy data has, returns an empty list."
variationAxes: [VariationAxis!]!
}
"One value of a variation axis."
type VariationValue {
"The ID of the variation value."
id: ID!
"Display name of the value in the default language."
name: String!
"The display name of the value per language. Never null."
names: [LocalizedText!]!
"Zero-based position of the value within its axis."
position: Int!
"Own item number suffix or number of the value. Absent when the value has none."
sku: String
"Own GTIN of the value. Absent when the value has none."
gtin: String
"Default surcharge in net on the price of the item when the value is chosen."
surchargeNet: Decimal
"Weight in kilograms that the value adds to the weight of the item."
weightOffset: Decimal
"Surcharges per customer group, which take precedence over SurchargeNet in the order. Never null."
customerGroupSurcharges: [CustomerGroupSurcharge!]!
"Surcharges per sales channel, which take precedence over SurchargeNet in the order. Never null."
salesChannelSurcharges: [SalesChannelSurcharge!]!
"The URL of the image of the value. Absent when it has none. Read-only: images are assigned through the blob upload."
imageUrl: String
}
"The value a variation child takes on one axis of its parent."
type VariationValueAssignment {
"The ID of the variation axis of the parent."
axisId: ID!
"The ID of the chosen value of that axis."
valueId: ID!
}
"Identity key that uniquely references a voucher template set (VorlageSet)."
type VorlageSetKey {
isNew: Boolean!
"Gets the identifier of the voucher template set."
kVorlageSet: Int!
}
"Settings of the voucher that a voucher item sells."
type VoucherSettings {
"The settings of a digital voucher: the print template set the voucher document is produced with. Absent when the voucher is a physical voucher card."
digitalDelivery: DigitalVoucherDelivery
"The fixed amount of the voucher, greater than zero. Absent when the value is taken from the sales document line the voucher is sold on."
fixedAmount: Decimal
"Currency of the voucher as ISO 4217 code."
currencyCode: String!
"Campaign the voucher belongs to."
campaign: String
}
"Whether one action is allowed for a warehouse. The action is a key, not an enum, because the list of actions can grow without a change of the schema. Keys today: Activate, Deactivate."
type WarehouseActionAvailability {
"The key of the action in UPPER_SNAKE. Known keys: ACTIVATE, DEACTIVATE. A client that does not know a key ignores the entry."
actionId: String!
"Whether the action is allowed right now."
isAllowed: Boolean!
"The reasons why it is not, empty when it is allowed."
blockers: [WarehouseActionBlocker!]!
}
"One reason why an action on a warehouse is not allowed."
type WarehouseActionBlocker {
"Stable machine-readable code of the reason, for example WAREHOUSE_HAS_STOCK."
code: String!
"Human-readable explanation in the language of the request."
message: String
}
"The postal address of a warehouse with its contact person. Older data can have gaps, so every address line can be missing when read."
type WarehouseAddress {
"The recipient company name."
companyName: String
"Street with house number."
street: String
"Address supplement."
additionalAddressLine: String
"Postal code."
postalCode: String
"City."
city: String
"State or region."
state: String
"The ISO 3166-1 alpha-2 code of the country. Absent when the country of older data cannot be resolved to a code."
countryCode: String
"The contact person."
contact: WarehouseContact!
}
"What can be done with a warehouse right now. It is a hint for user interfaces and can be outdated with the next change; the action itself always checks again and refuses with the same blocker codes."
type WarehouseAllowedActions {
"One entry per action, allowed or not."
actions: [WarehouseActionAvailability!]!
}
"One capability of a warehouse: whether the kind offers it and whether it is enabled. The capabilities are a list of the system that grows without a change of the schema, so a capability is a stable key plus texts, not an enum (a new enum value would break clients that handle the values one by one)."
type WarehouseCapabilityState {
"The stable key of the capability, in UPPER_SNAKE. Known keys: BATCH_TRACKING, SHELF_LIFE_EXPIRATION_TRACKING, SUBSET_MANAGEMENT. A client that does not know a key shows the name."
capabilityId: String!
"The name of the capability, in the language of the caller."
name: String!
"A description of the capability, in the language of the caller."
description: String
"Whether the kind of the warehouse offers the capability. A capability that is not available cannot be enabled."
isAvailable: Boolean!
"Whether the capability is enabled. Always false when it is not available."
isEnabled: Boolean!
}
"A setting with several choices that can be selected together. The value type is MultiChoice."
type WarehouseCheckboxGroupNode implements WarehouseSettingsNode {
"Discriminator of the node kind."
kind: WarehouseSettingsNodeKind!
"The stable ID of the node. For an input it equals the setting key, for example sales.invoice.dueDays."
id: String!
"The ID of the group the node belongs to. Absent for a top-level node."
parentId: String
"The depth in the tree. A top-level node has level 1."
level: Int!
"The position among the nodes of the same parent. Lower comes first."
sortOrder: Int!
"The text shown for the node, in the language of the caller."
label: String
"A further text, in the language of the caller."
description: String
"A link to a help page."
helpUrl: String
"Extra words the search finds the node by."
keywords: [String!]!
"The warehouse types the setting applies to. A setting that does not apply to the type of a warehouse is refused (errorCode is WAREHOUSE_SETTING_NOT_APPLICABLE)."
applicableWarehouseTypes: [WarehouseType!]!
"The Wawi permission the caller needs to see and change the node."
requiredPermission: String
"Whether the caller cannot change the setting."
isReadOnly: Boolean!
"Rules that make the node visible, enabled or required depending on other settings."
dependencies: [WarehouseSettingDependency!]!
"The key of the setting this input edits. It is also the ID of the node."
settingKey: String!
"The type of the value the setting holds."
valueType: WarehouseSettingValueType!
"Whether the setting needs a value."
isRequired: Boolean!
"Whether a change only takes effect after Wawi restarts."
requiresRestart: Boolean!
"A warning to show before a change is saved, for example about data that changes as a consequence."
changeWarning: String
"The default the setting has when nobody sets a value."
defaultValue: WarehouseSettingValue
"The fixed options. Absent when the options come from a source."
options: [WarehouseChoiceOption!]!
"Where to read the options from when they are master data. Absent when the options are fixed."
optionsSource: WarehouseResourceReference
"How many options must be chosen at least."
minSelected: Int
"How many options can be chosen at most."
maxSelected: Int
}
"A yes or no setting. The value type is Boolean."
type WarehouseCheckboxNode implements WarehouseSettingsNode {
"Discriminator of the node kind."
kind: WarehouseSettingsNodeKind!
"The stable ID of the node. For an input it equals the setting key, for example sales.invoice.dueDays."
id: String!
"The ID of the group the node belongs to. Absent for a top-level node."
parentId: String
"The depth in the tree. A top-level node has level 1."
level: Int!
"The position among the nodes of the same parent. Lower comes first."
sortOrder: Int!
"The text shown for the node, in the language of the caller."
label: String
"A further text, in the language of the caller."
description: String
"A link to a help page."
helpUrl: String
"Extra words the search finds the node by."
keywords: [String!]!
"The warehouse types the setting applies to. A setting that does not apply to the type of a warehouse is refused (errorCode is WAREHOUSE_SETTING_NOT_APPLICABLE)."
applicableWarehouseTypes: [WarehouseType!]!
"The Wawi permission the caller needs to see and change the node."
requiredPermission: String
"Whether the caller cannot change the setting."
isReadOnly: Boolean!
"Rules that make the node visible, enabled or required depending on other settings."
dependencies: [WarehouseSettingDependency!]!
"The key of the setting this input edits. It is also the ID of the node."
settingKey: String!
"The type of the value the setting holds."
valueType: WarehouseSettingValueType!
"Whether the setting needs a value."
isRequired: Boolean!
"Whether a change only takes effect after Wawi restarts."
requiresRestart: Boolean!
"A warning to show before a change is saved, for example about data that changes as a consequence."
changeWarning: String
"The default the setting has when nobody sets a value."
defaultValue: WarehouseSettingValue
}
"One option of a choice."
type WarehouseChoiceOption {
"The key that is stored when the option is chosen."
value: String!
"The text shown."
label: String!
"A further text."
description: String
"Whether the option cannot be chosen at the moment."
isDisabled: Boolean!
}
"The contact person of a warehouse."
type WarehouseContact {
"Salutation."
salutation: String
"First name."
firstName: String
"Last name."
lastName: String
"Department."
department: String
"Phone number."
phoneNumber: String
"Fax number."
faxNumber: String
"E-mail address."
emailAddress: String
}
"A decimal number setting. The value type is Decimal."
type WarehouseDecimalInputNode implements WarehouseSettingsNode {
"Discriminator of the node kind."
kind: WarehouseSettingsNodeKind!
"The stable ID of the node. For an input it equals the setting key, for example sales.invoice.dueDays."
id: String!
"The ID of the group the node belongs to. Absent for a top-level node."
parentId: String
"The depth in the tree. A top-level node has level 1."
level: Int!
"The position among the nodes of the same parent. Lower comes first."
sortOrder: Int!
"The text shown for the node, in the language of the caller."
label: String
"A further text, in the language of the caller."
description: String
"A link to a help page."
helpUrl: String
"Extra words the search finds the node by."
keywords: [String!]!
"The warehouse types the setting applies to. A setting that does not apply to the type of a warehouse is refused (errorCode is WAREHOUSE_SETTING_NOT_APPLICABLE)."
applicableWarehouseTypes: [WarehouseType!]!
"The Wawi permission the caller needs to see and change the node."
requiredPermission: String
"Whether the caller cannot change the setting."
isReadOnly: Boolean!
"Rules that make the node visible, enabled or required depending on other settings."
dependencies: [WarehouseSettingDependency!]!
"The key of the setting this input edits. It is also the ID of the node."
settingKey: String!
"The type of the value the setting holds."
valueType: WarehouseSettingValueType!
"Whether the setting needs a value."
isRequired: Boolean!
"Whether a change only takes effect after Wawi restarts."
requiresRestart: Boolean!
"A warning to show before a change is saved, for example about data that changes as a consequence."
changeWarning: String
"The default the setting has when nobody sets a value."
defaultValue: WarehouseSettingValue
"The least value."
minimum: Decimal
"The greatest value."
maximum: Decimal
"The step of a spinner."
step: Decimal
"How many decimal places to keep."
decimalPlaces: Int
"The unit shown next to the value, for example percent."
unit: String
}
"One condition on another setting."
type WarehouseDependencyCondition {
"The key of the setting to look at."
settingKey: String!
"How to compare."
operator: WarehouseConditionOperator!
"The value to compare with. Absent for IsSet and IsNotSet."
value: WarehouseSettingValue
}
"A setting with one choice out of a list. The value type is Choice."
type WarehouseDropdownNode implements WarehouseSettingsNode {
"Discriminator of the node kind."
kind: WarehouseSettingsNodeKind!
"The stable ID of the node. For an input it equals the setting key, for example sales.invoice.dueDays."
id: String!
"The ID of the group the node belongs to. Absent for a top-level node."
parentId: String
"The depth in the tree. A top-level node has level 1."
level: Int!
"The position among the nodes of the same parent. Lower comes first."
sortOrder: Int!
"The text shown for the node, in the language of the caller."
label: String
"A further text, in the language of the caller."
description: String
"A link to a help page."
helpUrl: String
"Extra words the search finds the node by."
keywords: [String!]!
"The warehouse types the setting applies to. A setting that does not apply to the type of a warehouse is refused (errorCode is WAREHOUSE_SETTING_NOT_APPLICABLE)."
applicableWarehouseTypes: [WarehouseType!]!
"The Wawi permission the caller needs to see and change the node."
requiredPermission: String
"Whether the caller cannot change the setting."
isReadOnly: Boolean!
"Rules that make the node visible, enabled or required depending on other settings."
dependencies: [WarehouseSettingDependency!]!
"The key of the setting this input edits. It is also the ID of the node."
settingKey: String!
"The type of the value the setting holds."
valueType: WarehouseSettingValueType!
"Whether the setting needs a value."
isRequired: Boolean!
"Whether a change only takes effect after Wawi restarts."
requiresRestart: Boolean!
"A warning to show before a change is saved, for example about data that changes as a consequence."
changeWarning: String
"The default the setting has when nobody sets a value."
defaultValue: WarehouseSettingValue
"The fixed options. Absent when the options come from a source."
options: [WarehouseChoiceOption!]!
"Where to read the options from when they are master data. Absent when the options are fixed."
optionsSource: WarehouseResourceReference
"Whether the user can clear the choice."
isClearable: Boolean!
}
"A group of nodes."
type WarehouseGroupNode implements WarehouseSettingsNode {
"Discriminator of the node kind."
kind: WarehouseSettingsNodeKind!
"The stable ID of the node. For an input it equals the setting key, for example sales.invoice.dueDays."
id: String!
"The ID of the group the node belongs to. Absent for a top-level node."
parentId: String
"The depth in the tree. A top-level node has level 1."
level: Int!
"The position among the nodes of the same parent. Lower comes first."
sortOrder: Int!
"The text shown for the node, in the language of the caller."
label: String
"A further text, in the language of the caller."
description: String
"A link to a help page."
helpUrl: String
"Extra words the search finds the node by."
keywords: [String!]!
"The warehouse types the setting applies to. A setting that does not apply to the type of a warehouse is refused (errorCode is WAREHOUSE_SETTING_NOT_APPLICABLE)."
applicableWarehouseTypes: [WarehouseType!]!
"The Wawi permission the caller needs to see and change the node."
requiredPermission: String
"Whether the caller cannot change the setting."
isReadOnly: Boolean!
"Rules that make the node visible, enabled or required depending on other settings."
dependencies: [WarehouseSettingDependency!]!
"How the group wants to be shown. A hint only. Stable key in UPPER_SNAKE. Known values: NAVIGATION, PAGE, SECTION, SUBSECTION. New values can be added; a client that does not know a value ignores or tolerates it."
presentation: String!
"The key of an icon the frontend may show."
iconKey: String
}
"A whole number setting. The value type is Integer."
type WarehouseIntegerInputNode implements WarehouseSettingsNode {
"Discriminator of the node kind."
kind: WarehouseSettingsNodeKind!
"The stable ID of the node. For an input it equals the setting key, for example sales.invoice.dueDays."
id: String!
"The ID of the group the node belongs to. Absent for a top-level node."
parentId: String
"The depth in the tree. A top-level node has level 1."
level: Int!
"The position among the nodes of the same parent. Lower comes first."
sortOrder: Int!
"The text shown for the node, in the language of the caller."
label: String
"A further text, in the language of the caller."
description: String
"A link to a help page."
helpUrl: String
"Extra words the search finds the node by."
keywords: [String!]!
"The warehouse types the setting applies to. A setting that does not apply to the type of a warehouse is refused (errorCode is WAREHOUSE_SETTING_NOT_APPLICABLE)."
applicableWarehouseTypes: [WarehouseType!]!
"The Wawi permission the caller needs to see and change the node."
requiredPermission: String
"Whether the caller cannot change the setting."
isReadOnly: Boolean!
"Rules that make the node visible, enabled or required depending on other settings."
dependencies: [WarehouseSettingDependency!]!
"The key of the setting this input edits. It is also the ID of the node."
settingKey: String!
"The type of the value the setting holds."
valueType: WarehouseSettingValueType!
"Whether the setting needs a value."
isRequired: Boolean!
"Whether a change only takes effect after Wawi restarts."
requiresRestart: Boolean!
"A warning to show before a change is saved, for example about data that changes as a consequence."
changeWarning: String
"The default the setting has when nobody sets a value."
defaultValue: WarehouseSettingValue
"The least value."
minimum: Long
"The greatest value."
maximum: Long
"The step of a spinner."
step: Long
"The unit shown next to the value, for example days."
unit: String
}
"One row of the warehouse list: what is needed to find and show a warehouse. The full structure is read with the single warehouse query."
type WarehouseListEntry {
"The ID of the warehouse."
id: ID!
"The type of the warehouse."
warehouseType: WarehouseType!
"The name of the warehouse."
name: String!
"The short name of the warehouse."
shortName: String
"Whether the warehouse is active."
isActive: Boolean!
"The priority of the warehouse when orders are delivered."
deliveryPriority: Int!
"The ID of the company the warehouse belongs to."
companyId: ID
"Whether the warehouse manages storage locations that this API shows (true for a warehouse with storage location management). Every other warehouse has one storage location internally, which the API does not show; its storage location operations fail with errorCode WAREHOUSE_TYPE_DOES_NOT_SUPPORT_STORAGE_LOCATIONS."
hasStorageLocations: Boolean!
"Whether stock can be posted on the warehouse directly, by a stock posting. True only for an active warehouse of the type 'Standard'; every other warehouse takes stock through the processes of its own system."
allowsDirectStockPosting: Boolean!
}
"A purchase order delivered to one of the company's warehouses. This is the plain kind."
type WarehousePurchaseOrder implements PurchaseOrder {
"The ID of the purchase order."
id: ID!
"The purchase order number. It is drawn from the number range when the order is created and cannot be changed through the API; empty for an older order without one."
number: String!
"Where the order stands."
status: PurchaseOrderStatus!
"Whether an order to a warehouse is overdue: it was sent, something of the ordered quantity is still undelivered and the requested delivery date has passed. Never true for a drop shipping order. Computed."
isOverdue: Boolean!
"Whether the supplier has confirmed the order. Set with 'ConfirmPurchaseOrder', reset with 'ResetPurchaseOrderConfirmation'."
isConfirmed: Boolean!
"Whether the order was completed by hand with 'CompletePurchaseOrder', possibly with quantities still undelivered."
isCompletedManually: Boolean!
"The ID of the supplier. It cannot be changed."
supplierId: ID!
"The supplier's address and contact person on the order. 'companyName' is the supplier's name. Changing the contact person replaces the person fields."
supplierAddress: PurchaseOrderAddress
"The company's customer number at the supplier, as printed on the order."
customerNumberAtSupplier: String
"The ID of the company that orders."
companyId: ID
"The billing address: the address of the company, taken from the company again on every change of the order header."
billingAddress: PurchaseOrderAddress
"Where the supplier delivers to: the address of the warehouse or of the customer, unless it was replaced."
deliveryAddress: PurchaseOrderAddress
"The language of the order documents as BCP 47 language tag, for example de or de-AT, the supplier's language."
languageTag: String
"The currency of all prices of the order as currency code (ISO 4217 alpha-3 in capitals, for example EUR; a currency defined by the tenant has the prefix 'x-'), the supplier's currency. It cannot be changed through the API."
currencyCode: String!
"The exchange rate from the order currency to the base currency of the company: a base-currency amount is the order amount divided by it."
exchangeRate: Decimal!
"When the goods are requested. Completing the order by hand sets it to the day of completion."
requestedDeliveryDate: DateTime
"The supplier's number for the order, for example the number of its order confirmation."
supplierDocumentNumber: String
"A free reference. For a drop shipping order from a sales delivery it is the number of the sales order."
referenceNumber: String
"A comment for internal use; it is not printed."
internalComment: String
"A note printed on the order documents."
printNote: String
"The net total of all line items, allowances and charges included, in the order currency. Computed."
totalNetAmount: Decimal!
"The gross total: the net total plus the tax of each line item. Computed."
totalGrossAmount: Decimal!
"When the order was first marked as sent."
sentAt: DateTime
"When the order was last printed."
lastPrintedAt: DateTime
"When the order was last sent by e-mail."
lastMailedAt: DateTime
"When the order was last exported."
lastExportedAt: DateTime
"When the supplier was last reminded of undelivered quantities."
lastReminderAt: DateTime
"When the order was created."
createdAt: DateTime
"The user who created the order."
createdBy: ID
"Discriminator: the kind of the order."
purchaseOrderType: PurchaseOrderType!
"The ID of the warehouse that receives the goods. Empty for an older order stored without a warehouse."
warehouseId: ID
}
"A setting with one choice out of a few. The value type is Choice."
type WarehouseRadioGroupNode implements WarehouseSettingsNode {
"Discriminator of the node kind."
kind: WarehouseSettingsNodeKind!
"The stable ID of the node. For an input it equals the setting key, for example sales.invoice.dueDays."
id: String!
"The ID of the group the node belongs to. Absent for a top-level node."
parentId: String
"The depth in the tree. A top-level node has level 1."
level: Int!
"The position among the nodes of the same parent. Lower comes first."
sortOrder: Int!
"The text shown for the node, in the language of the caller."
label: String
"A further text, in the language of the caller."
description: String
"A link to a help page."
helpUrl: String
"Extra words the search finds the node by."
keywords: [String!]!
"The warehouse types the setting applies to. A setting that does not apply to the type of a warehouse is refused (errorCode is WAREHOUSE_SETTING_NOT_APPLICABLE)."
applicableWarehouseTypes: [WarehouseType!]!
"The Wawi permission the caller needs to see and change the node."
requiredPermission: String
"Whether the caller cannot change the setting."
isReadOnly: Boolean!
"Rules that make the node visible, enabled or required depending on other settings."
dependencies: [WarehouseSettingDependency!]!
"The key of the setting this input edits. It is also the ID of the node."
settingKey: String!
"The type of the value the setting holds."
valueType: WarehouseSettingValueType!
"Whether the setting needs a value."
isRequired: Boolean!
"Whether a change only takes effect after Wawi restarts."
requiresRestart: Boolean!
"A warning to show before a change is saved, for example about data that changes as a consequence."
changeWarning: String
"The default the setting has when nobody sets a value."
defaultValue: WarehouseSettingValue
"The fixed options. Absent when the options come from a source."
options: [WarehouseChoiceOption!]!
"Where to read the options from when they are master data. Absent when the options are fixed."
optionsSource: WarehouseResourceReference
}
"A fixed argument of a resource reference."
type WarehouseResourceArgument {
"The name of the argument."
name: String!
"The value of the argument."
value: String!
}
"Points to a list another API serves and says how to read it: which GraphQL query, which property is the value and which the label. A client fetches the options itself, with the permissions of the caller. Used for choices whose options are master data."
type WarehouseResourceReference {
"The name of the GraphQL query that serves the list, for example paymentMethods."
query: String!
"The property of an entry that is stored as the value, for example id."
valueProperty: String!
"The property of an entry that is shown, for example name."
labelProperty: String!
"The property of an entry that holds a further text."
descriptionProperty: String
"The argument of the query for searching while typing. Absent when the list is not searchable."
searchArgument: String
"Arguments to always send, for example isActive: true."
fixedArguments: [WarehouseResourceArgument!]!
}
"A rule that makes a node visible, enabled or required depending on other settings."
type WarehouseSettingDependency {
"What the rule changes."
effect: WarehouseDependencyEffect!
"How the conditions combine."
match: WarehouseDependencyMatch!
"The conditions. At least one."
conditions: [WarehouseDependencyCondition!]!
}
"The value of one setting."
type WarehouseSettingValueEntry {
"The key of the setting."
settingKey: String!
"The warehouse the value belongs to."
warehouseId: ID!
"The value. The default when nobody set one."
value: WarehouseSettingValue
"Whether the value is the default or was set."
source: WarehouseValueSource!
"When the value was last changed. Absent for a default."
changedAt: DateTime
"Whether the caller cannot change the value."
isReadOnly: Boolean!
}
"A text for the user."
type WarehouseTextBlockNode implements WarehouseSettingsNode {
"Discriminator of the node kind."
kind: WarehouseSettingsNodeKind!
"The stable ID of the node. For an input it equals the setting key, for example sales.invoice.dueDays."
id: String!
"The ID of the group the node belongs to. Absent for a top-level node."
parentId: String
"The depth in the tree. A top-level node has level 1."
level: Int!
"The position among the nodes of the same parent. Lower comes first."
sortOrder: Int!
"The text shown for the node, in the language of the caller."
label: String
"A further text, in the language of the caller."
description: String
"A link to a help page."
helpUrl: String
"Extra words the search finds the node by."
keywords: [String!]!
"The warehouse types the setting applies to. A setting that does not apply to the type of a warehouse is refused (errorCode is WAREHOUSE_SETTING_NOT_APPLICABLE)."
applicableWarehouseTypes: [WarehouseType!]!
"The Wawi permission the caller needs to see and change the node."
requiredPermission: String
"Whether the caller cannot change the setting."
isReadOnly: Boolean!
"Rules that make the node visible, enabled or required depending on other settings."
dependencies: [WarehouseSettingDependency!]!
"The role of the text. Stable key in UPPER_SNAKE. Known values: HEADING, PARAGRAPH, INFO, WARNING, DANGER. New values can be added; a client that does not know a value ignores or tolerates it."
style: String!
"The text, in the language of the caller."
text: String!
}
"A text setting. The value type is Text, or Secret for the format Password."
type WarehouseTextInputNode implements WarehouseSettingsNode {
"Discriminator of the node kind."
kind: WarehouseSettingsNodeKind!
"The stable ID of the node. For an input it equals the setting key, for example sales.invoice.dueDays."
id: String!
"The ID of the group the node belongs to. Absent for a top-level node."
parentId: String
"The depth in the tree. A top-level node has level 1."
level: Int!
"The position among the nodes of the same parent. Lower comes first."
sortOrder: Int!
"The text shown for the node, in the language of the caller."
label: String
"A further text, in the language of the caller."
description: String
"A link to a help page."
helpUrl: String
"Extra words the search finds the node by."
keywords: [String!]!
"The warehouse types the setting applies to. A setting that does not apply to the type of a warehouse is refused (errorCode is WAREHOUSE_SETTING_NOT_APPLICABLE)."
applicableWarehouseTypes: [WarehouseType!]!
"The Wawi permission the caller needs to see and change the node."
requiredPermission: String
"Whether the caller cannot change the setting."
isReadOnly: Boolean!
"Rules that make the node visible, enabled or required depending on other settings."
dependencies: [WarehouseSettingDependency!]!
"The key of the setting this input edits. It is also the ID of the node."
settingKey: String!
"The type of the value the setting holds."
valueType: WarehouseSettingValueType!
"Whether the setting needs a value."
isRequired: Boolean!
"Whether a change only takes effect after Wawi restarts."
requiresRestart: Boolean!
"A warning to show before a change is saved, for example about data that changes as a consequence."
changeWarning: String
"The default the setting has when nobody sets a value."
defaultValue: WarehouseSettingValue
"The kind of text. Stable key in UPPER_SNAKE. Known values: PLAIN, EMAIL, URL, PATH, PHONE. New values can be added; a client that does not know a value ignores or tolerates it."
format: String!
"The least length."
minLength: Int
"The greatest length."
maxLength: Int
"A regular expression the text must match."
pattern: String
"A text to show while empty."
placeholder: String
"Whether the text can have several lines."
isMultiline: Boolean!
}
"The storage locations the processes of a warehouse with storage location management use by default. The system creates the first three with the warehouse."
type WmsSpecialLocations {
"The location goods are received on."
goodsReceiptLocationId: ID
"The location goods are received on by default in the mobile app."
mobileGoodsReceiptLocationId: ID
"The location of the order boxes."
boxLocationId: ID
"The picking trolley location goods are on while an order is in progress."
inProgressLocationId: ID
"The location returned goods are put on when it is not chosen by hand."
returnsLocationId: ID
}
"A warehouse with storage location management. The storage locations and settings are read through their own queries."
type WmsWarehouse implements Warehouse {
"The ID of the warehouse."
id: ID!
"The name of the warehouse. It is unique among the active warehouses."
name: String!
"The short name of the warehouse."
shortName: String
"A free description of the warehouse."
description: String
"Whether the warehouse is active. An inactive warehouse takes no new stock postings and no new orders."
isActive: Boolean!
"The priority of the warehouse when orders are delivered: orders are served from the warehouse with the lowest number first."
deliveryPriority: Int!
"The ID of the company the warehouse belongs to."
companyId: ID
"The digit from 0 to 9 that the warehouse puts into the shipping unit numbers (NVE) of its shipments."
nveExtensionDigit: String
"Whether the stock of the warehouse is left out of the available stock."
isLockedForAvailableStock: Boolean!
"Whether the warehouse manages storage locations that this API shows (true for a warehouse with storage location management). Every other warehouse has one storage location internally, which the API does not show; its storage location operations fail with errorCode WAREHOUSE_TYPE_DOES_NOT_SUPPORT_STORAGE_LOCATIONS."
hasStorageLocations: Boolean!
"Whether stock can be posted on the warehouse directly, by a stock posting. True only for an active warehouse of the type 'Standard'; every other warehouse takes stock through the processes of its own system."
allowsDirectStockPosting: Boolean!
"Discriminator of the warehouse type."
warehouseType: WarehouseType!
"The postal address of the warehouse with its contact person."
address: WarehouseAddress!
"The capabilities of the warehouse and whether each is enabled. One entry per capability; a capability the kind does not offer is listed as not available."
capabilities: [WarehouseCapabilityState!]!
"Present when an item that does not exist yet is created on goods receipt. Absent when goods receipt never creates items."
newItemOnReceipt: NewItemOnReceipt
"How the names of the storage locations are built when they are generated."
layout: StorageLocationLayout!
"The storage locations the processes of the warehouse use by default."
specialLocations: WmsSpecialLocations!
}
"A workbench at which production takes place."
type Workbench implements Resource {
"The ID of this resource."
id: ID!
"The category of this resource. It cannot be changed. Clients treat an unknown category as a resource without category-specific properties."
category: ResourceCategoryType!
"The number of this resource."
number: String!
"The name of this resource."
name: String!
"The description of this resource, or null if it has none."
description: String
"The ID of the resource type of this resource. The resource type belongs to the same category as the resource."
resourceTypeId: ID!
"Whether this resource is active. An inactive resource is no longer used for new production planning."
isActive: Boolean!
"The point in time at which this resource was created."
createdAt: DateTime!
"The point in time at which this resource was last changed."
changedAt: DateTime!
"The name of the host the workbench runs on, or null if no host is assigned. Changed by ChangeWorkbenchHost."
hostName: String
"The ID of the user currently connected to the workbench, or null if no user is connected."
connectedUserId: ID
"The point in time at which the current user connected to the workbench, or null if no user is connected."
connectedAt: DateTime
"The ID of the warehouse assigned to the workbench, or null if no warehouse is assigned. Changed by ChangeWorkbenchWarehouse."
warehouseId: ID
"To what extent, or at which levels, components are reserved at the workbench."
reservationMode: ReservationMode!
"Whether the dialog for displaying and/or capturing process parameter values is shown automatically during production when process parameter values can or must be displayed or captured."
autoShowProcessParameterValuesInProduction: Boolean!
"Whether the use of components with an expired best-before date is permitted at the workbench."
expiredComponentsUsage: ExpiredComponentsUsage!
"Whether and how available stock is reserved for the production session when a replenishment order is created at the workbench."
replenishmentCreationStockReservationMode: ReplenishmentCreationAvailableStockReservationMode!
}
"A reason an action is not possible."
type WorkerActionBlocker {
"The stable error code, for example WorkerNotRunning."
code: String!
"The reason, in the language of the caller."
message: String!
}
"The worker service that runs the syncs. There is one for the whole installation."
type WorkerService {
"Whether the worker service is running. While it is not, the state of the syncs is not updated and requests are not carried out."
isRunning: Boolean!
}
"One sync of the worker: what it syncs, how often, and what it is doing. The API answers for one tenant, so only the syncs of that tenant appear."
type WorkerSync {
"The ID of the sync."
id: ID!
"The key of the sync type, for example shop or ebay."
type: String!
"The name of the sync type in the language of the caller."
typeName: String!
"What the sync talks to, for example the name of the shop or the marketplace account."
targetName: String
"The sales channel of the sync. Absent when it has none."
salesChannelId: ID!
"The pause between the end of a run and the start of the next, in seconds."
intervalSeconds: Int!
"The shortest allowed interval, in seconds."
minimumIntervalSeconds: Int!
"The interval the sync starts with, in seconds."
defaultIntervalSeconds: Int!
"Whether a user can start and stop the sync."
isControllable: Boolean!
"The key of the license the sync type needs (wms, productionPlanning, wmsAutostore). Absent for a type without a license requirement. Derived from the checks the clients make today (assumption, there is no central license check per sync)."
requiredLicenseId: String
"Whether the license of the sync type is available. Absent when the type needs no license or the license cannot be determined."
isLicensed: Boolean
"What the sync is doing now."
status: WorkerSyncRunStatus!
}
"What happened to one sync when an action was requested for many."
type WorkerSyncActionResult {
"The sync."
syncId: ID!
"Whether the action was requested for the sync."
isRequested: Boolean!
"Why the action was not requested, for example SyncRequestPending. Absent when it was requested."
errorCode: String
}
"Which actions are possible for a sync now. A hint for a UI: it can be stale, the action checks again."
type WorkerSyncAllowedActions {
"One entry per action."
actions: [SyncActionAvailability!]!
}
"One entry of the error log of a sync (Worker.tErrorlog, written by the worker, read by nothing today). The message is free text of the worker and can contain data of the shop or the account: it is cut at 1000 characters and only readable with the narrower scope."
type WorkerSyncError {
"The ID of the entry."
id: UUID!
"The sync the error belongs to."
syncId: ID!
"When the error was logged."
occurredAt: DateTime!
"The message of the worker, at most 1000 characters. Never a raw payload."
message: String!
}
"A setting of a sync, with its description and its value. Only the options that belong to the type of the sync are listed."
type WorkerSyncOption {
"The stable key of the option, for example ebay.createOrderImmediately."
key: String!
"The name in the language of the caller."
label: String!
"What the option does, in the language of the caller."
description: String
"The data type of the value."
valueType: OptionValueType!
"Whether the option needs a value."
isRequired: Boolean!
"Whether a change applies to all syncs of the same type. Today every option is stored once per tenant and type, so it does."
isSharedAcrossSyncs: Boolean!
"The value."
value: OptionValue
"The value the option has when nobody set one."
defaultValue: OptionValue
}
"One run of a sync. There is no run history today (the status is last writer wins); it needs a new table of the worker (assumption: Worker.tRun with an index on the sync and the start)."
type WorkerSyncRun {
"The ID of the run."
id: UUID!
"The sync that ran."
syncId: ID!
"When the run started."
startedAt: DateTime!
"When the run ended. Absent while it runs."
finishedAt: DateTime
"How the run ended. Absent while it runs."
result: SyncResult
"How long the run took, computed from start and end. Absent while it runs."
durationSeconds: Int
"How many entries the error log holds for this run."
errorCount: Int!
}
"What a sync is doing now and how its last run went."
type WorkerSyncRunStatus {
"Where the sync is in its life."
state: SyncLifecycleState!
"How the last run ended. Absent when it has not run since the worker started."
lastResult: SyncResult
"Whether the sync cannot run because its account is locked or inactive, for example a locked shop. Unlocking the account and starting the sync is the only way out."
isLocked: Boolean!
"The last message the sync reported, for example what it does or when it runs next."
message: String
"When the status last changed. Not the start or end of a run."
statusChangedAt: DateTime
"When the next run is expected: the status time plus the interval. Not a guarantee, runs can wait in a queue."
expectedNextRunAt: DateTime
"Progress of the run that is running, from 0 to 100. Absent when it is not known: the value exists only in the memory of the worker and the sync reports it only while it runs. The V2 route workers/status keeps its constant -1."
progressPercent: Float
"The key of the action that was requested and is not yet carried out: Start, Stop, Restart, RunOnce or ResetError. The list of actions can grow, so it is a key and not an enum."
pendingActionId: String
}
"A kind of sync the worker can run, for example the sync with an online shop."
type WorkerSyncType {
"The stable key of the sync type, for example shop or ebay."
id: String!
"The name in the language of the caller."
name: String!
"The shortest allowed pause between the end of a run and the start of the next, in seconds."
minimumIntervalSeconds: Int!
"The pause a sync of this type starts with, in seconds."
defaultIntervalSeconds: Int!
"Whether a user can start and stop syncs of this type. Maintenance syncs cannot be controlled."
isControllable: Boolean!
}
"A kind of object that workflows run on, for example a sales order. The list grows with the product, so it is a catalogue: the code is stable and is what the filters of the other queries take."
type WorkflowEntityType {
"The stable code, for example SalesOrder, Item or Customer."
code: String!
"The name in the language of the caller."
name: String!
}
"One line of the workflow log. All lines of one run share the ExecutionId. The text is free text of the workflow and can contain customer data: it is cut at 1000 characters and only readable with the narrower scope."
type WorkflowLogEntry {
"Rises with every line, so lines of the same moment keep their order."
sequence: Long!
"Groups the lines of one run."
executionId: UUID!
"The workflow that wrote the line."
workflowId: ID!
"The number of the action of the workflow the line belongs to, 0 for lines about the run as a whole."
actionNumber: Int!
"The code of the kind of object the run was about."
entityType: String!
"The ID of the object the run was about, as the API of that object writes it."
entityId: String!
"How serious the line is."
level: WorkflowLogLevel!
"The text of the line, at most 1000 characters. Never a raw payload."
message: String!
"When the line was written."
occurredAt: DateTime!
"The user the run belonged to. Empty when the workflow engine ran it without a user."
userId: ID
"The workstation the run came from."
workstation: String!
}
"One workflow run that waits, runs or failed. Finished runs are not here; read the workflow log for them."
type WorkflowQueueEntry {
"The ID of the queue entry."
id: ID!
"The workflow that is run."
workflowId: ID!
"The code of the kind of object the run is about."
entityType: String!
"The ID of the object the run is about, as the API of that object writes it."
entityId: String!
"Where the run is."
status: WorkflowQueueStatus!
"When the run is due to start."
startDate: DateTime!
"The user who raised the event. Empty when the workflow engine started the run itself (for example a timed workflow)."
triggeredBy: ID
}
"The definition of an attribute: a property that can be assigned to items or categories. Multilingual attributes describe the record to customers; function attributes steer online shops and interfaces. Both kinds share the same groups."
interface Attribute {
"The ID of the attribute."
id: ID!
"The kind of the attribute. It cannot be changed after the attribute was created."
kind: AttributeKind!
"The kind of record the attribute can be assigned to. It cannot be changed after the attribute was created. Known values: ITEM, CATEGORY. The set can grow; a client must tolerate values it does not know."
entityType: String!
"The data type of the attribute value. Known values: INTEGER, DECIMAL, TEXT, CHECKBOX, VALUE_LIST, URL, EMAIL, PHONE, COUNTRY_ISO, PRICE, DATE, SHORT_TEXT. The set can grow; a client must tolerate values it does not know."
dataType: String!
"The technical identifier of the attribute. Online shops, plug-ins and interfaces recognise a function attribute by it. For multilingual attributes the system assigns it and it cannot be changed."
code: String!
"The name of the group the attribute is displayed under. Attributes of both kinds share the groups of their entity type. A group exists as long as at least one attribute carries its name."
groupName: String!
"An internal description of the attribute for staff. It is not shown to customers."
description: String
"The position of the attribute within its group. The API does not store a group order; sort groups by 'groupName'."
sortOrder: Int!
"Indicates an attribute supplied by the system. It cannot be deleted; only the online shops it is transferred to can be changed."
isSystem: Boolean!
"The online shops the attribute is transferred to. An empty list means that no shop receives it."
activeSalesChannels: [AttributeSalesChannel!]!
}
"A component of a bill of materials that belongs to a parent component. Polymorphic: \"childComponentType\" selects the variant."
interface BillOfMaterialsChildComponent {
"The ID of this bill of materials component."
id: ID!
"The ID of the bill of materials this component belongs to."
billOfMaterialsId: ID!
"The position of this component among its siblings: operations are ordered within the bill of materials, items and configuration groups share one order within their parent component. Changed only by moving the component."
sortIndex: Int!
"The type of this child component."
childComponentType: BillOfMaterialsChildComponentType!
"The ID of the parent component (e.g. an operation) this child component belongs to."
parentId: ID!
}
"A component of a bill of materials that contains child components. Polymorphic: \"parentComponentType\" selects the variant."
interface BillOfMaterialsParentComponent {
"The ID of this bill of materials component."
id: ID!
"The ID of the bill of materials this component belongs to."
billOfMaterialsId: ID!
"The position of this component among its siblings: operations are ordered within the bill of materials, items and configuration groups share one order within their parent component. Changed only by moving the component."
sortIndex: Int!
"The type of this parent component."
parentComponentType: BillOfMaterialsParentComponentType!
"The child components (items and configuration groups) of this parent component, ordered by their sort index."
children: [BillOfMaterialsChildComponent]
}
"The value of a custom field of a category. Polymorphic: the property 'type' selects the variant, which has to match the field type of the definition."
interface CategoryFieldValue {
"Discriminator of the value variant."
type: CategoryFieldValueType!
}
"The value of a custom field of a company. Polymorphic: the property 'type' selects the variant, which has to match the data type of the field."
interface CompanyFieldValue {
"Discriminator of the value variant."
type: CompanyFieldValueType!
}
"The price of an item for one customer group in one sales channel. Polymorphic: the property 'source' tells whether the customer group takes over the base price of the item or has a price list of its own that overrides it. The sales channel is a property of the variants."
interface CustomerGroupPriceList {
"Discriminator: where the price comes from."
source: CustomerGroupPriceSource!
"The customer group the price applies to."
customerGroupId: ID!
"Whether the item is offered in the sales channel for this customer group."
isVisible: Boolean!
"The net price that applies to this customer group at quantity 1, whether it is taken over or its own. For a percentage tier it is calculated from the base price. Absent when the item has no base price and the list has no tier for quantity 1."
effectiveNetPrice: Decimal
"The currency of the prices as ISO 4217 code: the currency the prices were asked for: the default currency of the tenant or the one given by the caller."
currencyCode: String!
"Present when the prices were converted from the default currency of the tenant."
conversion: CurrencyConversion
}
"The definition of a custom field: a merchant-defined field that can be filled on records of one entity type."
interface CustomField {
"The ID of the custom field."
id: ID!
"The shape of the field. Value list fields carry allowed values, all other fields do not."
kind: CustomFieldKind!
"The data type of the field. It cannot be changed after the field was created. Known keys: 'INTEGER', 'DECIMAL', 'TEXT', 'SHORT_TEXT', 'CHECKBOX', 'VALUE_LIST', 'URL', 'EMAIL', 'PHONE', 'COUNTRY_ISO', 'PRICE', 'DATE'. New keys can be added; handle an unknown key as not known, never as a failure."
dataType: String!
"The kind of record the field belongs to. It cannot be changed after the field was created. Known keys: 'ITEM', 'CATEGORY', 'CUSTOMER', 'SALES_ORDER', 'SALES_ORDER_LINE_ITEM', 'COMPANY', 'OPERATION', 'PRODUCTION_ITEM', 'PRODUCTION_ORDER', 'RESOURCE'. New keys can be added; handle an unknown key as not known, never as a failure."
entityType: String!
"The name of the group the field is displayed under. Fields of one group are shown together. Null for fields that belong to no group."
groupName: String
"The name of the field. It is unique among the fields of the same entity type when a field is created or renamed; existing data may contain duplicates."
name: String!
"An internal description of the field."
description: String
"Where user interfaces show the field. Null for sales orders and sales order line items, which have no display location. Known keys: 'GENERAL', 'CUSTOM_FIELDS_TAB'. New keys can be added; handle an unknown key as not known, never as a failure."
displayLocation: String
"Indicates that a value is expected for this field. This is a hint for user interfaces; the API does not enforce it."
isRequired: Boolean!
"Indicates that user interfaces hide the field. Hidden fields stay readable and writable through the API."
isHidden: Boolean!
"The position of the field within its group. The API does not store a group order; sort groups by 'groupName'."
sortOrder: Int!
"Restricts the field to items of certain product groups in user interfaces. Only available for item fields."
productGroupRestriction: ProductGroupRestriction
}
"The origin of a disposition. Polymorphic: \"originType\" selects the variant."
interface DispositionOrigin {
"The type of this origin."
originType: DispositionOriginType!
}
"A line item of an incoming invoice. Polymorphic: \"lineItemType\" selects the variant."
interface IncomingInvoiceLineItem {
"The ID of the line item."
id: ID!
"The incoming invoice the line item belongs to."
incomingInvoiceId: ID!
"The kind of the line item."
lineItemType: IncomingInvoiceLineItemType!
"Description of the line item."
name: String
"Invoiced quantity. Rounded to 4 decimal places."
quantity: Decimal!
"Unit of the quantity as printed on the invoice."
unit: String
"Net price per unit in the invoice currency. Negative for cash discounts. Rounded to 4 decimal places."
netUnitPrice: Decimal!
"Tax rate in percent."
taxRate: Decimal!
"Quantity times net unit price, in the invoice currency, rounded to 2 decimal places."
netAmount: Decimal!
"\"netAmount\" plus tax, in the invoice currency, rounded to 2 decimal places."
grossAmount: Decimal!
"Net amount of the additional costs allocated to this line item, in the invoice currency, rounded to 2 decimal places."
additionalCostsNetAmount: Decimal!
"Internal note."
notes: String
}
"An item of the catalog. Polymorphic: the property 'itemType' selects the variant. The variants exclude each other, and every variant has exactly the properties its kind can have: required, optional or not there at all."
interface Item {
"The ID of the item."
id: ID!
"Name of the item in the default language."
name: String!
"Whether the item is active. An inactive item cannot be sold or used as a kit component."
isActive: Boolean!
"The ID of the product group."
productGroupId: ID
"The ID of the manufacturer."
manufacturerId: ID
"The ID of the item condition, for example new or used."
conditionId: ID
"The ID of the delivery status of the item (the master data of delivery statuses, for example \"in stock\" or \"ships in 3 days\")."
deliveryStatusId: ID
"The variation parent this item is a combination of. Absent when the item is no combination. Read-only for every kind of item: the assignment is maintained at the parent only (items/variation-parents/{itemId}/combinations)."
variationParentId: ID
"Every trait that applies to the item, ordered by rank, the first being the kind in 'itemType'. The kind is the first rule that applies; the others would otherwise be lost (a stock-managed variation parent is a VariationParent with the trait StockItem, a stock-managed kit made of divisible parts is a Kit with the trait DivisibleStockItem). Only the fields of the kind are part of the model; sub-resources are offered by the kind. Clients must tolerate values they do not know."
traits: [ItemType!]!
"When the item was created."
createdAt: DateTime
"When the item was last changed."
changedAt: DateTime
"Discriminator of the item kind."
itemType: ItemType!
}
"An item condition: the state an item can be in, for example new, used or B-grade. The stock handling decides which properties it has."
interface ItemCondition {
"The ID of the item condition."
id: ID!
"How the condition deals with stock. It cannot be changed after the condition was created."
stockHandling: ItemConditionStockHandling!
"The name in each language it has, including languages that are no longer active. It always has a name in the standard language of the Wawi."
translations: [ItemConditionTranslation!]!
"The colour as hex value with a leading '#', shown in the warehouse. Null when none."
color: String
"The position in lists; smaller comes first."
sortOrder: Int!
"Whether the condition can be chosen. Inactive conditions stay on the items and returns that already carry them."
isActive: Boolean!
"Whether it is the standard condition that items without another condition carry. Computed; there is exactly one."
isDefault: Boolean!
"Whether it was delivered with the Wawi. A system condition cannot be deleted. Computed."
isSystem: Boolean!
"Where the condition can be chosen."
restriction: ItemConditionRestriction!
"The values of the sales platforms the condition is mapped to. A platform without an entry has no mapping."
marketplaceCodes: [ItemConditionMarketplaceCode!]!
}
"The value of an attribute or a custom field. Polymorphic: the property 'type' selects the variant, which has to match the field type of the definition."
interface ItemFieldValue {
"Discriminator of the value variant."
type: ItemFieldValueType!
}
"The value of a sync option. An option accepts the type its definition names."
interface OptionValue {
"Discriminator of the value type."
valueType: OptionValueType!
}
"What a part of a payment transaction is assigned to. Polymorphic: 'kind' selects the variant."
interface PaymentTransactionAssignment {
"What the assignment is."
kind: PaymentTransactionAssignmentKind!
"The amount assigned, in the currency of the transaction. Negative for a payout or for money taken back."
amount: Decimal!
}
"A document the transaction probably pays. Polymorphic: 'targetType' selects the variant."
interface PaymentTransactionSuggestion {
"The kind of document."
targetType: PaymentTransactionSuggestionTargetType!
"The position, 1 for the best candidate."
rank: Int!
"How well the document matches: the sum of the points of the matched rules. From 0.3 a document is suggested; the automatic assignment takes a document from 0.5 when no other one comes within 0.25."
score: Decimal!
"The open amount of the document."
openAmount: Decimal!
"The currency of the open amount (ISO 4217)."
currencyCode: String!
"The keys of the rules that matched, for example OrderNumber, InvoiceNumber, Amount, CustomerNumber or Name. The list of keys can grow; a client that does not know a key shows it as it is."
matchedRules: [String!]!
}
"A line of a price inquiry. Polymorphic: 'lineItemType' selects the variant."
interface PriceInquiryLineItem {
"The ID of the line."
id: ID!
"The ID of the price inquiry."
priceInquiryId: ID!
"The position of the line on the price inquiry."
sortOrder: Int!
"The name of the line: the item's name when it was added, or the text of a custom line."
name: String!
"The quantity asked for."
quantity: Decimal!
"The net price per unit in the currency of the price inquiry. It is the supplier's answer once it is entered; before that it is the price the ERP knows for the item and the supplier, or 0."
netUnitPrice: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The net amount of the line: quantity times unit price. Computed."
netAmount: Decimal!
"When the supplier is asked to deliver the line, or has said it would."
expectedDeliveryDate: DateTime
"A note on the line, printed on the price inquiry."
note: String
"Discriminator: the kind of the line."
lineItemType: PriceInquiryLineItemType!
}
"One tier of a price list. Polymorphic: the property 'kind' selects the variant. A list of tiers has distinct quantities."
interface PriceTier {
"Discriminator of the tier variant."
kind: PriceTierKind!
}
"A purchase order to a supplier. Polymorphic: 'purchaseOrderType' selects the variant. The variants exclude each other and every variant has exactly the properties of its kind. Line items, goods receipts and allowed actions are read through their own queries."
interface PurchaseOrder {
"The ID of the purchase order."
id: ID!
"The purchase order number. It is drawn from the number range when the order is created and cannot be changed through the API; empty for an older order without one."
number: String!
"Where the order stands."
status: PurchaseOrderStatus!
"Whether an order to a warehouse is overdue: it was sent, something of the ordered quantity is still undelivered and the requested delivery date has passed. Never true for a drop shipping order. Computed."
isOverdue: Boolean!
"Whether the supplier has confirmed the order. Set with 'ConfirmPurchaseOrder', reset with 'ResetPurchaseOrderConfirmation'."
isConfirmed: Boolean!
"Whether the order was completed by hand with 'CompletePurchaseOrder', possibly with quantities still undelivered."
isCompletedManually: Boolean!
"The ID of the supplier. It cannot be changed."
supplierId: ID!
"The supplier's address and contact person on the order. 'companyName' is the supplier's name. Changing the contact person replaces the person fields."
supplierAddress: PurchaseOrderAddress
"The company's customer number at the supplier, as printed on the order."
customerNumberAtSupplier: String
"The ID of the company that orders."
companyId: ID
"The billing address: the address of the company, taken from the company again on every change of the order header."
billingAddress: PurchaseOrderAddress
"Where the supplier delivers to: the address of the warehouse or of the customer, unless it was replaced."
deliveryAddress: PurchaseOrderAddress
"The language of the order documents as BCP 47 language tag, for example de or de-AT, the supplier's language."
languageTag: String
"The currency of all prices of the order as currency code (ISO 4217 alpha-3 in capitals, for example EUR; a currency defined by the tenant has the prefix 'x-'), the supplier's currency. It cannot be changed through the API."
currencyCode: String!
"The exchange rate from the order currency to the base currency of the company: a base-currency amount is the order amount divided by it."
exchangeRate: Decimal!
"When the goods are requested. Completing the order by hand sets it to the day of completion."
requestedDeliveryDate: DateTime
"The supplier's number for the order, for example the number of its order confirmation."
supplierDocumentNumber: String
"A free reference. For a drop shipping order from a sales delivery it is the number of the sales order."
referenceNumber: String
"A comment for internal use; it is not printed."
internalComment: String
"A note printed on the order documents."
printNote: String
"The net total of all line items, allowances and charges included, in the order currency. Computed."
totalNetAmount: Decimal!
"The gross total: the net total plus the tax of each line item. Computed."
totalGrossAmount: Decimal!
"When the order was first marked as sent."
sentAt: DateTime
"When the order was last printed."
lastPrintedAt: DateTime
"When the order was last sent by e-mail."
lastMailedAt: DateTime
"When the order was last exported."
lastExportedAt: DateTime
"When the supplier was last reminded of undelivered quantities."
lastReminderAt: DateTime
"When the order was created."
createdAt: DateTime
"The user who created the order."
createdBy: ID
"Discriminator: the kind of the order."
purchaseOrderType: PurchaseOrderType!
}
"A line item of a purchase order. Polymorphic: 'lineItemType' selects the variant."
interface PurchaseOrderLineItem {
"The ID of the line item."
id: ID!
"The ID of the purchase order."
purchaseOrderId: ID!
"The position of the line on the order. Allowances and charges come last."
sortOrder: Int!
"The name of the line: the item's name when it was added, the text of a custom line, the name of an allowance or charge."
name: String!
"The ordered quantity. Cancelling reduces it to the delivered quantity."
quantity: Decimal!
"The net price per unit in the order currency. Negative for a discount."
netUnitPrice: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The net amount of the line: quantity times unit price. Computed."
netAmount: Decimal!
"A note on the line, printed on the order documents."
note: String
"What the supplier confirmed for the line. Empty when nothing is confirmed."
confirmation: PurchaseOrderLineItemConfirmation
"Discriminator: the kind of the line."
lineItemType: PurchaseOrderLineItemType!
}
"A resource used in production, e.g. a workbench, a machine or an employee. Polymorphic: \"category\" selects the variant."
interface Resource {
"The ID of this resource."
id: ID!
"The category of this resource. It cannot be changed. Clients treat an unknown category as a resource without category-specific properties."
category: ResourceCategoryType!
"The number of this resource."
number: String!
"The name of this resource."
name: String!
"The description of this resource, or null if it has none."
description: String
"The ID of the resource type of this resource. The resource type belongs to the same category as the resource."
resourceTypeId: ID!
"Whether this resource is active. An inactive resource is no longer used for new production planning."
isActive: Boolean!
"The point in time at which this resource was created."
createdAt: DateTime!
"The point in time at which this resource was last changed."
changedAt: DateTime!
}
"A restock suggestion: how much of an item a destination warehouse should get from one source, with the figures it is computed from. Polymorphic by 'restockSuggestionType': from a supplier, from a source warehouse, or without a source. Quantities are in the item's unit; prices are net."
interface RestockSuggestion {
"The discriminator: where the suggestion gets its goods from."
restockSuggestionType: RestockSuggestionType!
"The ID of the item."
itemId: ID!
"The item's SKU."
sku: String!
"The item's name in the default language."
itemName: String!
"The ID of the destination warehouse the suggestion is for."
warehouseId: ID!
"The quantity suggested, 0 or more."
suggestedQuantity: Decimal!
"The quantity needed before the minimum order quantity, the order interval and the percentage surcharge are applied."
demandQuantity: Decimal!
"The open quantity, still to be picked, of the open sales orders and stock transfers that count as demand, for the item in all warehouses. It is set off against the destination warehouse with the highest priority only."
openSalesOrderQuantity: Decimal!
"The forecast demand of the coming days from the past consumption. Empty without a forecast."
forecastQuantity: Decimal
"The consumption in the measured period, without the order peaks left out: the quantity of the sales orders created in the period, delivered from the destination warehouse plus still open. Without a forecast the period is the last 30 days."
consumedQuantity: Decimal!
"The consumption in the last 30 days."
consumedQuantityLast30Days: Decimal!
"The consumption per day in the measured period. Empty when nothing was consumed."
dailyConsumption: Decimal
"The consumption of the period left out as order peaks. Empty when peaks are not left out or none occurred."
peakQuantity: Decimal
"The average quantity per delivery in the period, the basis of the peak detection. Empty when peaks are not left out."
averageQuantityPerDelivery: Decimal
"On how many days of the period the item was in stock. Only with 'onlyDaysWithStock'."
daysWithStock: Int
"How many open availability requests exist for the item. They count, one unit each, only with 'includeAvailabilityRequests', and only for the destination warehouse with the highest priority."
availabilityRequestCount: Int!
"The demand planned by hand that counts. Empty when such demand does not count."
manualDemandQuantity: Decimal
"The stock counted for the destination warehouse: its stock without what is not available, plus, by the stock settings, the stock in transit, the open stock transfers to it and the purchase list quantities."
stockQuantity: Decimal!
"The stock counted, plus the supplier stock where the settings count it, minus what open sales orders and external reservations take."
availableQuantity: Decimal!
"What is missing when the available quantity is below 0; else 0."
shortageQuantity: Decimal!
"The stock that is not counted as available: on locked storage locations or storage locations locked for delivery, and on clearance and return storage locations, as the stock settings decide. Empty when 'includeStockOnStorageLocationsLockedForDelivery' is set."
blockedForDeliveryQuantity: Decimal
"The quantity of the item in orders of sales channels that are not imported yet; 0 when there are none. It counts as demand only with 'includeExternalReservations'."
externallyReservedQuantity: Decimal!
"The quantity of the item on the purchase list for the destination warehouse; quantities without a warehouse are added for the warehouse with the highest priority. It counts as stock only with 'includePurchaseListQuantities'."
purchaseListQuantity: Decimal!
"The item's minimum stock for the destination warehouse; with 'fillGlobalMinimumStock', the part of the minimum stock over all warehouses that falls on this warehouse. It is added to the suggestion only when a minimum stock is topped up. Empty when the item has none."
minimumStock: Decimal
"The item's minimum stock over all warehouses. Empty when it has none."
globalMinimumStock: Decimal
"The item's maximum stock of the destination warehouse. Empty when it has none or the settings do not limit to it."
maximumStock: Decimal
"The inflow from purchase orders set off against this suggestion: the open quantity of the source supplier's purchase orders to the destination warehouse; with 'inflowAllocation' 'FIRST_WAREHOUSE', the share of the inflow of all suppliers taken by this warehouse. 0 for suggestions from a source warehouse or without a source."
consideredInflowQuantity: Decimal!
"The open quantity of the purchase orders that count as inflow, for all warehouses."
inflowAllWarehousesQuantity: Decimal!
"The open quantity of all sent and partially delivered purchase orders of the item, whatever the settings."
totalInflowQuantity: Decimal!
"The quantity the percentage surcharge added. Empty without a surcharge."
surchargeQuantity: Decimal
"The item's average net purchase price, in the base currency."
averageNetPurchasePrice: Decimal
"The item's last net purchase price, in the base currency."
lastNetPurchasePrice: Decimal
}
"An entry of a destination area. Polymorphic by 'entryType'."
interface RestockSuggestionDestinationAreaEntry {
"The ID of the entry."
id: ID!
"The ID of the destination area."
destinationAreaId: ID!
"The discriminator: the kind of the entry."
entryType: RestockSuggestionDestinationAreaEntryType!
"The priority of the entry among the entries of its area: 1 is the highest, the entries are numbered without gaps."
priority: Int!
}
"An entry of a start area. Polymorphic by 'entryType'."
interface RestockSuggestionStartAreaEntry {
"The ID of the entry."
id: ID!
"The ID of the start area."
startAreaId: ID!
"The discriminator: the kind of the entry."
entryType: RestockSuggestionStartAreaEntryType!
"The priority of the entry among the entries of its area: 1 is the highest, the entries are numbered without gaps."
priority: Int!
}
"A document that cancels a sales invoice or a sales invoice correction. Polymorphic: the property 'documentType' selects the variant."
interface SalesInvoiceCancellation {
"The ID of the document."
id: ID!
"The ID of the sales channel the document came from."
salesChannelId: ID
"The ID of the customer."
customerId: ID
"The ID of the company that issued the document."
companyId: ID
"The billing address as printed on the document."
billingAddress: SalesAddress
"The VAT ID of the customer as printed on the document."
vatIdNumber: String
"The exchange rate of the shipping country currency to the currency of the company."
shippingCountryCurrencyFactor: Decimal!
"The currency of the shipping country as ISO 4217 code, for example EUR."
shippingCountryCurrencyCode: String
"The revenue account for bookkeeping."
revenueAccount: String
"When the document was last printed."
printedAt: DateTime
"The number of the document. Empty for a draft."
number: String
"A note printed on the document."
note: String
"The net total of all line items."
netTotal: Decimal!
"When the document was last sent by e-mail."
mailedAt: DateTime
"The language of the document as BCP 47 language tag, for example de. Wawi currently holds only the language subtag."
languageTag: String
"The gross total of all line items."
grossTotal: Decimal!
"The GLN (global location number) of the customer as printed on the document."
gln: String
"The customer number at the time of the document."
customerNumber: String
"The exchange rate to the currency of the company."
currencyFactor: Decimal!
"The currency of the document as ISO 4217 code, for example EUR."
currencyCode: String
"The ID of the sales invoice the cancelled document belongs to."
salesInvoiceId: ID!
"The user who cancelled."
cancelledBy: ID
"The number of the sales invoice the cancelled document belongs to."
salesInvoiceNumber: String
"Whether the cancelled document was created outside Wawi, for example by a marketplace. Always false for a cancelled sales invoice."
isExternal: Boolean!
"Which document is cancelled. It selects the variant."
documentType: SalesInvoiceCancellationDocumentType!
"When the document was cancelled."
cancelledAt: DateTime
"The name of the cancellation reason. Empty when no reason was given or the reason was deleted."
cancellationReason: String
"The comment given with the cancellation."
cancellationComment: String
}
"A line item of a sales invoice. Polymorphic: the property 'type' selects the variant."
interface SalesInvoiceLineItem {
"The ID of the line item."
id: ID!
"The position of the line item on the invoice."
sortOrder: Int!
"The name of the line item."
name: String!
"A note on the line item."
note: String
"The quantity."
quantity: Decimal!
"The unit the quantity is sold in, for example 'pcs'."
salesUnit: String
"The net price per unit."
salesPriceNet: Decimal!
"The gross price per unit."
salesPriceGross: Decimal!
"The discount in percent."
discountPercent: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The net total of the line item after discount."
totalSalesPriceNet: Decimal!
"The gross total of the line item after discount."
totalSalesPriceGross: Decimal!
"The line item of the sales order this line item comes from. Absent for a line item without an order link; only those can change quantity, price, discount and tax rate on a draft."
salesOrderLineItemId: ID
"Discriminator of the line item type."
type: SalesLineItemType!
}
"A line item of a sales document. Polymorphic: the property 'type' selects the variant."
interface SalesLineItem {
"The ID of the line item."
id: ID!
"The net total of the line item after discount."
totalSalesPriceNet: Decimal!
"The gross total of the line item after discount."
totalSalesPriceGross: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The position of the line item in the document."
sortOrder: Int!
"The unit the quantity is sold in, for example 'pcs'."
salesUnit: String
"The net price per unit."
salesPriceNet: Decimal!
"The gross price per unit."
salesPriceGross: Decimal!
"The quantity."
quantity: Decimal!
"The net purchase price per unit when the line item was added."
purchasePriceNet: Decimal!
"A note on the line item."
note: String
"The name printed on the document."
name: String!
"The discount in percent."
discountPercent: Decimal!
"Discriminator of the line item type."
type: SalesLineItemType!
}
"The value of a custom field. Polymorphic: the property 'type' selects the variant, which has to match the data type of the field."
interface SalesOrderFieldValue {
"Discriminator of the value variant."
type: SalesOrderFieldValueType!
}
"A line item of a subscription. Polymorphic: the property 'kind' selects the variant. Recurring kinds (item, custom, voucher) carry a schedule; charges and discounts are part of every follow-up sales order."
interface SalesSubscriptionLineItem {
"The ID of the line item."
id: ID!
"The name printed on the sales order."
name: String!
"The quantity billed per period."
quantity: Decimal!
"The net price per unit."
salesPriceNet: Decimal!
"The discount in percent."
discountPercent: Decimal!
"The tax rate in percent."
taxRate: Decimal!
"The position of the line item in the subscription."
sortOrder: Int!
"A note on the line item."
note: String
"Discriminator of the line-item kind."
kind: SalesSubscriptionLineItemKind!
}
"A node of the settings tree: a group, a text, an input, a button or a custom part. Nodes form a tree through ParentId. How the tree is laid out is up to the frontend."
interface SettingsNode {
"Discriminator of the node kind."
kind: SettingsNodeKind!
"The stable ID of the node. For an input it equals the setting key, for example sales.invoice.dueDays."
id: String!
"The ID of the group the node belongs to. Absent for a top-level node."
parentId: String
"The depth in the tree. A top-level node has level 1."
level: Int!
"The position among the nodes of the same parent. Lower comes first."
sortOrder: Int!
"The text shown for the node, in the language of the caller."
label: String
"A further text, in the language of the caller."
description: String
"A link to a help page."
helpUrl: String
"Extra words the search finds the node by."
keywords: [String!]!
"The scopes the setting can be stored for. Almost every setting has only Global."
scopes: [SettingsScope!]!
"The Wawi permission the caller needs to see and change the node."
requiredPermission: String
"Whether the caller cannot change the setting."
isReadOnly: Boolean!
"Rules that make the node visible, enabled or required depending on other settings."
dependencies: [SettingsDependency!]!
}
"The value of a setting. Every value has a type; a setting only accepts the type its definition names."
interface SettingValue {
"Discriminator of the value type."
valueType: SettingValueType!
}
"One tier of the purchase price of a supplier item. Polymorphic: the property 'kind' selects the variant."
interface SupplierPriceTier {
"Discriminator of the tier variant."
kind: SupplierPriceTierKind!
}
"A warehouse. Polymorphic: the property 'warehouseType' selects the variant. The variants exclude each other, and every variant has exactly the properties its type can have: required, optional or not there at all."
interface Warehouse {
"The ID of the warehouse."
id: ID!
"The name of the warehouse. It is unique among the active warehouses."
name: String!
"The short name of the warehouse."
shortName: String
"A free description of the warehouse."
description: String
"Whether the warehouse is active. An inactive warehouse takes no new stock postings and no new orders."
isActive: Boolean!
"The priority of the warehouse when orders are delivered: orders are served from the warehouse with the lowest number first."
deliveryPriority: Int!
"The ID of the company the warehouse belongs to."
companyId: ID
"The digit from 0 to 9 that the warehouse puts into the shipping unit numbers (NVE) of its shipments."
nveExtensionDigit: String
"Whether the stock of the warehouse is left out of the available stock."
isLockedForAvailableStock: Boolean!
"Whether the warehouse manages storage locations that this API shows (true for a warehouse with storage location management). Every other warehouse has one storage location internally, which the API does not show; its storage location operations fail with errorCode WAREHOUSE_TYPE_DOES_NOT_SUPPORT_STORAGE_LOCATIONS."
hasStorageLocations: Boolean!
"Whether stock can be posted on the warehouse directly, by a stock posting. True only for an active warehouse of the type 'Standard'; every other warehouse takes stock through the processes of its own system."
allowsDirectStockPosting: Boolean!
"Discriminator of the warehouse type."
warehouseType: WarehouseType!
}
"A node of the settings tree: a group, a text, an input, a button or a custom part. Nodes form a tree through ParentId. How the tree is laid out is up to the frontend."
interface WarehouseSettingsNode {
"Discriminator of the node kind."
kind: WarehouseSettingsNodeKind!
"The stable ID of the node. For an input it equals the setting key, for example sales.invoice.dueDays."
id: String!
"The ID of the group the node belongs to. Absent for a top-level node."
parentId: String
"The depth in the tree. A top-level node has level 1."
level: Int!
"The position among the nodes of the same parent. Lower comes first."
sortOrder: Int!
"The text shown for the node, in the language of the caller."
label: String
"A further text, in the language of the caller."
description: String
"A link to a help page."
helpUrl: String
"Extra words the search finds the node by."
keywords: [String!]!
"The warehouse types the setting applies to. A setting that does not apply to the type of a warehouse is refused (errorCode is WAREHOUSE_SETTING_NOT_APPLICABLE)."
applicableWarehouseTypes: [WarehouseType!]!
"The Wawi permission the caller needs to see and change the node."
requiredPermission: String
"Whether the caller cannot change the setting."
isReadOnly: Boolean!
"Rules that make the node visible, enabled or required depending on other settings."
dependencies: [WarehouseSettingDependency!]!
}
"The value of a setting. Every value has a type; a setting only accepts the type its definition names."
interface WarehouseSettingValue {
"Discriminator of the value type."
valueType: WarehouseSettingValueType!
}
"A value for a parameter of a button."
input ActionArgumentInput {
"The name of the parameter."
name: String!
"The value."
value: NewSettingValueInput!
}
"Activates a category in a sales channel. By default the change applies to all subcategories and to all items of the categories; switch 'includeSubcategories' and 'includeItems' off to activate only the category itself. Idempotent: a category that is activated already stays so. The change reaches the sales channel with the next synchronisation, not at once. - Request"
input ActivateCategoryInSalesChannelCommandRequestInput {
"The ID of the category."
categoryId: ID!
"The sales channel. Tenant-local, composite identifier, not a UUID, for example 1-1-1. Malformed values are answered with 400 (errorCode is FORMAT_NOT_PARSABLE)."
salesChannelId: ID!
"Whether the images the category has at that time are activated for the sales channel as well. Omitted means false."
includeCategoryImages: Boolean
"Whether the change applies to all subcategories as well. Omitted means true."
includeSubcategories: Boolean
"Whether the items of the category, and of its subcategories if those are included, are activated in the sales channel as well. An item that the sales channel does not accept, or that is not in an activated category of it, is skipped and keeps its state. Omitted means true."
includeItems: Boolean
}
"Activates an item. Idempotent. An active item can be sold and used as a component of a kit. The workflows of the change are triggered. - Request"
input ActivateItemCommandRequestInput {
"The ID of the item."
itemId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Activates an item condition so that it can be chosen again; idempotent. GraphQL only. Errors: errorCode is ITEM_CONDITION_NOT_FOUND (404). - Request"
input ActivateItemConditionCommandRequestInput {
"The ID of the item condition."
itemConditionId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Activates an item in a sales channel. Idempotent: an item that is activated already stays so. The item has to be in a category that is active in the sales channel. Activating the parent of a variation also activates the children it needs in the sales channel where that is required. Some kinds of sales channel refuse some items (source: Confluence page 'Wann darf ein Artikel fuer welche Shops aktiviert werden?' of 2021, to be verified): a stock-per-variation item, a selection variation without a parent, a subset item, a configurable item, and for marketplace channels an item without a marketplace category. The refusal is 409 ITEM_NOT_ALLOWED_FOR_SALES_CHANNEL with all reasons in blockers[]. - Request"
input ActivateItemInSalesChannelCommandRequestInput {
"The ID of the item."
itemId: ID!
"The sales channel. Tenant-local, composite identifier, not a UUID, for example 1-1-1. Malformed values are answered with 400 (error code FORMAT_NOT_PARSABLE)."
salesChannelId: ID!
"Whether the images the item has at that time are activated for the sales channel as well. Omitted means false."
includeItemImages: Boolean
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Activates a language, so that texts can be kept in it. Activating an active language changes nothing and succeeds. - Request"
input ActivateLanguageCommandRequestInput {
"The language as BCP 47 language tag, for example de or de-AT: language subtag in lower case, region subtag in upper case. Case does not matter on input. Wawi currently holds only the two-letter language subtag."
languageTag: String!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Makes a payment method available for new documents. Activating an active one does nothing and answers 204. - Request"
input ActivatePaymentMethodCommandRequestInput {
"The ID of the payment method."
paymentMethodId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Activates a deactivated return state. Errors: RETURN_STATE_NOT_FOUND (404); RETURN_STATE_CANNOT_BE_ACTIVATED (409), blockers lists the reason: RETURN_STATE_IS_ALREADY_ACTIVE. GraphQL only. - Request"
input ActivateReturnStateCommandRequestInput {
"The ID of the return state."
returnStateId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Makes a shipping method available again. For an active one nothing changes. errorCode is SHIPPING_METHOD_NOT_FOUND. - Request"
input ActivateShippingMethodCommandRequestInput {
"The ID of the shipping method."
shippingMethodId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Sets a storage location to active. errorCode is one of: WAREHOUSE_NOT_FOUND or STORAGE_LOCATION_NOT_FOUND (the warehouse or the storage location was not found); WAREHOUSE_TYPE_DOES_NOT_SUPPORT_STORAGE_LOCATIONS (the warehouse has no storage locations: only warehouses with storage location management have them); STORAGE_LOCATION_ALREADY_ACTIVE, STORAGE_LOCATION_INVENTORY_LOCKED, STORAGE_LOCATION_IS_SYSTEM_LOCATION (the status cannot be changed). - Request"
input ActivateStorageLocationCommandRequestInput {
"The ID of the warehouse."
warehouseId: ID!
"The ID of the storage location."
storageLocationId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Activates a user. Errors: USER_NOT_FOUND, USER_TYPE_NOT_EDITABLE. - Request"
input ActivateUserCommandRequestInput {
"The ID of the user."
userId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Activates a warehouse again. errorCode is one of: WAREHOUSE_NOT_FOUND (the warehouse was not found); WAREHOUSE_CANNOT_BE_ACTIVATED (the warehouse cannot be activated The error lists the blocker codes: WAREHOUSE_NAME_NOT_UNIQUE, WAREHOUSE_MANAGED_BY_AMAZON). - Request"
input ActivateWarehouseCommandRequestInput {
"The ID of the warehouse."
warehouseId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds an image to a category by the address of the image: the file is fetched, stored in the blob storage and assigned to the category at the end of the order of every named sales channel. Uploading a file stays with the image API; this is the shortcut for an image that is reachable on the web. Only publicly reachable http and https addresses are accepted; addresses in private networks, redirects to them and responses that take too long are refused (errorCode is IMAGE_URL_NOT_REACHABLE). The first image of a sales channel becomes its main image. - Request"
input AddCategoryImageFromUrlCommandRequestInput {
"The ID of the category."
categoryId: ID!
"The absolute http or https address of the image. The address has to deliver an image of a supported format and size (errorCode is one of IMAGE_URL_NOT_REACHABLE, IMAGE_FORMAT_NOT_SUPPORTED, IMAGE_TOO_LARGE)."
url: String!
"The sales channels the image is visible in. Omitted means the Wawi sales channel only, that is the default images of the category."
salesChannelIds: [ID]
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Puts a characteristic in a group. A characteristic that is already in the group stays there; the call is repeatable. Errors: CHARACTERISTIC_NOT_FOUND (no characteristic has this ID); CHARACTERISTIC_GROUP_NOT_FOUND (no group has this ID). - Request"
input AddCharacteristicToGroupCommandRequestInput {
"The ID of the characteristic."
characteristicId: ID!
"The ID of the characteristic group."
characteristicGroupId: ID!
}
"Offers an item in a cross-selling group of an item. Idempotent. An item cannot be offered with itself. - Request"
input AddItemCrossSellingCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the cross-selling group."
groupId: ID!
"The ID of the item that is offered."
crossSellItemId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"A type of additional cost on incoming invoices, for example freight, customs or insurance. Shared by all incoming invoices."
input AdditionalCostTypeFilterInput {
and: [AdditionalCostTypeFilterInput!]
or: [AdditionalCostTypeFilterInput!]
"Name of the type, unique."
name: StringOperationFilterInput
"Whether costs of this type are on an incoming invoice, deleted invoices included. A type in use cannot be deleted, and its two flags cannot change."
isInUse: ComparableBooleanOperationFilterInput
}
"A type of additional cost on incoming invoices, for example freight, customs or insurance. Shared by all incoming invoices."
input AdditionalCostTypeSortInput {
"Name of the type, unique."
name: SortEnumType @cost(weight: "10")
}
"Adds a component to a kit. A component item is part of a kit at most once. - Request"
input AddKitComponentCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the component item. It has to be active and no kit and no variation parent (a kit does not contain a kit, and a variation parent is not sold itself). A combination of a variation parent is allowed."
componentItemId: ID!
"How many units of the component one unit of the kit consumes. Greater than zero."
quantity: Decimal!
"Free-text comment on the component."
comment: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Assigns a resource to an operation. errorCode is `OPERATION_NOT_FOUND` if the operation does not exist, `RESOURCE_NOT_FOUND` if the resource does not exist and `OPERATION_RESOURCE_ALREADY_ASSIGNED` if the resource is already assigned to the operation. - Request"
input AddOperationResourceCommandRequestInput {
"The ID of the operation."
operationId: ID!
"The ID of the resource to assign."
resourceId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Assigns a resource group to an operation. errorCode is `OPERATION_NOT_FOUND` if the operation does not exist, `RESOURCE_GROUP_NOT_FOUND` if the resource group does not exist and `OPERATION_RESOURCE_GROUP_ALREADY_ASSIGNED` if the resource group is already assigned to the operation. - Request"
input AddOperationResourceGroupCommandRequestInput {
"The ID of the operation."
operationId: ID!
"The ID of the resource group to assign."
resourceGroupId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Assigns a resource to a resource group. The resource must belong to the resource category of the resource group. Errors: RESOURCE_GROUP_NOT_FOUND (the resource group was not found); RESOURCE_NOT_FOUND (the resource was not found); RESOURCE_CATEGORY_MISMATCH (the resource belongs to another resource category than the resource group); RESOURCE_GROUP_RESOURCE_ALREADY_ASSIGNED (the resource is already assigned to the resource group). - Request"
input AddResourceToResourceGroupCommandRequestInput {
"The ID of the resource group."
resourceGroupId: ID!
"The ID of the resource to assign."
resourceId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a whole country to a tax zone. A country, and each of its states, can be in only one tax zone of the same company and departure country; states in other tax zones keep taking precedence there. Adding a country that is in the tax zone already changes nothing and succeeds. - Request"
input AddTaxZoneCountryCommandRequestInput {
"The ID of the tax zone."
taxZoneId: ID!
"The country, as ISO 3166-1 alpha-2 code."
countryCode: String!
}
"Adds one state of a country to a tax zone. Sales to the state are then taxed in this tax zone, even if the whole country is in another one. Adding a state that is in the tax zone already changes nothing and succeeds. - Request"
input AddTaxZoneStateCommandRequestInput {
"The ID of the tax zone."
taxZoneId: ID!
"The country, as ISO 3166-1 alpha-2 code."
countryCode: String!
"The state within the country, for example CA."
stateCode: String!
}
"Adds the counted quantity of an item to the inventory of a standard warehouse. The item must keep stock of its own: bills of materials, variation parents and items whose stock is kept per variation cannot be counted. For an item managed by batch number, best-before date or serial number, add one count per batch number and best-before date, or per serial number. The stock is changed only when the inventory of the warehouse is finished. Send an Idempotency-Key header to make retries safe. - Request"
input AddToInventoryCountCommandRequestInput {
"Unique identifier of the standard warehouse in which the inventory takes place."
warehouseId: ID!
"Unique identifier of the counted item."
itemId: ID!
"The counted quantity of the item. Must not be negative; a whole number unless the item is divisible."
quantity: Decimal!
"The best-before date of the counted stock. Required for items managed by best-before date, not allowed otherwise."
shelfLifeEndDate: DateTime
"The batch number of the counted stock. Required for items managed by batch number, not allowed otherwise."
batchNumber: String
"The serial number of the counted unit. Required for items managed by serial number, not allowed otherwise; the quantity must then be 1."
serialNumber: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a user to a group. Errors: USER_GROUP_NOT_FOUND, USER_NOT_FOUND, USER_NOT_INTERACTIVE. - Request"
input AddUserGroupMemberCommandRequestInput {
"The ID of the user."
userId: ID!
"The ID of the user group. Only an administrator may change the members of the administrator group. Errors: USER_PERMISSION_DENIED."
userGroupId: ID!
}
"Gives a permission to a group. Errors: USER_GROUP_NOT_FOUND, USER_GROUP_IS_ADMINISTRATOR_GROUP. - Request"
input AddUserGroupPermissionCommandRequestInput {
"The ID of the user group."
userGroupId: ID!
"The ID of the permission. Errors: PERMISSION_NOT_FOUND, PERMISSION_NOT_GRANTABLE (a grouping node)."
permissionId: ID!
}
input AdresseKeySortInput {
kAdresse: SortEnumType @cost(weight: "10")
}
"The changes to an advance shipping notice. Only the properties that are sent change; packages and line items are changed through their own commands."
input AdvanceShippingNoticeChangesInput {
"The number of the notice, unique within its purchase order. It cannot be cleared."
number: String
"When the delivery is expected."
expectedDeliveryDate: DateTime
"A note on the notice. The ERP stores it without full Unicode support: characters it cannot store are replaced, typically by '?'."
note: String
}
"The changes to a line item of an advance shipping notice. Only the properties that are sent change; the item cannot be changed."
input AdvanceShippingNoticeLineItemChangesInput {
"The advised quantity, 0 or more and below 10,000,000. Whole numbers for items that are not divisible. More than is open on the purchase order is accepted. It cannot be cleared."
quantity: Decimal
"The number of the package the line item is shipped in. It must be the number of a package of the notice. Null removes the line item from its package."
packageNumber: Int
"The batch number. Only for items tracked by batch."
batchNumber: String
"The shelf life expiration date (best-before date). Only for items tracked by it."
shelfLifeExpirationDate: DateTime
"The serial numbers, one per unit, each at most 255 characters and unique in the notice. Only for items tracked by serial number; when sent and not empty, their count must be the quantity. When sent, the list replaces all serial numbers; an empty list removes them."
serialNumbers: [String]
"A note on the line item."
note: String
}
"A new line item of an advance shipping notice."
input AdvanceShippingNoticeLineItemCreationInput {
"A temporary identifier chosen by the client to find the line item in the answer. It is not stored."
clientId: String
"The ID of the item. It must be on the purchase order of the notice."
itemId: ID!
"The advised quantity, 0 or more and below 10,000,000. Whole numbers for items that are not divisible. More than is open on the purchase order is accepted."
quantity: Decimal!
"The number of the package the line item is shipped in. It must be the number of a package of the notice. Omitted: not assigned to a package."
packageNumber: Int
"The batch number. Only for items tracked by batch."
batchNumber: String
"The shelf life expiration date (best-before date). Only for items tracked by it."
shelfLifeExpirationDate: DateTime
"The serial numbers, one per unit, each at most 255 characters and unique in the notice. Only for items tracked by serial number; when sent and not empty, their count must be the quantity. Empty or omitted: none."
serialNumbers: [String]!
"A note on the line item."
note: String
}
"An advance shipping notice in a list: the properties to find and sort notices by. Read the full notice with 'GetAdvanceShippingNotice'."
input AdvanceShippingNoticeListEntryFilterInput {
and: [AdvanceShippingNoticeListEntryFilterInput!]
or: [AdvanceShippingNoticeListEntryFilterInput!]
"The ID of the advance shipping notice."
id: ComparableLieferavisKeyOperationFilterInput @cost(weight: "15")
"The ID of the purchase order the notice belongs to. It cannot be changed."
purchaseOrderId: ComparableLieferantenBestellungKeyOperationFilterInput @cost(weight: "15")
"The ID of the supplier of the purchase order."
supplierId: ComparableLieferantKeyOperationFilterInput @cost(weight: "200")
"The number of the notice, unique within its purchase order."
number: StringOperationFilterInput @cost(weight: "50")
"When the delivery is expected."
expectedDeliveryDate: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "50")
"When the notice was created."
createdAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "50")
}
"An advance shipping notice in a list: the properties to find and sort notices by. Read the full notice with 'GetAdvanceShippingNotice'."
input AdvanceShippingNoticeListEntrySortInput {
"When the notice was created."
createdAt: SortEnumType @cost(weight: "50")
"When the delivery is expected."
expectedDeliveryDate: SortEnumType @cost(weight: "50")
"The number of the notice, unique within its purchase order."
number: SortEnumType @cost(weight: "50")
}
"The changes to a package of an advance shipping notice. Only the properties that are sent change."
input AdvanceShippingNoticePackageChangesInput {
"The number of the package within the notice, 1 or more and unique in it. Line items that refer to the old number are moved to the new one. It cannot be cleared."
packageNumber: Int
"Where the package stands. It is a plain note; nothing reacts to it. It cannot be cleared."
status: AdvanceShippingNoticePackageStatus
"How the package is shipped. It cannot be cleared."
freightType: AdvanceShippingNoticeFreightType
"The name of the carrier as free text. It must not contain control characters. Null or an empty text stores none; it is then read as null."
carrierName: String
"The tracking number of the carrier."
trackingNumber: String
"The tracking URL of the carrier."
trackingUrl: String
"When the supplier shipped the package."
shippedAt: DateTime
"When the package is expected."
expectedDeliveryDate: DateTime
"The weight in kilograms, 0 to 1,000,000."
weight: Decimal
"The width, 0 to 1,000,000. Centimetres by convention; the ERP stores no unit and does not convert."
width: Decimal
"The height, 0 to 1,000,000. Centimetres by convention; the ERP stores no unit and does not convert."
height: Decimal
"The depth, 0 to 1,000,000. Centimetres by convention; the ERP stores no unit and does not convert."
depth: Decimal
"The number of freight pieces, 0 or more."
pieceCount: Int
"The identifiers of the package. When sent, the list replaces all identifiers; an empty list removes them."
identifiers: [AdvanceShippingNoticePackageIdentifierInput]
"A note on the package. Null or an empty text stores none; it is then read as null."
note: String
}
"A new package of an advance shipping notice."
input AdvanceShippingNoticePackageCreationInput {
"A temporary identifier chosen by the client to find the package in the answer. It is not stored."
clientId: String
"The number of the package within the notice, 1 or more and unique in it. When omitted: the highest number of the notice plus 1."
packageNumber: Int
"Where the package stands. It is a plain note; nothing reacts to it. When omitted: 'Announced'."
status: AdvanceShippingNoticePackageStatus
"How the package is shipped. When omitted: 'Parcel'."
freightType: AdvanceShippingNoticeFreightType
"The name of the carrier as free text. It must not contain control characters. Null or an empty text stores none; it is then read as null."
carrierName: String
"The tracking number of the carrier."
trackingNumber: String
"The tracking URL of the carrier."
trackingUrl: String
"When the supplier shipped the package."
shippedAt: DateTime
"When the package is expected."
expectedDeliveryDate: DateTime
"The weight in kilograms, 0 to 1,000,000."
weight: Decimal
"The width, 0 to 1,000,000. Centimetres by convention; the ERP stores no unit and does not convert."
width: Decimal
"The height, 0 to 1,000,000. Centimetres by convention; the ERP stores no unit and does not convert."
height: Decimal
"The depth, 0 to 1,000,000. Centimetres by convention; the ERP stores no unit and does not convert."
depth: Decimal
"The number of freight pieces, 0 or more."
pieceCount: Int
"The identifiers of the package. Empty or omitted: none."
identifiers: [AdvanceShippingNoticePackageIdentifierInput]!
"A note on the package. Null or an empty text stores none; it is then read as null."
note: String
}
"A name and value that identifies a package."
input AdvanceShippingNoticePackageIdentifierInput {
"The name of the identifier, for example SSCC."
name: String!
"The value of the identifier."
value: String!
}
"Changes a Fulfillment by Amazon warehouse. The warehouse itself and its marketplace regions are kept by the Amazon integration."
input AmazonFbaWarehouseChangesInput {
"The new name."
name: String
"The new description."
description: String
"The new priority."
deliveryPriority: Int
"Whether the stock is left out of the available stock."
isLockedForAvailableStock: Boolean
"Whether the warehouse is locked for delivery."
isLockedForDelivery: Boolean
}
"Represents a unique key for identifying an Amazon user within the system."
input AmazonUserKeySortInput {
"Gets the unique identifier for the Amazon user."
kUser: SortEnumType @cost(weight: "10")
}
"Anonymizes a customer for data protection. Names, streets, phone numbers and email addresses of the customer and its addresses, the email addresses of its contacts, its text custom field values, its website, tax number and commercial register number are overwritten; its bank accounts and messages are deleted. The customer number, the postal code, city and country, the VAT ID, the date of birth, notes and history stay. Only a customer whose sales documents are all anonymized, or who has none, can be anonymized. This cannot be undone. An anonymized customer stays as it is. - Request"
input AnonymizeCustomerCommandRequestInput {
"The ID of the customer."
customerId: ID!
"Suppresses the automatic workflow triggers of this call (the customer event 'changed'). Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
input AnsprechpartnerKeySortInput {
kAnsprechpartner: SortEnumType @cost(weight: "10")
isExisting: SortEnumType @cost(weight: "10")
}
"Copies the discounts of this category, for all sales channels and customer groups, to all of its subcategories and replaces what they had before. Items are not changed. It cannot be undone. - Request"
input ApplyCategoryDiscountsToDescendantsCommandRequestInput {
"The ID of the category."
categoryId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Copies the hidden customer groups of this category, for all sales channels, to all of its subcategories and to all items in this category and its subcategories, including the variation children of those items. It replaces what the subcategories and the items had before, also on items that are in other categories as well. It cannot be undone. - Request"
input ApplyCategoryVisibilityToDescendantsCommandRequestInput {
"The ID of the category."
categoryId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Applies a set of changes to setting values in one transaction: all of them or none, up to 100 changes per call (more is rejected with the code TooManyChanges). A change either sets a value or resets the setting (reset=true); a missing value never resets. This is a command and creates no resource, and a deliberate exception to the rule against batch operations: a page of the settings dialog saves in one transaction because fields depend on each other. Each rejected change names its setting key in extensions.settingKey. Fails with a GraphQL error whose extensions.code is one of SettingPermissionDenied, SettingNotFound, SettingReadOnly, SettingValueInvalid, SettingValueTypeMismatch, SettingScopeNotSupported, SettingsInconsistent or TooManyChanges. Nothing is saved when one change fails. - Request"
input ApplySettingValueChangesCommandRequestInput {
"For whom the values apply. Defaults to Global."
scope: SettingsScope
"For the scopes User and Workstation: the user. Defaults to the calling user."
userId: ID
"For the scope Workstation: the name of the workstation. Defaults to the calling workstation."
workstation: String
"The changes, at least one and at most 100. Each setting key may appear once."
changes: [SettingValueChangeInput]!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Applies a list of changes to the storage locations of a warehouse in one go: every row says itself whether it creates, changes or deactivates a location, so thousands of locations can be synchronised with one call instead of thousands. Every row is checked first against the state the set produces; when a row is invalid the request fails with an error naming every faulty row by position and nothing is applied. Otherwise the set is applied asynchronously in one transaction and its state is read from the change set. A location may appear in at most one row. The rules of the single operations apply to every row. This is the one set-wise write of the warehouse, justified by the volume; single operations stay atomic. errorCode is one of: at least one row is invalid. The error lists every faulty row with its position (for example STORAGE_LOCATION_NAME_INVALID, STORAGE_LOCATION_NAME_NOT_UNIQUE, STORAGE_LOCATION_TYPE_NOT_CREATABLE, STORAGE_LOCATION_NOT_FOUND, STORAGE_LOCATION_REFERENCED_TWICE, STORAGE_LOCATION_HAS_STOCK, TOO_MANY_ROWS); WAREHOUSE_NOT_FOUND (the warehouse was not found); WAREHOUSE_TYPE_DOES_NOT_SUPPORT_STORAGE_LOCATIONS (the warehouse has no storage locations). - Request"
input ApplyStorageLocationChangesCommandRequestInput {
"The ID of the warehouse."
warehouseId: ID!
"The rows. At least one, at most 10000."
changes: [StorageLocationChangeInput]!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"The registration of an app that uses the Wawi API: its state, the Wawi user it acts as and the scopes it may use."
input AppRegistrationFilterInput {
and: [AppRegistrationFilterInput!]
or: [AppRegistrationFilterInput!]
"When the registration was opened."
createdAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "15")
"The ID of the Wawi user who opened the registration. Empty if no user is stored."
createdBy: ComparableBenutzerKeyOperationFilterInput @cost(weight: "15")
"The ID the app identifies itself with."
appId: StringOperationFilterInput @cost(weight: "50")
"Whether the app was registered through the JTL cloud."
isCloudApp: ComparableBooleanOperationFilterInput @cost(weight: "50")
"The ID of the first registration of a multi-instance app. Empty for the first registration itself."
parentId: ComparableRestApiAppRegistrationRequestKeyOperationFilterInput @cost(weight: "50")
"The state: PENDING or APPROVED. Clients must accept values they do not know."
status: StringOperationFilterInput @cost(weight: "200")
}
"The registration of an app that uses the Wawi API: its state, the Wawi user it acts as and the scopes it may use."
input AppRegistrationSortInput {
"When the registration was opened."
createdAt: SortEnumType @cost(weight: "15")
"The ID the app identifies itself with."
appId: SortEnumType @cost(weight: "50")
"When the registration was approved. Empty while it is pending."
approvedAt: SortEnumType @cost(weight: "50")
}
"Approves an incoming invoice for payment. Payments can only be recorded, changed or deleted while the invoice is approved. Approving an approved invoice changes nothing. Independent of posting. - Request"
input ApproveIncomingInvoiceCommandRequestInput {
"The ID of the incoming invoice."
incomingInvoiceId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Archives a draft, default or alternative bill of materials. If it was the default bill of materials, the production item no longer has a default bill of materials. After that the bill of materials can no longer be produced or changed. Errors: BillOfMaterialsNotFound (the bill of materials was not found); InvalidBillOfMaterialsStateTransition (the bill of materials is neither a draft, nor the default, nor an alternative bill of materials). - Request"
input ArchiveBillOfMaterialsCommandRequestInput {
"The ID of the bill of materials to archive."
billOfMaterialsId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
input ArtikelKeySortInput {
kArtikel: SortEnumType @cost(weight: "10")
}
"Represents the primary key of a product upload file entity (tArtikelUpload)."
input ArtikelUploadDateiKeyInput {
"Gets the primary key value of the product upload file."
kArtikelUpload: Int!
}
"Assigns a characteristic value to an item. Idempotent. The value has to exist and belong to the characteristic in the route (error code CHARACTERISTIC_VALUE_NOT_FOUND otherwise). - Request"
input AssignCharacteristicValueToItemCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the characteristic the value belongs to."
characteristicId: ID!
"The ID of the characteristic value."
characteristicValueId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Offers a configuration group on a configurable item. Idempotent. The position is optional; omitted appends the group. - Request"
input AssignConfigurationGroupCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the configuration group."
configurationGroupId: ID!
"Zero-based position of the group within the item."
position: Int
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Assigns a label to a customer. Idempotent. The label has to be a label for customers. - Request"
input AssignCustomerLabelCommandRequestInput {
"The ID of the customer."
customerId: ID!
"The ID of the label."
labelId: ID!
"Suppresses the automatic workflow triggers of this call (the customer event 'changed'). Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Assigns a purchase order to an incoming invoice: every purchase order line with a quantity left to invoice becomes a line item, with the quantity chosen by \"quantityBasis\" minus what all incoming invoices already contain (this one included), the confirmed price (otherwise the ordered price) and the tax rate of the line. Lines of an item become item line items; all other lines (free lines, shipping charges, surcharges, discounts) become free-text line items. The purchase order itself does not change; its invoiced quantities are derived from the line items. A purchase order that is already on another invoice can be assigned too. - Request"
input AssignIncomingInvoicePurchaseOrderCommandRequestInput {
"The ID of the incoming invoice."
incomingInvoiceId: ID!
"The purchase order. Must belong to the supplier of the invoice."
purchaseOrderId: ID!
"Which quantity becomes the quantity of the new line items. Defaults to Ordered."
quantityBasis: PurchaseOrderQuantityBasis
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Makes an item a condition item of the item. Idempotent. The condition item carries its own condition; an item cannot be its own condition item. - Request"
input AssignItemConditionItemCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the condition item."
conditionItemId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Assigns an existing download file to an item. Idempotent. - Request"
input AssignItemDownloadCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the download file."
downloadId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Assigns a label to an item. Idempotent. The label has to exist and has to be a label for items. - Request"
input AssignItemLabelCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the label."
labelId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Assigns an item to a category. Idempotent: an item that is assigned already stays so. The category has to exist. A combination of a variation parent cannot be assigned: it has the categories of its parent (error code ITEM_CATEGORIES_MANAGED_BY_VARIATION_PARENT). - Request"
input AssignItemToCategoryCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the category."
categoryId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Assigns an existing upload field to an item. Idempotent. - Request"
input AssignItemUploadCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the upload field."
uploadId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Assigns a payment transaction to a sales invoice: the money is recorded as a payment of the invoice. Without 'amount', the ERP records what is open on the document, at most what is left of the transaction (less a cash discount the payment terms allow); when nothing is open on the document, it links the one payment of the document that matches and has no transaction yet, for example a payment from the shop, or else records what is left of the transaction as an overpayment. With 'amount', it always records a new payment of that amount; the document may become overpaid. A transaction of money sent or taken back records a payout (a negative payment). Fees of the payment provider that belong to the transaction are booked as order costs. A document that becomes fully paid starts its workflows. For a split, call it once per document. Errors: PAYMENT_TRANSACTION_NOT_FOUND (the payment transaction was not found); PAYMENT_ACCOUNT_HIDDEN (the payment account is hidden; show it with 'ShowPaymentAccount' first); PAYMENT_TRANSACTION_IGNORED (the transaction is ignored; unignore it first); PAYMENT_TRANSACTION_IS_FEE (the transaction is a fee; fees are attached to the sales order of the transaction they belong to); PAYMENT_TRANSACTION_NOT_COMPLETED (the transaction is not completed yet); NO_OPEN_AMOUNT (nothing of the transaction is left to assign); AMOUNT_NOT_POSITIVE (the amount is not greater than 0); AMOUNT_EXCEEDS_OPEN_AMOUNT (the amount is more than is left of the transaction: more than 'openAmount', for money sent or taken back more than its magnitude); OPEN_AMOUNT_CHANGED (the open amount of the transaction differs from 'expectedOpenAmount'); CURRENCY_MISMATCH (the transaction and the document have different currencies); PAYMENT_TRANSACTION_ALREADY_ASSIGNED_TO_DOCUMENT (the transaction already has a payment on this document; change that payment instead); SALES_INVOICE_NOT_FOUND (the sales invoice was not found); SALES_INVOICE_IS_DRAFT (the sales invoice is a draft); SALES_INVOICE_CANCELLED (the sales invoice is cancelled); SALES_INVOICE_TYPE_NOT_SUPPORTED (the invoice is not a regular sales invoice, for example a collective or a down payment invoice). - Request"
input AssignPaymentTransactionToSalesInvoiceCommandRequestInput {
"The ID of the payment transaction."
paymentTransactionId: ID!
"The ID of the sales invoice."
salesInvoiceId: ID!
"The amount to assign, greater than 0, with at most two decimals, in the currency of the transaction. For a transaction of money sent or taken back it is the amount paid back, and it is compared with the magnitude of 'openAmount' (AMOUNT_EXCEEDS_OPEN_AMOUNT). Omitted means the default described above."
amount: Decimal
"The open amount the caller expects the transaction to have, signed as 'openAmount' returns it (negative for money sent or taken back). When given and the open amount differs, nothing is assigned; this protects against assigning the same money twice."
expectedOpenAmount: Decimal
"Whether to suppress the automatic workflows this call would start: the events of the payment transaction and, when a sales order or a sales invoice becomes fully paid, its workflows. Events for other systems are still published. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Assigns a payment transaction to a sales order: the money is recorded as a payment of the order, on the order itself and not spread over its invoices. Without 'amount', the ERP records what is open on the document, at most what is left of the transaction (less a cash discount the payment terms allow); when nothing is open on the document, it links the one payment of the document that matches and has no transaction yet, for example a payment from the shop, or else records what is left of the transaction as an overpayment. With 'amount', it always records a new payment of that amount; the document may become overpaid. A transaction of money sent or taken back records a payout (a negative payment). Fees of the payment provider that belong to the transaction are booked as order costs. A document that becomes fully paid starts its workflows. For a split, call it once per document. Errors: PAYMENT_TRANSACTION_NOT_FOUND (the payment transaction was not found); PAYMENT_ACCOUNT_HIDDEN (the payment account is hidden; show it with 'ShowPaymentAccount' first); PAYMENT_TRANSACTION_IGNORED (the transaction is ignored; unignore it first); PAYMENT_TRANSACTION_IS_FEE (the transaction is a fee; fees are attached to the sales order of the transaction they belong to); PAYMENT_TRANSACTION_NOT_COMPLETED (the transaction is not completed yet); NO_OPEN_AMOUNT (nothing of the transaction is left to assign); AMOUNT_NOT_POSITIVE (the amount is not greater than 0); AMOUNT_EXCEEDS_OPEN_AMOUNT (the amount is more than is left of the transaction: more than 'openAmount', for money sent or taken back more than its magnitude); OPEN_AMOUNT_CHANGED (the open amount of the transaction differs from 'expectedOpenAmount'); CURRENCY_MISMATCH (the transaction and the document have different currencies); PAYMENT_TRANSACTION_ALREADY_ASSIGNED_TO_DOCUMENT (the transaction already has a payment on this document; change that payment instead); SALES_ORDER_NOT_FOUND (the sales order was not found); SALES_ORDER_HAS_INVOICE (the sales order has a finalised invoice; assign the transaction to the invoice). - Request"
input AssignPaymentTransactionToSalesOrderCommandRequestInput {
"The ID of the payment transaction."
paymentTransactionId: ID!
"The ID of the sales order."
salesOrderId: ID!
"The amount to assign, greater than 0, with at most two decimals, in the currency of the transaction. For a transaction of money sent or taken back it is the amount paid back, and it is compared with the magnitude of 'openAmount' (AMOUNT_EXCEEDS_OPEN_AMOUNT). Omitted means the default described above."
amount: Decimal
"The open amount the caller expects the transaction to have, signed as 'openAmount' returns it (negative for money sent or taken back). When given and the open amount differs, nothing is assigned; this protects against assigning the same money twice."
expectedOpenAmount: Decimal
"Whether to suppress the automatic workflows this call would start: the events of the payment transaction and, when a sales order or a sales invoice becomes fully paid, its workflows. Events for other systems are still published. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Lets the ERP pick the supplier of an entry and sets it: the item's default supplier, the fastest, or the cheapest for the quantity of this entry, among the active suppliers that have the item and are not excluded from the purchase list. The entry does not need a supplier before. The answer is the chosen supplier. The purchase list has no workflow events. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: PURCHASE_LIST_ENTRY_NOT_FOUND (the entry was not found); PURCHASE_LIST_NO_ELIGIBLE_SUPPLIER (no supplier can be picked: none has the item, or none is active and allowed, or the item has no default supplier); PURCHASE_LIST_ENTRY_ALREADY_EXISTS (another entry has this item with the picked supplier and the warehouse of this entry). - Request"
input AssignPurchaseListEntrySupplierCommandRequestInput {
"The ID of the purchase list entry."
entryId: ID!
"How to pick the supplier."
strategy: PurchaseListSupplierStrategy!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Makes an existing item a combination of the variation parent. The item can be of any kind except a variation parent: a bill of materials can be a combination, a variation parent cannot (variation parents do not nest). It must not be a combination of another parent already. From then on the item has the categories of the parent, as every combination has: the categories it had before are replaced by those of the parent, and its own requirement of a category lapses. - Request"
input AssignVariationCombinationCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the item that is the combination."
combinationItemId: ID!
"The chosen value for every axis, one per axis. The set has to be new."
values: [VariationValueAssignmentInput]!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"An attribute in a list."
input AttributeListEntryFilterInput {
and: [AttributeListEntryFilterInput!]
or: [AttributeListEntryFilterInput!]
"The ID of the attribute."
id: ComparableAttributKeyOperationFilterInput @cost(weight: "15")
"The kind of record the attribute can be assigned to. Known values: ITEM, CATEGORY. The set can grow; a client must tolerate values it does not know."
entityType: StringOperationFilterInput @cost(weight: "50")
"The kind of the attribute."
kind: ComparableAttributeKindOperationFilterInput @cost(weight: "50")
"The data type of the attribute value. Known values: INTEGER, DECIMAL, TEXT, CHECKBOX, VALUE_LIST, URL, EMAIL, PHONE, COUNTRY_ISO, PRICE, DATE, SHORT_TEXT. The set can grow; a client must tolerate values it does not know."
dataType: StringOperationFilterInput @cost(weight: "50")
"The technical identifier of the attribute."
code: StringOperationFilterInput @cost(weight: "50")
"The name of the group the attribute is displayed under."
groupName: StringOperationFilterInput @cost(weight: "50")
"Indicates an attribute supplied by the system."
isSystem: ComparableBooleanOperationFilterInput @cost(weight: "50")
"The name of the attribute. For multilingual attributes the name in the default language."
name: StringOperationFilterInput @cost(weight: "200")
}
"An attribute in a list."
input AttributeListEntrySortInput {
"The ID of the attribute."
id: AttributKeySortInput @cost(weight: "15")
"The kind of record the attribute can be assigned to. Known values: ITEM, CATEGORY. The set can grow; a client must tolerate values it does not know."
entityType: SortEnumType @cost(weight: "50")
"The technical identifier of the attribute."
code: SortEnumType @cost(weight: "50")
"The name of the group the attribute is displayed under."
groupName: SortEnumType @cost(weight: "50")
"The position of the attribute within its group."
sortOrder: SortEnumType @cost(weight: "50")
"The name of the attribute. For multilingual attributes the name in the default language."
name: SortEnumType @cost(weight: "200")
}
"The name of a multilingual attribute in one language."
input AttributeNameInput {
"The language as BCP 47 tag, for example 'de' or 'de-AT'. Case does not matter on input; the output uses the canonical form (language lower case, region upper case)."
languageTag: String!
"The name in this language. It must not contain the character '#'."
name: String!
}
"An online shop the attribute is transferred to."
input AttributeSalesChannelInput {
"The ID of the online shop. Only online shops are allowed, no marketplace channels."
salesChannelId: ID!
}
"The text of an allowed value of a multilingual attribute in one language."
input AttributeValueTextInput {
"The language as BCP 47 tag, for example 'de' or 'de-AT'. Case does not matter on input; the output uses the canonical form (language lower case, region upper case)."
languageTag: String!
"The text in this language. It must not be empty and must not contain the character '|'."
text: String!
}
input AttributKeySortInput {
kAttribut: SortEnumType @cost(weight: "10")
}
input AuftragStornogrundKeySortInput {
kAuftragStornogrund: SortEnumType @cost(weight: "10")
}
"Runs the automatic assignment for one payment transaction now, whatever the setting for automatic assignment says. It finds the document by the transaction ID of an existing payment, by the payment reference, the amount, the customer number and the name, and can assign to sales orders, sales invoices and incoming invoices, and confirm refunds. When several documents match about equally well, nothing is assigned. A payment of an incoming invoice it records cannot be removed with 'UnassignPaymentTransaction'. A document that becomes fully paid starts its workflows. Errors: PAYMENT_TRANSACTION_NOT_FOUND (the payment transaction was not found); PAYMENT_ACCOUNT_HIDDEN (the payment account is hidden; show it with 'ShowPaymentAccount' first); PAYMENT_TRANSACTION_IGNORED (the transaction is ignored; unignore it first); PAYMENT_TRANSACTION_IS_FEE (the transaction is a fee; fees are attached to the sales order of the transaction they belong to); PAYMENT_TRANSACTION_NOT_COMPLETED (the transaction is not completed yet); NO_OPEN_AMOUNT (nothing of the transaction is left to assign). - Request"
input AutoAssignPaymentTransactionCommandRequestInput {
"The ID of the payment transaction."
paymentTransactionId: ID!
"Whether to suppress the automatic workflows this call would start: the events of the payment transaction and, when a sales order or a sales invoice becomes fully paid, its workflows. Events for other systems are still published. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"The identifiers of an item that is not traded and so has only its item number."
input BasicItemIdentifiersInput {
"The item number (SKU), unique among all items. Every item has one."
sku: String!
}
input BenutzerKeySortInput {
kBenutzer: SortEnumType @cost(weight: "10")
}
"Der Schlüssel eines Benutzerrechts."
input BerechtigungKeyInput {
"Der eindeutige Bezeichner des Benutzerrechts."
benutzerRecht: Int!
}
"Der Schlüssel eines Benutzerrechts."
input BerechtigungKeySortInput {
"Der eindeutige Bezeichner des Benutzerrechts."
benutzerRecht: SortEnumType @cost(weight: "10")
}
input BillOfMaterialKeySortInput {
kBillOfMaterial: SortEnumType @cost(weight: "10")
}
"A component of a bill of materials that belongs to a parent component. Polymorphic: \"childComponentType\" selects the variant."
input BillOfMaterialsChildComponentFilterInput {
and: [BillOfMaterialsChildComponentFilterInput!]
or: [BillOfMaterialsChildComponentFilterInput!]
"The type of this child component."
childComponentType: ComparableBillOfMaterialsChildComponentTypeOperationFilterInput
}
"A component of a bill of materials that belongs to a parent component. Polymorphic: \"childComponentType\" selects the variant."
input BillOfMaterialsChildComponentSortInput {
"The position of this component among its siblings: operations are ordered within the bill of materials, items and configuration groups share one order within their parent component. Changed only by moving the component."
sortIndex: SortEnumType @cost(weight: "10")
}
"Creates a configuration group of a bill of materials."
input BillOfMaterialsConfigurationGroupCreationInput {
"The ID of the configuration group underlying the bill of materials configuration group."
configurationGroupId: ID!
}
"A bill of materials that is created together with a production item. The new bill of materials is a draft."
input BillOfMaterialsCreationInput {
"The name of the bill of materials. Must not consist of white space only."
name: String!
"The description of the bill of materials. When omitted or when it consists of white space only, the bill of materials has no description."
description: String
"Requirements for the production input of all components of this bill of materials regarding the shelf life end dates of the stock accounts to be debited. This requirement can be overridden for individual items. When omitted, None is used. Must not be set to a value other than None if no item of the bill of materials has stock keeping with shelf life end date configured."
componentPostingsShelfLifeEndDateRequirements: OverallComponentPostingsInventoryAccountingDataRequirements
"Requirements for the production input of all components of this bill of materials regarding the batch numbers of the stock accounts to be debited. This requirement can be overridden for individual items. When omitted, None is used. Must not be set to a value other than None if no item of the bill of materials has stock keeping with batch number configured."
componentPostingsBatchNumberRequirements: OverallComponentPostingsInventoryAccountingDataRequirements
"Indicates how the shelf life end date of the produced item is calculated after completing a lot. When omitted, no shelf life end date is calculated."
shelfLifeEndDateGenerationMode: ShelfLifeEndDateGenerationMode
"A time span that is added when calculating the shelf life end date of the produced item after completing a lot. Required when ShelfLifeEndDateGenerationMode is ProductionDate; optional when it is Earliest or Latest; ignored when it is omitted."
additionalShelfLifeEndDateTime: TimeSpan
"How far the actually used quantity of the items may exceed their planned quantity. This configuration can be overridden for individual items. When omitted, it must not exceed it."
upwardQuantityDeviation: QuantityDeviationConfigurationInput
"How far the actually used quantity of the items may fall below their planned quantity. This configuration can be overridden for individual items. When omitted, it must not fall below it."
downwardQuantityDeviation: QuantityDeviationConfigurationInput
"The parent components (operations) of the new bill of materials, each optionally with its child components. Their order in the list becomes their order within the bill of materials. At least one parent component is required, and across all parent components at least one item must be present."
children: [CreateBillOfMaterialsParentComponentInput]!
}
"A bill of materials for a production item. It defines which operations must be performed and which components are required to produce the production item."
input BillOfMaterialsFilterInput {
and: [BillOfMaterialsFilterInput!]
or: [BillOfMaterialsFilterInput!]
"The state of the bill of materials."
state: ComparableBillOfMaterialsStateOperationFilterInput @cost(weight: "50")
"The version of the bill of materials. It is assigned consecutively per production item."
version: ComparableInt32OperationFilterInput @cost(weight: "50")
"The name of the bill of materials."
name: StringOperationFilterInput @cost(weight: "50")
"The timestamp when the bill of materials was created."
createdAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "50")
"The timestamp when the bill of materials was last changed, or null if it has not been changed yet."
changedAt: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "50")
"The ID of the user who last changed the bill of materials, or null if it has not been changed yet."
changedBy: ComparableBenutzerKeyOperationFilterInput @cost(weight: "50")
"The timestamp when the bill of materials was activated, or null if it has not been activated yet."
activatedAt: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "50")
"The last calculated quantity of the production item that can be produced with this bill of materials from the available stock of its components."
producibleStock: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The timestamp when the producible stock was last calculated, or null if it has not been calculated yet."
producibleStockCalculatedAt: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "50")
"Specifies requirements for the production input of all components of this bill of materials regarding the shelf life end dates of the stock accounts to be debited. This specification can be overridden for individual items of this bill of materials."
componentPostingsShelfLifeEndDateRequirements: ComparableOverallComponentPostingsInventoryAccountingDataRequirementsOperationFilterInput @cost(weight: "50")
"Specifies requirements for the production input of all components of this bill of materials regarding the batch numbers of the stock accounts to be debited. This specification can be overridden for individual items of this bill of materials."
componentPostingsBatchNumberRequirements: ComparableOverallComponentPostingsInventoryAccountingDataRequirementsOperationFilterInput @cost(weight: "50")
"Indicates how the shelf life end date of the produced item is calculated after completing a lot, or null if no shelf life end date is calculated."
shelfLifeEndDateGenerationMode: ComparableNullableOfShelfLifeEndDateGenerationModeOperationFilterInput @cost(weight: "50")
}
"Changes an item of a bill of materials. Only the properties that are sent change. The underlying item and the parent component cannot be changed here; the parent component and the position are changed by moving the item."
input BillOfMaterialsItemChangesInput {
"The new quantity of this item required to produce the production item. Must be greater than zero."
quantity: Decimal
"The ID of the new measurement unit in which the quantity is stated. Sending null states the quantity in the sales unit of the item."
measurementUnitId: ID
"The ID of the new operation step the item is assigned to. Sending null removes the assignment."
operationStepId: ID
"The new requirements for the production input of this bill of materials item regarding the shelf life end dates of the stock accounts to be debited. Must not be set to a value other than Inherited if the item has no stock keeping with shelf life end date configured."
componentPostingsShelfLifeEndDateRequirements: ComponentPostingsInventoryAccountingDataRequirements
"The new requirements for the production input of this bill of materials item regarding the batch numbers of the stock accounts to be debited. Must not be set to a value other than Inherited if the item has no stock keeping with batch number configured."
componentPostingsBatchNumberRequirements: ComponentPostingsInventoryAccountingDataRequirements
"How far the actually used quantity may exceed the planned quantity, replacing the current configuration as a whole. Sending null means it must not exceed it."
upwardQuantityDeviation: QuantityDeviationConfigurationInput
"How far the actually used quantity may fall below the planned quantity, replacing the current configuration as a whole. Sending null means it must not fall below it."
downwardQuantityDeviation: QuantityDeviationConfigurationInput
}
"Creates an item of a bill of materials."
input BillOfMaterialsItemCreationInput {
"The ID of the item underlying the bill of materials item."
itemId: ID!
"The quantity of this item required to produce the production item. Must be greater than zero."
quantity: Decimal!
"The ID of the measurement unit in which the quantity is stated, or null if it is stated in the sales unit of the item."
measurementUnitId: ID
"The ID of the operation step the item is assigned to, or null if it is not assigned to an operation step."
operationStepId: ID
"Specifies requirements for the production input of this bill of materials item regarding the shelf life end dates of the stock accounts to be debited. When omitted, the requirements are inherited from the bill of materials. Must not be set to a value other than Inherited if the item has no stock keeping with shelf life end date configured."
componentPostingsShelfLifeEndDateRequirements: ComponentPostingsInventoryAccountingDataRequirements
"Specifies requirements for the production input of this bill of materials item regarding the batch numbers of the stock accounts to be debited. When omitted, the requirements are inherited from the bill of materials. Must not be set to a value other than Inherited if the item has no stock keeping with batch number configured."
componentPostingsBatchNumberRequirements: ComponentPostingsInventoryAccountingDataRequirements
"How far the actually used quantity may exceed the planned quantity. When omitted, it must not exceed it."
upwardQuantityDeviation: QuantityDeviationConfigurationInput
"How far the actually used quantity may fall below the planned quantity. When omitted, it must not fall below it."
downwardQuantityDeviation: QuantityDeviationConfigurationInput
}
"Creates an operation of a bill of materials. It is appended after the last parent component of the bill of materials."
input BillOfMaterialsOperationCreationInput {
"The child components (items and configuration groups) created together with the parent component. Their order in the list becomes their order within the parent component. When omitted, the parent component is created without child components."
children: [CreateBillOfMaterialsChildComponentInput]!
"The ID of the operation underlying the bill of materials operation."
operationId: ID!
}
"A component of a bill of materials that contains child components. Polymorphic: \"parentComponentType\" selects the variant."
input BillOfMaterialsParentComponentFilterInput {
and: [BillOfMaterialsParentComponentFilterInput!]
or: [BillOfMaterialsParentComponentFilterInput!]
"The type of this parent component."
parentComponentType: ComparableBillOfMaterialsParentComponentTypeOperationFilterInput
}
"A component of a bill of materials that contains child components. Polymorphic: \"parentComponentType\" selects the variant."
input BillOfMaterialsParentComponentSortInput {
"The position of this component among its siblings: operations are ordered within the bill of materials, items and configuration groups share one order within their parent component. Changed only by moving the component."
sortIndex: SortEnumType @cost(weight: "10")
}
"A bill of materials for a production item. It defines which operations must be performed and which components are required to produce the production item."
input BillOfMaterialsSortInput {
"The state of the bill of materials."
state: SortEnumType @cost(weight: "50")
"The version of the bill of materials. It is assigned consecutively per production item."
version: SortEnumType @cost(weight: "50")
"The name of the bill of materials."
name: SortEnumType @cost(weight: "50")
"The timestamp when the bill of materials was created."
createdAt: SortEnumType @cost(weight: "50")
"The timestamp when the bill of materials was last changed, or null if it has not been changed yet."
changedAt: SortEnumType @cost(weight: "50")
"The ID of the user who last changed the bill of materials, or null if it has not been changed yet."
changedBy: BenutzerKeySortInput @cost(weight: "50")
"The timestamp when the bill of materials was activated, or null if it has not been activated yet."
activatedAt: SortEnumType @cost(weight: "50")
"The timestamp when the producible stock was last calculated, or null if it has not been calculated yet."
producibleStockCalculatedAt: SortEnumType @cost(weight: "50")
}
"Blocks a customer. Sales orders of a blocked customer are not picked and not delivered; new sales documents are still possible. A blocked customer stays blocked. - Request"
input BlockCustomerCommandRequestInput {
"The ID of the customer."
customerId: ID!
"Suppresses the automatic workflow triggers of this call (the customer event 'changed'). Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"A yes or no value."
input BooleanOptionValueInput {
"True or false."
value: Boolean!
}
"A yes or no value."
input BooleanWarehouseSettingValueInput {
"True or false."
value: Boolean!
}
input BuchungsArtKeySortInput {
kBuchungsArt: SortEnumType @cost(weight: "10")
}
"Cancels what is still undelivered of a sent purchase order: the ordered quantity of every line item, allowances and charges included, is reduced to the delivered quantity, a confirmed quantity above it as well, and the order is completed. The purchase list is not touched. Raises no workflow event. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: PURCHASE_ORDER_NOT_FOUND (the order was not found); PURCHASE_ORDER_NOT_SENT (the order was not sent; change or delete it instead); PURCHASE_ORDER_COMPLETED (the order is completed already). - Request"
input CancelPurchaseOrderCommandRequestInput {
"The ID of the purchase order."
purchaseOrderId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Cancels what is still undelivered of a line item, in every status: its ordered quantity becomes the delivered quantity (a line delivered beyond its order is raised to the delivered quantity), and a confirmed quantity above it is reduced as well. An order that is sent or partially delivered gets its status computed anew from the ordered and delivered quantities; a completed order stays completed. Raises the workflow event 'line-item-reduced'. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: PURCHASE_ORDER_NOT_FOUND or PURCHASE_ORDER_LINE_ITEM_NOT_FOUND (the order or the line was not found). - Request"
input CancelPurchaseOrderLineItemCommandRequestInput {
"The ID of the purchase order."
purchaseOrderId: ID!
"The ID of the line item."
lineItemId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Cancels a sales credit note with a cancellation document. Its payouts belong to no document then and leave QueryPayments; refunds lose the link. - Request"
input CancelSalesCreditNoteCommandRequestInput {
"The ID of the sales credit note. A sales invoice correction ID fails as not found."
salesCreditNoteId: ID!
"The reason, see QuerySalesInvoiceCorrectionCancellationReasons. 0 or an unknown ID fails."
cancellationReasonId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"A comment, up to 100 characters. Needed when the reason asks for one."
cancellationComment: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Cancels a finalized invoice. A cancellation document is created with its own number and a copy of the line items; the payments of the invoice are moved to the sales order, and the quantities the invoice carried are free again. External invoices can be cancelled. The response carries the ID of the cancellation document. A refusal carries 'blockers' with all reasons, each with a code and a message. Errors: errorCode is SALES_INVOICE_NOT_FOUND (no sales invoice with this ID); errorCode is SALES_INVOICE_ALREADY_CANCELLED (the invoice is cancelled already); errorCode is SALES_INVOICE_IS_DRAFT (a draft cannot be cancelled; delete it); errorCode is SALES_INVOICE_HAS_UNCANCELLED_CORRECTION (a correction of the invoice exists that is not cancelled); errorCode is SALES_INVOICE_HAS_NO_SALES_ORDER (the invoice is not external and has no sales order); errorCode is CANCELLATION_REASON_NOT_FOUND (no cancellation reason with this ID); errorCode is CANCELLATION_COMMENT_REQUIRED (the reason requires a comment); errorCode is CANCELLATION_COMMENT_TOO_LONG (the comment is longer than 100 characters); errorCode is SALES_INVOICE_CANCELLATION_FAILED (the cancellation document could not be created). - Request"
input CancelSalesInvoiceCommandRequestInput {
"The ID of the sales invoice."
salesInvoiceId: ID!
"The reason for cancelling the invoice, from the cancellation reasons of sales invoices."
cancellationReasonId: ID!
"A comment on the cancellation; required for some reasons, at most 100 characters."
cancellationComment: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Cancels a sales invoice correction. Errors: errorCode is SALES_INVOICE_CORRECTION_NOT_FOUND, SALES_INVOICE_CORRECTION_CANNOT_BE_CANCELLED (blockers SALES_INVOICE_CORRECTION_ALREADY_CANCELLED, SALES_INVOICE_CORRECTION_IS_DRAFT), CANCELLATION_REASON_NOT_FOUND, CANCELLATION_COMMENT_TOO_LONG or CANCELLATION_COMMENT_REQUIRED. - Request"
input CancelSalesInvoiceCorrectionCommandRequestInput {
"The ID of the sales invoice correction. The ID of a credit note without sales invoice is not found."
salesInvoiceCorrectionId: ID!
"The reason, see QuerySalesInvoiceCorrectionCancellationReasons. 0 or an unknown ID fails."
cancellationReasonId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"A comment, up to 100 characters; some reasons require one."
cancellationComment: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Cancels the whole sales order with a reason. Fails with a GraphQL error whose extensions.code is SalesOrderCannotBeCancelled. - Request"
input CancelSalesOrderCommandRequestInput {
"The ID of the sales order. An unknown ID fails with SalesOrderNotFound."
salesOrderId: ID!
"The reason. Fails with CancellationReasonNotFound, or CancellationReasonNotValidForAmazon for an Amazon order."
cancellationReasonId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"A comment, up to 100 characters (CancellationCommentTooLong). Needed when the reason asks for one (CancellationCommentRequired)."
cancellationComment: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Cancels a sales quotation. Fails with a GraphQL error whose extensions.code is SalesQuotationCannotBeCancelled; extensions.blockers says why. - Request"
input CancelSalesQuotationCommandRequestInput {
"The ID of the quotation. Fails with a GraphQL error whose extensions.code is SalesQuotationNotFound."
salesQuotationId: ID!
"The ID of the reason, from QuerySalesOrderCancellationReasons. Fails with CancellationReasonNotFound."
cancellationReasonId: ID!
"A comment, up to 100 characters (CancellationCommentTooLong). Needed when the reason asks for one (CancellationCommentRequired)."
cancellationComment: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Cancels an open stock transfer that has not been shipped. The stock transfer is removed and can no longer be retrieved. - Request"
input CancelStockTransferCommandRequestInput {
"The ID of the stock transfer to cancel."
stockTransferId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"A yes or no."
input CategoryBooleanFieldValueInput {
"Whether it is yes."
flag: Boolean!
}
"A custom field (German 'Eigenes Feld') of a category with its value. A custom field has neither a sales channel nor a language."
input CategoryCustomFieldFilterInput {
and: [CategoryCustomFieldFilterInput!]
or: [CategoryCustomFieldFilterInput!]
"The ID of the custom field."
customFieldId: ComparableEigenesFeldKeyOperationFilterInput
}
"A custom field (German 'Eigenes Feld') of a category with its value. A custom field has neither a sales channel nor a language."
input CategoryCustomFieldSortInput {
"The ID of the custom field."
customFieldId: EigenesFeldKeySortInput @cost(weight: "10")
}
"A date with time."
input CategoryDateFieldValueInput {
"The date. Only the calendar date counts, the time of day is ignored."
date: DateTime!
}
"A decimal number."
input CategoryDecimalFieldValueInput {
"The number."
number: Decimal!
}
"The texts of a category in one language, for the default or for one sales channel."
input CategoryDescriptionFilterInput {
and: [CategoryDescriptionFilterInput!]
or: [CategoryDescriptionFilterInput!]
"The language of the texts as BCP 47 tag, for example 'de' or 'de-AT'; lower case."
languageTag: StringOperationFilterInput
}
"The texts of a category in one language, for the default or for one sales channel."
input CategoryDescriptionSortInput {
"The language of the texts as BCP 47 tag, for example 'de' or 'de-AT'; lower case."
languageTag: SortEnumType @cost(weight: "10")
}
"The discount a customer group gets on the items of a category in a sales channel. A customer group without a discount is not listed."
input CategoryDiscountFilterInput {
and: [CategoryDiscountFilterInput!]
or: [CategoryDiscountFilterInput!]
"The ID of the customer group."
customerGroupId: ComparableKundenGruppeKeyOperationFilterInput
}
"The discount a customer group gets on the items of a category in a sales channel. A customer group without a discount is not listed."
input CategoryDiscountSortInput {
"The ID of the customer group."
customerGroupId: KundenGruppeKeySortInput @cost(weight: "10")
"The discount in percent, for example 7.5 for 7.5 percent."
percentage: SortEnumType @cost(weight: "10")
}
"The value of a custom field of a category. Polymorphic: the property 'type' selects the variant, which has to match the field type of the definition."
input CategoryFieldValueInput @oneOf {
"A text value."
categoryTextFieldValue: CategoryTextFieldValueInput
"A whole number."
categoryIntegerFieldValue: CategoryIntegerFieldValueInput
"A decimal number."
categoryDecimalFieldValue: CategoryDecimalFieldValueInput
"A yes or no."
categoryBooleanFieldValue: CategoryBooleanFieldValueInput
"A date with time."
categoryDateFieldValue: CategoryDateFieldValueInput
}
"A customer group for which a category is hidden in a sales channel. A customer group that is not listed sees the category."
input CategoryHiddenCustomerGroupFilterInput {
and: [CategoryHiddenCustomerGroupFilterInput!]
or: [CategoryHiddenCustomerGroupFilterInput!]
"The ID of the customer group."
customerGroupId: ComparableKundenGruppeKeyOperationFilterInput
}
"A customer group for which a category is hidden in a sales channel. A customer group that is not listed sees the category."
input CategoryHiddenCustomerGroupSortInput {
"The ID of the customer group."
customerGroupId: KundenGruppeKeySortInput @cost(weight: "10")
}
"An image of a category. The image data is not part of the category: the category carries URLs into the blob storage. Uploading and assigning an image stays with the blob endpoints."
input CategoryImageFilterInput {
and: [CategoryImageFilterInput!]
or: [CategoryImageFilterInput!]
"Whether it is the main image of its scope. Read-only: it is the image with sort number 1."
isMainImage: ComparableBooleanOperationFilterInput
"The ID of the image in the blob storage."
blobIdentifier: ComparableGuidOperationFilterInput
}
"An image of a category. The image data is not part of the category: the category carries URLs into the blob storage. Uploading and assigning an image stays with the blob endpoints."
input CategoryImageSortInput {
"Position of the image among the images of its scope, starting at 1."
sortNumber: SortEnumType @cost(weight: "10")
}
"A whole number."
input CategoryIntegerFieldValueInput {
"The number."
number: Int!
}
"One item in a category: the properties needed to find and show it. The full item is read with the item query."
input CategoryItemEntryFilterInput {
and: [CategoryItemEntryFilterInput!]
or: [CategoryItemEntryFilterInput!]
"The ID of the item."
id: ComparableArtikelKeyOperationFilterInput
"The article number (SKU)."
sku: StringOperationFilterInput
"Name of the item in the default language."
name: StringOperationFilterInput
"Whether the item is active."
isActive: ComparableBooleanOperationFilterInput
"The GTIN (EAN) of the item. Absent when it has none."
gtin: StringOperationFilterInput
}
"One item in a category: the properties needed to find and show it. The full item is read with the item query."
input CategoryItemEntrySortInput {
"The ID of the item."
id: ArtikelKeySortInput @cost(weight: "10")
"The article number (SKU)."
sku: SortEnumType @cost(weight: "10")
"Name of the item in the default language."
name: SortEnumType @cost(weight: "10")
}
"One row of a category list: the properties needed to find a category and to walk the tree. The same row is used for the flat list, the top-level categories, the children of a category and the ancestors of a category. A category with a parent is identified by the parent; the top level is not a category and has no ID."
input CategoryListEntryFilterInput {
and: [CategoryListEntryFilterInput!]
or: [CategoryListEntryFilterInput!]
"The ID of the category."
id: ComparableKategorieKeyOperationFilterInput
"The ID of the parent category. Absent for a category on the top level."
parentId: ComparableKategorieKeyOperationFilterInput
"Whether the category is on the top level, that is, has no parent. It is the same as an absent 'parentId' and exists because an absent value cannot be filtered on."
isTopLevel: ComparableBooleanOperationFilterInput
"Name of the category in the default language. Absent when the category has no name in the default language."
name: StringOperationFilterInput
"The position among the siblings, 0 to 65000. Changed with 'UpdateCategory', 'CreateCategory' or 'SetCategoryChildOrder'."
sortNumber: ComparableInt32OperationFilterInput
"Number of direct subcategories. A value greater than zero means the category can be expanded."
childCount: ComparableInt32OperationFilterInput
"Number of items assigned directly to the category, not counting subcategories."
itemCount: ComparableInt32OperationFilterInput
}
"One row of a category list: the properties needed to find a category and to walk the tree. The same row is used for the flat list, the top-level categories, the children of a category and the ancestors of a category. A category with a parent is identified by the parent; the top level is not a category and has no ID."
input CategoryListEntrySortInput {
"The ID of the category."
id: KategorieKeySortInput @cost(weight: "10")
"Name of the category in the default language. Absent when the category has no name in the default language."
name: SortEnumType @cost(weight: "10")
"The position among the siblings, 0 to 65000. Changed with 'UpdateCategory', 'CreateCategory' or 'SetCategoryChildOrder'."
sortNumber: SortEnumType @cost(weight: "10")
"Number of direct subcategories. A value greater than zero means the category can be expanded."
childCount: SortEnumType @cost(weight: "10")
"Number of items assigned directly to the category, not counting subcategories."
itemCount: SortEnumType @cost(weight: "10")
}
"One sales channel in the whole selection of 'SetCategorySalesChannels' and 'CreateCategory'."
input CategorySalesChannelActivationInput {
"The sales channel the category is activated in. Tenant-local, composite identifier, not a UUID."
salesChannelId: ID!
"Whether the images the category has at that time are activated for the sales channel as well. Omitted means false. The activation of images stays when the sales channel is deactivated later, so that it is restored on a new activation. Has no effect for a sales channel that is activated already."
includeCategoryImages: Boolean
}
"A sales channel of a category: whether the category is activated in it, whether it can be, and what the channel offers for categories. Activation and deactivation apply to the category and all of its subcategories."
input CategorySalesChannelFilterInput {
and: [CategorySalesChannelFilterInput!]
or: [CategorySalesChannelFilterInput!]
"Whether the category is activated in the sales channel."
isActivated: ComparableBooleanOperationFilterInput
"Whether the category can be activated in the sales channel now: the channel supports it and the category is the root category of the channel or lies below it. A channel without a root category accepts every category."
canBeActivated: ComparableBooleanOperationFilterInput
"Whether categories can be activated in this kind of sales channel at all. Shops, connectors and point of sale can; the Wawi channel, marketplaces and SCX cannot."
supportsActivation: ComparableBooleanOperationFilterInput
"Whether the texts of a category can be maintained for this sales channel."
supportsDescriptions: ComparableBooleanOperationFilterInput
}
"A sales channel of a category: whether the category is activated in it, whether it can be, and what the channel offers for categories. Activation and deactivation apply to the category and all of its subcategories."
input CategorySalesChannelSortInput {
"Name of the sales channel."
name: SortEnumType @cost(weight: "10")
}
"A text value."
input CategoryTextFieldValueInput {
"The text."
text: String!
}
"Changes the hardware assigned to a machine. Only possible while the machine is not used in an active production process. Errors: the request is invalid; RESOURCE_NOT_FOUND (the resource was not found); RESOURCE_CATEGORY_MISMATCH (the resource is not a machine); RESOURCE_IN_USE (the machine is used in an active production process; the blockers name the processes); HARDWARE_NOT_FOUND (the hardware was not found). - Request"
input ChangeMachineHardwareCommandRequestInput {
"The ID of the machine."
resourceId: ID!
"The ID of the new hardware of the machine. Sending null removes the assignment."
hardwareId: ID
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Reserves a line item on other storage locations, for example when the stock is not where the pick list says. Only the addressed line item is changed. The new line items point to the old one in 'splitFromLineItemId'; when everything was reserved anew the old line item is removed, when only a part was reserved the old one keeps the remainder (outcome Partial). A refused action reports 'errorCode' (the main reason) and 'blockers' (all reasons, each with 'code' and 'message'). errorCode is one of: PICK_LIST_NOT_FOUND (the pick list was not found); PICK_LIST_LINE_ITEM_NOT_FOUND (the line item was not found on the pick list); PICK_LIST_LINE_ITEM_ALREADY_PICKED (the line item is Picked or further); PICK_LIST_LINE_ITEM_HELD_BY_SESSION (a delivery session holds the line item); STORAGE_LOCATION_NOT_FOUND (a given storage location was not found or belongs to another warehouse); PICK_LIST_LINE_ITEM_PRE_RESERVED (the line item was reserved ahead of picking and cannot be reserved anew); PICK_LIST_NOTHING_RESERVED (nothing could be reserved on the given or any other storage location; the line item is unchanged); PICK_LIST_RESERVATION_CHANGE_FAILED (the change failed for another reason; nothing was changed). - Request"
input ChangePickListLineItemReservationCommandRequestInput {
"The ID of the pick list."
pickListId: ID!
"The ID of the pick list line item."
lineItemId: ID!
"The storage locations to reserve on, in this order. Omit to let the server choose."
targetStorageLocationIds: [ID]
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the resource assignment of a production order: restricts it to the workbenches of a resource type, assigns it to one workbench, or removes the assignment. At most one of ResourceTypeId and ResourceId may be sent; if neither is sent, the assignment is removed. Only possible while the production order has not been released. Errors: the request is invalid (both ResourceTypeId and ResourceId were sent); PRODUCTION_ORDER_NOT_FOUND (the production order was not found); PRODUCTION_ORDER_ALREADY_RELEASED (the production order has already been released); RESOURCE_TYPE_NOT_FOUND (the resource type was not found); RESOURCE_NOT_FOUND (the resource was not found); RESOURCE_TYPE_NOT_WORKBENCH (the resource type does not belong to the workbench resource category); RESOURCE_NOT_WORKBENCH (the resource is not a workbench). - Request"
input ChangeProductionOrderResourceAssignmentCommandRequestInput {
"The ID of the production order."
productionOrderId: ID!
"The ID of the resource type whose workbenches may produce the production order. Must not be sent together with ResourceId."
resourceTypeId: ID
"The ID of the workbench to which the production order is assigned. Must not be sent together with ResourceTypeId."
resourceId: ID
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the resource category of a resource group. Only possible while no resources are assigned to the resource group. Errors: the request is invalid; RESOURCE_GROUP_NOT_FOUND (the resource group was not found); RESOURCE_CATEGORY_NOT_FOUND (the resource category was not found); RESOURCE_GROUP_NOT_EMPTY (resources are still assigned to the resource group). - Request"
input ChangeResourceGroupCategoryCommandRequestInput {
"The ID of the resource group."
resourceGroupId: ID!
"The ID of the new resource category of the resource group."
categoryId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the host assigned to a workbench. Only possible while the workbench is not used in an active production process. Errors: the request is invalid; RESOURCE_NOT_FOUND (the resource was not found); RESOURCE_CATEGORY_MISMATCH (the resource is not a workbench); RESOURCE_IN_USE (the workbench is used in an active production process; the blockers name the processes). - Request"
input ChangeWorkbenchHostCommandRequestInput {
"The ID of the workbench."
resourceId: ID!
"The name of the new host of the workbench. Sending null removes the assignment."
hostName: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the warehouse assigned to a workbench. Only possible while the workbench is not used in an active production process. Errors: the request is invalid; RESOURCE_NOT_FOUND (the resource was not found); RESOURCE_CATEGORY_MISMATCH (the resource is not a workbench); RESOURCE_IN_USE (the workbench is used in an active production process; the blockers name the processes); WAREHOUSE_NOT_FOUND (the warehouse was not found). - Request"
input ChangeWorkbenchWarehouseCommandRequestInput {
"The ID of the workbench."
resourceId: ID!
"The ID of the new warehouse of the workbench. Sending null removes the assignment."
warehouseId: ID
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"The assignment of a characteristic to a group."
input CharacteristicGroupAssignmentInput {
"The ID of the characteristic group."
groupId: ID!
}
"A group of characteristics, for example to show related characteristics together. A characteristic can belong to several groups."
input CharacteristicGroupFilterInput {
and: [CharacteristicGroupFilterInput!]
or: [CharacteristicGroupFilterInput!]
"The ID of the characteristic group."
id: ComparableMerkmalGruppeKeyOperationFilterInput @cost(weight: "15")
"The name of the group."
name: StringOperationFilterInput @cost(weight: "50")
"The number of characteristics in the group."
characteristicCount: ComparableInt32OperationFilterInput @cost(weight: "200")
}
"A group of characteristics, for example to show related characteristics together. A characteristic can belong to several groups."
input CharacteristicGroupSortInput {
"The ID of the characteristic group."
id: MerkmalGruppeKeySortInput @cost(weight: "15")
"The name of the group."
name: SortEnumType @cost(weight: "50")
"The number of characteristics in the group."
characteristicCount: SortEnumType @cost(weight: "200")
}
"The name of a characteristic in one language."
input CharacteristicNameInput {
"The language as BCP 47 language tag, for example 'de' or 'de-AT'. Language subtag in lower case, region subtag in upper case; the input is not case-sensitive."
languageTag: String!
"The name in this language."
name: String!
}
"A characteristic value in a list."
input CharacteristicValueListEntryFilterInput {
and: [CharacteristicValueListEntryFilterInput!]
or: [CharacteristicValueListEntryFilterInput!]
"The ID of the characteristic value."
id: ComparableMerkmalWertKeyOperationFilterInput @cost(weight: "15")
"The name of the value in the default language. Empty when the value has no name in the default language."
name: StringOperationFilterInput @cost(weight: "200")
"The position of the value within its characteristic in a custom order, counted from 1. Null means there is no custom order and the entries are sorted alphabetically by their name in the default language. Set a custom order with the order operations; the API does not accept single positions."
sortOrder: ComparableNullableOfInt32OperationFilterInput @cost(weight: "50")
"The number of items that have this value."
itemCount: ComparableInt32OperationFilterInput @cost(weight: "200")
}
"A characteristic value in a list."
input CharacteristicValueListEntrySortInput {
"The ID of the characteristic value."
id: MerkmalWertKeySortInput @cost(weight: "15")
"The position of the value within its characteristic in a custom order, counted from 1. Null means there is no custom order and the entries are sorted alphabetically by their name in the default language. Set a custom order with the order operations; the API does not accept single positions."
sortOrder: SortEnumType @cost(weight: "50")
"The name of the value in the default language. Empty when the value has no name in the default language."
name: SortEnumType @cost(weight: "200")
"The number of items that have this value."
itemCount: SortEnumType @cost(weight: "200")
}
"A change of the texts of a characteristic value in one language. Only the properties that are sent change; a text that is sent as null is removed (not the name). The name is required when the value has no texts in this language yet."
input CharacteristicValueTextChangeInput {
"The language as BCP 47 language tag, for example 'de' or 'de-AT'. Language subtag in lower case, region subtag in upper case; the input is not case-sensitive."
languageTag: String!
"The name of the value in this language. Required when the value has no texts in this language yet; omitted leaves it as it is."
name: String
"A description of the value for customers. Omitted leaves it as it is, null removes it."
description: String
"The URL path of the value page in the online shop. Only lower-case letters, digits, '-', '_' and '/' are allowed; it must not start or end with '-' or contain '--'. It must not contain one of the segments 'products', 'characteristics', 'categories', 'searchspecials', 'searchqueries', 'manufacturers', 'news', 'search' and 'pages'. It must be unique among the values in the same language. Omitted leaves it as it is, null removes it."
urlPath: String
"The title tag of the value page. Search engines usually show about 60 characters. Omitted leaves it as it is, null removes it."
titleTag: String
"The meta keywords of the value page. Omitted leaves it as it is, null removes it."
metaKeywords: String
"The meta description of the value page. Search engines usually show about 160 characters. Omitted leaves it as it is, null removes it."
metaDescription: String
}
"The texts of a characteristic value in one language: name, description and the search engine data of the value page in the online shop."
input CharacteristicValueTextInput {
"The language as BCP 47 language tag, for example 'de' or 'de-AT'. Language subtag in lower case, region subtag in upper case; the input is not case-sensitive."
languageTag: String!
"The name of the value in this language."
name: String!
"A description of the value for customers."
description: String
"The URL path of the value page in the online shop. Only lower-case letters, digits, '-', '_' and '/' are allowed; it must not start or end with '-' or contain '--'. It must not contain one of the segments 'products', 'characteristics', 'categories', 'searchspecials', 'searchqueries', 'manufacturers', 'news', 'search' and 'pages'. It must be unique among the values in the same language."
urlPath: String
"The title tag of the value page. Search engines usually show about 60 characters."
titleTag: String
"The meta keywords of the value page."
metaKeywords: String
"The meta description of the value page. Search engines usually show about 160 characters."
metaDescription: String
}
"The keys of the chosen options of a MultiChoice setting."
input ChoiceKeyListInput {
"The keys of the chosen options. Empty when none is chosen."
keys: [String]!
}
"The key of one option."
input ChoiceWarehouseSettingValueInput {
"The key of the chosen option."
value: String!
}
"Removes the setting that goods receipt creates items that do not exist yet. errorCode is one of: WAREHOUSE_NOT_FOUND (the warehouse was not found); WAREHOUSE_TYPE_DOES_NOT_SUPPORT_GOODS_RECEIPT_OPTIONS (the warehouse type books no stock itself). - Request"
input ClearWarehouseNewItemOnReceiptCommandRequestInput {
"The ID of the warehouse."
warehouseId: ID!
}
"A combination of a variation parent to write. Polymorphic: the property 'kind' says whether an existing item becomes the combination or a new regular item is created for it."
input CombinationInput @oneOf {
"An existing item that becomes a combination of the parent. It can be of any kind except a variation parent (a bill of materials can be a combination) and must not be a combination of another parent already. Its categories are replaced by those of the parent."
existingItemCombinationInput: ExistingItemCombinationInput
"A new regular item that is created as a combination of the parent. It takes over the categories of the parent and has none of its own."
newItemCombinationInput: NewItemCombinationInput
}
"One possible combination of a variation parent: one value per axis. The list of proposals is the cartesian product of the values of all axes. Sku and name are suggestions; the list can be sent back to create the combinations after removing 'alreadyExists'."
input CombinationProposalFilterInput {
and: [CombinationProposalFilterInput!]
or: [CombinationProposalFilterInput!]
"Whether the parent has this combination already. Such a proposal is refused when it is sent back."
alreadyExists: ComparableBooleanOperationFilterInput
}
"One possible combination of a variation parent: one value per axis. The list of proposals is the cartesian product of the values of all axes. Sku and name are suggestions; the list can be sent back to create the combinations after removing 'alreadyExists'."
input CombinationProposalSortInput {
"Suggested item number: the SKU of the parent followed by the SKU suffixes of the values."
sku: SortEnumType @cost(weight: "10")
}
"The value a combination takes on one axis. Within one create call the axis and value are addressed by their position because they have no ID yet."
input CombinationValueInput {
"Zero-based position of the axis in the list of axes of the same call."
axisPosition: Int!
"Zero-based position of the value in the list of values of that axis."
valuePosition: Int!
}
"The postal address of a company when written. The address is replaced as a whole. Street, postal code and city are optional, because Wawi does not require them; the country code is required."
input CompanyAddressInput {
"Street with house number, at most 255 characters."
street: String
"Postal code, at most 50 characters."
postalCode: String
"City, at most 255 characters."
city: String
"The ISO 3166-1 alpha-2 code of an existing country."
countryCode: String!
}
"The bank account of a company when written. The account is replaced as a whole: a line that is left out is cleared, so an empty object removes the account data."
input CompanyBankAccountInput {
"International Bank Account Number, 11 to 34 characters."
iban: String
"Bank Identifier Code, 8 or 11 characters."
bic: String
"Name of the bank, at most 50 characters."
bankName: String
"Name of the account holder, at most 255 characters."
accountHolder: String
}
"A yes or no."
input CompanyBooleanFieldValueInput {
"Whether it is yes."
flag: Boolean!
}
"The value of a custom field (German 'Eigenes Feld') of a company. It has no language. Only fields that have a value are listed."
input CompanyCustomFieldFilterInput {
and: [CompanyCustomFieldFilterInput!]
or: [CompanyCustomFieldFilterInput!]
"The ID of the custom field."
customFieldId: ComparableEigenesFeldKeyOperationFilterInput @cost(weight: "15")
}
"The value of a custom field (German 'Eigenes Feld') of a company. It has no language. Only fields that have a value are listed."
input CompanyCustomFieldSortInput {
"The ID of the custom field."
customFieldId: EigenesFeldKeySortInput @cost(weight: "15")
}
"A date."
input CompanyDateFieldValueInput {
"The date. Only the calendar date counts, the time of day is ignored."
date: DateTime!
}
"A decimal number."
input CompanyDecimalFieldValueInput {
"The number."
number: Decimal!
}
"A stored OAuth configuration of a mail provider, with which a mailbox can be connected. A provider can have several configurations, for example one per client type, that differ in the redirect address."
input CompanyEmailOAuthProviderFilterInput {
and: [CompanyEmailOAuthProviderFilterInput!]
or: [CompanyEmailOAuthProviderFilterInput!]
"The stable key of the OAuth configuration, used to start the sign-in."
key: StringOperationFilterInput @cost(weight: "50")
"The name of the provider for display."
displayName: StringOperationFilterInput @cost(weight: "50")
"The mail server that is set when the sign-in is connected."
mailServer: StringOperationFilterInput @cost(weight: "50")
}
"A stored OAuth configuration of a mail provider, with which a mailbox can be connected. A provider can have several configurations, for example one per client type, that differ in the redirect address."
input CompanyEmailOAuthProviderSortInput {
"The stable key of the OAuth configuration, used to start the sign-in."
key: SortEnumType @cost(weight: "50")
"The name of the provider for display."
displayName: SortEnumType @cost(weight: "50")
}
"The value of a custom field of a company. Polymorphic: the property 'type' selects the variant, which has to match the data type of the field."
input CompanyFieldValueInput @oneOf {
"A text value."
companyTextFieldValue: CompanyTextFieldValueInput
"A whole number."
companyIntegerFieldValue: CompanyIntegerFieldValueInput
"A decimal number."
companyDecimalFieldValue: CompanyDecimalFieldValueInput
"A yes or no."
companyBooleanFieldValue: CompanyBooleanFieldValueInput
"A date."
companyDateFieldValue: CompanyDateFieldValueInput
}
"A whole number."
input CompanyIntegerFieldValueInput {
"The number."
number: Int!
}
"A company as a light list entry."
input CompanyListEntryFilterInput {
and: [CompanyListEntryFilterInput!]
or: [CompanyListEntryFilterInput!]
"The ID of the company."
id: ComparableFirmaKeyOperationFilterInput
"The name of the company."
name: StringOperationFilterInput
"Whether the company is active. An inactive company cannot be chosen in new documents."
isActive: ComparableBooleanOperationFilterInput
"The ISO 3166-1 alpha-2 code of the country of the company. Data entered earlier can have an empty or longer code; the update accepts only a valid two-letter code of an existing country."
countryCode: StringOperationFilterInput
}
"A company as a light list entry."
input CompanyListEntrySortInput {
"The ID of the company."
id: FirmaKeySortInput @cost(weight: "10")
"The name of the company."
name: SortEnumType @cost(weight: "10")
}
"The retention period of one kind of process (for example invoices) of a company, and whether data is made anonymous when it ends."
input CompanyRetentionPeriodFilterInput {
and: [CompanyRetentionPeriodFilterInput!]
or: [CompanyRetentionPeriodFilterInput!]
"Stable identifier of the kind of process."
processId: StringOperationFilterInput
"Whether the period is locked. A locked period can no longer be changed."
isLocked: ComparableBooleanOperationFilterInput
}
"The retention period of one kind of process (for example invoices) of a company, and whether data is made anonymous when it ends."
input CompanyRetentionPeriodSortInput {
"Stable identifier of the kind of process."
processId: SortEnumType @cost(weight: "10")
"Name of the kind of process in the language of the request."
name: SortEnumType @cost(weight: "10")
}
"A text value."
input CompanyTextFieldValueInput {
"The text."
text: String!
}
"The VAT ID of a company for one country, and whether the country counts as a shipping country."
input CompanyVatIdFilterInput {
and: [CompanyVatIdFilterInput!]
or: [CompanyVatIdFilterInput!]
"The ISO 3166-1 alpha-2 code of the country."
countryCode: StringOperationFilterInput
"Whether orders shipped to this country are handled with this VAT ID."
isShippingCountry: ComparableBooleanOperationFilterInput
"Whether this is the country of the company. Its entry always exists and is always a shipping country."
isHomeCountry: ComparableBooleanOperationFilterInput
}
"The VAT ID of a company for one country, and whether the country counts as a shipping country."
input CompanyVatIdSortInput {
"The ISO 3166-1 alpha-2 code of the country."
countryCode: SortEnumType @cost(weight: "10")
}
input ComparableAdresseKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableAnsprechpartnerKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableArtikelEinkaufslisteKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableArtikelKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableArtikelUploadDateiKeyOperationFilterInput {
eq: ArtikelUploadDateiKeyInput @cost(weight: "10")
neq: ArtikelUploadDateiKeyInput @cost(weight: "10")
in: [ArtikelUploadDateiKeyInput] @cost(weight: "10")
nin: [ArtikelUploadDateiKeyInput] @cost(weight: "10")
gt: ArtikelUploadDateiKeyInput @cost(weight: "10")
ngt: ArtikelUploadDateiKeyInput @cost(weight: "10")
gte: ArtikelUploadDateiKeyInput @cost(weight: "10")
ngte: ArtikelUploadDateiKeyInput @cost(weight: "10")
lt: ArtikelUploadDateiKeyInput @cost(weight: "10")
nlt: ArtikelUploadDateiKeyInput @cost(weight: "10")
lte: ArtikelUploadDateiKeyInput @cost(weight: "10")
nlte: ArtikelUploadDateiKeyInput @cost(weight: "10")
}
input ComparableAttributeKindOperationFilterInput {
eq: AttributeKind @cost(weight: "10")
neq: AttributeKind @cost(weight: "10")
in: [AttributeKind!] @cost(weight: "10")
nin: [AttributeKind!] @cost(weight: "10")
gt: AttributeKind @cost(weight: "10")
ngt: AttributeKind @cost(weight: "10")
gte: AttributeKind @cost(weight: "10")
ngte: AttributeKind @cost(weight: "10")
lt: AttributeKind @cost(weight: "10")
nlt: AttributeKind @cost(weight: "10")
lte: AttributeKind @cost(weight: "10")
nlte: AttributeKind @cost(weight: "10")
}
input ComparableAttributKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableAuftragStornogrundKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableBedarfsgrundlageKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableBedarfsgrundlagePositionKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableBenutzerKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableBerechtigungKeyOperationFilterInput {
eq: BerechtigungKeyInput @cost(weight: "10")
neq: BerechtigungKeyInput @cost(weight: "10")
in: [BerechtigungKeyInput] @cost(weight: "10")
nin: [BerechtigungKeyInput] @cost(weight: "10")
gt: BerechtigungKeyInput @cost(weight: "10")
ngt: BerechtigungKeyInput @cost(weight: "10")
gte: BerechtigungKeyInput @cost(weight: "10")
ngte: BerechtigungKeyInput @cost(weight: "10")
lt: BerechtigungKeyInput @cost(weight: "10")
nlt: BerechtigungKeyInput @cost(weight: "10")
lte: BerechtigungKeyInput @cost(weight: "10")
nlte: BerechtigungKeyInput @cost(weight: "10")
}
input ComparableBestellvorschlagVorlageKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableBillOfMaterialKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableBillOfMaterialsChildComponentTypeOperationFilterInput {
eq: BillOfMaterialsChildComponentType @cost(weight: "10")
neq: BillOfMaterialsChildComponentType @cost(weight: "10")
in: [BillOfMaterialsChildComponentType!] @cost(weight: "10")
nin: [BillOfMaterialsChildComponentType!] @cost(weight: "10")
gt: BillOfMaterialsChildComponentType @cost(weight: "10")
ngt: BillOfMaterialsChildComponentType @cost(weight: "10")
gte: BillOfMaterialsChildComponentType @cost(weight: "10")
ngte: BillOfMaterialsChildComponentType @cost(weight: "10")
lt: BillOfMaterialsChildComponentType @cost(weight: "10")
nlt: BillOfMaterialsChildComponentType @cost(weight: "10")
lte: BillOfMaterialsChildComponentType @cost(weight: "10")
nlte: BillOfMaterialsChildComponentType @cost(weight: "10")
}
input ComparableBillOfMaterialsParentComponentTypeOperationFilterInput {
eq: BillOfMaterialsParentComponentType @cost(weight: "10")
neq: BillOfMaterialsParentComponentType @cost(weight: "10")
in: [BillOfMaterialsParentComponentType!] @cost(weight: "10")
nin: [BillOfMaterialsParentComponentType!] @cost(weight: "10")
gt: BillOfMaterialsParentComponentType @cost(weight: "10")
ngt: BillOfMaterialsParentComponentType @cost(weight: "10")
gte: BillOfMaterialsParentComponentType @cost(weight: "10")
ngte: BillOfMaterialsParentComponentType @cost(weight: "10")
lt: BillOfMaterialsParentComponentType @cost(weight: "10")
nlt: BillOfMaterialsParentComponentType @cost(weight: "10")
lte: BillOfMaterialsParentComponentType @cost(weight: "10")
nlte: BillOfMaterialsParentComponentType @cost(weight: "10")
}
input ComparableBillOfMaterialsStateOperationFilterInput {
eq: BillOfMaterialsState @cost(weight: "10")
neq: BillOfMaterialsState @cost(weight: "10")
in: [BillOfMaterialsState!] @cost(weight: "10")
nin: [BillOfMaterialsState!] @cost(weight: "10")
gt: BillOfMaterialsState @cost(weight: "10")
ngt: BillOfMaterialsState @cost(weight: "10")
gte: BillOfMaterialsState @cost(weight: "10")
ngte: BillOfMaterialsState @cost(weight: "10")
lt: BillOfMaterialsState @cost(weight: "10")
nlt: BillOfMaterialsState @cost(weight: "10")
lte: BillOfMaterialsState @cost(weight: "10")
nlte: BillOfMaterialsState @cost(weight: "10")
}
input ComparableBooleanOperationFilterInput {
eq: Boolean @cost(weight: "10")
neq: Boolean @cost(weight: "10")
in: [Boolean!] @cost(weight: "10")
nin: [Boolean!] @cost(weight: "10")
gt: Boolean @cost(weight: "10")
ngt: Boolean @cost(weight: "10")
gte: Boolean @cost(weight: "10")
ngte: Boolean @cost(weight: "10")
lt: Boolean @cost(weight: "10")
nlt: Boolean @cost(weight: "10")
lte: Boolean @cost(weight: "10")
nlte: Boolean @cost(weight: "10")
}
input ComparableBuchungsArtKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableCrossSellingGruppeKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableCurrencyCodeSourceOperationFilterInput {
eq: CurrencyCodeSource @cost(weight: "10")
neq: CurrencyCodeSource @cost(weight: "10")
in: [CurrencyCodeSource!] @cost(weight: "10")
nin: [CurrencyCodeSource!] @cost(weight: "10")
gt: CurrencyCodeSource @cost(weight: "10")
ngt: CurrencyCodeSource @cost(weight: "10")
gte: CurrencyCodeSource @cost(weight: "10")
ngte: CurrencyCodeSource @cost(weight: "10")
lt: CurrencyCodeSource @cost(weight: "10")
nlt: CurrencyCodeSource @cost(weight: "10")
lte: CurrencyCodeSource @cost(weight: "10")
nlte: CurrencyCodeSource @cost(weight: "10")
}
input ComparableCustomerAddressTypeOperationFilterInput {
eq: CustomerAddressType @cost(weight: "10")
neq: CustomerAddressType @cost(weight: "10")
in: [CustomerAddressType!] @cost(weight: "10")
nin: [CustomerAddressType!] @cost(weight: "10")
gt: CustomerAddressType @cost(weight: "10")
ngt: CustomerAddressType @cost(weight: "10")
gte: CustomerAddressType @cost(weight: "10")
ngte: CustomerAddressType @cost(weight: "10")
lt: CustomerAddressType @cost(weight: "10")
nlt: CustomerAddressType @cost(weight: "10")
lte: CustomerAddressType @cost(weight: "10")
nlte: CustomerAddressType @cost(weight: "10")
}
input ComparableCustomerGroupPriceSourceOperationFilterInput {
eq: CustomerGroupPriceSource @cost(weight: "10")
neq: CustomerGroupPriceSource @cost(weight: "10")
in: [CustomerGroupPriceSource!] @cost(weight: "10")
nin: [CustomerGroupPriceSource!] @cost(weight: "10")
gt: CustomerGroupPriceSource @cost(weight: "10")
ngt: CustomerGroupPriceSource @cost(weight: "10")
gte: CustomerGroupPriceSource @cost(weight: "10")
ngte: CustomerGroupPriceSource @cost(weight: "10")
lt: CustomerGroupPriceSource @cost(weight: "10")
nlt: CustomerGroupPriceSource @cost(weight: "10")
lte: CustomerGroupPriceSource @cost(weight: "10")
nlte: CustomerGroupPriceSource @cost(weight: "10")
}
input ComparableCustomerNoteTypeOperationFilterInput {
eq: CustomerNoteType @cost(weight: "10")
neq: CustomerNoteType @cost(weight: "10")
in: [CustomerNoteType!] @cost(weight: "10")
nin: [CustomerNoteType!] @cost(weight: "10")
gt: CustomerNoteType @cost(weight: "10")
ngt: CustomerNoteType @cost(weight: "10")
gte: CustomerNoteType @cost(weight: "10")
ngte: CustomerNoteType @cost(weight: "10")
lt: CustomerNoteType @cost(weight: "10")
nlt: CustomerNoteType @cost(weight: "10")
lte: CustomerNoteType @cost(weight: "10")
nlte: CustomerNoteType @cost(weight: "10")
}
input ComparableDateTimeOffsetOperationFilterInput {
eq: DateTime @cost(weight: "10")
neq: DateTime @cost(weight: "10")
in: [DateTime!] @cost(weight: "10")
nin: [DateTime!] @cost(weight: "10")
gt: DateTime @cost(weight: "10")
ngt: DateTime @cost(weight: "10")
gte: DateTime @cost(weight: "10")
ngte: DateTime @cost(weight: "10")
lt: DateTime @cost(weight: "10")
nlt: DateTime @cost(weight: "10")
lte: DateTime @cost(weight: "10")
nlte: DateTime @cost(weight: "10")
}
input ComparableDecimalOperationFilterInput {
eq: Decimal @cost(weight: "10")
neq: Decimal @cost(weight: "10")
in: [Decimal!] @cost(weight: "10")
nin: [Decimal!] @cost(weight: "10")
gt: Decimal @cost(weight: "10")
ngt: Decimal @cost(weight: "10")
gte: Decimal @cost(weight: "10")
ngte: Decimal @cost(weight: "10")
lt: Decimal @cost(weight: "10")
nlt: Decimal @cost(weight: "10")
lte: Decimal @cost(weight: "10")
nlte: Decimal @cost(weight: "10")
}
input ComparableDeliveryNoteInvoicingStatusOperationFilterInput {
eq: DeliveryNoteInvoicingStatus @cost(weight: "10")
neq: DeliveryNoteInvoicingStatus @cost(weight: "10")
in: [DeliveryNoteInvoicingStatus!] @cost(weight: "10")
nin: [DeliveryNoteInvoicingStatus!] @cost(weight: "10")
gt: DeliveryNoteInvoicingStatus @cost(weight: "10")
ngt: DeliveryNoteInvoicingStatus @cost(weight: "10")
gte: DeliveryNoteInvoicingStatus @cost(weight: "10")
ngte: DeliveryNoteInvoicingStatus @cost(weight: "10")
lt: DeliveryNoteInvoicingStatus @cost(weight: "10")
nlt: DeliveryNoteInvoicingStatus @cost(weight: "10")
lte: DeliveryNoteInvoicingStatus @cost(weight: "10")
nlte: DeliveryNoteInvoicingStatus @cost(weight: "10")
}
input ComparableDeliveryNoteStatusOperationFilterInput {
eq: DeliveryNoteStatus @cost(weight: "10")
neq: DeliveryNoteStatus @cost(weight: "10")
in: [DeliveryNoteStatus!] @cost(weight: "10")
nin: [DeliveryNoteStatus!] @cost(weight: "10")
gt: DeliveryNoteStatus @cost(weight: "10")
ngt: DeliveryNoteStatus @cost(weight: "10")
gte: DeliveryNoteStatus @cost(weight: "10")
ngte: DeliveryNoteStatus @cost(weight: "10")
lt: DeliveryNoteStatus @cost(weight: "10")
nlt: DeliveryNoteStatus @cost(weight: "10")
lte: DeliveryNoteStatus @cost(weight: "10")
nlte: DeliveryNoteStatus @cost(weight: "10")
}
input ComparableDispositionKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableDispositionStatusOperationFilterInput {
eq: DispositionStatus @cost(weight: "10")
neq: DispositionStatus @cost(weight: "10")
in: [DispositionStatus!] @cost(weight: "10")
nin: [DispositionStatus!] @cost(weight: "10")
gt: DispositionStatus @cost(weight: "10")
ngt: DispositionStatus @cost(weight: "10")
gte: DispositionStatus @cost(weight: "10")
ngte: DispositionStatus @cost(weight: "10")
lt: DispositionStatus @cost(weight: "10")
nlt: DispositionStatus @cost(weight: "10")
lte: DispositionStatus @cost(weight: "10")
nlte: DispositionStatus @cost(weight: "10")
}
input ComparableDownloadDateiKeyOperationFilterInput {
eq: DownloadDateiKeyInput @cost(weight: "10")
neq: DownloadDateiKeyInput @cost(weight: "10")
in: [DownloadDateiKeyInput] @cost(weight: "10")
nin: [DownloadDateiKeyInput] @cost(weight: "10")
gt: DownloadDateiKeyInput @cost(weight: "10")
ngt: DownloadDateiKeyInput @cost(weight: "10")
gte: DownloadDateiKeyInput @cost(weight: "10")
ngte: DownloadDateiKeyInput @cost(weight: "10")
lt: DownloadDateiKeyInput @cost(weight: "10")
nlt: DownloadDateiKeyInput @cost(weight: "10")
lte: DownloadDateiKeyInput @cost(weight: "10")
nlte: DownloadDateiKeyInput @cost(weight: "10")
}
input ComparableEigenesFeldKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableEingangsrechnungZusatzkostenKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableEinheitKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableFarbeKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableFirmaKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableGebindeKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableGuidOperationFilterInput {
eq: UUID @cost(weight: "10")
neq: UUID @cost(weight: "10")
in: [UUID!] @cost(weight: "10")
nin: [UUID!] @cost(weight: "10")
gt: UUID @cost(weight: "10")
ngt: UUID @cost(weight: "10")
gte: UUID @cost(weight: "10")
ngte: UUID @cost(weight: "10")
lt: UUID @cost(weight: "10")
nlt: UUID @cost(weight: "10")
lte: UUID @cost(weight: "10")
nlte: UUID @cost(weight: "10")
}
input ComparableGutschriftKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableGutschriftPosKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableGutschriftStornogrundKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableHerstellerKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableIncomingInvoiceLineItemTypeOperationFilterInput {
eq: IncomingInvoiceLineItemType @cost(weight: "10")
neq: IncomingInvoiceLineItemType @cost(weight: "10")
in: [IncomingInvoiceLineItemType!] @cost(weight: "10")
nin: [IncomingInvoiceLineItemType!] @cost(weight: "10")
gt: IncomingInvoiceLineItemType @cost(weight: "10")
ngt: IncomingInvoiceLineItemType @cost(weight: "10")
gte: IncomingInvoiceLineItemType @cost(weight: "10")
ngte: IncomingInvoiceLineItemType @cost(weight: "10")
lt: IncomingInvoiceLineItemType @cost(weight: "10")
nlt: IncomingInvoiceLineItemType @cost(weight: "10")
lte: IncomingInvoiceLineItemType @cost(weight: "10")
nlte: IncomingInvoiceLineItemType @cost(weight: "10")
}
input ComparableIncomingInvoicePaymentStatusOperationFilterInput {
eq: IncomingInvoicePaymentStatus @cost(weight: "10")
neq: IncomingInvoicePaymentStatus @cost(weight: "10")
in: [IncomingInvoicePaymentStatus!] @cost(weight: "10")
nin: [IncomingInvoicePaymentStatus!] @cost(weight: "10")
gt: IncomingInvoicePaymentStatus @cost(weight: "10")
ngt: IncomingInvoicePaymentStatus @cost(weight: "10")
gte: IncomingInvoicePaymentStatus @cost(weight: "10")
ngte: IncomingInvoicePaymentStatus @cost(weight: "10")
lt: IncomingInvoicePaymentStatus @cost(weight: "10")
nlt: IncomingInvoicePaymentStatus @cost(weight: "10")
lte: IncomingInvoicePaymentStatus @cost(weight: "10")
nlte: IncomingInvoicePaymentStatus @cost(weight: "10")
}
input ComparableIncomingInvoiceStatusOperationFilterInput {
eq: IncomingInvoiceStatus @cost(weight: "10")
neq: IncomingInvoiceStatus @cost(weight: "10")
in: [IncomingInvoiceStatus!] @cost(weight: "10")
nin: [IncomingInvoiceStatus!] @cost(weight: "10")
gt: IncomingInvoiceStatus @cost(weight: "10")
ngt: IncomingInvoiceStatus @cost(weight: "10")
gte: IncomingInvoiceStatus @cost(weight: "10")
ngte: IncomingInvoiceStatus @cost(weight: "10")
lt: IncomingInvoiceStatus @cost(weight: "10")
nlt: IncomingInvoiceStatus @cost(weight: "10")
lte: IncomingInvoiceStatus @cost(weight: "10")
nlte: IncomingInvoiceStatus @cost(weight: "10")
}
input ComparableInt32OperationFilterInput {
eq: Int @cost(weight: "10")
neq: Int @cost(weight: "10")
in: [Int!] @cost(weight: "10")
nin: [Int!] @cost(weight: "10")
gt: Int @cost(weight: "10")
ngt: Int @cost(weight: "10")
gte: Int @cost(weight: "10")
ngte: Int @cost(weight: "10")
lt: Int @cost(weight: "10")
nlt: Int @cost(weight: "10")
lte: Int @cost(weight: "10")
nlte: Int @cost(weight: "10")
}
input ComparableInt64OperationFilterInput {
eq: Long @cost(weight: "10")
neq: Long @cost(weight: "10")
in: [Long!] @cost(weight: "10")
nin: [Long!] @cost(weight: "10")
gt: Long @cost(weight: "10")
ngt: Long @cost(weight: "10")
gte: Long @cost(weight: "10")
ngte: Long @cost(weight: "10")
lt: Long @cost(weight: "10")
nlt: Long @cost(weight: "10")
lte: Long @cost(weight: "10")
nlte: Long @cost(weight: "10")
}
input ComparableInventurKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableItemConditionStockHandlingOperationFilterInput {
eq: ItemConditionStockHandling @cost(weight: "10")
neq: ItemConditionStockHandling @cost(weight: "10")
in: [ItemConditionStockHandling!] @cost(weight: "10")
nin: [ItemConditionStockHandling!] @cost(weight: "10")
gt: ItemConditionStockHandling @cost(weight: "10")
ngt: ItemConditionStockHandling @cost(weight: "10")
gte: ItemConditionStockHandling @cost(weight: "10")
ngte: ItemConditionStockHandling @cost(weight: "10")
lt: ItemConditionStockHandling @cost(weight: "10")
nlt: ItemConditionStockHandling @cost(weight: "10")
lte: ItemConditionStockHandling @cost(weight: "10")
nlte: ItemConditionStockHandling @cost(weight: "10")
}
input ComparableItemTypeOperationFilterInput {
eq: ItemType @cost(weight: "10")
neq: ItemType @cost(weight: "10")
in: [ItemType!] @cost(weight: "10")
nin: [ItemType!] @cost(weight: "10")
gt: ItemType @cost(weight: "10")
ngt: ItemType @cost(weight: "10")
gte: ItemType @cost(weight: "10")
ngte: ItemType @cost(weight: "10")
lt: ItemType @cost(weight: "10")
nlt: ItemType @cost(weight: "10")
lte: ItemType @cost(weight: "10")
nlte: ItemType @cost(weight: "10")
}
input ComparableKategorieKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableKonfiggruppeKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableKontoDatenKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableKundeKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableKundenDrucktextKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableKundenGruppeKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableKundenKategorieKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableLabelKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableLieferantenArtikelKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableLieferantenBestellungKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableLieferantenBestellungPosKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableLieferantKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableLieferavisKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableLieferscheinKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableLieferscheinPosKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableLieferstatusKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableLotTypeOperationFilterInput {
eq: LotType @cost(weight: "10")
neq: LotType @cost(weight: "10")
in: [LotType!] @cost(weight: "10")
nin: [LotType!] @cost(weight: "10")
gt: LotType @cost(weight: "10")
ngt: LotType @cost(weight: "10")
gte: LotType @cost(weight: "10")
ngte: LotType @cost(weight: "10")
lt: LotType @cost(weight: "10")
nlt: LotType @cost(weight: "10")
lte: LotType @cost(weight: "10")
nlte: LotType @cost(weight: "10")
}
input ComparableMahnlaufKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableMahnstufeKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableMassEinheitKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableMedienDateiKeyOperationFilterInput {
eq: MedienDateiKeyInput @cost(weight: "10")
neq: MedienDateiKeyInput @cost(weight: "10")
in: [MedienDateiKeyInput] @cost(weight: "10")
nin: [MedienDateiKeyInput] @cost(weight: "10")
gt: MedienDateiKeyInput @cost(weight: "10")
ngt: MedienDateiKeyInput @cost(weight: "10")
gte: MedienDateiKeyInput @cost(weight: "10")
ngte: MedienDateiKeyInput @cost(weight: "10")
lt: MedienDateiKeyInput @cost(weight: "10")
nlt: MedienDateiKeyInput @cost(weight: "10")
lte: MedienDateiKeyInput @cost(weight: "10")
nlte: MedienDateiKeyInput @cost(weight: "10")
}
input ComparableMerkmalGruppeKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableMerkmalKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableMerkmalWertKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableNotizKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableNullableOfContinentOperationFilterInput {
eq: Continent @cost(weight: "10")
neq: Continent @cost(weight: "10")
in: [Continent] @cost(weight: "10")
nin: [Continent] @cost(weight: "10")
gt: Continent @cost(weight: "10")
ngt: Continent @cost(weight: "10")
gte: Continent @cost(weight: "10")
ngte: Continent @cost(weight: "10")
lt: Continent @cost(weight: "10")
nlt: Continent @cost(weight: "10")
lte: Continent @cost(weight: "10")
nlte: Continent @cost(weight: "10")
}
input ComparableNullableOfDateTimeOffsetOperationFilterInput {
eq: DateTime @cost(weight: "10")
neq: DateTime @cost(weight: "10")
in: [DateTime] @cost(weight: "10")
nin: [DateTime] @cost(weight: "10")
gt: DateTime @cost(weight: "10")
ngt: DateTime @cost(weight: "10")
gte: DateTime @cost(weight: "10")
ngte: DateTime @cost(weight: "10")
lt: DateTime @cost(weight: "10")
nlt: DateTime @cost(weight: "10")
lte: DateTime @cost(weight: "10")
nlte: DateTime @cost(weight: "10")
}
input ComparableNullableOfGuidOperationFilterInput {
eq: UUID @cost(weight: "10")
neq: UUID @cost(weight: "10")
in: [UUID] @cost(weight: "10")
nin: [UUID] @cost(weight: "10")
gt: UUID @cost(weight: "10")
ngt: UUID @cost(weight: "10")
gte: UUID @cost(weight: "10")
ngte: UUID @cost(weight: "10")
lt: UUID @cost(weight: "10")
nlt: UUID @cost(weight: "10")
lte: UUID @cost(weight: "10")
nlte: UUID @cost(weight: "10")
}
input ComparableNullableOfInt32OperationFilterInput {
eq: Int @cost(weight: "10")
neq: Int @cost(weight: "10")
in: [Int] @cost(weight: "10")
nin: [Int] @cost(weight: "10")
gt: Int @cost(weight: "10")
ngt: Int @cost(weight: "10")
gte: Int @cost(weight: "10")
ngte: Int @cost(weight: "10")
lt: Int @cost(weight: "10")
nlt: Int @cost(weight: "10")
lte: Int @cost(weight: "10")
nlte: Int @cost(weight: "10")
}
input ComparableNullableOfSalesInvoiceStatusOperationFilterInput {
eq: SalesInvoiceStatus @cost(weight: "10")
neq: SalesInvoiceStatus @cost(weight: "10")
in: [SalesInvoiceStatus] @cost(weight: "10")
nin: [SalesInvoiceStatus] @cost(weight: "10")
gt: SalesInvoiceStatus @cost(weight: "10")
ngt: SalesInvoiceStatus @cost(weight: "10")
gte: SalesInvoiceStatus @cost(weight: "10")
ngte: SalesInvoiceStatus @cost(weight: "10")
lt: SalesInvoiceStatus @cost(weight: "10")
nlt: SalesInvoiceStatus @cost(weight: "10")
lte: SalesInvoiceStatus @cost(weight: "10")
nlte: SalesInvoiceStatus @cost(weight: "10")
}
input ComparableNullableOfShelfLifeEndDateGenerationModeOperationFilterInput {
eq: ShelfLifeEndDateGenerationMode @cost(weight: "10")
neq: ShelfLifeEndDateGenerationMode @cost(weight: "10")
in: [ShelfLifeEndDateGenerationMode] @cost(weight: "10")
nin: [ShelfLifeEndDateGenerationMode] @cost(weight: "10")
gt: ShelfLifeEndDateGenerationMode @cost(weight: "10")
ngt: ShelfLifeEndDateGenerationMode @cost(weight: "10")
gte: ShelfLifeEndDateGenerationMode @cost(weight: "10")
ngte: ShelfLifeEndDateGenerationMode @cost(weight: "10")
lt: ShelfLifeEndDateGenerationMode @cost(weight: "10")
nlt: ShelfLifeEndDateGenerationMode @cost(weight: "10")
lte: ShelfLifeEndDateGenerationMode @cost(weight: "10")
nlte: ShelfLifeEndDateGenerationMode @cost(weight: "10")
}
input ComparableNullableOfSyncResultOperationFilterInput {
eq: SyncResult @cost(weight: "10")
neq: SyncResult @cost(weight: "10")
in: [SyncResult] @cost(weight: "10")
nin: [SyncResult] @cost(weight: "10")
gt: SyncResult @cost(weight: "10")
ngt: SyncResult @cost(weight: "10")
gte: SyncResult @cost(weight: "10")
ngte: SyncResult @cost(weight: "10")
lt: SyncResult @cost(weight: "10")
nlt: SyncResult @cost(weight: "10")
lte: SyncResult @cost(weight: "10")
nlte: SyncResult @cost(weight: "10")
}
input ComparableNullableOfTaxRateTypeOperationFilterInput {
eq: TaxRateType @cost(weight: "10")
neq: TaxRateType @cost(weight: "10")
in: [TaxRateType] @cost(weight: "10")
nin: [TaxRateType] @cost(weight: "10")
gt: TaxRateType @cost(weight: "10")
ngt: TaxRateType @cost(weight: "10")
gte: TaxRateType @cost(weight: "10")
ngte: TaxRateType @cost(weight: "10")
lt: TaxRateType @cost(weight: "10")
nlt: TaxRateType @cost(weight: "10")
lte: TaxRateType @cost(weight: "10")
nlte: TaxRateType @cost(weight: "10")
}
input ComparableNumberRangeKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableOperationKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableOperationStepKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableOverallComponentPostingsInventoryAccountingDataRequirementsOperationFilterInput {
eq: OverallComponentPostingsInventoryAccountingDataRequirements @cost(weight: "10")
neq: OverallComponentPostingsInventoryAccountingDataRequirements @cost(weight: "10")
in: [OverallComponentPostingsInventoryAccountingDataRequirements!] @cost(weight: "10")
nin: [OverallComponentPostingsInventoryAccountingDataRequirements!] @cost(weight: "10")
gt: OverallComponentPostingsInventoryAccountingDataRequirements @cost(weight: "10")
ngt: OverallComponentPostingsInventoryAccountingDataRequirements @cost(weight: "10")
gte: OverallComponentPostingsInventoryAccountingDataRequirements @cost(weight: "10")
ngte: OverallComponentPostingsInventoryAccountingDataRequirements @cost(weight: "10")
lt: OverallComponentPostingsInventoryAccountingDataRequirements @cost(weight: "10")
nlt: OverallComponentPostingsInventoryAccountingDataRequirements @cost(weight: "10")
lte: OverallComponentPostingsInventoryAccountingDataRequirements @cost(weight: "10")
nlte: OverallComponentPostingsInventoryAccountingDataRequirements @cost(weight: "10")
}
input ComparablePaymentDirectionOperationFilterInput {
eq: PaymentDirection @cost(weight: "10")
neq: PaymentDirection @cost(weight: "10")
in: [PaymentDirection!] @cost(weight: "10")
nin: [PaymentDirection!] @cost(weight: "10")
gt: PaymentDirection @cost(weight: "10")
ngt: PaymentDirection @cost(weight: "10")
gte: PaymentDirection @cost(weight: "10")
ngte: PaymentDirection @cost(weight: "10")
lt: PaymentDirection @cost(weight: "10")
nlt: PaymentDirection @cost(weight: "10")
lte: PaymentDirection @cost(weight: "10")
nlte: PaymentDirection @cost(weight: "10")
}
input ComparablePaymentTransactionAssignmentKindOperationFilterInput {
eq: PaymentTransactionAssignmentKind @cost(weight: "10")
neq: PaymentTransactionAssignmentKind @cost(weight: "10")
in: [PaymentTransactionAssignmentKind!] @cost(weight: "10")
nin: [PaymentTransactionAssignmentKind!] @cost(weight: "10")
gt: PaymentTransactionAssignmentKind @cost(weight: "10")
ngt: PaymentTransactionAssignmentKind @cost(weight: "10")
gte: PaymentTransactionAssignmentKind @cost(weight: "10")
ngte: PaymentTransactionAssignmentKind @cost(weight: "10")
lt: PaymentTransactionAssignmentKind @cost(weight: "10")
nlt: PaymentTransactionAssignmentKind @cost(weight: "10")
lte: PaymentTransactionAssignmentKind @cost(weight: "10")
nlte: PaymentTransactionAssignmentKind @cost(weight: "10")
}
input ComparablePaymentTransactionAssignmentStatusOperationFilterInput {
eq: PaymentTransactionAssignmentStatus @cost(weight: "10")
neq: PaymentTransactionAssignmentStatus @cost(weight: "10")
in: [PaymentTransactionAssignmentStatus!] @cost(weight: "10")
nin: [PaymentTransactionAssignmentStatus!] @cost(weight: "10")
gt: PaymentTransactionAssignmentStatus @cost(weight: "10")
ngt: PaymentTransactionAssignmentStatus @cost(weight: "10")
gte: PaymentTransactionAssignmentStatus @cost(weight: "10")
ngte: PaymentTransactionAssignmentStatus @cost(weight: "10")
lt: PaymentTransactionAssignmentStatus @cost(weight: "10")
nlt: PaymentTransactionAssignmentStatus @cost(weight: "10")
lte: PaymentTransactionAssignmentStatus @cost(weight: "10")
nlte: PaymentTransactionAssignmentStatus @cost(weight: "10")
}
input ComparablePaymentTransactionKindOperationFilterInput {
eq: PaymentTransactionKind @cost(weight: "10")
neq: PaymentTransactionKind @cost(weight: "10")
in: [PaymentTransactionKind!] @cost(weight: "10")
nin: [PaymentTransactionKind!] @cost(weight: "10")
gt: PaymentTransactionKind @cost(weight: "10")
ngt: PaymentTransactionKind @cost(weight: "10")
gte: PaymentTransactionKind @cost(weight: "10")
ngte: PaymentTransactionKind @cost(weight: "10")
lt: PaymentTransactionKind @cost(weight: "10")
nlt: PaymentTransactionKind @cost(weight: "10")
lte: PaymentTransactionKind @cost(weight: "10")
nlte: PaymentTransactionKind @cost(weight: "10")
}
input ComparablePaymentTransactionStateOperationFilterInput {
eq: PaymentTransactionState @cost(weight: "10")
neq: PaymentTransactionState @cost(weight: "10")
in: [PaymentTransactionState!] @cost(weight: "10")
nin: [PaymentTransactionState!] @cost(weight: "10")
gt: PaymentTransactionState @cost(weight: "10")
ngt: PaymentTransactionState @cost(weight: "10")
gte: PaymentTransactionState @cost(weight: "10")
ngte: PaymentTransactionState @cost(weight: "10")
lt: PaymentTransactionState @cost(weight: "10")
nlt: PaymentTransactionState @cost(weight: "10")
lte: PaymentTransactionState @cost(weight: "10")
nlte: PaymentTransactionState @cost(weight: "10")
}
input ComparablePicklisteKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparablePicklistePosKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparablePicklisteVorlageKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparablePickListLineItemStatusOperationFilterInput {
eq: PickListLineItemStatus @cost(weight: "10")
neq: PickListLineItemStatus @cost(weight: "10")
in: [PickListLineItemStatus!] @cost(weight: "10")
nin: [PickListLineItemStatus!] @cost(weight: "10")
gt: PickListLineItemStatus @cost(weight: "10")
ngt: PickListLineItemStatus @cost(weight: "10")
gte: PickListLineItemStatus @cost(weight: "10")
ngte: PickListLineItemStatus @cost(weight: "10")
lt: PickListLineItemStatus @cost(weight: "10")
nlt: PickListLineItemStatus @cost(weight: "10")
lte: PickListLineItemStatus @cost(weight: "10")
nlte: PickListLineItemStatus @cost(weight: "10")
}
input ComparablePickListStatusOperationFilterInput {
eq: PickListStatus @cost(weight: "10")
neq: PickListStatus @cost(weight: "10")
in: [PickListStatus!] @cost(weight: "10")
nin: [PickListStatus!] @cost(weight: "10")
gt: PickListStatus @cost(weight: "10")
ngt: PickListStatus @cost(weight: "10")
gte: PickListStatus @cost(weight: "10")
ngte: PickListStatus @cost(weight: "10")
lt: PickListStatus @cost(weight: "10")
nlt: PickListStatus @cost(weight: "10")
lte: PickListStatus @cost(weight: "10")
nlte: PickListStatus @cost(weight: "10")
}
input ComparablePriceInquiryLineItemTypeOperationFilterInput {
eq: PriceInquiryLineItemType @cost(weight: "10")
neq: PriceInquiryLineItemType @cost(weight: "10")
in: [PriceInquiryLineItemType!] @cost(weight: "10")
nin: [PriceInquiryLineItemType!] @cost(weight: "10")
gt: PriceInquiryLineItemType @cost(weight: "10")
ngt: PriceInquiryLineItemType @cost(weight: "10")
gte: PriceInquiryLineItemType @cost(weight: "10")
ngte: PriceInquiryLineItemType @cost(weight: "10")
lt: PriceInquiryLineItemType @cost(weight: "10")
nlt: PriceInquiryLineItemType @cost(weight: "10")
lte: PriceInquiryLineItemType @cost(weight: "10")
nlte: PriceInquiryLineItemType @cost(weight: "10")
}
input ComparableProdItemKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableProductionOrderKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableProductionTypeOperationFilterInput {
eq: ProductionType @cost(weight: "10")
neq: ProductionType @cost(weight: "10")
in: [ProductionType!] @cost(weight: "10")
nin: [ProductionType!] @cost(weight: "10")
gt: ProductionType @cost(weight: "10")
ngt: ProductionType @cost(weight: "10")
gte: ProductionType @cost(weight: "10")
ngte: ProductionType @cost(weight: "10")
lt: ProductionType @cost(weight: "10")
nlt: ProductionType @cost(weight: "10")
lte: ProductionType @cost(weight: "10")
nlte: ProductionType @cost(weight: "10")
}
input ComparablePurchaseOrderLineItemTypeOperationFilterInput {
eq: PurchaseOrderLineItemType @cost(weight: "10")
neq: PurchaseOrderLineItemType @cost(weight: "10")
in: [PurchaseOrderLineItemType!] @cost(weight: "10")
nin: [PurchaseOrderLineItemType!] @cost(weight: "10")
gt: PurchaseOrderLineItemType @cost(weight: "10")
ngt: PurchaseOrderLineItemType @cost(weight: "10")
gte: PurchaseOrderLineItemType @cost(weight: "10")
ngte: PurchaseOrderLineItemType @cost(weight: "10")
lt: PurchaseOrderLineItemType @cost(weight: "10")
nlt: PurchaseOrderLineItemType @cost(weight: "10")
lte: PurchaseOrderLineItemType @cost(weight: "10")
nlte: PurchaseOrderLineItemType @cost(weight: "10")
}
input ComparablePurchaseOrderStatusOperationFilterInput {
eq: PurchaseOrderStatus @cost(weight: "10")
neq: PurchaseOrderStatus @cost(weight: "10")
in: [PurchaseOrderStatus!] @cost(weight: "10")
nin: [PurchaseOrderStatus!] @cost(weight: "10")
gt: PurchaseOrderStatus @cost(weight: "10")
ngt: PurchaseOrderStatus @cost(weight: "10")
gte: PurchaseOrderStatus @cost(weight: "10")
ngte: PurchaseOrderStatus @cost(weight: "10")
lt: PurchaseOrderStatus @cost(weight: "10")
nlt: PurchaseOrderStatus @cost(weight: "10")
lte: PurchaseOrderStatus @cost(weight: "10")
nlte: PurchaseOrderStatus @cost(weight: "10")
}
input ComparablePurchaseOrderTypeOperationFilterInput {
eq: PurchaseOrderType @cost(weight: "10")
neq: PurchaseOrderType @cost(weight: "10")
in: [PurchaseOrderType!] @cost(weight: "10")
nin: [PurchaseOrderType!] @cost(weight: "10")
gt: PurchaseOrderType @cost(weight: "10")
ngt: PurchaseOrderType @cost(weight: "10")
gte: PurchaseOrderType @cost(weight: "10")
ngte: PurchaseOrderType @cost(weight: "10")
lt: PurchaseOrderType @cost(weight: "10")
nlt: PurchaseOrderType @cost(weight: "10")
lte: PurchaseOrderType @cost(weight: "10")
nlte: PurchaseOrderType @cost(weight: "10")
}
input ComparableRechnungFileKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableRechnungKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableRechnungPositionFileKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableRechnungPositionKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableRechnungStornogrundKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableRefundMethodOperationFilterInput {
eq: RefundMethod @cost(weight: "10")
neq: RefundMethod @cost(weight: "10")
in: [RefundMethod!] @cost(weight: "10")
nin: [RefundMethod!] @cost(weight: "10")
gt: RefundMethod @cost(weight: "10")
ngt: RefundMethod @cost(weight: "10")
gte: RefundMethod @cost(weight: "10")
ngte: RefundMethod @cost(weight: "10")
lt: RefundMethod @cost(weight: "10")
nlt: RefundMethod @cost(weight: "10")
lte: RefundMethod @cost(weight: "10")
nlte: RefundMethod @cost(weight: "10")
}
input ComparableRefundStatusOperationFilterInput {
eq: RefundStatus @cost(weight: "10")
neq: RefundStatus @cost(weight: "10")
in: [RefundStatus!] @cost(weight: "10")
nin: [RefundStatus!] @cost(weight: "10")
gt: RefundStatus @cost(weight: "10")
ngt: RefundStatus @cost(weight: "10")
gte: RefundStatus @cost(weight: "10")
ngte: RefundStatus @cost(weight: "10")
lt: RefundStatus @cost(weight: "10")
nlt: RefundStatus @cost(weight: "10")
lte: RefundStatus @cost(weight: "10")
nlte: RefundStatus @cost(weight: "10")
}
input ComparableResourceCategoryKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableResourceCategoryTypeOperationFilterInput {
eq: ResourceCategoryType @cost(weight: "10")
neq: ResourceCategoryType @cost(weight: "10")
in: [ResourceCategoryType!] @cost(weight: "10")
nin: [ResourceCategoryType!] @cost(weight: "10")
gt: ResourceCategoryType @cost(weight: "10")
ngt: ResourceCategoryType @cost(weight: "10")
gte: ResourceCategoryType @cost(weight: "10")
ngte: ResourceCategoryType @cost(weight: "10")
lt: ResourceCategoryType @cost(weight: "10")
nlt: ResourceCategoryType @cost(weight: "10")
lte: ResourceCategoryType @cost(weight: "10")
nlte: ResourceCategoryType @cost(weight: "10")
}
input ComparableResourceGroupKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableResourceKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableResourceTypeKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableRestApiAppRegistrationRequestKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableRestockSuggestionDestinationAreaEntryTypeOperationFilterInput {
eq: RestockSuggestionDestinationAreaEntryType @cost(weight: "10")
neq: RestockSuggestionDestinationAreaEntryType @cost(weight: "10")
in: [RestockSuggestionDestinationAreaEntryType!] @cost(weight: "10")
nin: [RestockSuggestionDestinationAreaEntryType!] @cost(weight: "10")
gt: RestockSuggestionDestinationAreaEntryType @cost(weight: "10")
ngt: RestockSuggestionDestinationAreaEntryType @cost(weight: "10")
gte: RestockSuggestionDestinationAreaEntryType @cost(weight: "10")
ngte: RestockSuggestionDestinationAreaEntryType @cost(weight: "10")
lt: RestockSuggestionDestinationAreaEntryType @cost(weight: "10")
nlt: RestockSuggestionDestinationAreaEntryType @cost(weight: "10")
lte: RestockSuggestionDestinationAreaEntryType @cost(weight: "10")
nlte: RestockSuggestionDestinationAreaEntryType @cost(weight: "10")
}
input ComparableRestockSuggestionStartAreaEntryTypeOperationFilterInput {
eq: RestockSuggestionStartAreaEntryType @cost(weight: "10")
neq: RestockSuggestionStartAreaEntryType @cost(weight: "10")
in: [RestockSuggestionStartAreaEntryType!] @cost(weight: "10")
nin: [RestockSuggestionStartAreaEntryType!] @cost(weight: "10")
gt: RestockSuggestionStartAreaEntryType @cost(weight: "10")
ngt: RestockSuggestionStartAreaEntryType @cost(weight: "10")
gte: RestockSuggestionStartAreaEntryType @cost(weight: "10")
ngte: RestockSuggestionStartAreaEntryType @cost(weight: "10")
lt: RestockSuggestionStartAreaEntryType @cost(weight: "10")
nlt: RestockSuggestionStartAreaEntryType @cost(weight: "10")
lte: RestockSuggestionStartAreaEntryType @cost(weight: "10")
nlte: RestockSuggestionStartAreaEntryType @cost(weight: "10")
}
input ComparableRestockSuggestionTypeOperationFilterInput {
eq: RestockSuggestionType @cost(weight: "10")
neq: RestockSuggestionType @cost(weight: "10")
in: [RestockSuggestionType!] @cost(weight: "10")
nin: [RestockSuggestionType!] @cost(weight: "10")
gt: RestockSuggestionType @cost(weight: "10")
ngt: RestockSuggestionType @cost(weight: "10")
gte: RestockSuggestionType @cost(weight: "10")
ngte: RestockSuggestionType @cost(weight: "10")
lt: RestockSuggestionType @cost(weight: "10")
nlt: RestockSuggestionType @cost(weight: "10")
lte: RestockSuggestionType @cost(weight: "10")
nlte: RestockSuggestionType @cost(weight: "10")
}
input ComparableRetoureAustauschArtikelKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableRetoureEtikettKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableRetoureKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableRetourePosKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableRetoureStatusKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableReturnStateTypeOperationFilterInput {
eq: ReturnStateType @cost(weight: "10")
neq: ReturnStateType @cost(weight: "10")
in: [ReturnStateType!] @cost(weight: "10")
nin: [ReturnStateType!] @cost(weight: "10")
gt: ReturnStateType @cost(weight: "10")
ngt: ReturnStateType @cost(weight: "10")
gte: ReturnStateType @cost(weight: "10")
ngte: ReturnStateType @cost(weight: "10")
lt: ReturnStateType @cost(weight: "10")
nlt: ReturnStateType @cost(weight: "10")
lte: ReturnStateType @cost(weight: "10")
nlte: ReturnStateType @cost(weight: "10")
}
input ComparableRueckgabegrundKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableRueckhaltegrundKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableSalesChannelIdOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableSalesCreditNoteStatusOperationFilterInput {
eq: SalesCreditNoteStatus @cost(weight: "10")
neq: SalesCreditNoteStatus @cost(weight: "10")
in: [SalesCreditNoteStatus!] @cost(weight: "10")
nin: [SalesCreditNoteStatus!] @cost(weight: "10")
gt: SalesCreditNoteStatus @cost(weight: "10")
ngt: SalesCreditNoteStatus @cost(weight: "10")
gte: SalesCreditNoteStatus @cost(weight: "10")
ngte: SalesCreditNoteStatus @cost(weight: "10")
lt: SalesCreditNoteStatus @cost(weight: "10")
nlt: SalesCreditNoteStatus @cost(weight: "10")
lte: SalesCreditNoteStatus @cost(weight: "10")
nlte: SalesCreditNoteStatus @cost(weight: "10")
}
input ComparableSalesInvoiceCancellationDocumentTypeOperationFilterInput {
eq: SalesInvoiceCancellationDocumentType @cost(weight: "10")
neq: SalesInvoiceCancellationDocumentType @cost(weight: "10")
in: [SalesInvoiceCancellationDocumentType!] @cost(weight: "10")
nin: [SalesInvoiceCancellationDocumentType!] @cost(weight: "10")
gt: SalesInvoiceCancellationDocumentType @cost(weight: "10")
ngt: SalesInvoiceCancellationDocumentType @cost(weight: "10")
gte: SalesInvoiceCancellationDocumentType @cost(weight: "10")
ngte: SalesInvoiceCancellationDocumentType @cost(weight: "10")
lt: SalesInvoiceCancellationDocumentType @cost(weight: "10")
nlt: SalesInvoiceCancellationDocumentType @cost(weight: "10")
lte: SalesInvoiceCancellationDocumentType @cost(weight: "10")
nlte: SalesInvoiceCancellationDocumentType @cost(weight: "10")
}
input ComparableSalesInvoiceCorrectionStatusOperationFilterInput {
eq: SalesInvoiceCorrectionStatus @cost(weight: "10")
neq: SalesInvoiceCorrectionStatus @cost(weight: "10")
in: [SalesInvoiceCorrectionStatus!] @cost(weight: "10")
nin: [SalesInvoiceCorrectionStatus!] @cost(weight: "10")
gt: SalesInvoiceCorrectionStatus @cost(weight: "10")
ngt: SalesInvoiceCorrectionStatus @cost(weight: "10")
gte: SalesInvoiceCorrectionStatus @cost(weight: "10")
ngte: SalesInvoiceCorrectionStatus @cost(weight: "10")
lt: SalesInvoiceCorrectionStatus @cost(weight: "10")
nlt: SalesInvoiceCorrectionStatus @cost(weight: "10")
lte: SalesInvoiceCorrectionStatus @cost(weight: "10")
nlte: SalesInvoiceCorrectionStatus @cost(weight: "10")
}
input ComparableSalesInvoiceDocumentTypeOperationFilterInput {
eq: SalesInvoiceDocumentType @cost(weight: "10")
neq: SalesInvoiceDocumentType @cost(weight: "10")
in: [SalesInvoiceDocumentType!] @cost(weight: "10")
nin: [SalesInvoiceDocumentType!] @cost(weight: "10")
gt: SalesInvoiceDocumentType @cost(weight: "10")
ngt: SalesInvoiceDocumentType @cost(weight: "10")
gte: SalesInvoiceDocumentType @cost(weight: "10")
ngte: SalesInvoiceDocumentType @cost(weight: "10")
lt: SalesInvoiceDocumentType @cost(weight: "10")
nlt: SalesInvoiceDocumentType @cost(weight: "10")
lte: SalesInvoiceDocumentType @cost(weight: "10")
nlte: SalesInvoiceDocumentType @cost(weight: "10")
}
input ComparableSalesLineItemDeliverabilityStatusOperationFilterInput {
eq: SalesLineItemDeliverabilityStatus @cost(weight: "10")
neq: SalesLineItemDeliverabilityStatus @cost(weight: "10")
in: [SalesLineItemDeliverabilityStatus!] @cost(weight: "10")
nin: [SalesLineItemDeliverabilityStatus!] @cost(weight: "10")
gt: SalesLineItemDeliverabilityStatus @cost(weight: "10")
ngt: SalesLineItemDeliverabilityStatus @cost(weight: "10")
gte: SalesLineItemDeliverabilityStatus @cost(weight: "10")
ngte: SalesLineItemDeliverabilityStatus @cost(weight: "10")
lt: SalesLineItemDeliverabilityStatus @cost(weight: "10")
nlt: SalesLineItemDeliverabilityStatus @cost(weight: "10")
lte: SalesLineItemDeliverabilityStatus @cost(weight: "10")
nlte: SalesLineItemDeliverabilityStatus @cost(weight: "10")
}
input ComparableSalesLineItemTypeOperationFilterInput {
eq: SalesLineItemType @cost(weight: "10")
neq: SalesLineItemType @cost(weight: "10")
in: [SalesLineItemType!] @cost(weight: "10")
nin: [SalesLineItemType!] @cost(weight: "10")
gt: SalesLineItemType @cost(weight: "10")
ngt: SalesLineItemType @cost(weight: "10")
gte: SalesLineItemType @cost(weight: "10")
ngte: SalesLineItemType @cost(weight: "10")
lt: SalesLineItemType @cost(weight: "10")
nlt: SalesLineItemType @cost(weight: "10")
lte: SalesLineItemType @cost(weight: "10")
nlte: SalesLineItemType @cost(weight: "10")
}
input ComparableSalesOrderDeliveryStatusOperationFilterInput {
eq: SalesOrderDeliveryStatus @cost(weight: "10")
neq: SalesOrderDeliveryStatus @cost(weight: "10")
in: [SalesOrderDeliveryStatus!] @cost(weight: "10")
nin: [SalesOrderDeliveryStatus!] @cost(weight: "10")
gt: SalesOrderDeliveryStatus @cost(weight: "10")
ngt: SalesOrderDeliveryStatus @cost(weight: "10")
gte: SalesOrderDeliveryStatus @cost(weight: "10")
ngte: SalesOrderDeliveryStatus @cost(weight: "10")
lt: SalesOrderDeliveryStatus @cost(weight: "10")
nlt: SalesOrderDeliveryStatus @cost(weight: "10")
lte: SalesOrderDeliveryStatus @cost(weight: "10")
nlte: SalesOrderDeliveryStatus @cost(weight: "10")
}
input ComparableSalesOrderDropShippingStatusOperationFilterInput {
eq: SalesOrderDropShippingStatus @cost(weight: "10")
neq: SalesOrderDropShippingStatus @cost(weight: "10")
in: [SalesOrderDropShippingStatus!] @cost(weight: "10")
nin: [SalesOrderDropShippingStatus!] @cost(weight: "10")
gt: SalesOrderDropShippingStatus @cost(weight: "10")
ngt: SalesOrderDropShippingStatus @cost(weight: "10")
gte: SalesOrderDropShippingStatus @cost(weight: "10")
ngte: SalesOrderDropShippingStatus @cost(weight: "10")
lt: SalesOrderDropShippingStatus @cost(weight: "10")
nlt: SalesOrderDropShippingStatus @cost(weight: "10")
lte: SalesOrderDropShippingStatus @cost(weight: "10")
nlte: SalesOrderDropShippingStatus @cost(weight: "10")
}
input ComparableSalesOrderNoteTypeOperationFilterInput {
eq: SalesOrderNoteType @cost(weight: "10")
neq: SalesOrderNoteType @cost(weight: "10")
in: [SalesOrderNoteType!] @cost(weight: "10")
nin: [SalesOrderNoteType!] @cost(weight: "10")
gt: SalesOrderNoteType @cost(weight: "10")
ngt: SalesOrderNoteType @cost(weight: "10")
gte: SalesOrderNoteType @cost(weight: "10")
ngte: SalesOrderNoteType @cost(weight: "10")
lt: SalesOrderNoteType @cost(weight: "10")
nlt: SalesOrderNoteType @cost(weight: "10")
lte: SalesOrderNoteType @cost(weight: "10")
nlte: SalesOrderNoteType @cost(weight: "10")
}
input ComparableSalesOrderPaymentStatusOperationFilterInput {
eq: SalesOrderPaymentStatus @cost(weight: "10")
neq: SalesOrderPaymentStatus @cost(weight: "10")
in: [SalesOrderPaymentStatus!] @cost(weight: "10")
nin: [SalesOrderPaymentStatus!] @cost(weight: "10")
gt: SalesOrderPaymentStatus @cost(weight: "10")
ngt: SalesOrderPaymentStatus @cost(weight: "10")
gte: SalesOrderPaymentStatus @cost(weight: "10")
ngte: SalesOrderPaymentStatus @cost(weight: "10")
lt: SalesOrderPaymentStatus @cost(weight: "10")
nlt: SalesOrderPaymentStatus @cost(weight: "10")
lte: SalesOrderPaymentStatus @cost(weight: "10")
nlte: SalesOrderPaymentStatus @cost(weight: "10")
}
input ComparableSalesOrderSalesInvoiceStatusOperationFilterInput {
eq: SalesOrderSalesInvoiceStatus @cost(weight: "10")
neq: SalesOrderSalesInvoiceStatus @cost(weight: "10")
in: [SalesOrderSalesInvoiceStatus!] @cost(weight: "10")
nin: [SalesOrderSalesInvoiceStatus!] @cost(weight: "10")
gt: SalesOrderSalesInvoiceStatus @cost(weight: "10")
ngt: SalesOrderSalesInvoiceStatus @cost(weight: "10")
gte: SalesOrderSalesInvoiceStatus @cost(weight: "10")
ngte: SalesOrderSalesInvoiceStatus @cost(weight: "10")
lt: SalesOrderSalesInvoiceStatus @cost(weight: "10")
nlt: SalesOrderSalesInvoiceStatus @cost(weight: "10")
lte: SalesOrderSalesInvoiceStatus @cost(weight: "10")
nlte: SalesOrderSalesInvoiceStatus @cost(weight: "10")
}
input ComparableSalesOrderStatusOperationFilterInput {
eq: SalesOrderStatus @cost(weight: "10")
neq: SalesOrderStatus @cost(weight: "10")
in: [SalesOrderStatus!] @cost(weight: "10")
nin: [SalesOrderStatus!] @cost(weight: "10")
gt: SalesOrderStatus @cost(weight: "10")
ngt: SalesOrderStatus @cost(weight: "10")
gte: SalesOrderStatus @cost(weight: "10")
ngte: SalesOrderStatus @cost(weight: "10")
lt: SalesOrderStatus @cost(weight: "10")
nlt: SalesOrderStatus @cost(weight: "10")
lte: SalesOrderStatus @cost(weight: "10")
nlte: SalesOrderStatus @cost(weight: "10")
}
input ComparableSalesQuotationNoteTypeOperationFilterInput {
eq: SalesQuotationNoteType @cost(weight: "10")
neq: SalesQuotationNoteType @cost(weight: "10")
in: [SalesQuotationNoteType!] @cost(weight: "10")
nin: [SalesQuotationNoteType!] @cost(weight: "10")
gt: SalesQuotationNoteType @cost(weight: "10")
ngt: SalesQuotationNoteType @cost(weight: "10")
gte: SalesQuotationNoteType @cost(weight: "10")
ngte: SalesQuotationNoteType @cost(weight: "10")
lt: SalesQuotationNoteType @cost(weight: "10")
nlt: SalesQuotationNoteType @cost(weight: "10")
lte: SalesQuotationNoteType @cost(weight: "10")
nlte: SalesQuotationNoteType @cost(weight: "10")
}
input ComparableSalesQuotationStatusOperationFilterInput {
eq: SalesQuotationStatus @cost(weight: "10")
neq: SalesQuotationStatus @cost(weight: "10")
in: [SalesQuotationStatus!] @cost(weight: "10")
nin: [SalesQuotationStatus!] @cost(weight: "10")
gt: SalesQuotationStatus @cost(weight: "10")
ngt: SalesQuotationStatus @cost(weight: "10")
gte: SalesQuotationStatus @cost(weight: "10")
ngte: SalesQuotationStatus @cost(weight: "10")
lt: SalesQuotationStatus @cost(weight: "10")
nlt: SalesQuotationStatus @cost(weight: "10")
lte: SalesQuotationStatus @cost(weight: "10")
nlte: SalesQuotationStatus @cost(weight: "10")
}
input ComparableSalesSubscriptionLineItemKindOperationFilterInput {
eq: SalesSubscriptionLineItemKind @cost(weight: "10")
neq: SalesSubscriptionLineItemKind @cost(weight: "10")
in: [SalesSubscriptionLineItemKind!] @cost(weight: "10")
nin: [SalesSubscriptionLineItemKind!] @cost(weight: "10")
gt: SalesSubscriptionLineItemKind @cost(weight: "10")
ngt: SalesSubscriptionLineItemKind @cost(weight: "10")
gte: SalesSubscriptionLineItemKind @cost(weight: "10")
ngte: SalesSubscriptionLineItemKind @cost(weight: "10")
lt: SalesSubscriptionLineItemKind @cost(weight: "10")
nlt: SalesSubscriptionLineItemKind @cost(weight: "10")
lte: SalesSubscriptionLineItemKind @cost(weight: "10")
nlte: SalesSubscriptionLineItemKind @cost(weight: "10")
}
input ComparableSalesSubscriptionStatusOperationFilterInput {
eq: SalesSubscriptionStatus @cost(weight: "10")
neq: SalesSubscriptionStatus @cost(weight: "10")
in: [SalesSubscriptionStatus!] @cost(weight: "10")
nin: [SalesSubscriptionStatus!] @cost(weight: "10")
gt: SalesSubscriptionStatus @cost(weight: "10")
ngt: SalesSubscriptionStatus @cost(weight: "10")
gte: SalesSubscriptionStatus @cost(weight: "10")
ngte: SalesSubscriptionStatus @cost(weight: "10")
lt: SalesSubscriptionStatus @cost(weight: "10")
nlt: SalesSubscriptionStatus @cost(weight: "10")
lte: SalesSubscriptionStatus @cost(weight: "10")
nlte: SalesSubscriptionStatus @cost(weight: "10")
}
input ComparableShipperAccountKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableShippingMethodOriginOperationFilterInput {
eq: ShippingMethodOrigin @cost(weight: "10")
neq: ShippingMethodOrigin @cost(weight: "10")
in: [ShippingMethodOrigin!] @cost(weight: "10")
nin: [ShippingMethodOrigin!] @cost(weight: "10")
gt: ShippingMethodOrigin @cost(weight: "10")
ngt: ShippingMethodOrigin @cost(weight: "10")
gte: ShippingMethodOrigin @cost(weight: "10")
ngte: ShippingMethodOrigin @cost(weight: "10")
lt: ShippingMethodOrigin @cost(weight: "10")
nlt: ShippingMethodOrigin @cost(weight: "10")
lte: ShippingMethodOrigin @cost(weight: "10")
nlte: ShippingMethodOrigin @cost(weight: "10")
}
input ComparableShippingRunOrderOutcomeOperationFilterInput {
eq: ShippingRunOrderOutcome @cost(weight: "10")
neq: ShippingRunOrderOutcome @cost(weight: "10")
in: [ShippingRunOrderOutcome!] @cost(weight: "10")
nin: [ShippingRunOrderOutcome!] @cost(weight: "10")
gt: ShippingRunOrderOutcome @cost(weight: "10")
ngt: ShippingRunOrderOutcome @cost(weight: "10")
gte: ShippingRunOrderOutcome @cost(weight: "10")
ngte: ShippingRunOrderOutcome @cost(weight: "10")
lt: ShippingRunOrderOutcome @cost(weight: "10")
nlt: ShippingRunOrderOutcome @cost(weight: "10")
lte: ShippingRunOrderOutcome @cost(weight: "10")
nlte: ShippingRunOrderOutcome @cost(weight: "10")
}
input ComparableShippingRunStatusOperationFilterInput {
eq: ShippingRunStatus @cost(weight: "10")
neq: ShippingRunStatus @cost(weight: "10")
in: [ShippingRunStatus!] @cost(weight: "10")
nin: [ShippingRunStatus!] @cost(weight: "10")
gt: ShippingRunStatus @cost(weight: "10")
ngt: ShippingRunStatus @cost(weight: "10")
gte: ShippingRunStatus @cost(weight: "10")
ngte: ShippingRunStatus @cost(weight: "10")
lt: ShippingRunStatus @cost(weight: "10")
nlt: ShippingRunStatus @cost(weight: "10")
lte: ShippingRunStatus @cost(weight: "10")
nlte: ShippingRunStatus @cost(weight: "10")
}
input ComparableShippingServiceProviderKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableShippingTransferStatusOperationFilterInput {
eq: ShippingTransferStatus @cost(weight: "10")
neq: ShippingTransferStatus @cost(weight: "10")
in: [ShippingTransferStatus!] @cost(weight: "10")
nin: [ShippingTransferStatus!] @cost(weight: "10")
gt: ShippingTransferStatus @cost(weight: "10")
ngt: ShippingTransferStatus @cost(weight: "10")
gte: ShippingTransferStatus @cost(weight: "10")
ngte: ShippingTransferStatus @cost(weight: "10")
lt: ShippingTransferStatus @cost(weight: "10")
nlt: ShippingTransferStatus @cost(weight: "10")
lte: ShippingTransferStatus @cost(weight: "10")
nlte: ShippingTransferStatus @cost(weight: "10")
}
input ComparableSteuerklasseKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableSteuerschluesselKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableSteuerzoneKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableStockTransferStatusOperationFilterInput {
eq: StockTransferStatus @cost(weight: "10")
neq: StockTransferStatus @cost(weight: "10")
in: [StockTransferStatus!] @cost(weight: "10")
nin: [StockTransferStatus!] @cost(weight: "10")
gt: StockTransferStatus @cost(weight: "10")
ngt: StockTransferStatus @cost(weight: "10")
gte: StockTransferStatus @cost(weight: "10")
ngte: StockTransferStatus @cost(weight: "10")
lt: StockTransferStatus @cost(weight: "10")
nlt: StockTransferStatus @cost(weight: "10")
lte: StockTransferStatus @cost(weight: "10")
nlte: StockTransferStatus @cost(weight: "10")
}
input ComparableStorageLocationStatusOperationFilterInput {
eq: StorageLocationStatus @cost(weight: "10")
neq: StorageLocationStatus @cost(weight: "10")
in: [StorageLocationStatus!] @cost(weight: "10")
nin: [StorageLocationStatus!] @cost(weight: "10")
gt: StorageLocationStatus @cost(weight: "10")
ngt: StorageLocationStatus @cost(weight: "10")
gte: StorageLocationStatus @cost(weight: "10")
ngte: StorageLocationStatus @cost(weight: "10")
lt: StorageLocationStatus @cost(weight: "10")
nlt: StorageLocationStatus @cost(weight: "10")
lte: StorageLocationStatus @cost(weight: "10")
nlte: StorageLocationStatus @cost(weight: "10")
}
input ComparableTaxRateTypeOperationFilterInput {
eq: TaxRateType @cost(weight: "10")
neq: TaxRateType @cost(weight: "10")
in: [TaxRateType!] @cost(weight: "10")
nin: [TaxRateType!] @cost(weight: "10")
gt: TaxRateType @cost(weight: "10")
ngt: TaxRateType @cost(weight: "10")
gte: TaxRateType @cost(weight: "10")
ngte: TaxRateType @cost(weight: "10")
lt: TaxRateType @cost(weight: "10")
nlt: TaxRateType @cost(weight: "10")
lte: TaxRateType @cost(weight: "10")
nlte: TaxRateType @cost(weight: "10")
}
input ComparableTaxTreatmentOperationFilterInput {
eq: TaxTreatment @cost(weight: "10")
neq: TaxTreatment @cost(weight: "10")
in: [TaxTreatment!] @cost(weight: "10")
nin: [TaxTreatment!] @cost(weight: "10")
gt: TaxTreatment @cost(weight: "10")
ngt: TaxTreatment @cost(weight: "10")
gte: TaxTreatment @cost(weight: "10")
ngte: TaxTreatment @cost(weight: "10")
lt: TaxTreatment @cost(weight: "10")
nlt: TaxTreatment @cost(weight: "10")
lte: TaxTreatment @cost(weight: "10")
nlte: TaxTreatment @cost(weight: "10")
}
input ComparableTextbausteinGruppeKeyOperationFilterInput {
eq: TextbausteinGruppeKeyInput @cost(weight: "10")
neq: TextbausteinGruppeKeyInput @cost(weight: "10")
in: [TextbausteinGruppeKeyInput] @cost(weight: "10")
nin: [TextbausteinGruppeKeyInput] @cost(weight: "10")
gt: TextbausteinGruppeKeyInput @cost(weight: "10")
ngt: TextbausteinGruppeKeyInput @cost(weight: "10")
gte: TextbausteinGruppeKeyInput @cost(weight: "10")
ngte: TextbausteinGruppeKeyInput @cost(weight: "10")
lt: TextbausteinGruppeKeyInput @cost(weight: "10")
nlt: TextbausteinGruppeKeyInput @cost(weight: "10")
lte: TextbausteinGruppeKeyInput @cost(weight: "10")
nlte: TextbausteinGruppeKeyInput @cost(weight: "10")
}
input ComparableTextbausteinKeyOperationFilterInput {
eq: TextbausteinKeyInput @cost(weight: "10")
neq: TextbausteinKeyInput @cost(weight: "10")
in: [TextbausteinKeyInput] @cost(weight: "10")
nin: [TextbausteinKeyInput] @cost(weight: "10")
gt: TextbausteinKeyInput @cost(weight: "10")
ngt: TextbausteinKeyInput @cost(weight: "10")
gte: TextbausteinKeyInput @cost(weight: "10")
ngte: TextbausteinKeyInput @cost(weight: "10")
lt: TextbausteinKeyInput @cost(weight: "10")
nlt: TextbausteinKeyInput @cost(weight: "10")
lte: TextbausteinKeyInput @cost(weight: "10")
nlte: TextbausteinKeyInput @cost(weight: "10")
}
input ComparableUserGroupKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableUserTypeOperationFilterInput {
eq: UserType @cost(weight: "10")
neq: UserType @cost(weight: "10")
in: [UserType!] @cost(weight: "10")
nin: [UserType!] @cost(weight: "10")
gt: UserType @cost(weight: "10")
ngt: UserType @cost(weight: "10")
gte: UserType @cost(weight: "10")
ngte: UserType @cost(weight: "10")
lt: UserType @cost(weight: "10")
nlt: UserType @cost(weight: "10")
lte: UserType @cost(weight: "10")
nlte: UserType @cost(weight: "10")
}
input ComparableValueSourceOperationFilterInput {
eq: ValueSource @cost(weight: "10")
neq: ValueSource @cost(weight: "10")
in: [ValueSource!] @cost(weight: "10")
nin: [ValueSource!] @cost(weight: "10")
gt: ValueSource @cost(weight: "10")
ngt: ValueSource @cost(weight: "10")
gte: ValueSource @cost(weight: "10")
ngte: ValueSource @cost(weight: "10")
lt: ValueSource @cost(weight: "10")
nlt: ValueSource @cost(weight: "10")
lte: ValueSource @cost(weight: "10")
nlte: ValueSource @cost(weight: "10")
}
input ComparableVariationKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableVerkaufAuftragFileKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableVerkaufAuftragKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableVerkaufAuftragPositionFileKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableVerkaufAuftragPositionKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableVerpackungKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableVersandartKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableVersandKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableVersandklasseKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableVorgangsstatusKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableVorlageKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableVorlagenSetKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableWarehouseTypeOperationFilterInput {
eq: WarehouseType @cost(weight: "10")
neq: WarehouseType @cost(weight: "10")
in: [WarehouseType!] @cost(weight: "10")
nin: [WarehouseType!] @cost(weight: "10")
gt: WarehouseType @cost(weight: "10")
ngt: WarehouseType @cost(weight: "10")
gte: WarehouseType @cost(weight: "10")
ngte: WarehouseType @cost(weight: "10")
lt: WarehouseType @cost(weight: "10")
nlt: WarehouseType @cost(weight: "10")
lte: WarehouseType @cost(weight: "10")
nlte: WarehouseType @cost(weight: "10")
}
input ComparableWarehouseValueSourceOperationFilterInput {
eq: WarehouseValueSource @cost(weight: "10")
neq: WarehouseValueSource @cost(weight: "10")
in: [WarehouseValueSource!] @cost(weight: "10")
nin: [WarehouseValueSource!] @cost(weight: "10")
gt: WarehouseValueSource @cost(weight: "10")
ngt: WarehouseValueSource @cost(weight: "10")
gte: WarehouseValueSource @cost(weight: "10")
ngte: WarehouseValueSource @cost(weight: "10")
lt: WarehouseValueSource @cost(weight: "10")
nlt: WarehouseValueSource @cost(weight: "10")
lte: WarehouseValueSource @cost(weight: "10")
nlte: WarehouseValueSource @cost(weight: "10")
}
input ComparableWarengruppeKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableWarenLagerEingangKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableWarenlagerKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableWarenLagerPlatzKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableWorkerSyncKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableWorkflowKeyOperationFilterInput {
eq: WorkflowKeyInput @cost(weight: "10")
neq: WorkflowKeyInput @cost(weight: "10")
in: [WorkflowKeyInput] @cost(weight: "10")
nin: [WorkflowKeyInput] @cost(weight: "10")
gt: WorkflowKeyInput @cost(weight: "10")
ngt: WorkflowKeyInput @cost(weight: "10")
gte: WorkflowKeyInput @cost(weight: "10")
ngte: WorkflowKeyInput @cost(weight: "10")
lt: WorkflowKeyInput @cost(weight: "10")
nlt: WorkflowKeyInput @cost(weight: "10")
lte: WorkflowKeyInput @cost(weight: "10")
nlte: WorkflowKeyInput @cost(weight: "10")
}
input ComparableWorkflowLogLevelOperationFilterInput {
eq: WorkflowLogLevel @cost(weight: "10")
neq: WorkflowLogLevel @cost(weight: "10")
in: [WorkflowLogLevel!] @cost(weight: "10")
nin: [WorkflowLogLevel!] @cost(weight: "10")
gt: WorkflowLogLevel @cost(weight: "10")
ngt: WorkflowLogLevel @cost(weight: "10")
gte: WorkflowLogLevel @cost(weight: "10")
ngte: WorkflowLogLevel @cost(weight: "10")
lt: WorkflowLogLevel @cost(weight: "10")
nlt: WorkflowLogLevel @cost(weight: "10")
lte: WorkflowLogLevel @cost(weight: "10")
nlte: WorkflowLogLevel @cost(weight: "10")
}
input ComparableWorkflowQueueStatusOperationFilterInput {
eq: WorkflowQueueStatus @cost(weight: "10")
neq: WorkflowQueueStatus @cost(weight: "10")
in: [WorkflowQueueStatus!] @cost(weight: "10")
nin: [WorkflowQueueStatus!] @cost(weight: "10")
gt: WorkflowQueueStatus @cost(weight: "10")
ngt: WorkflowQueueStatus @cost(weight: "10")
gte: WorkflowQueueStatus @cost(weight: "10")
ngte: WorkflowQueueStatus @cost(weight: "10")
lt: WorkflowQueueStatus @cost(weight: "10")
nlt: WorkflowQueueStatus @cost(weight: "10")
lte: WorkflowQueueStatus @cost(weight: "10")
nlte: WorkflowQueueStatus @cost(weight: "10")
}
input ComparableZahlungKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableZahlungsabgleichAusgangKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableZahlungsabgleichKontoKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableZahlungsabgleichUmsatzKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableZahlungsanbieterKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableZahlungsartKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableZahlungsErinnerungKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
input ComparableZustandKeyOperationFilterInput {
eq: ID @cost(weight: "10")
neq: ID @cost(weight: "10")
in: [ID] @cost(weight: "10")
nin: [ID] @cost(weight: "10")
gt: ID @cost(weight: "10")
ngt: ID @cost(weight: "10")
gte: ID @cost(weight: "10")
ngte: ID @cost(weight: "10")
lt: ID @cost(weight: "10")
nlt: ID @cost(weight: "10")
lte: ID @cost(weight: "10")
nlte: ID @cost(weight: "10")
}
"Completes the OAuth sign-in with the redirect the client has caught. The client hands over the complete redirect address as it received it, so that an error of the provider is not lost. Wawi exchanges the code for tokens, stores them, reads the e-mail address from the id token and sets user name, sender address and mail server from it and from the provider; a stored password is deleted. The tokens never appear in a response, a log or a problem detail. - Request"
input CompleteCompanyEmailOAuthCommandRequestInput {
"The ID of the company."
companyId: ID!
"The complete redirect address with its query (code and state, or error), at most 4000 characters."
responseUri: String!
}
"Completes a purchase order by hand, also with quantities still undelivered: they are no longer expected, but the line items stay as they are (use 'CancelPurchaseOrder' to reduce them). The requested delivery date becomes the day of completion. An order sent to the fulfillment network is closed there first. Raises the workflow events 'completed' and 'changed'. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: PURCHASE_ORDER_NOT_FOUND (the order was not found); PURCHASE_ORDER_NOT_RELEASED (an order to a warehouse that is not released); PURCHASE_ORDER_NOT_SENT (a drop shipping order that was not sent); PURCHASE_ORDER_COMPLETED (the order is completed already); PURCHASE_ORDER_FULFILLMENT_INBOUND_NOT_CLOSED (the order cannot be closed in the fulfillment network). - Request"
input CompletePurchaseOrderCommandRequestInput {
"The ID of the purchase order."
purchaseOrderId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Marks a sales order as delivered without a delivery note and without stock posting. Codes: see 'salesOrderId'. - Request"
input CompleteSalesOrderWithoutShippingCommandRequestInput {
"The ID of the sales order. Fails with a GraphQL error whose extensions.code is SalesOrderNotFound or SalesOrderCannotBeCompletedWithoutShipping."
salesOrderId: ID!
"The delivery date stored on the sales order. Defaults to now."
completedAt: DateTime
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"An item that is sold as a condition variant of the item, for example used or refurbished. It is a normal item that carries its own condition."
input ConditionItemFilterInput {
and: [ConditionItemFilterInput!]
or: [ConditionItemFilterInput!]
"The ID of the condition item."
id: ComparableArtikelKeyOperationFilterInput
"The condition of the condition item. Absent when it has none."
conditionId: ComparableZustandKeyOperationFilterInput
}
"An item that is sold as a condition variant of the item, for example used or refurbished. It is a normal item that carries its own condition."
input ConditionItemSortInput {
"The ID of the condition item."
id: ArtikelKeySortInput @cost(weight: "10")
}
"A configuration group offered by a configurable item."
input ConfigurationGroupReferenceFilterInput {
and: [ConfigurationGroupReferenceFilterInput!]
or: [ConfigurationGroupReferenceFilterInput!]
"The ID of the configuration group."
configurationGroupId: ComparableKonfiggruppeKeyOperationFilterInput
}
"A configuration group offered by a configurable item."
input ConfigurationGroupReferenceInput {
"The ID of the configuration group."
configurationGroupId: ID!
"Zero-based position of the group within the item."
position: Int!
}
"A configuration group offered by a configurable item."
input ConfigurationGroupReferenceSortInput {
"The ID of the configuration group."
configurationGroupId: KonfiggruppeKeySortInput @cost(weight: "10")
"Zero-based position of the group within the item."
position: SortEnumType @cost(weight: "10")
}
"Marks a price inquiry as confirmed, usually because the supplier has answered. Confirming a confirmed price inquiry changes nothing and succeeds. Raises the workflow event 'confirmed'. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: PRICE_INQUIRY_NOT_FOUND (the price inquiry was not found). - Request"
input ConfirmPriceInquiryCommandRequestInput {
"The ID of the price inquiry."
priceInquiryId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Records that the supplier has confirmed the purchase order, in every status. Confirming a confirmed order changes nothing and succeeds. Quantities, dates and prices the supplier confirmed per line are set with 'SetPurchaseOrderLineItemConfirmation'. Raises the workflow event 'confirmed'. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: PURCHASE_ORDER_NOT_FOUND (the order was not found). - Request"
input ConfirmPurchaseOrderCommandRequestInput {
"The ID of the purchase order."
purchaseOrderId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a purchase order from a price inquiry: header, addresses and the item and custom lines with the prices that were entered. The order keeps the currency, exchange rate and language of the price inquiry, so the entered prices stay in that currency; its requested delivery date is today plus the supplier's delivery time, or plus 14 days when the supplier has none. Allowances and charges of the price inquiry are not taken over. The order gets a number from the number range of purchase orders and starts as 'Open' when the ERP requires purchase orders to be released, else as 'Released'; the ERP adds the allowances and charges of the supplier as for every order. The order does not remember the price inquiry, and the price inquiry stays unless 'deletePriceInquiry' is set. Raises the workflow event 'created' of the new purchase order (and 'changed' and 'released' as 'CreatePurchaseOrder' does). Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: PRICE_INQUIRY_NOT_FOUND (the price inquiry was not found); SUPPLIER_INACTIVE (the supplier is not active); WAREHOUSE_REQUIRED (the price inquiry has no warehouse and the supplier has no default warehouse); WAREHOUSE_NOT_USABLE (the warehouse of the price inquiry is inactive or a drop shipping target); - Request"
input ConvertPriceInquiryToPurchaseOrderCommandRequestInput {
"The ID of the price inquiry."
priceInquiryId: ID!
"A temporary identifier chosen by the client, for example to match the answer to an optimistic update. It is not stored and is returned unchanged."
clientId: String
"Whether to delete the price inquiry after the order was created. Defaults to false."
deletePriceInquiry: Boolean
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Turns an automatically created shipping method into an own one, so that it can be changed. A mapping to another own shipping method is removed. Orders and packages that were already moved to the other shipping method stay there. For an own shipping method nothing changes. errorCode is SHIPPING_METHOD_NOT_FOUND. - Request"
input ConvertShippingMethodToOwnCommandRequestInput {
"The ID of the shipping method."
shippingMethodId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Makes an item a configurable item, or, when it already is of this kind, replaces the values that belong to the kind. A regular item. Every other kind has to be turned back into a regular item first by 'PUT items/{itemId}/regular'. The request carries exactly the fields the kind has as mandatory or optional; nothing is carried over implicitly from the old kind, and the common fields of the item stay as they are. The fields of the kind that are not sent stay empty or take their default. - Request"
input ConvertToConfigurableItemCommandRequestInput {
"The ID of the item."
itemId: ID!
"The configuration groups of the item. At least one."
configurationGroups: [ConfigurationGroupReferenceInput]!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Makes an item an item with stock managed in fractional quantities, or, when it already is of this kind, replaces the values that belong to the kind. A regular item or an item of one of the other two stock kinds (StockItem, DivisibleStockItem, SubsetStockItem). Every other kind has to be turned back into a regular item first by 'PUT items/{itemId}/regular'. The request carries exactly the fields the kind has as mandatory or optional; nothing is carried over implicitly from the old kind, and the common fields of the item stay as they are. The fields of the kind that are not sent stay empty or take their default. - Request"
input ConvertToDivisibleStockItemCommandRequestInput {
"The ID of the item."
itemId: ID!
"Settings of the stock management of the new kind."
stockManagement: StockManagementInput!
"What the stock postings carry to trace the lots. Omitted means none."
lotTracking: LotTrackingType
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Makes an item a kit (bill of materials), or, when it already is of this kind, replaces the values that belong to the kind. A regular item. Every other kind has to be turned back into a regular item first by 'PUT items/{itemId}/regular'. The request carries exactly the fields the kind has as mandatory or optional; nothing is carried over implicitly from the old kind, and the common fields of the item stay as they are. The fields of the kind that are not sent stay empty or take their default. - Request"
input ConvertToKitItemCommandRequestInput {
"The ID of the item."
itemId: ID!
"The components of the kit. At least one."
components: [NewKitComponentInput]!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Makes an item a multi-purpose voucher item, or, when it already is of this kind, replaces the values that belong to the kind. A regular item. Every other kind has to be turned back into a regular item first by 'PUT items/{itemId}/regular'. The request carries exactly the fields the kind has as mandatory or optional; nothing is carried over implicitly from the old kind, and the common fields of the item stay as they are. The fields of the kind that are not sent stay empty or take their default. - Request"
input ConvertToMultiPurposeVoucherItemCommandRequestInput {
"The ID of the item."
itemId: ID!
"Settings of the voucher that is sold."
voucher: VoucherSettingsInput!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Makes an item a packaging item, or, when it already is of this kind, replaces the values that belong to the kind. A regular item. Every other kind has to be turned back into a regular item first by 'PUT items/{itemId}/regular'. The request carries exactly the fields the kind has as mandatory or optional; nothing is carried over implicitly from the old kind, and the common fields of the item stay as they are. The fields of the kind that are not sent stay empty or take their default. - Request"
input ConvertToPackagingItemCommandRequestInput {
"The ID of the item."
itemId: ID!
"Settings of the stock management of the packaging."
stockManagement: StockManagementInput!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Turns an item back into a regular item, whatever its kind is. Idempotent: an item that is a regular item already stays as it is. The item itself stays; it only loses what makes it a kind, and everything that kind carried (components, axes, voucher settings, stock settings) is removed and cannot be restored by converting again. Every trait that applies to the item is removed, not only the kind (see 'traits'), so nothing is lost silently. A change with consequences is refused with 409, an error code and all blockers: an item that still has stock is refused unless 'writeOffExistingStock' is set (ITEM_HAS_STOCK), and so are kits used in documents, variation parents with combinations or vouchers that were issued. A variation parent that still has combinations is refused (VARIATION_HAS_COMBINATIONS): remove its combinations first, one call each with 'RemoveVariationCombination'. Turning back an item that is itself a combination keeps it a combination with the categories of its parent. - Request"
input ConvertToRegularItemCommandRequestInput {
"The ID of the item."
itemId: ID!
"Writes off the stock the item still has so that the change can go through. Defaults to false when omitted; then an item with stock is refused with 409."
writeOffExistingStock: Boolean
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Makes an item a single-purpose voucher item, or, when it already is of this kind, replaces the values that belong to the kind. A regular item. Every other kind has to be turned back into a regular item first by 'PUT items/{itemId}/regular'. The request carries exactly the fields the kind has as mandatory or optional; nothing is carried over implicitly from the old kind, and the common fields of the item stay as they are. The fields of the kind that are not sent stay empty or take their default. - Request"
input ConvertToSinglePurposeVoucherItemCommandRequestInput {
"The ID of the item."
itemId: ID!
"Settings of the voucher that is sold."
voucher: VoucherSettingsInput!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Makes an item an item with stock managed in whole units, or, when it already is of this kind, replaces the values that belong to the kind. A regular item or an item of one of the other two stock kinds (StockItem, DivisibleStockItem, SubsetStockItem). Every other kind has to be turned back into a regular item first by 'PUT items/{itemId}/regular'. The request carries exactly the fields the kind has as mandatory or optional; nothing is carried over implicitly from the old kind, and the common fields of the item stay as they are. The fields of the kind that are not sent stay empty or take their default. - Request"
input ConvertToStockItemCommandRequestInput {
"The ID of the item."
itemId: ID!
"Settings of the stock management of the new kind."
stockManagement: StockManagementInput!
"How the units are traced. Omitted means not traced."
tracking: StockTrackingInput
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Makes an item an item with stock managed in subsets, or, when it already is of this kind, replaces the values that belong to the kind. A regular item or an item of one of the other two stock kinds (StockItem, DivisibleStockItem, SubsetStockItem). Every other kind has to be turned back into a regular item first by 'PUT items/{itemId}/regular'. The request carries exactly the fields the kind has as mandatory or optional; nothing is carried over implicitly from the old kind, and the common fields of the item stay as they are. The fields of the kind that are not sent stay empty or take their default. - Request"
input ConvertToSubsetStockItemCommandRequestInput {
"The ID of the item."
itemId: ID!
"Settings of the stock management of the new kind."
stockManagement: StockManagementInput!
"The dimension set of the item."
dimensionSetId: ID!
"One value per dimension of the dimension set."
subsetDimensions: [SubsetDimensionValueInput]!
"How much of the item is reserved for production."
reservation: SubsetReservationInput!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Makes an item the parent of a variation combination, or, when it already is of this kind, replaces the values that belong to the kind. A regular item. Every other kind has to be turned back into a regular item first by 'PUT items/{itemId}/regular'. The request carries exactly the fields the kind has as mandatory or optional; nothing is carried over implicitly from the old kind, and the common fields of the item stay as they are. The fields of the kind that are not sent stay empty or take their default. - Request"
input ConvertToVariationParentItemCommandRequestInput {
"The ID of the item."
itemId: ID!
"The variation axes with their values, added after the selection variations of the item, which become the first axes with their values (the same data). At least one axis in total: the list may be empty when the item has a selection variation. The free-text variations stay with the parent."
variationAxes: [NewVariationAxisInput]!
"The combinations. At least one: a variation parent without a combination cannot be sold. The item itself keeps its categories (it needs one); an existing item that becomes a combination gets those of the parent."
combinations: [CombinationInput]!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Copies a template with its layouts and assignments, into the same or another template set of the same document type. Errors: 404 TEMPLATE_NOT_FOUND, TEMPLATE_SET_NOT_FOUND; 409 TEMPLATE_NAME_DUPLICATE; 422 OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the target set belongs to another document type). GraphQL only (new API rule). - Request"
input CopyOutputTemplateCommandRequestInput {
"The ID of the template."
templateId: ID!
"The name of the copy."
name: String!
"The template set the copy goes to. Empty: the set of the original."
templateSetId: ID
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a new price inquiry as a copy of another one: header, addresses and the lines with their quantities and prices. It gets a new number and the requested delivery date and the dates of the lines of a new price inquiry; it has no print or mail date and is not confirmed. Allowances and charges are not copied. Copy to another supplier to ask several suppliers the same: the copy takes that supplier's currency, exchange rate and language and keeps the prices unconverted; its supplier address is the new supplier's, the contact person is cleared, and the supplier SKU and supplier item name of the item lines are those of the new supplier's items, or empty. A price inquiry raises no workflow events. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: PRICE_INQUIRY_NOT_FOUND (the source was not found); SUPPLIER_NOT_FOUND (the other supplier was not found); SUPPLIER_INACTIVE (the other supplier is not active); SUPPLIER_CURRENCY_NOT_RESOLVABLE or SUPPLIER_LANGUAGE_NOT_RESOLVABLE (the other supplier's currency or language is missing in the ERP). - Request"
input CopyPriceInquiryCommandRequestInput {
"The ID of the price inquiry."
priceInquiryId: ID!
"A temporary identifier chosen by the client, for example to match the answer to an optimistic update. It is not stored and is returned unchanged."
clientId: String
"Another supplier for the copy, an active one. Items are not checked against the new supplier. When omitted, the supplier of the source."
supplierId: ID
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a new purchase order as a copy of another one, of the same kind and in every status of the source: header, addresses and the item and custom lines with their quantities and prices. It gets a new number, starts as a new order of its kind would ('Open' or 'Released'; 'Released' for drop shipping), and has no deliveries, no confirmation and no output dates; the requested delivery date and the dates of the lines are today plus the supplier's delivery time. Allowances and charges are computed anew. Raises the workflow event 'created'; an order that starts released also raises 'changed', and an order to a warehouse 'released' as well. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: PURCHASE_ORDER_NOT_FOUND (the source order was not found); SUPPLIER_NOT_FOUND (the other supplier was not found); SUPPLIER_INACTIVE (the other supplier is not active). - Request"
input CopyPurchaseOrderCommandRequestInput {
"The ID of the purchase order."
purchaseOrderId: ID!
"A temporary identifier chosen by the client, for example to match the answer to an optimistic update. It is not stored and is returned unchanged."
clientId: String
"Another supplier for the copy, an active one. The copy takes its currency, exchange rate and language; prices and supplier numbers are kept as they are, and items are not checked against the new supplier. When omitted, the supplier of the source."
supplierId: ID
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"A country as Wawi knows it: the countries addresses refer to. The ISO code is the identity; it cannot be changed, and countries are neither created nor deleted through this API."
input CountryFilterInput {
and: [CountryFilterInput!]
or: [CountryFilterInput!]
"The ISO 3166-1 alpha-2 code of the country, two uppercase letters. This is the code every other resource uses for a country."
code: StringOperationFilterInput
"The ISO 3166-1 alpha-3 code of the country, empty if none is stored."
iso3Code: StringOperationFilterInput
"The numeric code of the country, ISO 3166-1 numeric for the countries delivered with Wawi."
isoNumericCode: ComparableInt32OperationFilterInput
"The continent of the country, empty if none is assigned."
continent: ComparableNullableOfContinentOperationFilterInput
"The ISO 4217 code of the currency used in the country, empty if none is stored."
currencyCode: StringOperationFilterInput
"Whether the country is a member of the European Union. Wawi uses it to decide between domestic, intra-community and export tax treatment and whether customs documents are needed."
isEuMember: ComparableBooleanOperationFilterInput
}
"A country as Wawi knows it: the countries addresses refer to. The ISO code is the identity; it cannot be changed, and countries are neither created nor deleted through this API."
input CountrySortInput {
"The ISO 3166-1 alpha-2 code of the country, two uppercase letters. This is the code every other resource uses for a country."
code: SortEnumType @cost(weight: "10")
"The ISO 3166-1 alpha-3 code of the country, empty if none is stored."
iso3Code: SortEnumType @cost(weight: "10")
"The continent of the country, empty if none is assigned."
continent: SortEnumType @cost(weight: "10")
"Whether the country is a member of the European Union. Wawi uses it to decide between domestic, intra-community and export tax treatment and whether customs documents are needed."
isEuMember: SortEnumType @cost(weight: "10")
}
"A state, province or region of a country, for example a German federal state or a US state. The list is maintained by JTL; Wawi uses the states of the USA to determine tax."
input CountryStateFilterInput {
and: [CountryStateFilterInput!]
or: [CountryStateFilterInput!]
"The full ISO 3166-2 code of the region, including the country prefix, for example DE-BW. Always upper case."
regionCode: StringOperationFilterInput
}
"A state, province or region of a country, for example a German federal state or a US state. The list is maintained by JTL; Wawi uses the states of the USA to determine tax."
input CountryStateSortInput {
"The full ISO 3166-2 code of the region, including the country prefix, for example DE-BW. Always upper case."
regionCode: SortEnumType @cost(weight: "10")
}
"Creates an additional cost type for incoming invoices. - Request"
input CreateAdditionalCostTypeCommandRequestInput {
"Name of the type, unique regardless of letter case. 1 to 255 characters."
name: String!
"Whether costs of this type are part of the amount payable to the supplier. Defaults to false."
isPayableToSupplier: Boolean
"Whether costs of this type are added to the purchase price of the items. Defaults to false."
affectsPurchasePrice: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates an advance shipping notice for a purchase order, in every status of the order, optionally with its packages and line items in one call. Without a number the ERP draws the next free number of the order. The expected delivery date defaults to the day of creation. An order can have any number of notices. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: an invalid request, for example a text with control characters; PURCHASE_ORDER_NOT_FOUND (the order was not found); ADVANCE_SHIPPING_NOTICE_NUMBER_DUPLICATE (another notice of the order has the number); ADVANCE_SHIPPING_NOTICE_PACKAGE_NUMBER_DUPLICATE (another package of the notice has the package number); ADVANCE_SHIPPING_NOTICE_WEIGHT_OUT_OF_RANGE (the weight is below 0 or above 1,000,000); ADVANCE_SHIPPING_NOTICE_DIMENSION_OUT_OF_RANGE (the width, height or depth is below 0 or above 1,000,000); ADVANCE_SHIPPING_NOTICE_IDENTIFIER_EMPTY (an identifier has an empty name or value); ADVANCE_SHIPPING_NOTICE_ITEM_NOT_ON_PURCHASE_ORDER (the item is not on the purchase order of the notice); ADVANCE_SHIPPING_NOTICE_PACKAGE_NUMBER_UNKNOWN (no package of the notice has the package number); ADVANCE_SHIPPING_NOTICE_QUANTITY_OUT_OF_RANGE or ADVANCE_SHIPPING_NOTICE_QUANTITY_NOT_WHOLE (the quantity is below 0, 10,000,000 or more, or not a whole number for an item that is not divisible); ADVANCE_SHIPPING_NOTICE_SERIAL_NUMBER_COUNT_MISMATCH (serial numbers were sent and their count is not the quantity); ADVANCE_SHIPPING_NOTICE_SERIAL_NUMBER_DUPLICATE (a serial number appears twice in the notice); ADVANCE_SHIPPING_NOTICE_BATCH_NOT_ALLOWED, ADVANCE_SHIPPING_NOTICE_SHELF_LIFE_EXPIRATION_DATE_NOT_ALLOWED or ADVANCE_SHIPPING_NOTICE_SERIAL_NUMBERS_NOT_ALLOWED (the item is not tracked that way). - Request"
input CreateAdvanceShippingNoticeCommandRequestInput {
"The ID of the purchase order."
purchaseOrderId: ID!
"A temporary identifier chosen by the client, for example to match the answer to an optimistic update. It is not stored and is returned unchanged."
clientId: String
"The number of the notice, unique within the purchase order. When omitted: the next free number of the order."
number: String
"When the delivery is expected. When omitted: the day of creation."
expectedDeliveryDate: DateTime
"A note on the notice. The ERP stores it without full Unicode support: characters it cannot store are replaced, typically by '?'."
note: String
"The packages. Empty or omitted: none."
packages: [AdvanceShippingNoticePackageCreationInput]!
"The line items. Empty or omitted: none. A line item refers to a package of this call by its package number."
lineItems: [AdvanceShippingNoticeLineItemCreationInput]!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a line item to an advance shipping notice. Line items are read with the notice ('GetAdvanceShippingNotice'). Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: an invalid request, for example a text with control characters; ADVANCE_SHIPPING_NOTICE_NOT_FOUND (the advance shipping notice was not found); ADVANCE_SHIPPING_NOTICE_ITEM_NOT_ON_PURCHASE_ORDER (the item is not on the purchase order of the notice); ADVANCE_SHIPPING_NOTICE_PACKAGE_NUMBER_UNKNOWN (no package of the notice has the package number); ADVANCE_SHIPPING_NOTICE_QUANTITY_OUT_OF_RANGE or ADVANCE_SHIPPING_NOTICE_QUANTITY_NOT_WHOLE (the quantity is below 0, 10,000,000 or more, or not a whole number for an item that is not divisible); ADVANCE_SHIPPING_NOTICE_SERIAL_NUMBER_COUNT_MISMATCH (serial numbers were sent and their count is not the quantity); ADVANCE_SHIPPING_NOTICE_SERIAL_NUMBER_DUPLICATE (a serial number appears twice in the notice); ADVANCE_SHIPPING_NOTICE_BATCH_NOT_ALLOWED, ADVANCE_SHIPPING_NOTICE_SHELF_LIFE_EXPIRATION_DATE_NOT_ALLOWED or ADVANCE_SHIPPING_NOTICE_SERIAL_NUMBERS_NOT_ALLOWED (the item is not tracked that way); ADVANCE_SHIPPING_NOTICE_MANAGED_BY_FULFILLMENT_NETWORK (the notice belongs to a fulfillment network inbound of another user and is read-only). - Request"
input CreateAdvanceShippingNoticeLineItemCommandRequestInput {
"The ID of the advance shipping notice."
advanceShippingNoticeId: ID!
"The new line item."
lineItem: AdvanceShippingNoticeLineItemCreationInput!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a package to an advance shipping notice. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: an invalid request, for example a text with control characters; ADVANCE_SHIPPING_NOTICE_NOT_FOUND (the advance shipping notice was not found); ADVANCE_SHIPPING_NOTICE_PACKAGE_NUMBER_DUPLICATE (another package of the notice has the package number); ADVANCE_SHIPPING_NOTICE_WEIGHT_OUT_OF_RANGE (the weight is below 0 or above 1,000,000); ADVANCE_SHIPPING_NOTICE_DIMENSION_OUT_OF_RANGE (the width, height or depth is below 0 or above 1,000,000); ADVANCE_SHIPPING_NOTICE_IDENTIFIER_EMPTY (an identifier has an empty name or value); ADVANCE_SHIPPING_NOTICE_MANAGED_BY_FULFILLMENT_NETWORK (the notice belongs to a fulfillment network inbound of another user and is read-only). - Request"
input CreateAdvanceShippingNoticePackageCommandRequestInput {
"The ID of the advance shipping notice."
advanceShippingNoticeId: ID!
"The new package."
package: AdvanceShippingNoticePackageCreationInput!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a child component of a bill of materials. The input is a one-of: exactly one variant is sent and it is the type of the new child component. The new child component is appended after the last child component of the parent component. Errors: the request is invalid; BillOfMaterialsComponentNotFound (the parent component was not found); BillOfMaterialsReadOnly (the bill of materials cannot be changed); a referenced item, measurement unit, operation step or configuration group was not found. - Request"
input CreateBillOfMaterialsChildComponentCommandRequestInput {
"The ID of the parent component."
parentId: ID!
"The data of the new child component. Exactly one variant."
component: CreateBillOfMaterialsChildComponentInput!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"The data of a new child component of a bill of materials. Polymorphic: exactly one variant is sent, and the variant is the type of the new child component."
input CreateBillOfMaterialsChildComponentInput @oneOf {
"Creates an item of a bill of materials."
billOfMaterialsItemCreation: BillOfMaterialsItemCreationInput
"Creates a configuration group of a bill of materials."
billOfMaterialsConfigurationGroupCreation: BillOfMaterialsConfigurationGroupCreationInput
}
"Creates a bill of materials for a production item together with its components. The new bill of materials is a draft. Errors: the request is invalid; ProductionItemNotFound (the production item was not found); BillOfMaterialsRequiresOperation (no parent component was sent); BillOfMaterialsRequiresItem (no item was sent across all parent components); a referenced operation, item, measurement unit, operation step or configuration group was not found. - Request"
input CreateBillOfMaterialsCommandRequestInput {
"The name of the bill of materials. Must not consist of white space only."
name: String!
"The description of the bill of materials. When omitted or when it consists of white space only, the bill of materials has no description."
description: String
"Requirements for the production input of all components of this bill of materials regarding the shelf life end dates of the stock accounts to be debited. This requirement can be overridden for individual items. When omitted, None is used. Must not be set to a value other than None if no item of the bill of materials has stock keeping with shelf life end date configured."
componentPostingsShelfLifeEndDateRequirements: OverallComponentPostingsInventoryAccountingDataRequirements
"Requirements for the production input of all components of this bill of materials regarding the batch numbers of the stock accounts to be debited. This requirement can be overridden for individual items. When omitted, None is used. Must not be set to a value other than None if no item of the bill of materials has stock keeping with batch number configured."
componentPostingsBatchNumberRequirements: OverallComponentPostingsInventoryAccountingDataRequirements
"Indicates how the shelf life end date of the produced item is calculated after completing a lot. When omitted, no shelf life end date is calculated."
shelfLifeEndDateGenerationMode: ShelfLifeEndDateGenerationMode
"A time span that is added when calculating the shelf life end date of the produced item after completing a lot. Required when ShelfLifeEndDateGenerationMode is ProductionDate; optional when it is Earliest or Latest; ignored when it is omitted."
additionalShelfLifeEndDateTime: TimeSpan
"How far the actually used quantity of the items may exceed their planned quantity. This configuration can be overridden for individual items. When omitted, it must not exceed it."
upwardQuantityDeviation: QuantityDeviationConfigurationInput
"How far the actually used quantity of the items may fall below their planned quantity. This configuration can be overridden for individual items. When omitted, it must not fall below it."
downwardQuantityDeviation: QuantityDeviationConfigurationInput
"The ID of the production item that is produced with the new bill of materials."
productionItemId: ID!
"The parent components (operations) of the new bill of materials, each optionally with its child components. Their order in the list becomes their order within the bill of materials. At least one parent component is required, and across all parent components at least one item must be present."
children: [CreateBillOfMaterialsParentComponentInput]!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a parent component of a bill of materials, optionally together with its child components. The input is a one-of: exactly one variant is sent and it is the type of the new parent component. The new parent component is appended after the last parent component of the bill of materials. Errors: the request is invalid; BillOfMaterialsNotFound (the bill of materials was not found); BillOfMaterialsReadOnly (the bill of materials cannot be changed); a referenced operation, item, measurement unit, operation step or configuration group was not found. - Request"
input CreateBillOfMaterialsParentComponentCommandRequestInput {
"The ID of the bill of materials."
billOfMaterialsId: ID!
"The data of the new parent component. Exactly one variant."
component: CreateBillOfMaterialsParentComponentInput!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"The data of a new parent component of a bill of materials. Polymorphic: exactly one variant is sent, and the variant is the type of the new parent component."
input CreateBillOfMaterialsParentComponentInput @oneOf {
"Creates an operation of a bill of materials. It is appended after the last parent component of the bill of materials."
billOfMaterialsOperationCreation: BillOfMaterialsOperationCreationInput
}
"Creates a category. The name is the name in the default language. Without a sort number the category is put at the end of its siblings. Further texts, images, customer groups and custom fields are added with their own operations afterwards. - Request"
input CreateCategoryCommandRequestInput {
"The name of the category in the default language, at most 255 characters."
name: String!
"The ID of the parent category. Omitted or null means the top level."
parentId: ID
"The sales channels the category is activated in. Omitted means none. Every sales channel has to be one the category can be activated in."
salesChannels: [CategorySalesChannelActivationInput]
"The position among the siblings, 0 to 65000. Categories with the same number are ordered by their name. Omitted means the category is put at the end of its siblings."
sortNumber: Int
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a characteristic. The new characteristic is put at the end of the order. Add its values with 'CreateCharacteristicValue'. Errors: CHARACTERISTIC_DISPLAY_TYPE_INVALID (the display type is not one of the known values), CHARACTERISTIC_NAME_REQUIRED (the name in the default language is missing or empty), CHARACTERISTIC_LANGUAGE_NOT_FOUND (a language is unknown or not active), CHARACTERISTIC_GROUP_NOT_FOUND (a group does not exist), CHARACTERISTIC_NAME_ALREADY_EXISTS (another characteristic has this name in the default language, regardless of upper and lower case). - Request"
input CreateCharacteristicCommandRequestInput {
"The names per language. The name in the default language is required; the other active languages are optional. One entry per language."
names: [CharacteristicNameInput]!
"How the values are presented to customers in the online shop: TEXT, SELECT_BOX, IMAGE or IMAGE_AND_TEXT. Defaults to TEXT when omitted. Any other value is refused (error code CHARACTERISTIC_DISPLAY_TYPE_INVALID)."
displayType: String
"Allows several values per item. Defaults to false."
isMultiSelect: Boolean
"Shows the characteristic to customers in the online shop. Defaults to true."
isVisibleInShop: Boolean
"Transfers the characteristic to eBay as an item specific. Defaults to false."
isEbayAttribute: Boolean
"The groups the characteristic belongs to. Defaults to none."
groups: [CharacteristicGroupAssignmentInput]
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a characteristic group. Errors: CHARACTERISTIC_GROUP_NAME_REQUIRED (the name is empty or consists of spaces only); CHARACTERISTIC_GROUP_NAME_ALREADY_EXISTS (another group has this name, regardless of upper and lower case). Assign characteristics to the group with 'CreateCharacteristic' and 'UpdateCharacteristic'. - Request"
input CreateCharacteristicGroupCommandRequestInput {
"The name of the group."
name: String!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a value of a characteristic. The new value is put at the end of the order of the characteristic. Errors: CHARACTERISTIC_NOT_FOUND (the characteristic does not exist); CHARACTERISTIC_VALUE_NAME_REQUIRED (no text has a name), CHARACTERISTIC_LANGUAGE_NOT_FOUND (a language is unknown or not active), CHARACTERISTIC_VALUE_URL_PATH_INVALID (a URL path contains characters that are not allowed, starts or ends with '-' or contains '--'), CHARACTERISTIC_VALUE_URL_PATH_FORBIDDEN_SEGMENT (a URL path contains a reserved segment), CHARACTERISTIC_VALUE_NAME_ALREADY_EXISTS (another value of the characteristic has this name in the same language, regardless of upper and lower case), CHARACTERISTIC_VALUE_URL_PATH_ALREADY_EXISTS (another value uses this URL path in the same language). - Request"
input CreateCharacteristicValueCommandRequestInput {
"The ID of the characteristic."
characteristicId: ID!
"The texts per language. At least one language needs a name. One entry per language."
texts: [CharacteristicValueTextInput]!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates an active company. The country of the address gets its VAT ID entry as a shipping country, empty until a VAT ID is set. The company is not assigned to any user: who may work in it is decided with the users. Tax settings and number ranges are not created and have to be set up in their own resources before the company can be used for documents. - Request"
input CreateCompanyCommandRequestInput {
"The name of the company, at most 255 characters. It must be unique among the active companies."
name: String!
"The owner or managing director, at most 255 characters."
owner: String
"The postal address."
address: CompanyAddressInput!
"Phone number, at most 50 characters."
phoneNumber: String
"Fax number, at most 30 characters."
faxNumber: String
"E-mail address of the company, at most 255 characters, exactly one '@'."
emailAddress: String
"Website, at most 255 characters."
website: String
"The national tax number, at most 25 characters."
taxNumber: String
"Whether the company is a small business under the small-business scheme."
isSmallBusiness: Boolean!
"The SEPA creditor identifier, at most 35 characters."
sepaCreditorId: String
"The PayPal account, at most 250 characters."
payPalEmailAddress: String
"The bank account."
bankAccount: CompanyBankAccountInput
"The DHL Intraship customer number, at most 15 characters."
dhlIntrashipCustomerId: String
"The UPS customer number, at most 15 characters."
upsCustomerId: String
"The GLN base number, 7 to 9 digits."
glnBaseNumber: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a new ConfigurableItem in one call. The request carries exactly the fields of this kind: mandatory ones, optional ones, and none of those the kind does not have. The item is valid right away: item number, name, at least one category and the mandatory fields of the kind are required. Everything else, such as prices, descriptions in further languages, suppliers and images, is added through its own sub-resource. - Request"
input CreateConfigurableItemCommandRequestInput {
"Name of the item in the default language. Further languages and sales channel texts are the descriptions of the item."
name: String!
"The identifiers of the item. The item number (SKU) is mandatory and unique."
identifiers: TradeItemIdentifiersInput!
"The IDs of the categories the new item is assigned to. At least one: every item that is not a combination of a variation parent has a category, and an item without one is not valid (an empty list is refused with 400). A combination takes over the categories of its parent and is created through the combinations of the parent, which have no such field. Further assignments are made through the categories of the item."
categoryIds: [ID]!
"Whether the item is active. Defaults to true when omitted."
isActive: Boolean
"The ID of the product group."
productGroupId: ID
"The ID of the manufacturer."
manufacturerId: ID
"The ID of the item condition, for example new or used."
conditionId: ID
"The ID of the delivery status of the item (the master data of delivery statuses, for example \"in stock\" or \"ships in 3 days\")."
deliveryStatusId: ID
"The ID of the tax class. When omitted the item gets the company default. The value must reference an existing tax class."
taxClassId: ID
"The ID of the shipping class."
shippingClassId: ID
"Outer dimensions as shipped."
dimensions: ItemDimensionsInput
"Weights."
weights: ItemWeightsInput
"Customs information."
customs: ItemCustomsInput
"Sales unit and content with its base price."
units: ItemUnitsInput
"The configuration groups of the item. At least one."
configurationGroups: [ConfigurationGroupReferenceInput]!
"The characteristic values (German 'Merkmalwerte') assigned to the item. Omitted means none."
characteristicValueIds: [ID]
"The attribute values of the item, per attribute, sales channel and language. Omitted means none. The attributes the system derives itself, such as those of a voucher, cannot be sent."
attributes: [ItemAttributeInput]
"The custom field values of the item. Omitted means none. A custom field has to apply to the item, which depends on its product group."
customFields: [ItemCustomFieldInput]
"The free-text variations of the item (German 'Freitext'), added in the same call. Every kind can have them. Omitted means none. Refused with 409 for an item of the fulfillment network."
freeTextVariations: [NewFreeTextVariationInput]
"The simple selection variations of the item with their values, added in the same call. Only the kinds that allow them have this field; the reasons that forbid them for a given item are in 409 SELECTION_VARIATION_NOT_ALLOWED_FOR_ITEM_TYPE. Omitted means none."
selectionVariations: [NewSelectionVariationInput]
"The sales channels the item is activated in, set in the same call. The item has to be in a category that is active in each of them. Omitted means none; the item is activated afterwards through its sales channels."
salesChannels: [SalesChannelActivationInput]
"The prices of the item, created in the same call. Every part is the model of the matching prices route. Omitted means the item is created without prices and they are set through those routes."
prices: NewItemPricesInput
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a cross-selling group with its names in one or more languages. The default language must be among them. Errors: errorCode is CROSS_SELLING_GROUP_TRANSLATIONS_REQUIRED (no translation sent, an entry is null, or the default language is missing); CROSS_SELLING_GROUP_NAME_REQUIRED, CROSS_SELLING_GROUP_NAME_TOO_LONG (a name is empty, only spaces, or has more than 255 characters); CROSS_SELLING_GROUP_DESCRIPTION_TOO_LONG (a description has more than 255 characters); CROSS_SELLING_GROUP_LANGUAGE_NOT_ACTIVE (a language tag is not a language Wawi is set up for); CROSS_SELLING_GROUP_LANGUAGE_DUPLICATE (a language tag is sent twice); CROSS_SELLING_GROUP_NAME_ALREADY_EXISTS (another group has the same name in the default language, ignoring upper and lower case). - Request"
input CreateCrossSellingGroupCommandRequestInput {
"The names (and descriptions) of the group, one entry per language. At least one entry is required, and the default language must be among them; further languages are optional. A name in the default language must be unique among the cross-selling groups, ignoring upper and lower case."
translations: [NewCrossSellingGroupTranslationInput]!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a currency. The code is either a standard ISO 4217 code from 'ListStandardCurrencyCodes' or a tenant-defined code with the prefix 'x-'. The new currency is never the default currency and needs an exchange rate. Every change of the currencies is passed on to the connected shops. - Request"
input CreateCurrencyCommandRequestInput {
"The currency code. A standard currency uses its ISO 4217 alpha-3 code in capitals ('EUR'); a currency defined by the tenant uses a code with the prefix 'x-' in lower case ('x-loyalty'). Requests are matched ignoring case, responses always carry the canonical spelling."
code: String!
"The display name, 1 to 20 characters."
name: String!
"The currency symbol as plain text, 1 to 255 characters."
symbol: String!
"Units of this currency per unit of the default currency, at least 0.001."
exchangeRate: Decimal!
"The character between the whole part and the decimals, exactly one character."
decimalSeparator: String!
"The character between groups of thousands, at most one character. Omitted means none."
thousandsSeparator: String
"Where the symbol stands relative to the amount. Omitted means after the amount."
symbolPlacement: CurrencySymbolPlacement
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds an address to a customer. The first address of a type becomes its default. - Request"
input CreateCustomerAddressCommandRequestInput {
"The ID of the customer."
customerId: ID!
"The use of the address."
type: CustomerAddressType!
"Whether the address becomes the default of its type; the previous default stops being it. Omitted means no, except for the first address of a type."
isDefault: Boolean
"The company name, at most 128 characters. Omitted means none."
companyName: String
"An addition to the company name, at most 60 characters. Omitted means none."
companyAddition: String
"The salutation, at most 30 characters. Omitted means none."
salutation: String
"The academic title, at most 64 characters. Omitted means none."
title: String
"The first name, at most 255 characters. Omitted means none."
firstName: String
"The last name, at most 255 characters. Omitted means none."
lastName: String
"Street and house number, at most 255 characters. Omitted means none."
street: String
"An addition to the address, at most 255 characters. Omitted means none."
addressAddition: String
"The postal code, at most 24 characters. Omitted means none."
postalCode: String
"The city, at most 255 characters. Omitted means none."
city: String
"The state or region, at most 255 characters. Omitted means none."
state: String
"The country as ISO 3166-1 alpha-2 code, 2 characters."
countryCode: String!
"The email address, at most 255 characters. Omitted means none."
email: String
"The phone number, at most 30 characters. Omitted means none."
phone: String
"The mobile number, at most 30 characters. Omitted means none."
mobile: String
"The fax number, at most 30 characters. Omitted means none."
fax: String
"The post number for parcel lockers, at most 255 characters. Omitted means none."
postId: String
"The VAT identification number, at most 20 characters. Omitted means none."
vatId: String
"The Global Location Number, at most 13 characters. Omitted means none."
gln: String
"Suppresses the automatic workflow triggers of this call (the customer event 'changed'). Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a bank account to a customer. It needs an IBAN or a national account number. The first bank account becomes the default. - Request"
input CreateCustomerBankAccountCommandRequestInput {
"The ID of the customer."
customerId: ID!
"The account holder, 1 to 255 characters."
accountHolder: String!
"The name of the bank, at most 255 characters. Omitted means none."
bankName: String
"The IBAN, at most 34 characters, with a valid check sum. Spaces are removed. Omitted means none."
iban: String
"The BIC, 8 or 11 characters. Omitted means none."
bic: String
"The national bank code for accounts without IBAN, at most 32 characters. Omitted means none."
bankCode: String
"The national account number for accounts without IBAN, at most 32 characters. Omitted means none."
accountNumber: String
"Whether the account becomes the default; the previous default stops being it. Omitted means no, except for the first account."
isDefault: Boolean
"Suppresses the automatic workflow triggers of this call (the customer event 'changed'). Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a customer category. - Request"
input CreateCustomerCategoryCommandRequestInput {
"The name, 1 to 128 characters, unique (not case-sensitive)."
name: String!
"Suppresses the automatic workflow triggers of this call. Customer categories raise no workflow event today; the parameter keeps calls stable when one is added. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a customer with its default billing address and, optionally, a default shipping address. Contacts, bank accounts, notes, custom field values and labels are added with their own operations. - Request"
input CreateCustomerCommandRequestInput {
"The customer number, at most 30 characters, unique within the tenant. Omitted means the next number of the number range."
number: String
"The debtor number for accounting. Omitted means none."
debtorNumber: Int
"The customer group. Omitted means the default customer group."
customerGroupId: ID
"The customer category. Omitted means none."
customerCategoryId: ID
"The customer print text set that documents of this customer print. Omitted means none; the customer group's set applies then, if it has one. A customer print text is maintained in the customer print text API (errorCode is CUSTOMER_PRINT_TEXT_NOT_FOUND)."
customerPrintTextId: ID
"The own company the customer belongs to. Omitted means all companies."
companyId: ID
"The language as BCP 47 language tag, for example de or de-AT: language subtag in lower case, region subtag in upper case. Case does not matter on input. Wawi currently holds only the two-letter language subtag. It must be a language used in Wawi. Omitted means the default language."
languageTag: String
"The payment terms. Omitted means none."
paymentTerms: NewCustomerPaymentTermsInput
"The discount in percent, 0 to 100. Omitted means 0."
discountPercent: Decimal
"The credit limit in the default currency of the tenant, a whole amount greater than 0. Omitted means no limit."
creditLimit: Decimal
"Where the first contact came from, at most 255 characters."
origin: String
"The date of birth. Only the date part is stored."
birthDate: DateTime
"The website, at most 255 characters."
website: String
"The tax number, at most 255 characters."
taxNumber: String
"The commercial register number, at most 255 characters."
commercialRegisterNumber: String
"Since when the customer exists. Omitted means now. Set it when customers are taken over from another system."
customerSince: DateTime
"The default billing address. It needs a last name or a company name, a street, a city and a country."
billingAddress: NewCustomerAddressInput!
"A default shipping address. Omitted means none; goods then go to the billing address."
shippingAddress: NewCustomerAddressInput
"Suppresses the automatic workflow triggers of this call (the customer event 'created'). Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a contact to a customer. - Request"
input CreateCustomerContactCommandRequestInput {
"The ID of the customer."
customerId: ID!
"The salutation, at most 255 characters. Omitted means none."
salutation: String
"The first name, 1 to 255 characters."
firstName: String!
"The last name, 1 to 64 characters."
lastName: String!
"The department, at most 255 characters. Omitted means none."
department: String
"The email address, at most 255 characters. Omitted means none."
email: String
"The phone number, at most 32 characters. Omitted means none."
phone: String
"The mobile number, at most 32 characters. Omitted means none."
mobile: String
"The fax number, at most 32 characters. Omitted means none."
fax: String
"Suppresses the automatic workflow triggers of this call (the customer event 'changed'). Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a customer group. It is not the default group; see 'MakeCustomerGroupDefault'. - Request"
input CreateCustomerGroupCommandRequestInput {
"The name, 1 to 255 characters, unique (not case-sensitive)."
name: String!
"The discount in percent, 0 to 100. Omitted means 0."
discountPercent: Decimal
"Whether online shops show net prices. Omitted means no."
displaysNetPrices: Boolean
"The customer print text set of the group. Omitted means none (errorCode is CUSTOMER_PRINT_TEXT_NOT_FOUND)."
customerPrintTextId: ID
"Suppresses the automatic workflow triggers of this call. Customer groups raise no workflow event today; the parameter keeps calls stable when one is added. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a note to a customer. The user of the request becomes its author. - Request"
input CreateCustomerNoteCommandRequestInput {
"The ID of the customer."
customerId: ID!
"The text, not empty."
text: String!
"The kind of note. Omitted means 'Text'."
type: CustomerNoteType
"A sales order of this customer the note is about. Omitted means none."
salesOrderId: ID
"Suppresses the automatic workflow triggers of this call (the customer event 'changed'). Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a customer print text without texts: add the texts per language with 'UpdateCustomerPrintTextTranslation'. - Request"
input CreateCustomerPrintTextCommandRequestInput {
"The name, 1 to 255 characters."
name: String!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Requests a shipping label for every package of a delivery note that has no tracking number yet. Every package is handled on its own: a failed package does not stop the others, and its result says why. For each created label: The label is requested from the shipping service the package's shipping method is mapped to, without any dialog. The tracking number and the shipment reference of the label are written to the package, and the package is marked as shipped at the time of the label; when the last open package of the delivery note is shipped, the delivery note counts as shipped and its shipping is completed: the shipment is reported to the sales channel of the order, the shipping confirmation mail is sent if the shipping method and the settings ask for it and it was not sent yet, open drop-shipping and fulfillment orders of the delivery note are closed, and the workflow event 'delivery note shipped' fires. errorCode is one of: DELIVERY_NOTE_NOT_FOUND (the delivery note was not found); DELIVERY_NOTE_HAS_NO_PACKAGE_WITHOUT_LABEL (every package already has a tracking number); DELIVERY_NOTE_HANDLED_BY_FULFILLMENT_NETWORK (the delivery note is handled by the JTL Fulfillment Network and cannot be changed here); DELIVERY_NOTE_SHIPPED_BY_OTHERS (drop-shipping and fulfillment delivery notes are shipped by the supplier or fulfiller). - Request"
input CreateDeliveryNoteShippingLabelsCommandRequestInput {
"The ID of the delivery note."
deliveryNoteId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a new DivisibleStockItem in one call. The request carries exactly the fields of this kind: mandatory ones, optional ones, and none of those the kind does not have. The item is valid right away: item number, name, at least one category and the mandatory fields of the kind are required. Everything else, such as prices, descriptions in further languages, suppliers and images, is added through its own sub-resource. - Request"
input CreateDivisibleStockItemCommandRequestInput {
"Name of the item in the default language. Further languages and sales channel texts are the descriptions of the item."
name: String!
"The identifiers of the item. The item number (SKU) is mandatory and unique."
identifiers: TradeItemIdentifiersInput!
"The IDs of the categories the new item is assigned to. At least one: every item that is not a combination of a variation parent has a category, and an item without one is not valid (an empty list is refused with 400). A combination takes over the categories of its parent and is created through the combinations of the parent, which have no such field. Further assignments are made through the categories of the item."
categoryIds: [ID]!
"Whether the item is active. Defaults to true when omitted."
isActive: Boolean
"The ID of the product group."
productGroupId: ID
"The ID of the manufacturer."
manufacturerId: ID
"The ID of the item condition, for example new or used."
conditionId: ID
"The ID of the delivery status of the item (the master data of delivery statuses, for example \"in stock\" or \"ships in 3 days\")."
deliveryStatusId: ID
"The ID of the tax class. When omitted the item gets the company default. The value must reference an existing tax class."
taxClassId: ID
"The ID of the shipping class."
shippingClassId: ID
"Outer dimensions as shipped."
dimensions: ItemDimensionsInput
"Weights."
weights: ItemWeightsInput
"Customs information."
customs: ItemCustomsInput
"Sales unit and content with its base price."
units: ItemUnitsInput
"The containers the item is also traded in."
containers: [NewItemContainerInput]
"The default texts of the item, one per language."
descriptions: [NewItemDescriptionInput]
"Settings of the stock management."
stockManagement: StockManagementInput!
"What the stock postings carry to trace the lots. Omitted means none."
lotTracking: LotTrackingType
"The characteristic values (German 'Merkmalwerte') assigned to the item. Omitted means none."
characteristicValueIds: [ID]
"The attribute values of the item, per attribute, sales channel and language. Omitted means none. The attributes the system derives itself, such as those of a voucher, cannot be sent."
attributes: [ItemAttributeInput]
"The custom field values of the item. Omitted means none. A custom field has to apply to the item, which depends on its product group."
customFields: [ItemCustomFieldInput]
"The free-text variations of the item (German 'Freitext'), added in the same call. Every kind can have them. Omitted means none. Refused with 409 for an item of the fulfillment network."
freeTextVariations: [NewFreeTextVariationInput]
"The simple selection variations of the item with their values, added in the same call. Only the kinds that allow them have this field; the reasons that forbid them for a given item are in 409 SELECTION_VARIATION_NOT_ALLOWED_FOR_ITEM_TYPE. Omitted means none."
selectionVariations: [NewSelectionVariationInput]
"The sales channels the item is activated in, set in the same call. The item has to be in a category that is active in each of them. Omitted means none; the item is activated afterwards through its sales channels."
salesChannels: [SalesChannelActivationInput]
"The prices of the item, created in the same call. Every part is the model of the matching prices route. Omitted means the item is created without prices and they are set through those routes."
prices: NewItemPricesInput
"The supplier items of the item, created in the same call. Every entry is the model of the supplier item route. Omitted means none; they are added through the suppliers of the item."
suppliers: [NewItemSupplierInput]
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a dunning level at the end of a scope. It gets the number one higher than the highest number in the scope. Creating the first level of a scope makes this scope apply to its invoices from now on instead of a less specific one. Levels belong to a scope: a company and a customer group, each of which can be 'all'. For an invoice that has not been dunned yet, the most specific scope that has levels is used, in this order: the company and the customer group of the invoice, the company and all customer groups, all companies and the customer group, all companies and all customer groups. Later notices stay in the scope of the first one. - Request"
input CreateDunningLevelCommandRequestInput {
"The company the level applies to. Omitted means all companies."
companyId: ID
"The customer group the level applies to. Omitted means all customer groups."
customerGroupId: ID
"The name of the level, 1 to 255 characters."
name: String!
"The days the customer gets to pay after the dunning date, 1 to 9999."
paymentTermDays: Int!
"The days after the payment due date before a notice at this level can be issued, 0 to 9999. Defaults to 0."
gracePeriodDays: Int
"The fee charged with a notice at this level, 0 or more, at most two decimal places. Defaults to 0."
flatFee: Decimal
"The yearly interest rate in percent, 0 to 100. Defaults to 0."
annualInterestRatePercent: Decimal
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Issues the next dunning notice for one sales invoice: at the next level of its scope, with the payment term, the grace period, the fee and the interest of that level. The invoice must be open and overdue: its current payment due date (the one of its current notice, or of the invoice if it has not been dunned yet) plus the grace period of the next level must be before today. The interest is charged up to today, whatever the dunning date. Dates are calendar dates in the time zone of the Wawi installation; 'today' is the current date there. Letters are printed or sent as output of the notice, not by this call. To dun many invoices at once, start a dunning run. - Request"
input CreateDunningNoticeCommandRequestInput {
"The ID of the sales invoice to dun."
salesInvoiceId: ID!
"The date printed on the notice. Only the date counts. Defaults to today. It must not be before today, and not before the dunning date of the current notice. The new payment due date is this date plus the payment term of the level."
dunningDate: DateTime
"A free comment on the notice. Omitted means the comment of the current notice is carried over; an empty text means no comment."
comment: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Starts a dunning run: issues the next dunning notice for every sales invoice that matches the selection and can be dunned now, by the same rules as the proposal list and 'CreateDunningNotice'. The run selects the invoices itself when it executes, so the result can differ from an earlier proposal list. Selected invoices that cannot be dunned any more when the notices are written are skipped and listed in the result; all other notices are written together, so a failed run issues none. Only one run can be running at a time; a run that stops making progress, for example because the server was restarted, ends with the status Failed. The call answers 202 with the ID of the run, which is polled with 'GetDunningRun' until its status is no longer Running. Dates are calendar dates in the time zone of the Wawi installation; 'today' is the current date there. Letters are printed or sent as output of the notices, not by the run. - Request"
input CreateDunningRunCommandRequestInput {
"The date printed on the notices. Only the date counts. Defaults to today and must not be before today. Invoices whose current notice has a later dunning date are skipped with DunningDateBeforeCurrentNotice."
dunningDate: DateTime
"Only invoices whose current payment due date is on or after this date are dunned. Only the date counts. Required; it limits how far back the selection reaches. A missing value is answered with 400 (validation code DUE_DATE_FROM_REQUIRED on 'dueDateFrom')."
dueDateFrom: DateTime!
"Only invoices whose current payment due date (without the grace period) is on or before this date are dunned. Only the date counts. Omitted means no upper bound; invoices that are not overdue yet are never dunned anyway."
dueDateTo: DateTime
"Only invoices of this company. Omitted means all companies."
companyId: ID
"Only invoices with exactly this customer group; invoices without a customer group are not included. Omitted means all invoices."
customerGroupId: ID
"Only invoices with this payment method. Omitted means all invoices whose payment method takes part in dunning, and invoices without a payment method."
paymentMethodId: ID
"Only invoices whose next notice would be at this level number. Omitted means all levels."
levelNumber: Int
"Only invoices with at least this open amount, in the currency of the invoice. Omitted means 0."
minimumOpenAmount: Decimal
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a function attribute in a group. Function attributes steer online shops and interfaces and are not shown to customers. The group is created together with its first attribute. Errors: errorCode is ATTRIBUTE_NAME_REQUIRED (the name is missing or empty), ATTRIBUTE_NAME_INVALID (the name contains '#'), ATTRIBUTE_CODE_REQUIRED (the code is missing or empty), ATTRIBUTE_GROUP_NAME_INVALID (the group name is empty, longer than 150 characters or contains '#'), ATTRIBUTE_ALLOWED_VALUES_REQUIRED (data type 'VALUE_LIST' without values), ATTRIBUTE_ALLOWED_VALUES_NOT_SUPPORTED (values given for another data type), ATTRIBUTE_ALLOWED_VALUES_INVALID (an entry is empty, repeated or contains '|'), ATTRIBUTE_SALES_CHANNEL_NOT_SUPPORTED (a sales channel is not an online shop); ATTRIBUTE_NAME_ALREADY_EXISTS (another attribute or function attribute of the entity type has this name, regardless of upper and lower case), ATTRIBUTE_CODE_ALREADY_EXISTS (another function attribute of the entity type has this code). - Request"
input CreateFunctionAttributeCommandRequestInput {
"The kind of record the attribute can be assigned to. It cannot be changed afterwards. Known values: ITEM, CATEGORY. The set can grow; a client must tolerate values it does not know."
entityType: String!
"The name of the group the attribute is displayed under. A name that matches an existing group of the same entity type apart from letter case uses the existing spelling. It must not contain the character '#'."
groupName: String!
"The technical identifier by which online shops, plug-ins and interfaces recognise the function attribute. It must be unique among the function attributes of the entity type; upper and lower case are distinguished."
code: String!
"The name of the function attribute. It must not contain the character '#'. It is not translated."
name: String!
"The data type. Known values: INTEGER, DECIMAL, TEXT, CHECKBOX, VALUE_LIST, URL, EMAIL, PHONE, COUNTRY_ISO, PRICE, DATE, SHORT_TEXT. The set can grow; a client must tolerate values it does not know. Defaults to 'TEXT'. It cannot be changed afterwards."
dataType: String
"The allowed values in the order they are offered. Required, with at least one entry, for data type 'VALUE_LIST'; not allowed for other data types. A 'renamedFrom' is not allowed when creating."
allowedValues: [FunctionAttributeAllowedValueInput]
"An internal description of the function attribute for staff."
description: String
"The position within the group, starting at 1. Defaults to the end of the group; a larger value also places the attribute at the end."
sortOrder: Int
"The online shops the function attribute is transferred to. Defaults to none."
activeSalesChannels: [AttributeSalesChannelInput]
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Applies a cash discount granted by the supplier and replaces the cash discount line items the invoice has. The discount is split over the tax rates of the line items in proportion to their amounts, and one cash discount line item with a negative price is added per tax rate. Send exactly one of \"percentage\" and \"amount\". - Request"
input CreateIncomingInvoiceCashDiscountLineItemsCommandRequestInput {
"The ID of the incoming invoice."
incomingInvoiceId: ID!
"Discount in percent of the basis, greater than 0 and at most 100. Not together with \"amount\"."
percentage: Decimal
"Discount as an amount in the invoice currency, net or gross according to \"basis\", greater than 0. Not together with \"percentage\". At most 12 digits before the decimal point; larger values are refused (400)."
amount: Decimal
"Whether the percentage or amount refers to the net or the gross amount."
basis: CashDiscountBasis!
"Description of the new line items. Defaults to \"Cash discount\" in the language of the request. At most 255 characters."
name: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Records an invoice received from a supplier. The address, the contact, the exchange rate and the due date default to the data of the supplier. The open lines of the purchase orders in \"purchaseOrders\" become line items in the same call, as when a purchase order is assigned later; everything is saved together or not at all. Further line items are added afterwards. - Request"
input CreateIncomingInvoiceCommandRequestInput {
"The supplier who issued the invoice."
supplierId: ID!
"The number the supplier printed on the invoice. At most 255 characters."
supplierInvoiceNumber: String
"The date printed on the invoice."
invoiceDate: DateTime
"Date by which the invoice is to be paid. Defaults to the invoice date (or today) plus the payment term of the supplier."
dueDate: DateTime
"Internal notes. At most 255 characters."
notes: String
"The contact person at the supplier. Must belong to the supplier."
supplierContactId: ID
"The address as printed on the invoice. Defaults to the address of the supplier."
supplierAddress: IncomingInvoiceSupplierAddressInput
"Units of the invoice currency per unit of the home currency. Defaults to the current rate of the supplier currency. Greater than 0 and at most 12 digits before the decimal point; other values are refused (400)."
exchangeRate: Decimal
"How additional costs are distributed. Defaults to Quantity."
additionalCostDistributionMethod: AdditionalCostDistributionMethod
"Purchase orders whose open lines become line items of the new invoice."
purchaseOrders: [IncomingInvoicePurchaseOrderAssignmentInput]!
"Suppresses the automatic workflow triggers of this call (the event \"created\"). Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a line item with a free description, for example a service or a fee that is not an item. - Request"
input CreateIncomingInvoiceFreeTextLineItemCommandRequestInput {
"The ID of the incoming invoice."
incomingInvoiceId: ID!
"Description. 1 to 255 characters."
name: String!
"Invoiced quantity. At most 12 digits before the decimal point; larger values are refused (400)."
quantity: Decimal!
"Net price per unit in the invoice currency. At most 12 digits before the decimal point; larger values are refused (400)."
netUnitPrice: Decimal!
"Tax rate in percent, 0 to 100. Defaults to the tax rate the supplier uses for free line items."
taxRate: Decimal
"Unit as printed on the invoice. At most 255 characters."
unit: String
"Internal note. At most 255 characters."
notes: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a line item for an item of the catalog. With \"purchaseOrderLineItemId\" the line invoices that purchase order line: quantity, price and tax rate default to its open quantity, confirmed price and tax rate. Without it, price and tax rate default to the purchase data of the item at the supplier. - Request"
input CreateIncomingInvoiceItemLineItemCommandRequestInput {
"The ID of the incoming invoice."
incomingInvoiceId: ID!
"The invoiced item."
itemId: ID!
"The purchase order line the line item invoices. Must be a line of this item in a purchase order of the supplier."
purchaseOrderLineItemId: ID
"Invoiced quantity. Defaults to the open quantity of the purchase order line, otherwise 1. At most 12 digits before the decimal point; larger values are refused (400)."
quantity: Decimal
"Net price per unit in the invoice currency. At most 12 digits before the decimal point; larger values are refused (400)."
netUnitPrice: Decimal
"Tax rate in percent, 0 to 100. Defaults to the purchase data; 0 if the supplier is exempt from input tax."
taxRate: Decimal
"Description. Defaults to the name of the item. At most 255 characters."
name: String
"Unit as printed on the invoice. At most 255 characters."
unit: String
"Item number of the supplier. At most 255 characters."
supplierSku: String
"Name of the item at the supplier. At most 255 characters."
supplierItemName: String
"Internal note. At most 255 characters."
notes: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Records a payment for an incoming invoice. The invoice must be approved for payment. When the payments reach the payable amount of a posted invoice, the invoice is closed. Paying more than is open is allowed; \"totals.overpaidAmount\" shows it. Matching a bank transaction to the invoice is done in the payment transactions, not here. - Request"
input CreateIncomingInvoicePaymentCommandRequestInput {
"The ID of the incoming invoice."
incomingInvoiceId: ID!
"Paid amount in the home currency, rounded to cents; an amount that rounds to 0.00 is refused (400). Negative for money refunded by the supplier. At most 12 digits before the decimal point."
amount: Decimal!
"Date of the payment. Defaults to today."
paidAt: DateTime
"The payment method."
paymentMethodId: ID!
"Whether the payment is a down payment. Defaults to false."
isDownPayment: Boolean
"Note. At most 2000 characters."
notes: String
"ID of the transaction at the bank or payment provider. At most 255 characters."
externalTransactionId: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates an item condition. GraphQL only. The input is a one-of: exactly one variant is sent and it is the stock handling of the new condition, which cannot be changed afterwards. The new condition is active and without marketplace codes; without 'restriction' it has no restriction. Errors: errorCode is ITEM_CONDITION_NAME_EMPTY, ITEM_CONDITION_NAME_TOO_LONG, ITEM_CONDITION_DEFAULT_NAME_REQUIRED, ITEM_CONDITION_LANGUAGE_DUPLICATED, ITEM_CONDITION_COLOR_INVALID, ITEM_CONDITION_SUFFIX_EMPTY, ITEM_CONDITION_SUFFIX_TOO_LONG (the request is invalid, 400); ITEM_CONDITION_SUFFIX_ALREADY_EXISTS (409); LANGUAGE_NOT_ACTIVE, PRODUCT_GROUP_NOT_FOUND, CATEGORY_NOT_FOUND (422). - Request"
input CreateItemConditionCommandRequestInput {
"The data of the new condition. Exactly one variant."
condition: CreateItemConditionInput!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"The data of a new item condition. A one-of: exactly one variant is sent and it is the stock handling of the new condition. Marketplace codes are set afterwards with their own operation."
input CreateItemConditionInput @oneOf {
"Creates a condition whose items are their own items with their own stock."
ownItemConditionCreation: OwnItemConditionCreationInput
"Creates a condition that is posted to the item in the standard condition."
standardItemConditionCreation: StandardItemConditionCreationInput
"Creates a condition that only informs."
noStockItemConditionCreation: NoStockItemConditionCreationInput
}
"Adds a container to an item. An item has at most one container per unit. - Request"
input CreateItemContainerCommandRequestInput {
"The ID of the item."
itemId: ID!
"The unit the container is traded in, for example box."
unitId: ID!
"How many units of the item the container holds. Greater than zero."
quantity: Decimal!
"Global Trade Item Number of the container."
gtin: String
"Universal Product Code of the container."
upc: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a delivery status of items with its translations. GraphQL only. A delivery status exists as its translations, so at least one is required; each language at most once. Errors: errorCode is ITEM_DELIVERY_STATUS_NAME_MISSING, ITEM_DELIVERY_STATUS_NAME_EMPTY, ITEM_DELIVERY_STATUS_NAME_TOO_LONG, ITEM_DELIVERY_STATUS_LANGUAGE_DUPLICATED (the request is invalid, 400); LANGUAGE_NOT_ACTIVE (422). - Request"
input CreateItemDeliveryStatusCommandRequestInput {
"The names, one per language, at least one."
translations: [ItemDeliveryStatusTranslationInput]!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a free-text variation to an item. Every kind of item can have one, a combination as well, in addition to those of its parent. Refused for an item of the fulfillment network. - Request"
input CreateItemFreeTextVariationCommandRequestInput {
"The ID of the item."
itemId: ID!
"Display name in the default language. It is the label of the input field."
name: String!
"The label in further languages."
names: [LocalizedTextInput]
"Whether the customer has to enter a text. Defaults to false when omitted."
isRequired: Boolean
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a medium to an item as a link. Uploading a file stays with the blob endpoints. - Request"
input CreateItemMediumCommandRequestInput {
"The ID of the item."
itemId: ID!
"The key of what the medium is for, one of DATASHEET, VIDEO or OTHER (the list can grow)."
mediaCategoryId: String!
"Display name of the medium."
name: String
"The URL the medium is opened from."
url: String!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a packaging to an item. - Request"
input CreateItemPackagingCommandRequestInput {
"The ID of the item."
itemId: ID!
"Name of the packaging."
name: String!
"Whether the packaging is a composite of several materials."
isComposite: Boolean!
"The packaging category."
categoryId: ID
"The recycling class."
recyclingClassId: ID
"The materials, replaced as a whole. At least one."
materials: [NewItemPackagingMaterialInput]!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a selection variation with its values to an item. Selection variations are only possible for some kinds and roles: refused with 409 SELECTION_VARIATION_NOT_ALLOWED_FOR_ITEM_TYPE and the reasons in blockers[] (see the design, section 5m). - Request"
input CreateItemSelectionVariationCommandRequestInput {
"The ID of the item."
itemId: ID!
"Display name in the default language."
name: String!
"The display name in further languages."
names: [LocalizedTextInput]
"How the shop shows the variation. The style is one of DROPDOWN, RADIO_BUTTONS, IMAGE_SWATCHES or TEXT_SWATCHES. It changes how the axis is shown in the shop, not which fields exist. The list can grow with the shops; a client treats a value it does not know like DROPDOWN."
style: String!
"The values in their order. At least one."
values: [NewVariationValueInput]!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a value to a selection variation, with its surcharge, weight difference, item number and GTIN. - Request"
input CreateItemSelectionVariationValueCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the selection variation."
variationId: ID!
"Display name of the value in the default language."
name: String!
"The display name of the value in further languages."
names: [LocalizedTextInput]
"Own item number suffix or number of the value."
sku: String
"Own GTIN of the value."
gtin: String
"Default surcharge in net on the price when the value is chosen."
surchargeNet: Decimal
"Weight in kilograms that the value adds to the weight."
weightOffset: Decimal
"Surcharges per customer group, which take precedence over the default surcharge."
customerGroupSurcharges: [CustomerGroupSurchargeInput]
"Surcharges per sales channel, which take precedence over the default surcharge."
salesChannelSurcharges: [SalesChannelSurchargeInput]
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a supplier item to an item. The item has to have stock management. An item has at most one supplier item per supplier. - Request"
input CreateItemSupplierCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the supplier. It cannot be changed."
supplierId: ID!
"The item number the supplier uses for the item."
supplierItemNumber: String
"The name the supplier uses for the item."
supplierItemName: String
"The VAT rate of the purchase price, in percent."
vatRate: Decimal!
"The currency of the purchase price as ISO 4217 code."
currencyCode: String
"The tiers of the purchase price, at least one. A tier from quantity 0 or 1 is the base price."
purchasePriceTiers: [SupplierPriceTierInput]!
"The delivery time in days that the supplier item has of its own, at least 0. Omitted or null means that the delivery time of the supplier applies."
ownDeliveryTimeInDays: Int
"The stock of the supplier, when it is considered. Absent when it is not."
supplierStock: SupplierStockInput
"Whether the supplier ships to the customers directly."
isDropshippingActive: Boolean!
"How the supplier packs the item. Absent when it is not maintained."
packageUnit: SupplierPackageUnitInput
"The smallest quantity that is purchased."
minimumPurchaseQuantity: Decimal
"The interval in which the quantity is purchased, for example 6 for packs of six."
purchaseInterval: Decimal
"Free-text notes on the supplier item."
notes: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a new KitItem in one call. The request carries exactly the fields of this kind: mandatory ones, optional ones, and none of those the kind does not have. The item is valid right away: item number, name, at least one category and the mandatory fields of the kind are required. Everything else, such as prices, descriptions in further languages, suppliers and images, is added through its own sub-resource. - Request"
input CreateKitItemCommandRequestInput {
"Name of the item in the default language. Further languages and sales channel texts are the descriptions of the item."
name: String!
"The identifiers of the item. The item number (SKU) is mandatory and unique."
identifiers: TradeItemIdentifiersInput!
"The IDs of the categories the new item is assigned to. At least one: every item that is not a combination of a variation parent has a category, and an item without one is not valid (an empty list is refused with 400). A combination takes over the categories of its parent and is created through the combinations of the parent, which have no such field. Further assignments are made through the categories of the item."
categoryIds: [ID]!
"Whether the item is active. Defaults to true when omitted."
isActive: Boolean
"The ID of the product group."
productGroupId: ID
"The ID of the manufacturer."
manufacturerId: ID
"The ID of the item condition, for example new or used."
conditionId: ID
"The ID of the delivery status of the item (the master data of delivery statuses, for example \"in stock\" or \"ships in 3 days\")."
deliveryStatusId: ID
"The ID of the tax class. When omitted the item gets the company default. The value must reference an existing tax class."
taxClassId: ID
"The ID of the shipping class."
shippingClassId: ID
"Outer dimensions as shipped."
dimensions: ItemDimensionsInput
"Weights."
weights: ItemWeightsInput
"Customs information."
customs: ItemCustomsInput
"Sales unit and content with its base price."
units: ItemUnitsInput
"The components of the kit. At least one. Later changes go through the components of the kit."
components: [NewKitComponentInput]!
"The characteristic values (German 'Merkmalwerte') assigned to the item. Omitted means none."
characteristicValueIds: [ID]
"The attribute values of the item, per attribute, sales channel and language. Omitted means none. The attributes the system derives itself, such as those of a voucher, cannot be sent."
attributes: [ItemAttributeInput]
"The custom field values of the item. Omitted means none. A custom field has to apply to the item, which depends on its product group."
customFields: [ItemCustomFieldInput]
"The free-text variations of the item (German 'Freitext'), added in the same call. Every kind can have them. Omitted means none. Refused with 409 for an item of the fulfillment network."
freeTextVariations: [NewFreeTextVariationInput]
"The simple selection variations of the item with their values, added in the same call. Only the kinds that allow them have this field; the reasons that forbid them for a given item are in 409 SELECTION_VARIATION_NOT_ALLOWED_FOR_ITEM_TYPE. Omitted means none."
selectionVariations: [NewSelectionVariationInput]
"The sales channels the item is activated in, set in the same call. The item has to be in a category that is active in each of them. Omitted means none; the item is activated afterwards through its sales channels."
salesChannels: [SalesChannelActivationInput]
"The prices of the item, created in the same call. Every part is the model of the matching prices route. Omitted means the item is created without prices and they are set through those routes."
prices: NewItemPricesInput
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a label for one kind of object. The kind is fixed from now on. Putting the label on objects is done on the objects themselves, for example on the item. GraphQL only. - Request"
input CreateLabelCommandRequestInput {
"The key of the kind of object the label is put on, as 'QueryLabelEntityTypes' lists it. It cannot be changed later."
entityTypeKey: String!
"The name, 1 to 255 characters, with no space at the start or the end. It must be unique among the labels of the same kind, ignoring letter case."
name: String!
"The color as '#RRGGBB' with six hexadecimal digits, upper or lower case; it is returned in upper case. When omitted, the label gets '#000000'."
color: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a lot size for a production item. If the production item already has a lot size with this quantity, no further lot size is created and the ID of the existing lot size is returned. Lot sizes cannot be created for configuration items. - Request"
input CreateLotSizeCommandRequestInput {
"The quantity of the production item that is produced in one lot. Must be greater than zero."
quantity: Int!
"The ID of the production item for which the lot size is created."
productionItemId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a new manufacturer. A contact for the address of the manufacturer is created with it. Errors: errorCode is MANUFACTURER_NAME_ALREADY_EXISTS (another manufacturer has this name, regardless of upper and lower case), MANUFACTURER_DEFAULT_DESCRIPTION_REQUIRED (the texts lack the system's default language), MANUFACTURER_LANGUAGE_NOT_FOUND (a language is unknown or not active), SALES_CHANNEL_NOT_FOUND (an image names a sales channel that does not exist). - Request"
input CreateManufacturerCommandRequestInput {
"The name of the manufacturer. It must be unique among all manufacturers."
name: String!
"The website of the manufacturer."
website: String
"The position of the manufacturer in sorted lists."
sortNumber: Int
"The language-dependent texts of the manufacturer, one entry per language. At least one entry is required, and a description in the system's default language must be included."
descriptions: [ManufacturerDescriptionInput]!
"The images of the manufacturer, at most one per sales channel."
images: [ManufacturerImageInput]
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a measurement unit with its display code and names. Without 'conversion' it becomes a base unit with a family of its own; with 'conversion' it joins the family of the given base unit. The conversion cannot be changed afterwards. The names must include the default language of Wawi. - Request"
input CreateMeasurementUnitCommandRequestInput {
"The short form shown next to quantities, 1 to 255 characters, for example 'kg'."
displayCode: String!
"The names, one per language, the default language included."
translations: [MeasurementUnitTranslationInput]!
"The UN/CEFACT unit code for e-invoices, 2 or 3 letters or digits, for example 'KGM'. Omitted means none."
unitCode: String
"How the new unit converts to a base unit. Omitted means the new unit is a base unit."
conversion: MeasurementUnitConversionInput
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a multilingual attribute in a group. The group is created together with its first attribute. Errors: errorCode is ATTRIBUTE_NAME_REQUIRED (the name in the default language is missing or empty), ATTRIBUTE_NAME_INVALID (a name contains '#'), ATTRIBUTE_LANGUAGE_NOT_FOUND (a language is unknown or not active), ATTRIBUTE_GROUP_NAME_INVALID (the group name is empty, longer than 150 characters or contains '#'), ATTRIBUTE_ALLOWED_VALUES_REQUIRED (data type 'VALUE_LIST' without values), ATTRIBUTE_ALLOWED_VALUES_NOT_SUPPORTED (values given for another data type), ATTRIBUTE_ALLOWED_VALUES_INVALID (an entry is empty, repeated, contains '|' or lacks the default language), ATTRIBUTE_SALES_CHANNEL_NOT_SUPPORTED (a sales channel is not an online shop); ATTRIBUTE_NAME_ALREADY_EXISTS (another attribute or function attribute of the entity type has this name in the default language, regardless of upper and lower case). - Request"
input CreateMultilingualAttributeCommandRequestInput {
"The kind of record the attribute can be assigned to. It cannot be changed afterwards. Known values: ITEM, CATEGORY. The set can grow; a client must tolerate values it does not know."
entityType: String!
"The name of the group the attribute is displayed under. A name that matches an existing group of the same entity type apart from letter case uses the existing spelling. It must not contain the character '#'."
groupName: String!
"The names per language. The name in the default language is required; the other active languages are optional. One entry per language."
names: [AttributeNameInput]!
"The data type, TEXT or VALUE_LIST. Defaults to 'TEXT'. It cannot be changed afterwards."
dataType: String
"The allowed values in the order they are offered. Required, with at least one entry, for data type 'VALUE_LIST'; not allowed for 'TEXT'. Entries are distinct ignoring letter case in the default language."
allowedValues: [MultilingualAllowedValueInput]
"An internal description of the attribute for staff."
description: String
"The position within the group, starting at 1. Defaults to the end of the group; a larger value also places the attribute at the end."
sortOrder: Int
"The online shops the attribute is transferred to. Defaults to none."
activeSalesChannels: [AttributeSalesChannelInput]
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a new MultiPurposeVoucherItem in one call. The request carries exactly the fields of this kind: mandatory ones, optional ones, and none of those the kind does not have. The item is valid right away: item number, name, at least one category and the mandatory fields of the kind are required. Everything else, such as prices, descriptions in further languages, suppliers and images, is added through its own sub-resource. - Request"
input CreateMultiPurposeVoucherItemCommandRequestInput {
"Name of the item in the default language. Further languages and sales channel texts are the descriptions of the item."
name: String!
"The identifiers of the item: its item number, which is unique."
identifiers: BasicItemIdentifiersInput!
"The IDs of the categories the new item is assigned to. At least one: every item that is not a combination of a variation parent has a category, and an item without one is not valid (an empty list is refused with 400). A combination takes over the categories of its parent and is created through the combinations of the parent, which have no such field. Further assignments are made through the categories of the item."
categoryIds: [ID]!
"Whether the item is active. Defaults to true when omitted."
isActive: Boolean
"The ID of the product group."
productGroupId: ID
"The ID of the manufacturer."
manufacturerId: ID
"The ID of the item condition, for example new or used."
conditionId: ID
"The ID of the delivery status of the item (the master data of delivery statuses, for example \"in stock\" or \"ships in 3 days\")."
deliveryStatusId: ID
"Settings of the voucher that is sold."
voucher: VoucherSettingsInput!
"The characteristic values (German 'Merkmalwerte') assigned to the item. Omitted means none."
characteristicValueIds: [ID]
"The attribute values of the item, per attribute, sales channel and language. Omitted means none. The attributes the system derives itself, such as those of a voucher, cannot be sent."
attributes: [ItemAttributeInput]
"The custom field values of the item. Omitted means none. A custom field has to apply to the item, which depends on its product group."
customFields: [ItemCustomFieldInput]
"The free-text variations of the item (German 'Freitext'), added in the same call. Every kind can have them. Omitted means none. Refused with 409 for an item of the fulfillment network."
freeTextVariations: [NewFreeTextVariationInput]
"The sales channels the item is activated in, set in the same call. The item has to be in a category that is active in each of them. Omitted means none; the item is activated afterwards through its sales channels."
salesChannels: [SalesChannelActivationInput]
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates the number range of one company for a type. From then on the company's documents of this type use it instead of the global range, if the process that creates them passes the company. Prefix, suffix and counter start with the values given; they are not copied from the global range. One company has at most one range per type. The global ranges exist from the start and cannot be created. Error codes: NUMBER_RANGE_TYPE_NOT_FOUND, COMPANY_NOT_FOUND, NUMBER_RANGE_ALREADY_EXISTS, NUMBER_RANGE_PATTERN_INVALID, NUMBER_RANGE_COUNTER_INVALID, NUMBER_RANGE_TOO_LONG. GraphQL only. - Request"
input CreateNumberRangeCommandRequestInput {
"The key of the number range type, see 'QueryNumberRangeTypes', for example 'SALES_INVOICE'. Any case is accepted; responses carry the key in upper case."
typeKey: String!
"The company the range is for. An inactive company is allowed. It cannot change later."
companyId: ID!
"The text in front of the counter, empty if none, at most 20 characters. Prefix and suffix may contain the date tokens '<J>' (year, four digits), '<M>' (month, two digits), '<T>' (day, two digits) and '<K>' (ISO calendar week, two digits). The tokens are upper case; the system replaces them with the date of issue when it issues a number. Lower case tokens are not replaced and are rejected."
prefix: String!
"The text behind the counter, empty if none, at most 20 characters."
suffix: String!
"The counter the first number is built from, 0 to 2147483646."
nextCounter: Int!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates an on-hold reason. The name is not required to be unique. GraphQL only. - Request"
input CreateOnHoldReasonCommandRequestInput {
"The name, 1 to 50 characters."
name: String!
"Whether orders with this reason may be merged. Defaults to false when omitted."
isMergeable: Boolean
"Whether orders with this reason are left out of the purchase list. Defaults to false when omitted."
isExcludedFromPurchaseList: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates an operation together with its steps. Further steps are added with the commands for operation steps. Errors: the request is invalid; OperationNumberAlreadyExists (another operation already has this operation number); DuplicateOperationStepTextLanguage (more than one text was sent for the same language of a step); OperationStepDefaultTextRequired (no text was sent for the default language of a step). - Request"
input CreateOperationCommandRequestInput {
"The number of the operation. Must be unique across all operations and must not consist of white space only."
operationNumber: String!
"The name of the operation. Must not consist of white space only."
name: String!
"The description of the operation. When omitted or when it consists of white space only, the operation has no description."
description: String
"Indicates whether the operation is active. When omitted, the operation is active."
isActive: Boolean
"Indicates whether the operation must be completed explicitly during production. When omitted, false is used."
isCompletionMandatory: Boolean
"Indicates whether and for whom the operation allows simplified production. When omitted, No is used."
simplifiedProduction: OperationSimplifiedProduction
"The steps of the new operation. Their order in the list becomes their order within the operation. At least one step is required."
steps: [OperationStepInput]!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a step of an operation together with its texts. The new step is appended after the last step of the operation. Errors: the request is invalid; OperationNotFound (the operation was not found); DuplicateOperationStepTextLanguage (more than one text was sent for the same language); OperationStepDefaultTextRequired (no text was sent for the default language). - Request"
input CreateOperationStepCommandRequestInput {
"The name of the step. Must not consist of white space only."
name: String!
"The texts of the new step, at most one per language. At least the text in the default language is required."
texts: [OperationStepTextInput]!
"The ID of the operation."
operationId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates the text of an operation step in one language. Errors: the request is invalid; OperationStepNotFound (the step was not found); OperationStepTextAlreadyExists (the step already has a text in this language). - Request"
input CreateOperationStepTextCommandRequestInput {
"The language of the text as a BCP 47 language tag, e.g. \"de\" or \"de-AT\". The language subtag is lowercase and the region subtag uppercase; input is case-insensitive."
languageTag: String!
"The text of the step in this language. Must not consist of white space only."
text: String!
"The ID of the step."
operationStepId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a template in a template set. The channels and the assignment criteria must be those of the document type of the set; a layout is added with the upload of a layout, or the template is created by 'CopyOutputTemplate' or by an import. Errors: 400 VALIDATION_FAILED; 404 TEMPLATE_SET_NOT_FOUND; 409 TEMPLATE_NAME_DUPLICATE; 422 OUTPUT_CHANNEL_NOT_AVAILABLE (the document type does not offer a channel), OUTPUT_ASSIGNMENT_CRITERION_NOT_AVAILABLE (the document type does not offer a criterion), OUTPUT_ASSIGNMENT_VALUE_NOT_FOUND (a value is not one the value source lists). GraphQL only (new API rule). - Request"
input CreateOutputTemplateCommandRequestInput {
"The template set the template is created in."
templateSetId: ID!
"The name of the template."
name: String!
"The channels the template delivers its document by. Known values: PRINT, FAX, SAVE, MAIL, EXPORT, LABEL. At least one."
channels: [String]!
"The assignments of the template, at most one per criterion. Empty: the template applies to everything."
assignments: [OutputTemplateAssignmentInput]!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a global template set for a document type. The new set is not the standard, unless the document type has no set yet. GraphQL only (new API rule). Errors: 400 VALIDATION_FAILED (the name is empty or longer than 64 characters); 409 TEMPLATE_SET_NAME_DUPLICATE (a set of this document type has the name); 422 OUTPUT_DOCUMENT_TYPE_NOT_FOUND (the document type is not a known value). - Request"
input CreateOutputTemplateSetCommandRequestInput {
"The document type the template set is created for. Known values: SALES_QUOTATION, SALES_ORDER, SALES_INVOICE, DELIVERY_NOTE, SALES_INVOICE_CORRECTION, PRICE_LIST, CUSTOMER_DETAILS, CUSTOMER_MESSAGE, STOCK_VALUATION, INVENTORY_DIFFERENCE_LIST, ITEM_LABEL, SHIPPING_LABEL, SUPPLIER_MESSAGE, WAREHOUSE_PACK_LIST, SHIPPING_LIST, STORAGE_LOCATION_LABEL, PURCHASE_ORDER, PURCHASE_ORDER_REMINDER, SUPPLIER_PRICE_REQUEST, FULFILLMENT_ORDER, PICK_LIST, PUTAWAY_LIST, WMS_INVENTORY_LIST, PAYMENT_RECEIPT, SHIPPING_NOTIFICATION, DUNNING_LETTER, SALES_RETURN, RETURN_LABEL_EMAIL, ADDRESS_LABEL, VOUCHER, EXTERNAL_DOCUMENT, PDF, PACKAGE_ID_LABEL, SSCC_LABEL. The list is the catalogue of QueryOutputDocumentTypes and grows with the product. A client treats a value it does not know as a document type it cannot handle and does not offer it; the server answers an unknown value in a body with 422 and in a path or query with 404 (OUTPUT_DOCUMENT_TYPE_NOT_FOUND)."
documentType: String!
"The name of the new template set. Unique per document type, at most 64 characters."
name: String!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a package to a delivery note. The package starts without shipping date. errorCode is one of: DELIVERY_NOTE_NOT_FOUND (the delivery note was not found); SHIPPING_METHOD_NOT_FOUND (a referenced shipping method was not found or is not active); TRACKING_NUMBER_INVALID (the tracking number is empty, longer than 255 characters or does not match the rule of the shipping method); DELIVERY_NOTE_HANDLED_BY_FULFILLMENT_NETWORK (the delivery note is handled by the JTL Fulfillment Network and cannot be changed here). - Request"
input CreatePackageCommandRequestInput {
"The ID of the delivery note."
deliveryNoteId: ID!
"The shipping method. Defaults to the shipping method of the first package of the delivery note."
shippingMethodId: ID
"The weight in kilograms. Defaults to 0."
weight: Decimal
"The tracking number."
trackingNumber: String
"The tracking number of an enclosed return label."
enclosedReturnTrackingNumber: String
"The shipping method of the enclosed return label."
returnShippingMethodId: ID
"The expected delivery date."
expectedDeliveryDate: DateTime
"A free note."
note: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Requests a shipping label for a package. The label is requested from the shipping service the package's shipping method is mapped to, without any dialog. The tracking number and the shipment reference of the label are written to the package, and the package is marked as shipped at the time of the label; when the last open package of the delivery note is shipped, the delivery note counts as shipped and its shipping is completed: the shipment is reported to the sales channel of the order, the shipping confirmation mail is sent if the shipping method and the settings ask for it and it was not sent yet, open drop-shipping and fulfillment orders of the delivery note are closed, and the workflow event 'delivery note shipped' fires. Downloading, printing and cancelling the label are done in the shipping service. A refused action reports 'errorCode' (the main reason) and 'blockers' (all reasons, each with 'code' and 'message'). errorCode is one of: PACKAGE_NOT_FOUND (the package was not found); PACKAGE_HAS_TRACKING_NUMBER (the package already has a tracking number); PACKAGE_ALREADY_SHIPPED (the package already has a shipping date); SHIPPING_METHOD_MISSING (the package has no shipping method); SHIPPING_METHOD_NOT_MAPPED (the shipping method of the package is not mapped to a method of a shipping service); SHIPPING_SERVICE_REJECTED (the shipping service refused the label; the message says why); SHIPPING_SERVICE_UNAVAILABLE (the shipping service could not be reached); DELIVERY_NOTE_SHIPPED_BY_OTHERS (drop-shipping and fulfillment packages are shipped by the supplier or fulfiller); DELIVERY_NOTE_HANDLED_BY_FULFILLMENT_NETWORK (the delivery note is handled by the JTL Fulfillment Network and cannot be changed here). - Request"
input CreatePackageShippingLabelCommandRequestInput {
"The ID of the package."
packageId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a new PackagingItem in one call. The request carries exactly the fields of this kind: mandatory ones, optional ones, and none of those the kind does not have. The item is valid right away: item number, name, at least one category and the mandatory fields of the kind are required. Everything else, such as prices, descriptions in further languages, suppliers and images, is added through its own sub-resource. - Request"
input CreatePackagingItemCommandRequestInput {
"Name of the item in the default language. Further languages and sales channel texts are the descriptions of the item."
name: String!
"The identifiers of the item: its item number, which is unique."
identifiers: BasicItemIdentifiersInput!
"The IDs of the categories the new item is assigned to. At least one: every item that is not a combination of a variation parent has a category, and an item without one is not valid (an empty list is refused with 400). A combination takes over the categories of its parent and is created through the combinations of the parent, which have no such field. Further assignments are made through the categories of the item."
categoryIds: [ID]!
"Whether the item is active. Defaults to true when omitted."
isActive: Boolean
"The ID of the product group."
productGroupId: ID
"The ID of the manufacturer."
manufacturerId: ID
"The ID of the item condition, for example new or used."
conditionId: ID
"The ID of the delivery status of the item (the master data of delivery statuses, for example \"in stock\" or \"ships in 3 days\")."
deliveryStatusId: ID
"The ID of the tax class. When omitted the item gets the company default. The value must reference an existing tax class."
taxClassId: ID
"Outer dimensions of the packaging."
dimensions: ItemDimensionsInput
"Weights of the packaging."
weights: ItemWeightsInput
"Settings of the stock management of the packaging."
stockManagement: StockManagementInput!
"The characteristic values (German 'Merkmalwerte') assigned to the item. Omitted means none."
characteristicValueIds: [ID]
"The attribute values of the item, per attribute, sales channel and language. Omitted means none. The attributes the system derives itself, such as those of a voucher, cannot be sent."
attributes: [ItemAttributeInput]
"The custom field values of the item. Omitted means none. A custom field has to apply to the item, which depends on its product group."
customFields: [ItemCustomFieldInput]
"The free-text variations of the item (German 'Freitext'), added in the same call. Every kind can have them. Omitted means none. Refused with 409 for an item of the fulfillment network."
freeTextVariations: [NewFreeTextVariationInput]
"The supplier items of the item, created in the same call. Every entry is the model of the supplier item route. Omitted means none; they are added through the suppliers of the item."
suppliers: [NewItemSupplierInput]
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates an external payment account. An external account has no bank or provider behind it: an integration delivers its transactions with 'ImportPaymentTransaction'. Accounts of banks and payment providers need credentials and confirmations and are set up in the desktop client. Errors: PAYMENT_METHOD_NOT_FOUND (the payment method was not found); IBAN_INVALID (the IBAN is not valid). - Request"
input CreatePaymentAccountCommandRequestInput {
"The display name of the account."
name: String!
"A description of the account."
description: String
"The IBAN, when the external account stands for a bank account."
iban: String
"The BIC."
bic: String
"The holder of the account."
holder: String
"The payment method of the payments recorded when a transaction is assigned."
transferPaymentMethodId: ID
"The payment method for direct debits."
directDebitPaymentMethodId: ID
"The payment method for chargebacks and refunds."
chargebackPaymentMethodId: ID
"Whether to suppress the automatic workflows this call would start. Events for other systems are still published. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a payment method in the default language. It is active and not the default. Print texts and other languages are set with 'translations'. - Request"
input CreatePaymentMethodCommandRequestInput {
"The name in the default language, at most 255 characters. It must be unique among the payment methods, ignoring case."
name: String!
"The G/L account, at most 32 characters. An empty text removes it."
generalLedgerAccount: String
"Whether the amount can be collected by direct debit."
supportsDirectDebit: Boolean
"Whether an order can be shipped before the payment arrived. A change applies to open orders with this payment method."
canShipBeforePayment: Boolean
"Whether open invoices paid with this method are dunned."
isDunningEnabled: Boolean
"The cash discount for early payment. Omitted means none."
cashDiscount: PaymentMethodCashDiscountInput
"The eBay payment option. An empty text removes it."
ebayPaymentOption: String
"The priority for first in, first out reservation, 0 to 255."
reservationPriority: Int
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a pick list from a template: the orders and stock are selected and reserved under the template's settings and the line items are created. A pick list is never created empty. When only part of the orders could be reserved the list is created and 'notices' says so; this is a success, not an error. A refused action reports 'errorCode' (the main reason) and 'blockers' (all reasons, each with 'code' and 'message'). errorCode is one of: PICK_LIST_TEMPLATE_NOT_FOUND (the pick list template was not found); PICK_LIST_TEMPLATE_NOT_USABLE (the warehouse of the template is not active); PICK_LIST_NO_ORDERS_TO_PICK (nothing could be reserved: no order fits the template or no stock is available); PICK_LIST_MINIMUM_ORDER_COUNT_NOT_REACHED (fewer orders fit than the template's minimum order count); PICK_LIST_MINIMUM_ITEM_COUNT_NOT_REACHED (fewer items fit than the template's minimum item count); PICK_LIST_FULFILLMENT_NETWORK_EMPTY (the pick list for the fulfillment network would be empty); PICK_LIST_EDITION_VOLUME_LIMIT_REACHED (the volume limit of the edition is reached); PICK_LIST_CREATION_FAILED (the creation failed for another reason). - Request"
input CreatePickListCommandRequestInput {
"The template to create the pick list from."
pickListTemplateId: ID!
"Suppresses the automatic workflows of the event 'pick list created'. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a pick list template. Settings that are not sent get the defaults of the Wawi. A refused action reports 'errorCode'. errorCode is one of: WAREHOUSE_NOT_FOUND (the warehouse was not found or is not a warehouse with pick lists); PICK_LIST_PRINT_TEMPLATE_NOT_FOUND (the print template was not found); PICK_LIST_TEMPLATE_NAME_MISSING (the name is empty, null or longer than 64 characters); PICK_LIST_TEMPLATE_NULL_NOT_ALLOWED (null was sent for a group, a range, a list or a setting that cannot be empty); PICK_LIST_TEMPLATE_SOURCE_TYPE_REQUIRED (no source type is selected); PICK_LIST_TEMPLATE_TIME_WINDOWS_OVERLAP (two active time windows share a weekday and overlap in time); PICK_LIST_TEMPLATE_TIME_WINDOW_INVALID (a time is not hh:mm, or 'timeFrom' equals 'timeTo'); PICK_LIST_TEMPLATE_RANGE_INVALID (a range has a minimum larger than its maximum, a fractional value where the setting counts whole units, or an order priority outside -5 to 5); PICK_LIST_TEMPLATE_EXPECTED_DELIVERY_DAYS_REQUIRED (the expected delivery date mode WithinDays has no number of days); PICK_LIST_TEMPLATE_LIMIT_INVALID (the limit of a time window is 0 or less); PICK_LIST_TEMPLATE_REFERENCE_NOT_FOUND (an ID in a set filter or user list was not found); PICK_LIST_TEMPLATE_SELECTION_TOO_LARGE (a set filter or user list that the template stores as text holds more entries than fit); PICK_LIST_TEMPLATE_VALUE_UNKNOWN (an unknown template type, sort criterion or source type was sent); PICK_LIST_TEMPLATE_STOCK_SORT_ORDER_INVALID (a sort criterion is given twice); PICK_LIST_TEMPLATE_TYPE_COMBINATION_INVALID (the source types do not fit the template type, for example production replenishment on an identical-orders template). - Request"
input CreatePickListTemplateCommandRequestInput {
"The name of the template, 1 to 64 characters."
name: String!
"The warehouse the template creates pick lists for."
warehouseId: ID!
"How pick lists of the template are worked. Known values: BOXES, EAZY_SHIPPING, ROLLING_PICKING, PICK_AND_PACK, IDENTICAL_ORDERS. The list can grow; a value the server does not know is refused with PICK_LIST_TEMPLATE_VALUE_UNKNOWN. Cannot be changed later."
type: String!
"A comment, up to 255 characters."
comment: String
"The colour of the quick button."
color: String
"The quick slot, 1 to 15. Omit it to get the first free slot. A slot that another template of the same warehouse and type holds moves to this template (BOXES and EAZY_SHIPPING templates share their slots)."
quickSlot: Int
"The print template of the pick list. Omit for the standard one."
printTemplateId: ID
"How stock is chosen and reserved."
reservation: PickListTemplateReservationInput
"Which orders are put on the pick lists."
orderSelection: PickListTemplateOrderSelectionInput
"Which items are put on the pick lists."
itemSelection: PickListTemplateItemSelectionInput
"Who sees the template and its pick lists."
visibility: PickListTemplateVisibilityInput
"Automatic creation of pick lists."
automation: PickListTemplateAutomationInput
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"The whole purchase list in one call, for every supplier and every warehouse, in one transaction; use it only when everything is meant, otherwise use 'CreatePriceInquiriesFromPurchaseList' for one supplier. Asks for prices for what is on the purchase list: one price inquiry per supplier and warehouse, for every entry of the whole purchase list, made as 'CreatePurchaseOrdersFromPurchaseList' makes orders, with the same item lines and the same freight, discount and minimum quantity surcharge lines as an order. The entries stay on the list. Entries without a supplier are left on the list and counted. One entry that cannot be used, for example because its supplier was deactivated since, refuses the whole call with the code of its reason. All price inquiries are made in one transaction, all of them or none. A price inquiry raises no workflow events. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: an invalid request, for example 'confirmEntireList' that is not true; PURCHASE_LIST_NOTHING_IN_SCOPE (no entry on the list has a supplier); SUPPLIER_INACTIVE (a supplier is not active); ITEM_INACTIVE (an item on the list is not active any more); SUPPLIER_CURRENCY_NOT_RESOLVABLE or SUPPLIER_LANGUAGE_NOT_RESOLVABLE (a supplier's currency or language is missing in the ERP); WAREHOUSE_NOT_USABLE (a warehouse is inactive or a drop shipping target); WAREHOUSE_REQUIRED (a price inquiry has neither an entry warehouse, a default warehouse of the supplier nor any warehouse to fall back to). - Request"
input CreatePriceInquiriesFromEntirePurchaseListCommandRequestInput {
"Must be true. It guards against calling the command for the whole list by accident; a call without it is refused as an invalid request."
confirmEntireList: Boolean!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Asks for prices for what is on the purchase list: one price inquiry per supplier and warehouse, for the entries in scope, made as 'CreatePurchaseOrdersFromPurchaseList' makes orders, with the same item lines and the same freight, discount and minimum quantity surcharge lines as an order. The entries stay on the list. One entry that cannot be used, for example because its supplier was deactivated since, refuses the whole call with the code of its reason. All price inquiries are made in one transaction, all of them or none. A price inquiry raises no workflow events. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: PURCHASE_LIST_NOTHING_IN_SCOPE (no entry of the supplier, for the warehouse if one is given, is on the list); SUPPLIER_NOT_FOUND or WAREHOUSE_NOT_FOUND (the supplier or the warehouse of the scope was not found); SUPPLIER_INACTIVE (a supplier is not active); ITEM_INACTIVE (an item on the list is not active any more); SUPPLIER_CURRENCY_NOT_RESOLVABLE or SUPPLIER_LANGUAGE_NOT_RESOLVABLE (a supplier's currency or language is missing in the ERP); WAREHOUSE_NOT_USABLE (a warehouse is inactive or a drop shipping target); WAREHOUSE_REQUIRED (a price inquiry has neither an entry warehouse, a default warehouse of the supplier nor any warehouse to fall back to). - Request"
input CreatePriceInquiriesFromPurchaseListCommandRequestInput {
"The supplier whose entries are used, which also makes one run cover one supplier. To use the entries of every supplier, call the command for the whole list."
supplierId: ID!
"The warehouse whose entries are used. When omitted, the entries for every warehouse."
warehouseId: ID
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a price inquiry for one supplier with its lines in one call. The number is drawn from the number range of price inquiries; currency and language are the supplier's; the billing address is the company's and the delivery address the warehouse's. A price inquiry raises no workflow events. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: PRICE_INQUIRY_LINE_ITEMS_REQUIRED, WAREHOUSE_REQUIRED (neither a warehouse nor a default warehouse of the supplier) or another invalid request, for example a quantity below 0, a tax rate outside 0 to 100 or a text with control characters; SUPPLIER_NOT_FOUND, COMPANY_NOT_FOUND, WAREHOUSE_NOT_FOUND or SUPPLIER_CONTACT_NOT_FOUND (a referenced record was not found) or ITEM_NOT_FOUND; SUPPLIER_INACTIVE (the supplier is not active); SUPPLIER_CURRENCY_NOT_RESOLVABLE or SUPPLIER_LANGUAGE_NOT_RESOLVABLE (the supplier's currency or language is missing in the ERP); WAREHOUSE_NOT_USABLE (the warehouse is inactive or a drop shipping target); ITEM_INACTIVE, ITEM_IS_VARIATION_PARENT, ITEM_IS_BILL_OF_MATERIALS or ITEM_NOT_ASSIGNED_TO_SUPPLIER (an item cannot be asked for at this supplier as it is). - Request"
input CreatePriceInquiryCommandRequestInput {
"A temporary identifier chosen by the client, for example to match the answer to an optimistic update. It is not stored and is returned unchanged."
clientId: String
"The ID of the supplier, an active one."
supplierId: ID!
"The ID of the company that asks; its address becomes the billing address. When omitted, the supplier's default company is used, else the first company."
companyId: ID
"The ID of the supplier's contact person to address the price inquiry to. When omitted, the supplier's address is used without a person."
supplierContactId: ID
"The ID of the warehouse the goods would be delivered to, an active one that is no drop shipping target. When omitted, the supplier's default warehouse is used; one of the two is required."
warehouseId: ID
"When the goods are requested. When omitted: today plus the supplier's delivery time, or plus 14 days when the supplier has none."
requestedDeliveryDate: DateTime
"A free reference."
referenceNumber: String
"A comment for internal use. It is not printed."
internalComment: String
"A note printed on the price inquiry."
printNote: String
"The lines, at least one, in their order. Each is exactly one variant."
lineItems: [CreatePriceInquiryLineItemInput]!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a line to a price inquiry; it is put after the last line. The input is a one-of: an item line or a custom line. A price inquiry raises no workflow events. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: an invalid request, for example a quantity below 0, a tax rate outside 0 to 100 or a text with control characters; PRICE_INQUIRY_NOT_FOUND (the price inquiry was not found); ITEM_NOT_FOUND (the item was not found); ITEM_INACTIVE, ITEM_IS_VARIATION_PARENT, ITEM_IS_BILL_OF_MATERIALS or ITEM_NOT_ASSIGNED_TO_SUPPLIER (an item cannot be asked for at this supplier as it is). - Request"
input CreatePriceInquiryLineItemCommandRequestInput {
"The ID of the price inquiry."
priceInquiryId: ID!
"The new line. Exactly one variant."
lineItem: CreatePriceInquiryLineItemInput!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"A new line of a price inquiry. Polymorphic: exactly one variant is sent, and the variant is the kind of the line. In GraphQL the input selects the variant by its field name."
input CreatePriceInquiryLineItemInput @oneOf {
"A new line with an item."
priceInquiryItemLineCreation: PriceInquiryItemLineCreationInput
"A new free line without an item."
priceInquiryCustomLineCreation: PriceInquiryCustomLineCreationInput
}
"Creates a product group. Errors: errorCode is PRODUCT_GROUP_NAME_REQUIRED, PRODUCT_GROUP_NAME_TOO_LONG (the name is missing, null, empty or only spaces, or has more than 255 characters); PRODUCT_GROUP_NAME_ALREADY_EXISTS (another product group already has this name, regardless of upper and lower case). - Request"
input CreateProductGroupCommandRequestInput {
"The name of the product group. Leading and trailing spaces are removed. The name must not be null, empty or consist only of spaces, and has at most 255 characters."
name: String!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a production item for an item, together with its bills of materials and lot sizes. Production items cannot be created for configuration items. Errors: the request is invalid; the item already is a production item; ConfigurationItemNotSupported (the item is a configuration item); BillOfMaterialsRequiresOperation (a bill of materials has no parent component); BillOfMaterialsRequiresItem (a bill of materials has no item across all its parent components); a referenced item, template, operation, measurement unit, operation step or configuration group was not found. - Request"
input CreateProductionItemCommandRequestInput {
"The ID of the item for which the production item is created."
itemId: ID!
"The type of manufacturing of the production item. When omitted, Regular is used."
productionType: ProductionType
"The ID of a template to be used for printing an item label when a lot is completed. When omitted or null, no item label is printed on completion."
lotLabelTemplateId: ID
"The ID of a template to be used for printing an item label for each produced unit when a lot is completed. When omitted or null, no item label is printed for each produced unit on completion."
singleItemLabelTemplateId: ID
"The lot sizes to create for the production item. A quantity that is sent more than once is created only once. The lot type of the production item is Own if lot sizes are sent, otherwise None. When omitted, no lot sizes are created."
lotSizes: [LotSizeCreationInput]
"The bills of materials to create for the production item. At least one bill of materials is required. Each bill of materials must contain at least one operation, and across all its operations at least one item must be present."
billsOfMaterials: [BillOfMaterialsCreationInput]!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a production order for a production item. The new production order is not released. The quantity is specified either by the target total quantity or by lot count and lot size. Errors: the request is invalid; PRODUCTION_ITEM_NOT_FOUND (the production item was not found); BILL_OF_MATERIALS_NOT_FOUND (the bill of materials was not found); PRODUCTION_ORDER_BILL_OF_MATERIALS_MISMATCH (the bill of materials does not belong to the production item); PRODUCTION_ORDER_LOT_SIZE_NOT_DEFINED (the lot size is not one of the lot sizes of the production item). - Request"
input CreateProductionOrderCommandRequestInput {
"The ID of the production item to be produced."
productionItemId: ID!
"The ID of the bill of materials used to produce the production item. It must belong to the production item."
billOfMaterialsId: ID!
"The quantity to be produced: either the target total quantity or lot count and lot size. Exactly one variant."
quantity: ProductionOrderQuantitySpecificationInput!
"The reference number of the order underlying the production order. Defaults to empty."
referenceNumber: String
"The project number associated with the production order. Defaults to empty."
projectNumber: String
"An additional note that is displayed during production. Defaults to empty."
notice: String
"The planned start of the production order."
targetStartAt: DateTime
"The planned completion of the production order."
targetCompletionAt: DateTime
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a production order for a disposition. The production order produces the production item of the disposition and is linked to the disposition. The open quantity of the disposition, i.e. the quantity that is neither produced yet nor covered by production orders, is treated as the target total quantity of CreateProductionOrder: lot count and lot size are determined from it in the same way. Without a bill of materials in the request, the standard bill of materials of the production item is used; if it has none, its first alternative bill of materials. The new production order is released only if requested. Errors: the request is invalid; DISPOSITION_NOT_FOUND (the disposition was not found); DISPOSITION_NO_OPEN_QUANTITY (no quantity of the disposition is left to be produced); DISPOSITION_PENDING (the disposition is currently being processed, i.e. it has the status Pending); BILL_OF_MATERIALS_NOT_FOUND (the bill of materials was not found); PRODUCTION_ORDER_BILL_OF_MATERIALS_MISMATCH (the bill of materials does not belong to the production item); PRODUCTION_ORDER_NO_BILL_OF_MATERIALS_AVAILABLE (no bill of materials was sent, and the production item has neither a standard nor an alternative bill of materials); PRODUCTION_ORDER_CONFIGURATION_GROUPS_NOT_REPLACEABLE (the bill of materials contains configuration groups that could not be replaced by the components specified in the sales order line item the disposition originates from); PRODUCTION_ORDER_RELEASE_FAILED (the release was requested, but the production order could not be released). - Request"
input CreateProductionOrderForDispositionCommandRequestInput {
"The ID of the disposition to create the production order for (see GetDispositionById)."
dispositionId: ID!
"The ID of the bill of materials used to produce the production item. It must belong to the production item. Defaults to the standard bill of materials of the production item, or, if it has none, to its first alternative bill of materials."
billOfMaterialsId: ID
"Whether the new production order is released immediately. Defaults to false."
release: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Puts an item on the purchase list. There is one entry per item, warehouse and supplier: when the list already has an entry for the same combination, the quantity is added to it and the note is appended after ' / ', no new entry is made, and 'wasMerged' is true. When 'supplierId' is omitted, the item's default supplier is used if it can be ordered from, else the entry has no supplier; when 'warehouseId' is omitted, the only active warehouse that is no drop shipping target is used if there is exactly one, else the entry has no warehouse. A bill of materials is not put on the list as such; put its components. Because it can change an existing entry, it answers 200 whether or not an entry was made. The purchase list has no workflow events. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: an invalid request, for example a quantity of 0 or less, or a text with control characters; ITEM_NOT_FOUND, SUPPLIER_NOT_FOUND or WAREHOUSE_NOT_FOUND (a referenced record was not found); ITEM_INACTIVE, ITEM_IS_VARIATION_PARENT or ITEM_IS_BILL_OF_MATERIALS (the item cannot be put on the list); PURCHASE_LIST_QUANTITY_NOT_WHOLE (the item is not divisible and the quantity is not a whole number); PURCHASE_LIST_SUPPLIER_EXCLUDED (the supplier is excluded from the purchase list), ITEM_NOT_ASSIGNED_TO_SUPPLIER (the supplier does not have the item) or SUPPLIER_INACTIVE (the supplier is not active); WAREHOUSE_NOT_USABLE (the warehouse is inactive or a drop shipping target). - Request"
input CreatePurchaseListEntryCommandRequestInput {
"A temporary identifier chosen by the client, for example to match the answer to an optimistic update. It is not stored and is returned unchanged."
clientId: String
"The ID of the item, an active one that is neither a variation parent nor a bill of materials."
itemId: ID!
"The quantity to buy, more than 0. Items that are not divisible take whole numbers."
quantity: Decimal!
"The ID of the supplier, an active one that has the item and is not excluded from the purchase list."
supplierId: ID
"The ID of the warehouse the goods are for, an active one that is no drop shipping target."
warehouseId: ID
"A free note."
note: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a purchase order with its line items in one call. The order input is a one-of: exactly one variant is sent and it is the kind of the order, to a warehouse or drop shipping to a customer. The number is drawn from the number range; currency and language are the supplier's. The ERP adds the discount from the supplier's discount scale, its freight charge and its minimum quantity surcharge as computed lines. Raises the workflow event 'created'; an order that starts released also raises 'changed', and an order to a warehouse 'released' as well. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: PURCHASE_ORDER_LINE_ITEMS_REQUIRED, WAREHOUSE_REQUIRED (neither a warehouse nor a default warehouse of the supplier) or another invalid request, for example a quantity below 0, a tax rate outside 0 to 100 or a text with control characters; SUPPLIER_NOT_FOUND, COMPANY_NOT_FOUND, WAREHOUSE_NOT_FOUND, CUSTOMER_NOT_FOUND, SUPPLIER_CONTACT_NOT_FOUND or ITEM_NOT_FOUND (a referenced record was not found); SUPPLIER_INACTIVE (the supplier is not active); SUPPLIER_CURRENCY_NOT_RESOLVABLE or SUPPLIER_LANGUAGE_NOT_RESOLVABLE (the supplier's currency or language is missing in the ERP); WAREHOUSE_NOT_USABLE (the warehouse is inactive or a drop shipping target); ITEM_INACTIVE, ITEM_IS_VARIATION_PARENT, ITEM_IS_BILL_OF_MATERIALS or ITEM_NOT_ASSIGNED_TO_SUPPLIER (an item cannot be ordered from this supplier as it is). - Request"
input CreatePurchaseOrderCommandRequestInput {
"A temporary identifier chosen by the client, for example to match the answer to an optimistic update. It is not stored and is returned unchanged."
clientId: String
"The data of the new order. Exactly one variant."
purchaseOrder: CreatePurchaseOrderInput!
"The line items, at least one, in their order. Each is exactly one variant."
lineItems: [CreatePurchaseOrderLineItemInput]!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"The data of a new purchase order. Polymorphic: exactly one variant is sent, and the variant is the kind of the order. In GraphQL the input selects the variant by its field name."
input CreatePurchaseOrderInput @oneOf {
"A new purchase order delivered to one of the company's warehouses. It starts as 'Open' when the ERP requires purchase orders to be released and 'release' is not set, else as 'Released'."
warehousePurchaseOrderCreation: WarehousePurchaseOrderCreationInput
"A new purchase order the supplier delivers straight to a customer. It starts as 'Released'; its goods are never booked into stock."
dropShippingPurchaseOrderCreation: DropShippingPurchaseOrderCreationInput
}
"Adds a line item to a purchase order, in every status; it is put after the last item or custom line. The input is a one-of: an item line or a custom line. The allowances and charges are computed anew. An order that is sent or partially delivered gets its status computed anew from the ordered and delivered quantities; a completed order stays completed. Raises the workflow event 'changed'. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: an invalid request, for example a quantity below 0, a tax rate outside 0 to 100 or a text with control characters; PURCHASE_ORDER_NOT_FOUND (the order was not found); ITEM_NOT_FOUND (the item was not found); ITEM_INACTIVE, ITEM_IS_VARIATION_PARENT, ITEM_IS_BILL_OF_MATERIALS or ITEM_NOT_ASSIGNED_TO_SUPPLIER (the item cannot be ordered from this supplier as it is). - Request"
input CreatePurchaseOrderLineItemCommandRequestInput {
"The ID of the purchase order."
purchaseOrderId: ID!
"The new line item. Exactly one variant."
lineItem: CreatePurchaseOrderLineItemInput!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"A new line item. Polymorphic: exactly one variant is sent, and the variant is the kind of the line. Allowances and charges cannot be written; the ERP computes them."
input CreatePurchaseOrderLineItemInput @oneOf {
"A new line with an item."
purchaseOrderItemLineCreation: PurchaseOrderItemLineCreationInput
"A new free line without an item. It is delivered like an item line but never booked into stock."
purchaseOrderCustomLineCreation: PurchaseOrderCustomLineCreationInput
}
"The whole purchase list in one call, for every supplier and every warehouse, in one transaction; use it only when everything is meant, otherwise use 'CreatePurchaseOrdersFromPurchaseList' for one supplier. Orders what is on the purchase list: one purchase order per supplier and warehouse, for every entry of the whole purchase list. The quantity ordered is each entry's 'orderQuantity'; the price is the one in 'netUnitPrice'; the lines of one item are added up, and the price of the summed line is the scale price at the summed quantity; the ERP adds the allowances and charges of the supplier as for every order. The warehouse is the entry's warehouse, else the supplier's default warehouse, else the first active warehouse that is no drop shipping target. The orders start as 'Open' when the ERP requires purchase orders to be released, else as 'Released'. Entries without a supplier are left on the list and counted. One entry that cannot be ordered, for example because its supplier was deactivated since, refuses the whole call with the code of its reason; change or remove that entry first. The entries that were ordered are removed from the list. All orders are made in one transaction, all of them or none. Raises the workflow events of 'CreatePurchaseOrder' for every new order. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: an invalid request, for example 'confirmEntireList' that is not true; PURCHASE_LIST_NOTHING_IN_SCOPE (no entry on the list has a supplier); SUPPLIER_INACTIVE (a supplier is not active); ITEM_INACTIVE (an item on the list is not active any more); SUPPLIER_CURRENCY_NOT_RESOLVABLE or SUPPLIER_LANGUAGE_NOT_RESOLVABLE (a supplier's currency or language is missing in the ERP); WAREHOUSE_NOT_USABLE (a warehouse is inactive or a drop shipping target); WAREHOUSE_REQUIRED (an order has neither an entry warehouse, a default warehouse of the supplier nor any warehouse to fall back to). - Request"
input CreatePurchaseOrdersFromEntirePurchaseListCommandRequestInput {
"Must be true. It guards against calling the command for the whole list by accident; a call without it is refused as an invalid request."
confirmEntireList: Boolean!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Orders what is on the purchase list: one purchase order per supplier and warehouse, for the entries in scope. The quantity ordered is each entry's 'orderQuantity'; the price is the one in 'netUnitPrice'; the lines of one item are added up, and the price of the summed line is the scale price at the summed quantity; the ERP adds the allowances and charges of the supplier as for every order. The warehouse is the entry's warehouse, else the supplier's default warehouse, else the first active warehouse that is no drop shipping target. The orders start as 'Open' when the ERP requires purchase orders to be released, else as 'Released'. One entry that cannot be ordered, for example because its supplier was deactivated since, refuses the whole call with the code of its reason; change or remove that entry first. The entries that were ordered are removed from the list. All orders are made in one transaction, all of them or none. Raises the workflow events of 'CreatePurchaseOrder' for every new order. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: PURCHASE_LIST_NOTHING_IN_SCOPE (no entry of the supplier, for the warehouse if one is given, is on the list); SUPPLIER_NOT_FOUND or WAREHOUSE_NOT_FOUND (the supplier or the warehouse of the scope was not found); SUPPLIER_INACTIVE (a supplier is not active); ITEM_INACTIVE (an item on the list is not active any more); SUPPLIER_CURRENCY_NOT_RESOLVABLE or SUPPLIER_LANGUAGE_NOT_RESOLVABLE (a supplier's currency or language is missing in the ERP); WAREHOUSE_NOT_USABLE (a warehouse is inactive or a drop shipping target); WAREHOUSE_REQUIRED (an order has neither an entry warehouse, a default warehouse of the supplier nor any warehouse to fall back to). - Request"
input CreatePurchaseOrdersFromPurchaseListCommandRequestInput {
"The supplier whose entries are used, which also makes one run cover one supplier. To use the entries of every supplier, call the command for the whole list."
supplierId: ID!
"The warehouse whose entries are used. When omitted, the entries for every warehouse."
warehouseId: ID
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates purchase orders from restock suggestions in one transaction, all of them or none: one purchase order per supplier and warehouse of the request lines, with their lines in the order of the request. Every order is created as 'CreatePurchaseOrder' creates an order to a warehouse: company, requested delivery date, prices, tax rates and the discount, freight and minimum quantity surcharge lines follow the supplier's conditions. At most 1000 lines; an item may appear only once per supplier and warehouse. The lines are not checked against a calculation, and the purchase list is not touched. A command over several purchase orders, so that the orders of one decision are created together or not at all. Raises the workflow event 'created' of every new order; an order that starts released also raises 'changed' and 'released'. A line that cannot be ordered refuses the whole call with RESTOCK_SUGGESTION_LINES_NOT_ORDERABLE; 'extensions.blockers' then has one entry per refused line with its reason as 'code', the line's position in the request (from 0) as 'lineIndex' and its 'clientId'. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: RESTOCK_SUGGESTION_LINES_REQUIRED, RESTOCK_SUGGESTION_LINE_LIMIT_EXCEEDED, RESTOCK_SUGGESTION_LINE_DUPLICATE, CLIENT_ID_NOT_UNIQUE or VALIDATION_FAILED (no line, more than 1000 lines, an item twice for one supplier and warehouse, a client identifier twice, or the request is invalid otherwise, for example a quantity of 0 or less); RESTOCK_SUGGESTION_LINES_NOT_ORDERABLE (at least one line cannot be ordered; its blocker names the reason: SUPPLIER_NOT_FOUND, WAREHOUSE_NOT_FOUND, ITEM_NOT_FOUND, SUPPLIER_INACTIVE, SUPPLIER_CURRENCY_NOT_RESOLVABLE, SUPPLIER_LANGUAGE_NOT_RESOLVABLE, WAREHOUSE_NOT_USABLE (inactive or a drop shipping target), ITEM_INACTIVE, ITEM_IS_VARIATION_PARENT, ITEM_IS_BILL_OF_MATERIALS or ITEM_NOT_ASSIGNED_TO_SUPPLIER). - Request"
input CreatePurchaseOrdersFromRestockSuggestionsCommandRequestInput {
"The lines to order, at least 1 and at most 1000."
lines: [RestockSuggestionPurchaseOrderLineInput]!
"Whether to release the new orders right away, as the release box of the purchase order dialog does. Defaults to false; when the ERP does not require release, every new order is released anyway."
release: Boolean
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a new RegularItem in one call. The request carries exactly the fields of this kind: mandatory ones, optional ones, and none of those the kind does not have. The item is valid right away: item number, name, at least one category and the mandatory fields of the kind are required. Everything else, such as prices, descriptions in further languages, suppliers and images, is added through its own sub-resource. - Request"
input CreateRegularItemCommandRequestInput {
"Name of the item in the default language. Further languages and sales channel texts are the descriptions of the item."
name: String!
"The identifiers of the item. The item number (SKU) is mandatory and unique."
identifiers: TradeItemIdentifiersInput!
"The IDs of the categories the new item is assigned to. At least one: every item that is not a combination of a variation parent has a category, and an item without one is not valid (an empty list is refused with 400). A combination takes over the categories of its parent and is created through the combinations of the parent, which have no such field. Further assignments are made through the categories of the item."
categoryIds: [ID]!
"Whether the item is active. Defaults to true when omitted."
isActive: Boolean
"The ID of the product group."
productGroupId: ID
"The ID of the manufacturer."
manufacturerId: ID
"The ID of the item condition, for example new or used."
conditionId: ID
"The ID of the delivery status of the item (the master data of delivery statuses, for example \"in stock\" or \"ships in 3 days\")."
deliveryStatusId: ID
"The ID of the tax class. When omitted the item gets the company default. The value must reference an existing tax class."
taxClassId: ID
"The ID of the shipping class."
shippingClassId: ID
"Outer dimensions as shipped."
dimensions: ItemDimensionsInput
"Weights."
weights: ItemWeightsInput
"Customs information."
customs: ItemCustomsInput
"Sales unit and content with its base price."
units: ItemUnitsInput
"The containers the item is also traded in."
containers: [NewItemContainerInput]
"The default texts of the item, one per language."
descriptions: [NewItemDescriptionInput]
"The characteristic values (German 'Merkmalwerte') assigned to the item. Omitted means none."
characteristicValueIds: [ID]
"The attribute values of the item, per attribute, sales channel and language. Omitted means none. The attributes the system derives itself, such as those of a voucher, cannot be sent."
attributes: [ItemAttributeInput]
"The custom field values of the item. Omitted means none. A custom field has to apply to the item, which depends on its product group."
customFields: [ItemCustomFieldInput]
"The free-text variations of the item (German 'Freitext'), added in the same call. Every kind can have them. Omitted means none. Refused with 409 for an item of the fulfillment network."
freeTextVariations: [NewFreeTextVariationInput]
"The simple selection variations of the item with their values, added in the same call. Only the kinds that allow them have this field; the reasons that forbid them for a given item are in 409 SELECTION_VARIATION_NOT_ALLOWED_FOR_ITEM_TYPE. Omitted means none."
selectionVariations: [NewSelectionVariationInput]
"The sales channels the item is activated in, set in the same call. The item has to be in a category that is active in each of them. Omitted means none; the item is activated afterwards through its sales channels."
salesChannels: [SalesChannelActivationInput]
"The prices of the item, created in the same call. Every part is the model of the matching prices route. Omitted means the item is created without prices and they are set through those routes."
prices: NewItemPricesInput
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a resource. The input is a one-of: exactly one variant is sent and it is the category of the new resource. Errors: the request is invalid; RESOURCE_TYPE_NOT_FOUND (the resource type was not found); RESOURCE_TYPE_CATEGORY_MISMATCH (the resource type belongs to another category); a referenced warehouse, hardware or user was not found. - Request"
input CreateResourceCommandRequestInput {
"The data of the new resource. Exactly one variant."
resource: CreateResourceInput!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a resource group. Errors: the request is invalid; RESOURCE_CATEGORY_NOT_FOUND (the resource category was not found). - Request"
input CreateResourceGroupCommandRequestInput {
"The name of the new resource group."
name: String!
"The ID of the resource category of the new resource group. The group can only contain resources of this category."
categoryId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"The data of a new resource. Polymorphic: exactly one variant is sent, and the variant is the category of the new resource."
input CreateResourceInput @oneOf {
"Creates a workbench."
workbenchCreation: WorkbenchCreationInput
"Creates a machine."
machineCreation: MachineCreationInput
"Creates an employee."
employeeCreation: EmployeeCreationInput
}
"Creates a resource type. Errors: the request is invalid; RESOURCE_CATEGORY_NOT_FOUND (the resource category was not found). - Request"
input CreateResourceTypeCommandRequestInput {
"The name of the new resource type."
name: String!
"The ID of the resource category the new resource type belongs to. It cannot be changed later."
categoryId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a destination area with its entries in one call; their order in the request is their priority, the first is the highest. A warehouse appears only once; an entry with an area or a storage location of a warehouse counts for that warehouse. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: RESTOCK_SUGGESTION_DESTINATION_AREA_ENTRIES_REQUIRED, RESTOCK_SUGGESTION_DESTINATION_AREA_NAME_REQUIRED, RESTOCK_SUGGESTION_DESTINATION_AREA_ENTRY_DUPLICATE or VALIDATION_FAILED (no entry, an empty name, a supplier or warehouse twice in the request, or the request is invalid otherwise); WAREHOUSE_NOT_FOUND (the warehouse was not found); WAREHOUSE_NOT_USABLE (the warehouse is not active or a transit or pending-reservation warehouse). - Request"
input CreateRestockSuggestionDestinationAreaCommandRequestInput {
"A temporary identifier chosen by the client, for example to match the answer to an optimistic update. It is not stored and is returned unchanged."
clientId: String
"The name, 1 to 255 characters. It need not be unique."
name: String!
"Whether the destination area can be used in settings. Defaults to true."
isActive: Boolean
"The entries, at least one, in their priority. Each is exactly one variant."
entries: [CreateRestockSuggestionDestinationAreaEntryInput]!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds an entry to a destination area. The input is a one-of: exactly one variant is sent and it is the kind of the entry. A warehouse appears only once; an entry with an area or a storage location of a warehouse counts for that warehouse. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: VALIDATION_FAILED (the request is invalid, for example a priority below 1 or beyond the last entry plus one); RESTOCK_SUGGESTION_DESTINATION_AREA_NOT_FOUND (the destination area was not found; an area of the other kind counts as not found); WAREHOUSE_NOT_FOUND (the warehouse was not found); WAREHOUSE_NOT_USABLE or RESTOCK_SUGGESTION_DESTINATION_AREA_ENTRY_DUPLICATE (the warehouse is not active or a transit or pending-reservation warehouse; the supplier or warehouse is in the destination area already). - Request"
input CreateRestockSuggestionDestinationAreaEntryCommandRequestInput {
"The ID of the destination area."
destinationAreaId: ID!
"The new entry. Exactly one variant."
entry: CreateRestockSuggestionDestinationAreaEntryInput!
"The priority of the new entry, 1 is the highest; the entries from there on move one down. When omitted, the new entry gets the lowest priority."
priority: Int
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"A new entry of a destination area. Polymorphic: exactly one variant is sent, and the variant is the kind of the entry. In GraphQL the input selects the variant by its field name."
input CreateRestockSuggestionDestinationAreaEntryInput @oneOf {
"A new entry with a whole warehouse: an active warehouse that is neither a transit warehouse of stock transfers nor a warehouse of pending Amazon fulfillment reservations."
restockSuggestionDestinationAreaWarehouseEntryCreation: RestockSuggestionDestinationAreaWarehouseEntryCreationInput
}
"Creates a start area with its entries in one call; their order in the request is their priority, the first is the highest. A supplier or warehouse appears only once, and at most one entry is the company's own production. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: RESTOCK_SUGGESTION_START_AREA_ENTRIES_REQUIRED, RESTOCK_SUGGESTION_START_AREA_NAME_REQUIRED, RESTOCK_SUGGESTION_START_AREA_ENTRY_DUPLICATE or VALIDATION_FAILED (no entry, an empty name, a supplier or warehouse twice in the request, or the request is invalid otherwise); SUPPLIER_NOT_FOUND or WAREHOUSE_NOT_FOUND (a referenced record was not found); SUPPLIER_INACTIVE, WAREHOUSE_NOT_USABLE, RESTOCK_SUGGESTION_PRODUCTION_NOT_AVAILABLE or RESTOCK_SUGGESTION_START_AREA_PRODUCTION_ENTRY_DUPLICATE (the supplier is not active, the warehouse is not active or a transit or pending-reservation warehouse, the ERP has no active production, or the start area has a production entry already). - Request"
input CreateRestockSuggestionStartAreaCommandRequestInput {
"A temporary identifier chosen by the client, for example to match the answer to an optimistic update. It is not stored and is returned unchanged."
clientId: String
"The name, 1 to 255 characters. It need not be unique."
name: String!
"Whether the start area can be used in settings. Defaults to true."
isActive: Boolean
"The entries, at least one, in their priority. Each is exactly one variant."
entries: [CreateRestockSuggestionStartAreaEntryInput]!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds an entry to a start area. The input is a one-of: exactly one variant is sent and it is the kind of the entry. A supplier or warehouse appears only once, and at most one entry is the company's own production. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: VALIDATION_FAILED (the request is invalid, for example a priority below 1 or beyond the last entry plus one); RESTOCK_SUGGESTION_START_AREA_NOT_FOUND (the start area was not found; an area of the other kind counts as not found); SUPPLIER_NOT_FOUND or WAREHOUSE_NOT_FOUND (a referenced record was not found); SUPPLIER_INACTIVE, WAREHOUSE_NOT_USABLE, RESTOCK_SUGGESTION_PRODUCTION_NOT_AVAILABLE, RESTOCK_SUGGESTION_START_AREA_PRODUCTION_ENTRY_DUPLICATE or RESTOCK_SUGGESTION_START_AREA_ENTRY_DUPLICATE (the supplier is not active, the warehouse is not active or a transit or pending-reservation warehouse, the ERP has no active production, or the start area has a production entry already; the supplier or warehouse is in the start area already). - Request"
input CreateRestockSuggestionStartAreaEntryCommandRequestInput {
"The ID of the start area."
startAreaId: ID!
"The new entry. Exactly one variant."
entry: CreateRestockSuggestionStartAreaEntryInput!
"The priority of the new entry, 1 is the highest; the entries from there on move one down. When omitted, the new entry gets the lowest priority."
priority: Int
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"A new entry of a start area. Polymorphic: exactly one variant is sent, and the variant is the kind of the entry. In GraphQL the input selects the variant by its field name."
input CreateRestockSuggestionStartAreaEntryInput @oneOf {
"A new entry with a supplier, an active one."
restockSuggestionStartAreaSupplierEntryCreation: RestockSuggestionStartAreaSupplierEntryCreationInput
"A new entry with the company's own production. It needs an active production in the ERP."
restockSuggestionStartAreaProductionEntryCreation: RestockSuggestionStartAreaProductionEntryCreationInput
"A new entry with a source warehouse: an active warehouse that is neither a transit warehouse of stock transfers nor a warehouse of pending Amazon fulfillment reservations."
restockSuggestionStartAreaWarehouseEntryCreation: RestockSuggestionStartAreaWarehouseEntryCreationInput
}
"Creates a template. Only the destination of the settings is required; every other setting takes its default. A template cannot select one supplier ('sourceSelection' 'SUPPLIER') or one warehouse ('destinationSelection' 'WAREHOUSE'): the ERP's templates have no place for them; send such settings with the calculation instead. The template is kept in the ERP's expert mode, so that the ERP calculates with exactly these settings; its options outside this contract (display and purchase list options of the ERP's dialog) are kept as stored. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: RESTOCK_SUGGESTION_TEMPLATE_NAME_REQUIRED or RESTOCK_SUGGESTION_SELECTION_NOT_ALLOWED_IN_TEMPLATE (the name is empty, or the settings select one supplier or one warehouse); RESTOCK_SUGGESTION_START_AREA_REQUIRED, RESTOCK_SUGGESTION_SUPPLIER_REQUIRED, RESTOCK_SUGGESTION_DESTINATION_AREA_REQUIRED, RESTOCK_SUGGESTION_WAREHOUSE_REQUIRED, RESTOCK_SUGGESTION_FORECAST_PERIOD_REQUIRED or VALIDATION_FAILED (a selection or forecast type misses the ID, days, dates or period it needs, or the request is invalid otherwise, for example an ID the selection does not use, a period that ends before it starts, an unknown value of a documented string or a number out of its range); RESTOCK_SUGGESTION_START_AREA_NOT_FOUND, RESTOCK_SUGGESTION_DESTINATION_AREA_NOT_FOUND, SUPPLIER_NOT_FOUND or WAREHOUSE_NOT_FOUND (a referenced record was not found; an area of the other kind counts as not found); RESTOCK_SUGGESTION_START_AREA_INACTIVE, RESTOCK_SUGGESTION_DESTINATION_AREA_INACTIVE or WAREHOUSE_NOT_USABLE (an area or the warehouse is not active). - Request"
input CreateRestockSuggestionTemplateCommandRequestInput {
"A temporary identifier chosen by the client, for example to match the answer to an optimistic update. It is not stored and is returned unchanged."
clientId: String
"The name, 1 to 255 characters. It need not be unique."
name: String!
"The settings."
settings: RestockSuggestionSettingsInput!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a return for a sales order with at least one line item. Line items refer to delivery note lines or to items. - Request"
input CreateReturnCommandRequestInput {
"The ID of the warehouse the goods are returned to."
warehouseId: ID!
"The ID of the sales order. The customer of the return is the customer of the sales order."
salesOrderId: ID!
"The ID of the company the return belongs to. The return number comes from its number range."
companyId: ID!
"The address the goods are picked up from. Omitted means the address is copied from the sales order."
pickupAddress: ReturnPickupAddressInput
"Line items for items without a delivery note line."
itemLineItems: [ReturnItemLineItemInput]
"The items the customer gets in exchange."
exchangeItems: [ReturnExchangeItemInput]
"Line items for delivered lines of the sales order. At least one line item is required in total."
deliveryNoteLineItems: [ReturnDeliveryNoteLineItemInput]
"Whether the return is reported to the sales channel of the sales order. Defaults to false."
transmitToSalesChannel: Boolean
"Whether the shipping costs are credited in the sales invoice correction. Defaults to false."
refundShippingCosts: Boolean
"Whether a returned bill of materials is credited completely in the sales invoice correction. Defaults to false."
creditBillOfMaterialsCompletely: Boolean
"How coupons are credited in the sales invoice correction: NONE, FULL or PROPORTIONAL. Defaults to FULL."
couponCreditMode: String
"A gross amount added to the sales invoice correction as a free line item. Omitted means none."
correctionAmount: Decimal
"The comment on the correction amount."
correctionAmountComment: String
"A comment for internal use."
internalComment: String
"A number of the return in another system, for example the sales channel."
externalNumber: String
"A comment that can be shown to the customer."
externalComment: String
"The contact person of the customer for this return."
contact: String
"A temporary ID chosen by the client. It is not stored and is returned unchanged."
clientId: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a line item for a delivered line of a delivery note of the sales order to a return. - Request"
input CreateReturnDeliveryNoteLineItemCommandRequestInput {
"The ID of the return. If it does not exist, errorCode is RETURN_NOT_FOUND."
returnId: ID!
"The new line item."
lineItem: ReturnDeliveryNoteLineItemInput!
"A temporary ID chosen by the client. It is not stored and is returned unchanged."
clientId: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds an item the customer gets in exchange to a return. If the exchange sales order exists, errorCode is RETURN_EXCHANGE_SALES_ORDER_EXISTS. - Request"
input CreateReturnExchangeItemCommandRequestInput {
"The ID of the return. If it does not exist, errorCode is RETURN_NOT_FOUND; without a sales order, RETURN_HAS_NO_SALES_ORDER."
returnId: ID!
"The new exchange item."
exchangeItem: ReturnExchangeItemInput!
"A temporary ID chosen by the client. It is not stored and is returned unchanged."
clientId: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates the exchange sales order of a return from its exchange items. A return has at most one exchange sales order. - Request"
input CreateReturnExchangeSalesOrderCommandRequestInput {
"The ID of the return. If it does not exist, errorCode is RETURN_NOT_FOUND."
returnId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a line item for an item without a delivery note line to a return. - Request"
input CreateReturnItemLineItemCommandRequestInput {
"The ID of the return. If it does not exist, errorCode is RETURN_NOT_FOUND."
returnId: ID!
"The new line item."
lineItem: ReturnItemLineItemInput!
"A temporary ID chosen by the client. It is not stored and is returned unchanged."
clientId: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a return label to a return: a tracking number, a label file uploaded beforehand, or both. - Request"
input CreateReturnLabelCommandRequestInput {
"The ID of the return. If it does not exist, errorCode is RETURN_NOT_FOUND."
returnId: ID!
"The ID of the shipping method. Not together with 'customShippingMethodName'."
shippingMethodId: ID
"The ID of a file uploaded beforehand with the file upload endpoints."
blobIdentifier: UUID
"The tracking number of the return shipment."
trackingNumber: String
"The name of a shipping method that is not set up in Wawi."
customShippingMethodName: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Sets the state of a line item of a return and records the change in its history. - Request"
input CreateReturnLineItemStateChangeCommandRequestInput {
"The ID of the return. If it does not exist, errorCode is RETURN_NOT_FOUND."
returnId: ID!
"The ID of the line item. If it does not exist, errorCode is RETURN_LINE_ITEM_NOT_FOUND."
returnLineItemId: ID!
"The ID of the new state; Announced line items reach Arrived only through receive-goods. If refused, errorCode is RETURN_STATE_TRANSITION_INVALID."
stateId: ID!
"The condition of the goods. Omitted keeps the condition of the line item."
itemConditionId: ID
"A comment on the change, at most 255 characters."
comment: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a return reason. Translations are required, at least in the default language of Wawi; each language at most once. Defaults: colour #FF9600, offered in the warehouse, position after the last one, no restriction. Errors: RETURN_REASON_TRANSLATION_MISSING, RETURN_REASON_DEFAULT_NAME_REQUIRED, RETURN_REASON_NAME_EMPTY, RETURN_REASON_NAME_TOO_LONG, RETURN_REASON_DESCRIPTION_TOO_LONG, RETURN_REASON_LANGUAGE_DUPLICATED, RETURN_REASON_COLOR_INVALID (400); LANGUAGE_NOT_ACTIVE, PRODUCT_GROUP_NOT_FOUND, CATEGORY_NOT_FOUND (422). GraphQL only. - Request"
input CreateReturnReasonCommandRequestInput {
"The names and descriptions, one per language, at least one; the default language is required."
translations: [ReturnReasonTranslationInput]!
"The colour as #RRGGBB; case is not significant. Defaults to #FF9600."
color: String
"The position in selection lists, starting at 1. Defaults to the end; a larger value also places the return reason at the end. The other return reasons move accordingly."
sortOrder: Int
"Whether the warehouse offers the return reason. Defaults to true."
isVisibleInWms: Boolean
"The product groups and categories to restrict the return reason to. Omitted means no restriction. It can be changed with 'SetReturnReasonRestriction'."
restriction: ReturnReasonRestrictionInput
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates the sales invoice corrections for the credited line items of a return, one per sales invoice they were billed with. - Request"
input CreateReturnSalesInvoiceCorrectionsCommandRequestInput {
"The ID of the return. If it does not exist, errorCode is RETURN_NOT_FOUND."
returnId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a return state below one of the three system states; it belongs to the stage of that system state and is active. Defaults: not offered in the warehouse, position after the last state with the same parent. Errors: RETURN_STATE_DEFAULT_NAME_REQUIRED, RETURN_STATE_NAME_EMPTY, RETURN_STATE_NAME_TOO_LONG, RETURN_STATE_LANGUAGE_DUPLICATED (400); RETURN_STATE_PARENT_MUST_BE_SYSTEM_STATE, RETURN_STATE_WMS_VISIBILITY_NOT_ALLOWED (409); LANGUAGE_NOT_ACTIVE, RETURN_STATE_PARENT_NOT_FOUND (422). GraphQL only. - Request"
input CreateReturnStateCommandRequestInput {
"The ID of the system state the new state is created below."
parentId: ID!
"The names, one per language, at least one; the default language is required."
translations: [ReturnStateTranslationInput]!
"The position among the states with the same parent, starting at 1. Defaults to the end; a larger value also places the state at the end."
sortOrder: Int
"Whether the warehouse offers the return state. Only possible below the system states 'Arrived' and 'Completed'. Defaults to false."
isVisibleInWms: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a bank transfer refund for a sales credit note and books its payout at once. The money moves with SendRefund. - Request"
input CreateSalesCreditNoteRefundCommandRequestInput {
"The ID of the sales credit note. A sales invoice correction ID fails as not found."
salesCreditNoteId: ID!
"The amount to pay back, greater than 0, with at most two decimals. At most what the proposal allows."
amount: Decimal!
"How the money is moved: bank transfer only. The payment transaction variant fails with REFUND_EXECUTION_NOT_SUPPORTED."
execution: RefundExecutionInput!
"The text the recipient sees with the money. Omitted means a text naming the document. Bank transfers carry at most 140 characters of it."
paymentReference: String
"An internal note that is not sent to the payment provider or the bank."
internalNote: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a cancellation reason for sales invoices. The name is not required to be unique. GraphQL only. - Request"
input CreateSalesInvoiceCancellationReasonCommandRequestInput {
"The name, 1 to 50 characters."
name: String!
"Whether a comment is required when a document is cancelled with this reason. Defaults to false when omitted."
isCommentRequired: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a cancellation reason for sales invoice corrections. The name is not required to be unique. GraphQL only. - Request"
input CreateSalesInvoiceCorrectionCancellationReasonCommandRequestInput {
"The name, 1 to 50 characters."
name: String!
"Whether a comment is required when a document is cancelled with this reason. Defaults to false when omitted."
isCommentRequired: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a correction for a sales invoice. Errors: errorCode is SALES_INVOICE_NOT_FOUND, SALES_INVOICE_CANNOT_BE_CORRECTED (blockers SALES_INVOICE_IS_DRAFT, SALES_INVOICE_CANCELLED, SALES_INVOICE_IS_EXTERNAL, SALES_ORDER_ON_PICK_LIST, SALES_INVOICE_NO_CORRECTABLE_LINE_ITEMS), SALES_INVOICE_CORRECTION_LINE_ITEMS_EMPTY, SALES_INVOICE_LINE_ITEM_NOT_FOUND, SALES_INVOICE_LINE_ITEM_NOT_CORRECTABLE, SALES_INVOICE_CORRECTION_QUANTITY_NOT_POSITIVE, SALES_INVOICE_CORRECTION_QUANTITY_EXCEEDS_REMAINING, SALES_INVOICE_CORRECTION_AMOUNT_EXCEEDS_REMAINING, SALES_INVOICE_CORRECTION_LINE_ITEM_PRICE_CONFLICT or CLIENT_ID_NOT_UNIQUE. - Request"
input CreateSalesInvoiceCorrectionCommandRequestInput {
"The ID of the sales invoice."
salesInvoiceId: ID!
"The lines to credit; omitted credits everything still open. An empty list fails."
lineItems: [CreateSalesInvoiceCorrectionLineItemInput]
"Whether credited quantities also lower the ordered quantities of the sales order. Defaults to true when omitted."
reduceSalesOrderQuantities: Boolean
"Whether credited quantities also lower the delivered quantities of the sales order. Defaults to true when omitted."
reduceDeliveryQuantities: Boolean
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"A temporary ID chosen by the client. It is not stored and is returned unchanged."
clientId: String
"Whether the order is also cancelled in its online shop. Defaults to false and is ignored for orders without a shop."
cancelWebShopOrder: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"One sales invoice line item and how much of it to credit."
input CreateSalesInvoiceCorrectionLineItemInput {
"The sales invoice line item to credit."
salesInvoiceLineItemId: ID!
"The net price per unit to credit. Defaults to the price on the sales invoice."
salesPriceNet: Decimal
"Whether the line lowers the ordered quantity of the sales order. Defaults to ReduceSalesOrderQuantities of the request."
reducesOrderedQuantity: Boolean
"The quantity to credit, above 0 and at most the remaining quantity."
quantity: Decimal!
"A temporary ID chosen by the client, returned with the new line. Unique in the request."
clientId: String
}
"Creates a refund for a sales invoice correction and books its payout at once. The money moves with SendRefund. - Request"
input CreateSalesInvoiceCorrectionRefundCommandRequestInput {
"The ID of the sales invoice correction. A sales credit note ID fails as not found."
salesInvoiceCorrectionId: ID!
"The amount to pay back, greater than 0, with at most two decimals. At most what the proposal allows for the chosen transaction or bank transfer."
amount: Decimal!
"How the money is moved. Exactly one variant."
execution: RefundExecutionInput!
"The text the recipient sees with the money. Omitted means a text naming the document. Bank transfers carry at most 140 characters of it."
paymentReference: String
"An internal note that is not sent to the payment provider or the bank."
internalNote: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Attaches a file to a sales invoice. The bytes of the file are not part of this API. Upload the file first with the master data file upload (mutation 'RequestFileUpload', then send the bytes to the returned URL) and pass its BlobIdentifier. - Request"
input CreateSalesInvoiceFileCommandRequestInput {
"The ID of the sales invoice. Fails with a GraphQL error whose extensions.code is SalesInvoiceNotFound."
salesInvoiceId: ID!
"The ID of a file uploaded beforehand with the master data file upload (mutation 'RequestFileUpload'; 'GetFileById' returns its state). Fails with SalesInvoiceFileBlobNotFound."
blobIdentifier: UUID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a sales invoice for the goods of a delivery note. With 'includeShippingLineItem' the shipping charge is added, with 'includeOpenNonItemLineItems' the open line items that are no items are taken over. Without 'asDraft' the invoice is finalized at once and gets its number. A refusal carries 'blockers' with all reasons, each with a code and a message. Errors: errorCode is DELIVERY_NOTE_NOT_FOUND (no delivery note with this ID); errorCode is SALES_ORDER_NOT_FOUND (the delivery note has no sales order); errorCode is SALES_ORDER_NOT_INVOICEABLE (the order cannot be invoiced; the blockers say why, for example SALES_ORDER_FULLY_INVOICED, NO_OPEN_LINE_ITEMS, NOTHING_DELIVERED, SALES_ORDER_CANCELLED, SALES_ORDER_ARCHIVED, NOT_A_SALES_ORDER, SALES_ORDER_PENDING, SALES_ORDER_STATUS_INVALID, SALES_ORDER_EXTERNALLY_INVOICED, DUPLICATE_OF_INVOICE, SALES_ORDER_READ_ONLY, INVALID_KIT_OR_CONFIGURATION, CUSTOMER_MISSING, BILLING_ADDRESS_MISSING, SHIPMENT_ADDRESS_MISSING, PAYMENT_METHOD_MISSING, SHIPPING_METHOD_MISSING or TAX_SETTING_MISSING). - Request"
input CreateSalesInvoiceFromDeliveryNoteCommandRequestInput {
"The ID of the delivery note."
deliveryNoteId: ID!
"Whether the shipping charge is added. Defaults to true."
includeShippingLineItem: Boolean
"Whether the open line items that are no items are taken over. Defaults to true."
includeOpenNonItemLineItems: Boolean
"Whether only the delivered quantities are invoiced for item, free, voucher and gift line items. Defaults to false: all open quantities are invoiced."
invoiceOnlyDeliveredQuantity: Boolean
"Whether the invoice is created as a draft: without a number, editable and not binding until it is finalized. Defaults to false: the invoice is finalized at once and gets its number."
asDraft: Boolean
"A temporary ID chosen by the client. It is not stored and is returned unchanged."
clientId: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a sales invoice for the open quantities of a whole sales order. The open quantity is the ordered quantity minus what other invoices, drafts included, already carry; with 'invoiceOnlyDeliveredQuantity' only the delivered quantity counts. Without 'asDraft' the invoice is finalized at once and gets its number. An invoice cannot span several orders. A refusal carries 'blockers' with all reasons, each with a code and a message. Errors: errorCode is SALES_ORDER_NOT_FOUND (no sales order with this ID); errorCode is SALES_ORDER_NOT_INVOICEABLE (the order cannot be invoiced; the blockers say why, for example SALES_ORDER_FULLY_INVOICED, NO_OPEN_LINE_ITEMS, NOTHING_DELIVERED, SALES_ORDER_CANCELLED, SALES_ORDER_ARCHIVED, NOT_A_SALES_ORDER, SALES_ORDER_PENDING, SALES_ORDER_STATUS_INVALID, SALES_ORDER_EXTERNALLY_INVOICED, DUPLICATE_OF_INVOICE, SALES_ORDER_READ_ONLY, INVALID_KIT_OR_CONFIGURATION, CUSTOMER_MISSING, BILLING_ADDRESS_MISSING, SHIPMENT_ADDRESS_MISSING, PAYMENT_METHOD_MISSING, SHIPPING_METHOD_MISSING or TAX_SETTING_MISSING). - Request"
input CreateSalesInvoiceFromSalesOrderCommandRequestInput {
"The ID of the sales order."
salesOrderId: ID!
"Whether only the delivered quantities are invoiced for item, free, voucher and gift line items. Defaults to false: all open quantities are invoiced."
invoiceOnlyDeliveredQuantity: Boolean
"Whether the invoice is created as a draft: without a number, editable and not binding until it is finalized. Defaults to false: the invoice is finalized at once and gets its number."
asDraft: Boolean
"A temporary ID chosen by the client. It is not stored and is returned unchanged."
clientId: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a partial invoice for selected line items of one sales order. The open quantity of each selected line item is invoiced; a quantity cannot be chosen. Without 'asDraft' the invoice is finalized at once and gets its number. A refusal carries 'blockers' with all reasons, each with a code and a message. Errors: errorCode is SALES_ORDER_NOT_FOUND (no sales order with this ID); errorCode is SALES_ORDER_LINE_ITEM_NOT_FOUND (a line item does not exist or does not belong to the sales order); errorCode is SALES_ORDER_NOT_INVOICEABLE (the order cannot be invoiced; the blockers say why, for example SALES_ORDER_FULLY_INVOICED, NO_OPEN_LINE_ITEMS, NOTHING_DELIVERED, SALES_ORDER_CANCELLED, SALES_ORDER_ARCHIVED, NOT_A_SALES_ORDER, SALES_ORDER_PENDING, SALES_ORDER_STATUS_INVALID, SALES_ORDER_EXTERNALLY_INVOICED, DUPLICATE_OF_INVOICE, SALES_ORDER_READ_ONLY, INVALID_KIT_OR_CONFIGURATION, CUSTOMER_MISSING, BILLING_ADDRESS_MISSING, SHIPMENT_ADDRESS_MISSING, PAYMENT_METHOD_MISSING, SHIPPING_METHOD_MISSING or TAX_SETTING_MISSING). - Request"
input CreateSalesInvoiceFromSalesOrderLineItemsCommandRequestInput {
"The ID of the sales order."
salesOrderId: ID!
"The line items of the sales order to invoice, at least 1, each at most once. They select what one new invoice contains; this is not a batch."
salesOrderLineItemIds: [ID]!
"Whether only the delivered quantities are invoiced for item, free, voucher and gift line items. Defaults to false: all open quantities are invoiced."
invoiceOnlyDeliveredQuantity: Boolean
"Whether the invoice is created as a draft: without a number, editable and not binding until it is finalized. Defaults to false: the invoice is finalized at once and gets its number."
asDraft: Boolean
"A temporary ID chosen by the client. It is not stored and is returned unchanged."
clientId: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Attaches a file to a sales invoice line item. The bytes of the file are not part of this API. Upload the file first with the master data file upload (mutation 'RequestFileUpload', then send the bytes to the returned URL) and pass its BlobIdentifier. - Request"
input CreateSalesInvoiceLineItemFileCommandRequestInput {
"The ID of the sales invoice. Fails with a GraphQL error whose extensions.code is SalesInvoiceNotFound."
salesInvoiceId: ID!
"The ID of the line item. Fails with a GraphQL error whose extensions.code is SalesInvoiceLineItemNotFound."
salesInvoiceLineItemId: ID!
"The ID of a file uploaded beforehand with the master data file upload (mutation 'RequestFileUpload'; 'GetFileById' returns its state). Fails with SalesInvoiceLineItemFileBlobNotFound."
blobIdentifier: UUID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds the shipping charge of the sales order to a draft, at most once. A refusal carries 'blockers' with all reasons, each with a code and a message. Errors: errorCode is SALES_INVOICE_NOT_FOUND (no sales invoice with this ID); errorCode is SALES_INVOICE_NOT_DRAFT (only a draft can be changed; a finalized or cancelled invoice cannot); errorCode is SALES_INVOICE_SHIPPING_LINE_ITEM_EXISTS (the draft already has a shipping line item). - Request"
input CreateSalesInvoiceShippingLineItemCommandRequestInput {
"The ID of the sales invoice."
salesInvoiceId: ID!
"A temporary ID chosen by the client. It is not stored and is returned unchanged."
clientId: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a cancellation reason for sales orders. The name is not required to be unique. Marketplace codes are set afterwards with 'SetSalesOrderCancellationReasonMarketplaceCode'. GraphQL only. - Request"
input CreateSalesOrderCancellationReasonCommandRequestInput {
"The name, 1 to 50 characters."
name: String!
"Whether a comment is required when a document is cancelled with this reason. Defaults to false when omitted."
isCommentRequired: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a charge such as shipping or a payment fee to a sales order. - Request"
input CreateSalesOrderChargeLineItemCommandRequestInput {
"The ID of the sales order. Fails with a GraphQL error whose extensions.code is SalesOrderNotFound, SalesOrderIsPending or SalesOrderReadOnly."
salesOrderId: ID!
"The new line item."
lineItem: SalesOrderChargeLineItemInput!
"A temporary ID chosen by the client. It is not stored and is returned unchanged."
clientId: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a sales order for a customer with its line items. - Request"
input CreateSalesOrderCommandRequestInput {
"The ID of the shipping method. Fails with a GraphQL error whose extensions.code is ShippingMethodNotFound."
shippingMethodId: ID
"The ID of the user responsible for the sales order."
responsibleUserId: ID
"The ID of the process status. Fails with a GraphQL error whose extensions.code is ProcessStatusNotFound."
processStatusId: ID
"The ID of the payment method. Fails with a GraphQL error whose extensions.code is PaymentMethodNotFound."
paymentMethodId: ID
"The ID of the customer. Fails with a GraphQL error whose extensions.code is CustomerNotFound."
customerId: ID!
"The company that sells. Defaults to the default company; fails with a GraphQL error whose extensions.code is CompanyNotFound."
companyId: ID
"Vouchers that are sold."
voucherLineItems: [SalesOrderVoucherLineItemInput]
"How and when the sales order is to be shipped."
shippingDetails: SalesOrderShippingDetailsInput
"The address the goods are shipped to. Defaults to the billing address."
shipmentAddress: SalesOrderAddressInput
"The payment terms."
paymentTerms: SalesOrderPaymentTermsInput
"Line items for items of the catalog."
itemLineItems: [SalesOrderItemLineItemInput]
"Discounts such as a coupon."
discountLineItems: [SalesOrderDiscountLineItemInput]
"Free line items."
customLineItems: [SalesOrderCustomLineItemInput]
"Charges such as shipping or a payment fee. A shipping charge needs ShippingMethodId, else ShippingChargeRequiresShippingMethod."
chargeLineItems: [SalesOrderChargeLineItemInput]
"The billing address."
billingAddress: SalesOrderAddressInput!
"A text printed on the documents."
printText: String
"The date of the sales order. Defaults to now."
orderDate: DateTime
"The number of the sales order. Defaults to the next number; fails with a GraphQL error whose extensions.code is SalesOrderNumberInUse."
number: String
"An internal note."
note: String
"The language of the documents as BCP 47 language tag, for example de or de-AT. Language subtag in lower case, region subtag in upper case; case does not matter on input. Wawi currently holds only the two-letter language subtag. Fails with a GraphQL error whose extensions.code is LANGUAGE_NOT_ACTIVE."
languageTag: String
"The number of the sales order on the sales channel."
externalNumber: String
"The order number of the customer."
customerOrderNumber: String
"The comment of the customer."
customerComment: String
"The currency as ISO 4217 code. Defaults to the currency of the customer; fails with CurrencyNotFound."
currencyCode: String
"The exchange rate to the currency of the company. Defaults to the rate of the currency; 0 or less fails with CurrencyFactorNotPositive."
currencyFactor: Decimal
"A temporary ID chosen by the client. It is not stored and is returned unchanged."
clientId: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a free line item to a sales order. - Request"
input CreateSalesOrderCustomLineItemCommandRequestInput {
"The ID of the sales order. Fails with a GraphQL error whose extensions.code is SalesOrderNotFound, SalesOrderIsPending or SalesOrderReadOnly."
salesOrderId: ID!
"The new line item."
lineItem: SalesOrderCustomLineItemInput!
"A temporary ID chosen by the client. It is not stored and is returned unchanged."
clientId: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Delivers a sales order: reserves the stock, posts the stock outflow and creates the delivery notes with their packages in one transaction. Without 'lineItems' all open quantities are delivered; with 'lineItems' only the given quantities (a partial delivery). When 'allowPartialDelivery' is false (the default), an order that cannot be delivered completely is refused; when it is true, what is in stock is delivered. Stock is taken from 'warehouseIds' in the given order, or from all warehouses that deliver by their delivery priority. Drop-shipping and fulfillment line items get their own delivery notes, and 'oneDeliveryNotePerWarehouse' splits the rest per warehouse. Without 'packages' every delivery note gets one package with the shipping method of the sales order. A package with 'shippedAt' is created as shipped, 'markAsShipped' marks all new packages of own warehouses as shipped now, and 'createShippingLabels' requests a label for every new package whose shipping method is mapped to a shipping service (see CreatePackageShippingLabel). A label that fails does not undo the delivery: its result is in 'shippingLabelResults'. Invoices are not created by this call. A refused action reports 'errorCode' (the main reason) and 'blockers' (all reasons, each with 'code' and 'message'). errorCode is one of: SALES_ORDER_NOT_FOUND (the sales order was not found); SALES_ORDER_LINE_ITEM_NOT_FOUND (a line item does not belong to the sales order); SALES_ORDER_LINE_ITEM_REFERENCED_TWICE (a line item is given twice); CLIENT_ID_NOT_UNIQUE (two packages carry the same client identifier); QUANTITY_EXCEEDS_OPEN_QUANTITY (a quantity is larger than the open quantity of its line item); SERIAL_NUMBERS_INVALID (serial numbers are missing, too few, unknown or given for an item without serial numbers); WAREHOUSE_NOT_FOUND (a given warehouse was not found or does not deliver); SHIPPING_METHOD_NOT_FOUND (a referenced shipping method was not found or is not active); TRACKING_NUMBER_INVALID (the tracking number is empty, longer than 255 characters or does not match the rule of the shipping method); SHIPPING_DATE_OUT_OF_RANGE (the shipping date is outside the supported range); SHIPPING_METHOD_MISSING (a package or the sales order has no shipping method); SALES_ORDER_ALREADY_DELIVERED (the sales order has no open quantity); SALES_ORDER_BLOCKED (the sales order is on hold, not paid, its customer is blocked or shipping is locked; the blockers name the reasons); SALES_ORDER_NOT_FULLY_DELIVERABLE (the order cannot be delivered completely and partial delivery is not allowed); NO_ELIGIBLE_WAREHOUSE (no warehouse can deliver the sales order); DELIVERY_NOT_COMPLETED (the delivery failed and was rolled back). - Request"
input CreateSalesOrderDeliveryCommandRequestInput {
"The ID of the sales order."
salesOrderId: ID!
"The line items and quantities to deliver. Omit to deliver all open quantities. Every sales order line item at most once."
lineItems: [DeliveryLineItemInput]
"Whether what is in stock is delivered when the order cannot be delivered completely. Defaults to false."
allowPartialDelivery: Boolean
"The warehouses to take the stock from, in this order. Defaults to all warehouses that deliver, by their delivery priority."
warehouseIds: [ID]
"Whether one delivery note per warehouse is created instead of one per sales order. Defaults to false."
oneDeliveryNotePerWarehouse: Boolean
"The packages. Omit for one package per delivery note with the shipping method of the sales order."
packages: [DeliveryPackageInput]
"Whether all new packages of own warehouses are marked as shipped now, which completes the shipping (see MarkPackageShipped). Defaults to false."
markAsShipped: Boolean
"Whether a label is requested for every new package whose shipping method is mapped to a shipping service. Defaults to false."
createShippingLabels: Boolean
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a discount such as a coupon to a sales order. - Request"
input CreateSalesOrderDiscountLineItemCommandRequestInput {
"The ID of the sales order. Fails with a GraphQL error whose extensions.code is SalesOrderNotFound, SalesOrderIsPending or SalesOrderReadOnly."
salesOrderId: ID!
"The new line item."
lineItem: SalesOrderDiscountLineItemInput!
"A temporary ID chosen by the client. It is not stored and is returned unchanged."
clientId: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Has suppliers ship line items directly to the customer: creates delivery notes and supplier purchase orders. Codes: see 'salesOrderId'. - Request"
input CreateSalesOrderDropShippingCommandRequestInput {
"The ID of the sales order. Fails with a GraphQL error whose extensions.code is SalesOrderNotFound, SupplierNotFound or SalesOrderCannotBeDropShipped."
salesOrderId: ID!
"The supplier who ships. Omitted means the supplier is chosen by 'supplierChoice'."
supplierId: ID
"Drop ships only these line items and quantities. Omitted means all open line items a supplier can ship."
lineItems: [SalesOrderDeliveryLineItemInput]
"How the supplier is chosen per item when 'supplierId' is omitted. Defaults to DefaultSupplier."
supplierChoice: DropShippingSupplierChoice
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Attaches a file to a sales order. The bytes of the file are not part of this API. Upload the file first with the master data file upload (mutation 'RequestFileUpload', then send the bytes to the returned URL) and pass its BlobIdentifier. - Request"
input CreateSalesOrderFileCommandRequestInput {
"The ID of the sales order. Fails with a GraphQL error whose extensions.code is SalesOrderNotFound."
salesOrderId: ID!
"The ID of a file uploaded beforehand with the master data file upload (mutation 'RequestFileUpload'; 'GetFileById' returns its state). Fails with SalesOrderFileBlobNotFound."
blobIdentifier: UUID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a sales order from a sales quotation, with all its line items. The new order is read with GetSalesOrder. - Request"
input CreateSalesOrderFromSalesQuotationCommandRequestInput {
"The ID of the quotation. Fails with extensions.code SalesQuotationNotFound, or SalesQuotationCannotBeConverted with extensions.blockers."
salesQuotationId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates the follow-up sales order of a subscription. The sales order contains the line items that are due today, counting their lead time, and all charges and discounts; it takes over the addresses, payment terms and texts of the subscription. Each due line item then moves on by one period, so a subscription that is several periods behind stays due. Calls for the same subscription, also those of the automatic daily run, are handled one after the other. Suppressing automatic workflows applies to the new sales order. - Request"
input CreateSalesOrderFromSalesSubscriptionCommandRequestInput {
"The ID of the subscription."
salesSubscriptionId: ID!
"The earliest next due date the caller saw. If the subscription has moved on meanwhile, nothing is created. Only the date counts; a time part is ignored."
expectedNextDueDate: DateTime
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a line item for an item of the catalog to a sales order. - Request"
input CreateSalesOrderItemLineItemCommandRequestInput {
"The ID of the sales order. Fails with a GraphQL error whose extensions.code is SalesOrderNotFound, SalesOrderIsPending or SalesOrderReadOnly."
salesOrderId: ID!
"The new line item."
lineItem: SalesOrderItemLineItemInput!
"A temporary ID chosen by the client. It is not stored and is returned unchanged."
clientId: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Attaches a file to a sales order line item. The bytes of the file are not part of this API. Upload the file first with the master data file upload (mutation 'RequestFileUpload', then send the bytes to the returned URL) and pass its BlobIdentifier. - Request"
input CreateSalesOrderLineItemFileCommandRequestInput {
"The ID of the sales order. Fails with a GraphQL error whose extensions.code is SalesOrderNotFound."
salesOrderId: ID!
"The ID of the line item. Fails with a GraphQL error whose extensions.code is SalesOrderLineItemNotFound."
salesOrderLineItemId: ID!
"The ID of a file uploaded beforehand with the master data file upload (mutation 'RequestFileUpload'; 'GetFileById' returns its state). Fails with SalesOrderLineItemFileBlobNotFound."
blobIdentifier: UUID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a note to a sales order. The note is kept in the history of the customer. - Request"
input CreateSalesOrderNoteCommandRequestInput {
"The ID of the sales order. Fails with SalesOrderNotFound or SalesOrderHasNoCustomer."
salesOrderId: ID!
"How the content reached the company. Defaults to Text."
type: SalesOrderNoteType
"The text of the note."
text: String!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a refund for an overpaid or cancelled sales order: the ERP will pay the amount back to the customer through a payment account. It books a payout (a payment with a negative amount) on the order at once; the money moves when the refund is sent with 'SendRefund'. The input is a one-of: refund an earlier payment transaction through the payment account that received it, or send a bank transfer from a bank account that can send transfers to the IBAN of the recipient. 'GetSalesOrderRefundProposal' tells which transactions can be refunded and how much. Money owed because of an invoice correction is refunded on the correction ('CreateSalesInvoiceCorrectionRefund'). For a larger amount, create one refund per transaction. Errors: SALES_ORDER_NOT_FOUND (the sales order was not found); SALES_ORDER_NOT_OVERPAID (the sales order is not overpaid, so nothing can be refunded); SALES_INVOICE_CORRECTION_WITHOUT_PAYOUT_EXISTS (an invoice correction of the order has not been paid out yet; refund the correction); AMOUNT_NOT_POSITIVE (the amount is not greater than 0); AMOUNT_EXCEEDS_REFUNDABLE_AMOUNT (the amount is more than can be refunded for the document or for the transaction); PAYMENT_TRANSACTION_NOT_FOUND (the payment transaction was not found); PAYMENT_TRANSACTION_NOT_REFUNDABLE (the transaction does not belong to the payments of the document, or nothing of it is left to refund); PAYMENT_ACCOUNT_NOT_FOUND (the payment account was not found); PAYMENT_ACCOUNT_CANNOT_TRANSFER (the payment account cannot send bank transfers); RECIPIENT_IBAN_INVALID (the IBAN of the recipient is not valid). - Request"
input CreateSalesOrderRefundCommandRequestInput {
"The ID of the sales order."
salesOrderId: ID!
"The amount to pay back, greater than 0, with at most two decimals. At most what the proposal allows for the chosen transaction or bank transfer."
amount: Decimal!
"How the money is moved. Exactly one variant."
execution: RefundExecutionInput!
"The text the recipient sees with the money. Omitted means a text naming the document. Bank transfers carry at most 140 characters of it."
paymentReference: String
"An internal note that is not sent to the payment provider or the bank."
internalNote: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a voucher that is sold to a sales order. - Request"
input CreateSalesOrderVoucherLineItemCommandRequestInput {
"The ID of the sales order. Fails with a GraphQL error whose extensions.code is SalesOrderNotFound, SalesOrderIsPending or SalesOrderReadOnly."
salesOrderId: ID!
"The new line item."
lineItem: SalesOrderVoucherLineItemInput!
"A temporary ID chosen by the client. It is not stored and is returned unchanged."
clientId: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a charge such as shipping or a payment fee to a sales quotation. - Request"
input CreateSalesQuotationChargeLineItemCommandRequestInput {
"The ID of the quotation. Fails with extensions.code SalesQuotationNotFound, or SalesQuotationCannotBeUpdated with extensions.blockers."
salesQuotationId: ID!
"The new line item."
lineItem: SalesQuotationChargeLineItemInput!
"A temporary ID chosen by the client. It is not stored and is returned unchanged."
clientId: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a sales quotation, with its line items if they are sent: everything or nothing. - Request"
input CreateSalesQuotationCommandRequestInput {
"The ID of the shipping method. Fails with a GraphQL error whose extensions.code is ShippingMethodNotFound."
shippingMethodId: ID
"The ID of the user responsible for the quotation."
responsibleUserId: ID
"The ID of the process status. Fails with a GraphQL error whose extensions.code is ProcessStatusNotFound."
processStatusId: ID
"The ID of the payment method. Fails with a GraphQL error whose extensions.code is PaymentMethodNotFound."
paymentMethodId: ID
"The ID of the customer. Fails with a GraphQL error whose extensions.code is CustomerNotFound."
customerId: ID!
"The company that sells. Defaults to the default company; fails with CompanyNotFound, or CompanyVatIdMissing when it has no VAT ID."
companyId: ID
"Vouchers that are sold."
voucherLineItems: [SalesQuotationVoucherLineItemInput]
"The shipment address. Defaults to the billing address."
shipmentAddress: SalesQuotationAddressInput
"The payment terms."
paymentTerms: SalesQuotationPaymentTermsInput
"Line items for items of the catalog."
itemLineItems: [SalesQuotationItemLineItemInput]
"Discounts such as a coupon."
discountLineItems: [SalesQuotationDiscountLineItemInput]
"Free line items."
customLineItems: [SalesQuotationCustomLineItemInput]
"Charges such as shipping or a payment fee."
chargeLineItems: [SalesQuotationChargeLineItemInput]
"The billing address."
billingAddress: SalesQuotationAddressInput!
"The date of the quotation. Defaults to now."
quotationDate: DateTime
"A text printed on the quotation."
printText: String
"The quotation number. Defaults to the next number; fails with a GraphQL error whose extensions.code is SalesQuotationNumberInUse."
number: String
"An internal note."
note: String
"The language of the documents as ISO 639-1 code. Fails with a GraphQL error whose extensions.code is LanguageNotFound."
languageTag: String
"A number from another system, at most 50 characters."
externalNumber: String
"The delivery date that the quotation promises."
estimatedDeliveryDate: DateTime
"The order number of the customer."
customerOrderNumber: String
"A comment from or for the customer."
customerComment: String
"The currency as ISO 4217 code. Defaults to the currency of the customer; fails with CurrencyNotFound."
currencyCode: String
"Exchange rate of the quotation currency. Defaults to the rate of the currency in the master data; 0 or less fails with CurrencyFactorNotPositive."
currencyFactor: Decimal
"A temporary ID chosen by the client. It is not stored and is returned unchanged."
clientId: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a free line item to a sales quotation. - Request"
input CreateSalesQuotationCustomLineItemCommandRequestInput {
"The ID of the quotation. Fails with extensions.code SalesQuotationNotFound, or SalesQuotationCannotBeUpdated with extensions.blockers."
salesQuotationId: ID!
"The new line item."
lineItem: SalesQuotationCustomLineItemInput!
"A temporary ID chosen by the client. It is not stored and is returned unchanged."
clientId: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a discount such as a coupon to a sales quotation. - Request"
input CreateSalesQuotationDiscountLineItemCommandRequestInput {
"The ID of the quotation. Fails with extensions.code SalesQuotationNotFound, or SalesQuotationCannotBeUpdated with extensions.blockers."
salesQuotationId: ID!
"The new line item."
lineItem: SalesQuotationDiscountLineItemInput!
"A temporary ID chosen by the client. It is not stored and is returned unchanged."
clientId: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Attaches a file to a sales quotation. The bytes of the file are not part of this API. Upload the file first with the master data file upload (mutation 'RequestFileUpload', then send the bytes to the returned URL) and pass its BlobIdentifier. - Request"
input CreateSalesQuotationFileCommandRequestInput {
"The ID of the sales quotation. Fails with a GraphQL error whose extensions.code is SalesQuotationNotFound."
salesQuotationId: ID!
"The ID of a file uploaded beforehand with the master data file upload (mutation 'RequestFileUpload'; 'GetFileById' returns its state). Fails with SalesQuotationFileBlobNotFound."
blobIdentifier: UUID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a line item for an item of the catalog to a sales quotation. - Request"
input CreateSalesQuotationItemLineItemCommandRequestInput {
"The ID of the quotation. Fails with extensions.code SalesQuotationNotFound, or SalesQuotationCannotBeUpdated with extensions.blockers."
salesQuotationId: ID!
"The new line item."
lineItem: SalesQuotationItemLineItemInput!
"A temporary ID chosen by the client. It is not stored and is returned unchanged."
clientId: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a note to a sales quotation. The note is kept in the history of the customer. - Request"
input CreateSalesQuotationNoteCommandRequestInput {
"The ID of the sales quotation. Fails with a GraphQL error whose extensions.code is SalesQuotationNotFound."
salesQuotationId: ID!
"How the content reached the company. Defaults to Text."
type: SalesQuotationNoteType
"The text of the note."
text: String!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a voucher that is sold to a sales quotation. - Request"
input CreateSalesQuotationVoucherLineItemCommandRequestInput {
"The ID of the quotation. Fails with extensions.code SalesQuotationNotFound, or SalesQuotationCannotBeUpdated with extensions.blockers."
salesQuotationId: ID!
"The new line item."
lineItem: SalesQuotationVoucherLineItemInput!
"A temporary ID chosen by the client. It is not stored and is returned unchanged."
clientId: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a line item for a charge such as shipping or a fee to a subscription. It has no schedule and is part of every follow-up sales order. - Request"
input CreateSalesSubscriptionChargeLineItemCommandRequestInput {
"The ID of the subscription."
salesSubscriptionId: ID!
"A temporary identifier chosen by the client, for example to match the answer to an optimistic update. It is not stored and is returned unchanged."
clientId: String
"The type of the charge. Known values: SHIPPING, SHIPPING_SURCHARGE, SHIPPING_SURCHARGE_ITEM, PAYMENT_FEE, CASH_ON_DELIVERY_FEE, GIFT_WRAP, INTEREST, HANDLING_FEE, TRUSTED_SHOPS, RETURN_DELIVERY, FREE_GIFT. The type of a charge line item."
chargeType: String!
"Required for 'FreeGift' and 'ShippingSurchargeItem', not allowed for the other types: the ID of the item."
itemId: ID
"The name printed on the sales order; not empty."
name: String!
"The net amount of the charge."
salesPriceNet: Decimal!
"The quantity; greater than 0. Defaults to 1."
quantity: Decimal
"The ID of the tax class. Defaults to the default tax class."
taxClassId: ID
"A note on the line item."
note: String
"The position of the line item. Defaults to the end."
sortOrder: Int
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a subscription with its line items in one step: everything or nothing. At least one recurring line item (item, custom or voucher) is required. - Request"
input CreateSalesSubscriptionCommandRequestInput {
"A temporary identifier chosen by the client, for example to match the answer to an optimistic update. It is not stored and is returned unchanged."
clientId: String
"The ID of the customer."
customerId: ID!
"The ID of the company that sells."
companyId: ID!
"The subscription number, at most 50 characters. Defaults to the next number of the company's number range for subscriptions."
number: String
"The currency as ISO 4217 code. Defaults to the currency of the customer."
currencyCode: String
"A number from another system, at most 50 characters."
externalNumber: String
"The user responsible for the subscription."
responsibleUserId: ID
"The language of the documents as BCP 47 language tag, for example de or de-AT. Language subtag in lower case, region subtag in upper case; case does not matter on input. Wawi currently holds only the two-letter language subtag."
languageTag: String
"The ID of the payment method."
paymentMethodId: ID
"The ID of the shipping method."
shippingMethodId: ID
"The ID of the process status; it must be usable for subscriptions."
processStatusId: ID
"The payment terms."
paymentTerms: SalesSubscriptionPaymentTermsInput
"The billing address. Defaults to the address of the customer."
billingAddress: SalesSubscriptionAddressInput
"The shipping address. Defaults to the address of the customer."
shipmentAddress: SalesSubscriptionAddressInput
"An internal note."
note: String
"A comment from the customer."
customerComment: String
"Line items for items of the catalog."
itemLineItems: [SalesSubscriptionItemLineItemInput]
"Free line items."
customLineItems: [SalesSubscriptionCustomLineItemInput]
"Voucher line items."
voucherLineItems: [SalesSubscriptionVoucherLineItemInput]
"Charges that are part of every follow-up sales order."
chargeLineItems: [SalesSubscriptionChargeLineItemInput]
"Discounts that are part of every follow-up sales order."
discountLineItems: [SalesSubscriptionDiscountLineItemInput]
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a line item for a free line without an item to a subscription. It needs a schedule and is billed in every period of it. - Request"
input CreateSalesSubscriptionCustomLineItemCommandRequestInput {
"The ID of the subscription."
salesSubscriptionId: ID!
"A temporary identifier chosen by the client, for example to match the answer to an optimistic update. It is not stored and is returned unchanged."
clientId: String
"The name printed on the sales order; not empty."
name: String!
"The quantity billed per period; greater than 0."
quantity: Decimal!
"The net price per unit."
salesPriceNet: Decimal!
"The ID of the tax class. Defaults to the default tax class."
taxClassId: ID
"The discount in percent, 0 to 100."
discountPercent: Decimal
"A note on the line item."
note: String
"The position of the line item. Defaults to the end."
sortOrder: Int
"When the line item is billed."
schedule: SalesSubscriptionScheduleInput!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a line item for a discount such as a coupon to a subscription. It has no schedule and is part of every follow-up sales order. - Request"
input CreateSalesSubscriptionDiscountLineItemCommandRequestInput {
"The ID of the subscription."
salesSubscriptionId: ID!
"A temporary identifier chosen by the client, for example to match the answer to an optimistic update. It is not stored and is returned unchanged."
clientId: String
"The type of the discount. Known values: COUPON, NEW_CUSTOMER_COUPON, LEGACY_VOUCHER. The type of a discount line item."
discountType: String!
"The name printed on the sales order; not empty."
name: String!
"The net amount by which each follow-up sales order is reduced; greater than 0."
amount: Decimal!
"A note on the line item."
note: String
"The position of the line item. Defaults to the end."
sortOrder: Int
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Attaches a file to a sales subscription. The bytes of the file are not part of this API. Upload the file first with the master data file upload (mutation 'RequestFileUpload', then send the bytes to the returned URL) and pass its BlobIdentifier. - Request"
input CreateSalesSubscriptionFileCommandRequestInput {
"The ID of the sales subscription. Fails with a GraphQL error whose extensions.code is SalesSubscriptionNotFound."
salesSubscriptionId: ID!
"The ID of a file uploaded beforehand with the master data file upload (mutation 'RequestFileUpload'; 'GetFileById' returns its state). Fails with SalesSubscriptionFileBlobNotFound."
blobIdentifier: UUID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a line item for an item of the catalog to a subscription. It needs a schedule and is billed in every period of it. - Request"
input CreateSalesSubscriptionItemLineItemCommandRequestInput {
"The ID of the subscription."
salesSubscriptionId: ID!
"A temporary identifier chosen by the client, for example to match the answer to an optimistic update. It is not stored and is returned unchanged."
clientId: String
"The ID of the item. The item must exist and must not be a component of another item."
itemId: ID!
"The quantity billed per period; greater than 0."
quantity: Decimal!
"The net price per unit. Defaults to the price of the item for the customer."
salesPriceNet: Decimal
"The discount in percent, 0 to 100."
discountPercent: Decimal
"The name printed on the sales order. Defaults to the name of the item."
name: String
"A note on the line item."
note: String
"The position of the line item. Defaults to the end."
sortOrder: Int
"When the line item is billed."
schedule: SalesSubscriptionScheduleInput!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a line item for a voucher to a subscription. It needs a schedule and is billed in every period of it. - Request"
input CreateSalesSubscriptionVoucherLineItemCommandRequestInput {
"The ID of the subscription."
salesSubscriptionId: ID!
"A temporary identifier chosen by the client, for example to match the answer to an optimistic update. It is not stored and is returned unchanged."
clientId: String
"The type of the voucher."
voucherType: SalesSubscriptionVoucherType!
"The name printed on the sales order; not empty."
name: String!
"The value of one voucher; greater than 0."
amount: Decimal!
"The number of vouchers per period; greater than 0. Defaults to 1."
quantity: Decimal
"A note on the line item."
note: String
"The position of the line item. Defaults to the end."
sortOrder: Int
"When the line item is billed."
schedule: SalesSubscriptionScheduleInput!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a sales unit with its names. The names must include the default language of Wawi; other activated languages can be added with 'SetSalesUnitTranslation'. A name that a hidden sales unit already carries is refused, too. - Request"
input CreateSalesUnitCommandRequestInput {
"The names, one per language, the default language included."
translations: [SalesUnitTranslationInput]!
"The UN/CEFACT unit code for e-invoices, 2 or 3 letters or digits, for example 'XBX'. Omitted means none."
unitCode: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a custom field that needs no further configuration. - Request"
input CreateScalarCustomFieldCommandRequestInput {
"The kind of record the field belongs to. It cannot be changed afterwards. Known keys: 'ITEM', 'CATEGORY', 'CUSTOMER', 'SALES_ORDER', 'SALES_ORDER_LINE_ITEM', 'COMPANY', 'OPERATION', 'PRODUCTION_ITEM', 'PRODUCTION_ORDER', 'RESOURCE'. New keys can be added; handle an unknown key as not known, never as a failure."
entityType: String!
"The data type of the field. It cannot be changed afterwards. Known keys: 'INTEGER', 'DECIMAL', 'TEXT', 'SHORT_TEXT', 'CHECKBOX', 'URL', 'EMAIL', 'PHONE', 'COUNTRY_ISO', 'PRICE', 'DATE'; a value list is created with 'CreateValueListCustomField'. An unknown key is refused (error code CUSTOM_FIELD_DATA_TYPE_UNKNOWN)."
dataType: String!
"The name of the group the field is displayed under. A name that matches an existing group of the same entity type apart from letter case uses the existing spelling."
groupName: String!
"The name of the field. It must be unique among the fields of the same entity type, ignoring letter case."
name: String!
"An internal description of the field."
description: String
"Where user interfaces show the field. Defaults to the custom fields section. Not available for sales orders and sales order line items. Known keys: 'GENERAL', 'CUSTOM_FIELDS_TAB'. New keys can be added; handle an unknown key as not known, never as a failure."
displayLocation: String
"Indicates that a value is expected for this field. A hint for user interfaces, not enforced by the API."
isRequired: Boolean
"Indicates that user interfaces hide the field."
isHidden: Boolean
"The position within the group, starting at 1. Defaults to the end of the group; a larger value also places the field at the end."
sortOrder: Int
"Restricts the field to items of certain product groups in user interfaces; the API does not enforce it when values are written. Only for item fields. Both properties must be given. If omitted, the field applies to all current product groups and to items without a product group; product groups created later are not included."
productGroupRestriction: ProductGroupRestrictionInput
"If true, automatic workflows are not triggered by this call."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Runs the action of a button and returns the execution. A quick action has finished when it answers; a long one has the status Running, and the run is polled with GetSettingsActionExecution. Fails with a GraphQL error whose extensions.code is ActionPermissionDenied, ActionNotFound, ActionParameterInvalid or ActionNotAllowed. - Request"
input CreateSettingsActionExecutionCommandRequestInput {
"The ID of the action."
actionId: String!
"Values for the parameters the button asks for. Required; pass an empty list when the button has no parameters (a list can not be optional in the generated GraphQL input)."
arguments: [ActionArgumentInput]!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates an active, own shipping method. The shipping method is created together with its assignment to a method of the Shipping app, in one step: either both exist afterwards or neither. errorCode is one of: SHIPPING_METHOD_TAX_CLASS_REQUIRED, SHIPPING_METHOD_TAX_CLASS_NOT_ALLOWED, SHIPPING_METHOD_TRACKING_ID_PATTERN_INVALID, SHIPPING_METHOD_NAME_ALREADY_EXISTS, SHIPPING_APP_METHOD_NOT_FOUND, SHIPPING_APP_UNAVAILABLE. - Request"
input CreateShippingAppShippingMethodCommandRequestInput {
"The name of the shipping method, at most 255 characters. It must be unique among all shipping methods."
name: String!
"The shipping costs, gross. Not negative."
grossPrice: Decimal
"From this order value on, shipping is free. Omit the property to leave it unchanged; null removes the limit (no free shipping from an order value). Not negative; 0 is stored as no limit and read back as absent."
freeShippingFromOrderValue: Decimal
"The weight of the packaging that is added to the weight of the goods. Not negative."
additionalWeight: Decimal
"What the shipping costs the merchant, net. Not negative."
netPurchasePrice: Decimal
"The tax class of the shipping costs. Required when the tax rate determination is TaxClass and not allowed otherwise (error codes SHIPPING_METHOD_TAX_CLASS_REQUIRED, SHIPPING_METHOD_TAX_CLASS_NOT_ALLOWED)."
taxClassId: ID
"How the tax rate of the shipping costs is determined. Stable key in UPPER_SNAKE. Known values: TAX_CLASS, HIGHEST_GROSS_POSITION, HIGHEST_VAT_POSITION. New values can be added; a client that does not know a value ignores or tolerates it."
taxRateDetermination: String
"The priority of the shipping method, from -5 to 5."
priority: Int
"Whether and how packages have to be weighed. Stable key in UPPER_SNAKE. Known values: NONE, WITH_PRESET, WITHOUT_PRESET, WITH_SCALE, EVEN_DISTRIBUTION. New values can be added; a client that does not know a value ignores or tolerates it."
weighingRequirement: String
"How the tracking ID is entered. Stable key in UPPER_SNAKE. Known values: NONE, MANUAL, VIA_SHIPPING_DATA_IMPORT. New values can be added; a client that does not know a value ignores or tolerates it."
trackingIdEntry: String
"A regular expression the tracking ID has to match. It has to be a valid regular expression that works without backtracking, so without back references and look-around (error code SHIPPING_METHOD_TRACKING_ID_PATTERN_INVALID). Such an expression is matched in time proportional to the length of the tracking ID."
trackingIdPattern: String
"The tracking ID is cut from this position on. Omit the property to leave it unchanged; null for both positions means the tracking ID is not cut."
trackingIdCutFrom: Int
"The tracking ID is cut up to this position. null for both positions means the tracking ID is not cut."
trackingIdCutTo: Int
"The link to the tracking page: an absolute http or https address without quotation marks, angle brackets or blanks. The placeholders #IdentCode# (tracking ID), #PLZ# (postal code), #Tag# (day), #Monat# (month) and #Jahr# (year) are replaced; their values are URL-encoded."
trackingUrlTemplate: String
"Whether a shipping mail is sent to the customer."
sendShippingMail: Boolean
"Whether labels are printed on dispatch."
printLabels: Boolean
"Whether the start position on the label sheet is asked before printing. Only has an effect when labels are printed."
askLabelStartPosition: Boolean
"What marketplaces are told about the shipping method. The value replaces what was there as a whole."
marketplaces: ShippingMethodMarketplacesInput
"The ID of the method in the Shipping app. Query the available ones with shipping-app-methods. The value is only compared with the methods the Shipping app offers; it is never used as part of an address."
shippingAppMethodId: String!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a shipping class. The name must not be used by another shipping class, regardless of upper and lower case. - Request"
input CreateShippingClassCommandRequestInput {
"The name of the shipping class, at most 255 characters."
name: String!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates an active, own shipping method. The shipping method has no shipping data export (export mode None). Shipping methods with the Shipping app are created with their own call. errorCode is one of: SHIPPING_METHOD_TAX_CLASS_REQUIRED, SHIPPING_METHOD_TAX_CLASS_NOT_ALLOWED, SHIPPING_METHOD_TRACKING_ID_PATTERN_INVALID, SHIPPING_METHOD_NAME_ALREADY_EXISTS. - Request"
input CreateShippingMethodCommandRequestInput {
"The name of the shipping method, at most 255 characters. It must be unique among all shipping methods."
name: String!
"The shipping costs, gross. Not negative."
grossPrice: Decimal
"From this order value on, shipping is free. Omit the property to leave it unchanged; null removes the limit (no free shipping from an order value). Not negative; 0 is stored as no limit and read back as absent."
freeShippingFromOrderValue: Decimal
"The weight of the packaging that is added to the weight of the goods. Not negative."
additionalWeight: Decimal
"What the shipping costs the merchant, net. Not negative."
netPurchasePrice: Decimal
"The tax class of the shipping costs. Required when the tax rate determination is TaxClass and not allowed otherwise (error codes SHIPPING_METHOD_TAX_CLASS_REQUIRED, SHIPPING_METHOD_TAX_CLASS_NOT_ALLOWED)."
taxClassId: ID
"How the tax rate of the shipping costs is determined. Stable key in UPPER_SNAKE. Known values: TAX_CLASS, HIGHEST_GROSS_POSITION, HIGHEST_VAT_POSITION. New values can be added; a client that does not know a value ignores or tolerates it."
taxRateDetermination: String
"The priority of the shipping method, from -5 to 5."
priority: Int
"Whether and how packages have to be weighed. Stable key in UPPER_SNAKE. Known values: NONE, WITH_PRESET, WITHOUT_PRESET, WITH_SCALE, EVEN_DISTRIBUTION. New values can be added; a client that does not know a value ignores or tolerates it."
weighingRequirement: String
"How the tracking ID is entered. Stable key in UPPER_SNAKE. Known values: NONE, MANUAL, VIA_SHIPPING_DATA_IMPORT. New values can be added; a client that does not know a value ignores or tolerates it."
trackingIdEntry: String
"A regular expression the tracking ID has to match. It has to be a valid regular expression that works without backtracking, so without back references and look-around (error code SHIPPING_METHOD_TRACKING_ID_PATTERN_INVALID). Such an expression is matched in time proportional to the length of the tracking ID."
trackingIdPattern: String
"The tracking ID is cut from this position on. Omit the property to leave it unchanged; null for both positions means the tracking ID is not cut."
trackingIdCutFrom: Int
"The tracking ID is cut up to this position. null for both positions means the tracking ID is not cut."
trackingIdCutTo: Int
"The link to the tracking page: an absolute http or https address without quotation marks, angle brackets or blanks. The placeholders #IdentCode# (tracking ID), #PLZ# (postal code), #Tag# (day), #Monat# (month) and #Jahr# (year) are replaced; their values are URL-encoded."
trackingUrlTemplate: String
"Whether a shipping mail is sent to the customer."
sendShippingMail: Boolean
"Whether labels are printed on dispatch."
printLabels: Boolean
"Whether the start position on the label sheet is asked before printing. Only has an effect when labels are printed."
askLabelStartPosition: Boolean
"What marketplaces are told about the shipping method. The value replaces what was there as a whole."
marketplaces: ShippingMethodMarketplacesInput
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Starts a shipping run: delivers many sales orders in one go. The run works asynchronously; read its state with GetShippingRun and the result per sales order with QueryShippingRunOrdersByShippingRunId. First every sales order is checked like a single delivery: blocked or not deliverable orders are skipped and their blockers recorded. Then all remaining orders are delivered together in one transaction, each completely (or what is in stock with 'allowPartialDelivery') with one package with the shipping method of the order; if the delivery fails technically, no order of the run is delivered and the run fails. Then, if requested, a label is requested for every new package (see CreatePackageShippingLabel) and failed labels are recorded per order without undoing the delivery, or the new packages are marked as shipped. Printing is done by the print service. This is the one set-wise write of the domain, justified by the volume of a shipping day; the single delivery stays CreateSalesOrderDelivery. errorCode is one of: SALES_ORDER_IDS_INVALID (the list is empty, has more than 2000 entries or names a sales order twice); SHIPPING_RUN_ID_CONFLICT (a shipping run with this ID exists with a different request); WAREHOUSE_NOT_FOUND (a given warehouse was not found or does not deliver). - Request"
input CreateShippingRunCommandRequestInput {
"The ID of the new shipping run, generated by the client (UUID, version 7 recommended). Sending the same ID again with the same request returns the existing run and starts nothing; with a different request it is refused."
shippingRunId: UUID!
"The sales orders to deliver, at least 1 and at most 2000, each at most once. The order of the list is the order of processing."
salesOrderIds: [ID]!
"Whether what is in stock is delivered for orders that cannot be delivered completely. Defaults to false: such orders are skipped."
allowPartialDelivery: Boolean
"The warehouses to take the stock from, in this order. Defaults to all warehouses that deliver, by their delivery priority."
warehouseIds: [ID]
"Whether a label is requested for every new package whose shipping method is mapped to a shipping service; a created label also marks the package as shipped. Defaults to false."
createShippingLabels: Boolean
"Whether the new packages of own warehouses are marked as shipped at the end of the run. Defaults to false."
markAsShipped: Boolean
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a new SinglePurposeVoucherItem in one call. The request carries exactly the fields of this kind: mandatory ones, optional ones, and none of those the kind does not have. The item is valid right away: item number, name, at least one category and the mandatory fields of the kind are required. Everything else, such as prices, descriptions in further languages, suppliers and images, is added through its own sub-resource. - Request"
input CreateSinglePurposeVoucherItemCommandRequestInput {
"Name of the item in the default language. Further languages and sales channel texts are the descriptions of the item."
name: String!
"The identifiers of the item: its item number, which is unique."
identifiers: BasicItemIdentifiersInput!
"The IDs of the categories the new item is assigned to. At least one: every item that is not a combination of a variation parent has a category, and an item without one is not valid (an empty list is refused with 400). A combination takes over the categories of its parent and is created through the combinations of the parent, which have no such field. Further assignments are made through the categories of the item."
categoryIds: [ID]!
"Whether the item is active. Defaults to true when omitted."
isActive: Boolean
"The ID of the product group."
productGroupId: ID
"The ID of the manufacturer."
manufacturerId: ID
"The ID of the item condition, for example new or used."
conditionId: ID
"The ID of the delivery status of the item (the master data of delivery statuses, for example \"in stock\" or \"ships in 3 days\")."
deliveryStatusId: ID
"The ID of the tax class. When omitted the item gets the company default. The value must reference an existing tax class."
taxClassId: ID
"Settings of the voucher that is sold."
voucher: VoucherSettingsInput!
"The characteristic values (German 'Merkmalwerte') assigned to the item. Omitted means none."
characteristicValueIds: [ID]
"The attribute values of the item, per attribute, sales channel and language. Omitted means none. The attributes the system derives itself, such as those of a voucher, cannot be sent."
attributes: [ItemAttributeInput]
"The custom field values of the item. Omitted means none. A custom field has to apply to the item, which depends on its product group."
customFields: [ItemCustomFieldInput]
"The free-text variations of the item (German 'Freitext'), added in the same call. Every kind can have them. Omitted means none. Refused with 409 for an item of the fulfillment network."
freeTextVariations: [NewFreeTextVariationInput]
"The sales channels the item is activated in, set in the same call. The item has to be in a category that is active in each of them. Omitted means none; the item is activated afterwards through its sales channels."
salesChannels: [SalesChannelActivationInput]
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a new StockItem in one call. The request carries exactly the fields of this kind: mandatory ones, optional ones, and none of those the kind does not have. The item is valid right away: item number, name, at least one category and the mandatory fields of the kind are required. Everything else, such as prices, descriptions in further languages, suppliers and images, is added through its own sub-resource. - Request"
input CreateStockItemCommandRequestInput {
"Name of the item in the default language. Further languages and sales channel texts are the descriptions of the item."
name: String!
"The identifiers of the item. The item number (SKU) is mandatory and unique."
identifiers: TradeItemIdentifiersInput!
"The IDs of the categories the new item is assigned to. At least one: every item that is not a combination of a variation parent has a category, and an item without one is not valid (an empty list is refused with 400). A combination takes over the categories of its parent and is created through the combinations of the parent, which have no such field. Further assignments are made through the categories of the item."
categoryIds: [ID]!
"Whether the item is active. Defaults to true when omitted."
isActive: Boolean
"The ID of the product group."
productGroupId: ID
"The ID of the manufacturer."
manufacturerId: ID
"The ID of the item condition, for example new or used."
conditionId: ID
"The ID of the delivery status of the item (the master data of delivery statuses, for example \"in stock\" or \"ships in 3 days\")."
deliveryStatusId: ID
"The ID of the tax class. When omitted the item gets the company default. The value must reference an existing tax class."
taxClassId: ID
"The ID of the shipping class."
shippingClassId: ID
"Outer dimensions as shipped."
dimensions: ItemDimensionsInput
"Weights."
weights: ItemWeightsInput
"Customs information."
customs: ItemCustomsInput
"Sales unit and content with its base price."
units: ItemUnitsInput
"The containers the item is also traded in."
containers: [NewItemContainerInput]
"The default texts of the item, one per language."
descriptions: [NewItemDescriptionInput]
"Settings of the stock management."
stockManagement: StockManagementInput!
"How the units are traced. Omitted means not traced."
tracking: StockTrackingInput
"The characteristic values (German 'Merkmalwerte') assigned to the item. Omitted means none."
characteristicValueIds: [ID]
"The attribute values of the item, per attribute, sales channel and language. Omitted means none. The attributes the system derives itself, such as those of a voucher, cannot be sent."
attributes: [ItemAttributeInput]
"The custom field values of the item. Omitted means none. A custom field has to apply to the item, which depends on its product group."
customFields: [ItemCustomFieldInput]
"The free-text variations of the item (German 'Freitext'), added in the same call. Every kind can have them. Omitted means none. Refused with 409 for an item of the fulfillment network."
freeTextVariations: [NewFreeTextVariationInput]
"The simple selection variations of the item with their values, added in the same call. Only the kinds that allow them have this field; the reasons that forbid them for a given item are in 409 SELECTION_VARIATION_NOT_ALLOWED_FOR_ITEM_TYPE. Omitted means none."
selectionVariations: [NewSelectionVariationInput]
"The sales channels the item is activated in, set in the same call. The item has to be in a category that is active in each of them. Omitted means none; the item is activated afterwards through its sales channels."
salesChannels: [SalesChannelActivationInput]
"The prices of the item, created in the same call. Every part is the model of the matching prices route. Omitted means the item is created without prices and they are set through those routes."
prices: NewItemPricesInput
"The supplier items of the item, created in the same call. Every entry is the model of the supplier item route. Omitted means none; they are added through the suppliers of the item."
suppliers: [NewItemSupplierInput]
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a new stock transfer between two standard warehouses, together with its line items. The transit warehouse for the pair of warehouses is determined automatically. The new stock transfer is open and can be shipped right away. - Request"
input CreateStockTransferCommandRequestInput {
"Standard warehouse the items are transferred from. It must be active."
sourceWarehouseId: ID!
"Standard warehouse the items are transferred to. It must be active and differ from the source warehouse."
targetWarehouseId: ID!
"Shipping method used to move the items. It must be an active shipping method of your own."
shippingMethodId: ID!
"Date on which the items are expected to arrive in the target warehouse. Must be today or later."
expectedDeliveryDate: DateTime
"Internal note on the stock transfer."
note: String
"Items and quantities to transfer. At least one line item is required."
lineItems: [CreateStockTransferLineItemInput]!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a line item to an open stock transfer. - Request"
input CreateStockTransferLineItemCommandRequestInput {
"The ID of the stock transfer the line item is added to."
stockTransferId: ID!
"Item to transfer. Variation parents are not allowed, and the item must not already be part of the stock transfer."
itemId: ID!
"Quantity of the item to transfer. Must be greater than zero."
quantity: Decimal!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Line item to create as part of a new stock transfer."
input CreateStockTransferLineItemInput {
"Item to transfer. Variation parents are not allowed. A bill of materials is transferred as its components. Each item can appear only once per stock transfer."
itemId: ID!
"Quantity of the item to transfer. Must be greater than zero."
quantity: Decimal!
}
"Creates a storage location. It has the fields of the single creation."
input CreateStorageLocationChangeInput {
"The name of the location, at most 50 characters, without an apostrophe. Unique in the warehouse after the whole set is applied."
name: String!
"The ID of the type of the location. The system types cannot be created."
locationTypeId: UUID!
"A free comment."
comment: String
"The priority. Defaults to 0."
priority: Int
"The sort number for the picking route."
sortNumber: Int
"Size and load capacity."
dimensions: StorageLocationDimensionsInput
}
"Creates a storage location in a warehouse with storage location management. The system creates the locations of the types goods receipt, box, picking trolley and system itself, so those types cannot be created. The location starts active. errorCode is one of: STORAGE_LOCATION_NAME_INVALID, STORAGE_LOCATION_TYPE_NOT_CREATABLE (the request is invalid); WAREHOUSE_NOT_FOUND (the warehouse was not found); WAREHOUSE_TYPE_DOES_NOT_SUPPORT_STORAGE_LOCATIONS (the warehouse has no storage locations: only warehouses with storage location management have them); STORAGE_LOCATION_NAME_NOT_UNIQUE (the name is already used in the warehouse). - Request"
input CreateStorageLocationCommandRequestInput {
"The ID of the warehouse."
warehouseId: ID!
"The name of the location, at most 50 characters, without an apostrophe. It is unique in the warehouse."
name: String!
"The ID of the type of the location; read the types with QueryStorageLocationTypes. The system types cannot be created."
locationTypeId: UUID!
"A free comment."
comment: String
"The priority. Defaults to 0."
priority: Int
"The sort number for the picking route."
sortNumber: Int
"Size and load capacity."
dimensions: StorageLocationDimensionsInput
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a new SubsetStockItem in one call. The request carries exactly the fields of this kind: mandatory ones, optional ones, and none of those the kind does not have. The item is valid right away: item number, name, at least one category and the mandatory fields of the kind are required. Everything else, such as prices, descriptions in further languages, suppliers and images, is added through its own sub-resource. - Request"
input CreateSubsetStockItemCommandRequestInput {
"Name of the item in the default language. Further languages and sales channel texts are the descriptions of the item."
name: String!
"The identifiers of the item. The item number (SKU) is mandatory and unique."
identifiers: TradeItemIdentifiersInput!
"The IDs of the categories the new item is assigned to. At least one: every item that is not a combination of a variation parent has a category, and an item without one is not valid (an empty list is refused with 400). A combination takes over the categories of its parent and is created through the combinations of the parent, which have no such field. Further assignments are made through the categories of the item."
categoryIds: [ID]!
"Whether the item is active. Defaults to true when omitted."
isActive: Boolean
"The ID of the product group."
productGroupId: ID
"The ID of the manufacturer."
manufacturerId: ID
"The ID of the item condition, for example new or used."
conditionId: ID
"The ID of the delivery status of the item (the master data of delivery statuses, for example \"in stock\" or \"ships in 3 days\")."
deliveryStatusId: ID
"The ID of the tax class. When omitted the item gets the company default. The value must reference an existing tax class."
taxClassId: ID
"The ID of the shipping class."
shippingClassId: ID
"Outer dimensions as shipped."
dimensions: ItemDimensionsInput
"Weights."
weights: ItemWeightsInput
"Customs information."
customs: ItemCustomsInput
"Sales unit and content with its base price."
units: ItemUnitsInput
"Settings of the stock management."
stockManagement: StockManagementInput!
"The dimension set of the item. It cannot be changed afterwards."
dimensionSetId: ID!
"One value per dimension of the dimension set."
subsetDimensions: [SubsetDimensionValueInput]!
"How much of the item is reserved for production."
reservation: SubsetReservationInput!
"The characteristic values (German 'Merkmalwerte') assigned to the item. Omitted means none."
characteristicValueIds: [ID]
"The attribute values of the item, per attribute, sales channel and language. Omitted means none. The attributes the system derives itself, such as those of a voucher, cannot be sent."
attributes: [ItemAttributeInput]
"The custom field values of the item. Omitted means none. A custom field has to apply to the item, which depends on its product group."
customFields: [ItemCustomFieldInput]
"The free-text variations of the item (German 'Freitext'), added in the same call. Every kind can have them. Omitted means none. Refused with 409 for an item of the fulfillment network."
freeTextVariations: [NewFreeTextVariationInput]
"The sales channels the item is activated in, set in the same call. The item has to be in a category that is active in each of them. Omitted means none; the item is activated afterwards through its sales channels."
salesChannels: [SalesChannelActivationInput]
"The prices of the item, created in the same call. Every part is the model of the matching prices route. Omitted means the item is created without prices and they are set through those routes."
prices: NewItemPricesInput
"The supplier items of the item, created in the same call. Every entry is the model of the supplier item route. Omitted means none; they are added through the suppliers of the item."
suppliers: [NewItemSupplierInput]
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a new supplier. Errors: errorCode is SUPPLIER_COMPANY_NAME_REQUIRED, SUPPLIER_ADDRESS_REQUIRED, SUPPLIER_STREET_REQUIRED, SUPPLIER_POSTAL_CODE_REQUIRED, SUPPLIER_CITY_REQUIRED, SUPPLIER_COUNTRY_ISO_REQUIRED, SUPPLIER_LANGUAGE_ISO_REQUIRED, SUPPLIER_CURRENCY_ISO_REQUIRED (a required value is missing), SUPPLIER_VALUE_TOO_LONG (a value exceeds its maximum length), SUPPLIER_EMAIL_INVALID (the e-mail address is not valid), SUPPLIER_CASH_DISCOUNT_PERCENTAGE_REQUIRED (a cash discount period is set without a positive percentage), SUPPLIER_DEFAULT_COMPANY_ID_REQUIRED, SUPPLIER_DEFAULT_WAREHOUSE_ID_REQUIRED, SUPPLIER_INVALID_DEFAULT_COMPANY_ID, SUPPLIER_INVALID_DEFAULT_WAREHOUSE_ID (the default company or warehouse is missing or does not exist). - Request"
input CreateSupplierCommandRequestInput {
"The company name of the supplier."
companyName: String!
"The supplier number."
supplierNumber: String
"The merchant's own customer number at the supplier."
supplierAccountNumber: String
"A free-text note on the status of the supplier. It has no meaning for the system."
statusNote: String
"The postal address of the supplier."
address: SupplierAddressInput!
"The contact details of the supplier. Omitted means none."
contact: SupplierContactInput
"The delivery and order conditions of the supplier. Omitted fields are empty or zero."
deliveryConditions: SupplierDeliveryConditionsInput
"The payment conditions of the supplier. Omitted fields are empty or zero."
paymentConditions: SupplierPaymentConditionsInput
"The dropshipping settings of the supplier. Sending them enables dropshipping for the supplier; omitted fields are false. Omitted means the supplier does not support dropshipping."
dropshipping: SupplierDropshippingInput
"The language of the supplier as BCP 47 tag, for example 'de' or 'de-AT'. Case does not matter on input; the output uses the canonical form (language lower case, region upper case)."
languageTag: String!
"The currency of the supplier as an ISO 4217 alpha-3 code, for example 'EUR'. Input is case-insensitive."
currencyCode: String!
"The creditor number of the supplier in accounting."
creditorNumber: Int
"The VAT identification number of the supplier."
vatId: String
"Whether purchases from the supplier are exempt from VAT. Omitted means false."
isVatExempt: Boolean
"Whether the supplier is excluded from the purchase list. Omitted means false."
isExcludedFromPurchaseList: Boolean
"The own company that purchase orders to the supplier are placed for by default. Must be an existing company."
defaultCompanyId: ID!
"The warehouse that goods ordered from the supplier are delivered to by default. Must be an existing warehouse."
defaultWarehouseId: ID!
"The website of the supplier."
website: String
"A free-text comment on the supplier."
comment: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a tax class. It has no rate yet in any tax zone: set one with 'SetTaxRate' in every tax zone, otherwise sales of the class cannot be taxed there. The first tax class becomes the default tax class; any later one does not, see 'MakeTaxClassDefault'. - Request"
input CreateTaxClassCommandRequestInput {
"The name, 1 to 255 characters, unique."
name: String!
"The kind of rate the tax class stands for, unique among tax classes. Omitted means none."
rateType: TaxRateType
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a tax code. Assign it to rates with 'SetTaxRate' to use it. - Request"
input CreateTaxCodeCommandRequestInput {
"The number, unique, from 1. Omitted means the next number after the highest one in use."
number: Int
"The name, 1 to 255 characters, unique."
name: String!
"The general ledger account for the tax, at most 10 characters. Omitted means none."
taxAccount: String
"The account for cash discounts, at most 10 characters. Omitted means none."
cashDiscountAccount: String
"The revenue account, at most 10 characters. Omitted means none."
revenueAccount: String
"The account for bonuses, at most 10 characters. Omitted means none."
bonusAccount: String
"The account for write-offs, at most 10 characters. Omitted means none."
writeOffAccount: String
"The account for down payments, at most 10 characters. Omitted means none."
downPaymentAccount: String
"Whether the accounts are automatic accounts in accounting. Omitted means false."
isAutomaticAccount: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a tax zone of a company for a departure country, without countries and rates. Add countries with 'AddTaxZoneCountry' and rates with 'SetTaxRate'; a tax zone without countries is never used. - Request"
input CreateTaxZoneCommandRequestInput {
"The company, an active one. It cannot change later."
companyId: ID!
"The country goods are shipped from, as ISO 3166-1 alpha-2 code. It cannot change later."
departureCountryCode: String!
"The name, 1 to 255 characters."
name: String!
"Which VAT ID of the company is shown on documents of sales to business customers. Omitted means AUTOMATIC. Known values: AUTOMATIC, COMPANY_HOME_COUNTRY, DEPARTURE_COUNTRY."
vatIdSourceForBusinesses: String
"Which VAT ID of the company is shown on documents of sales to consumers. Omitted means AUTOMATIC. Known values: AUTOMATIC, COMPANY_HOME_COUNTRY, DEPARTURE_COUNTRY."
vatIdSourceForConsumers: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a text block in a group, without content: add the content per language with 'SetTextBlockTranslation'. - Request"
input CreateTextBlockCommandRequestInput {
"The ID of the group the text block is created in. It cannot be changed afterwards."
textBlockGroupId: ID!
"The name, 1 to 255 characters."
name: String!
"Where the text block can be inserted: the key of an entry of 'QueryTextBlockUsages', for example salesOrder. The usage decides which variables the content can use."
usageKey: String!
"The key combination that inserts the text block in editors, up to 255 characters. Omitted means none."
shortcut: String
"The abbreviation that expands to the text block while typing, up to 255 characters. Omitted means none."
autoText: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a text block group. It has no text blocks yet. - Request"
input CreateTextBlockGroupCommandRequestInput {
"The name, 1 to 255 characters."
name: String!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a transaction colour. Errors: TRANSACTION_COLOR_NAME_EMPTY, TRANSACTION_COLOR_NAME_TOO_LONG, TRANSACTION_COLOR_INVALID (400); TRANSACTION_COLOR_ALREADY_EXISTS (409). GraphQL only. - Request"
input CreateTransactionColorCommandRequestInput {
"The meaning of the colour, 1 to 255 characters."
name: String!
"The colour as #RRGGBB; case is not significant. No other transaction colour may have it."
color: String!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a transaction status. Errors: TRANSACTION_STATUS_NAME_EMPTY, TRANSACTION_STATUS_NAME_TOO_LONG, TRANSACTION_STATUS_VALID_FOR_DUPLICATED (400); TRANSACTION_STATUS_NAME_ALREADY_EXISTS (409). GraphQL only. - Request"
input CreateTransactionStatusCommandRequestInput {
"The name, 1 to 255 characters. It must be unique among the transaction statuses, ignoring letter case."
name: String!
"The kinds of sales documents the status can be chosen for, each at most once. Defaults to none. Known keys: 'SALES_QUOTATION', 'SALES_ORDER', 'SUBSCRIPTION'. New keys can be added; pass back the keys you read, handle an unknown key as not known, never as a failure."
validFor: [String]
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a user. Errors: UserIdentityProviderUserIdAlreadyAssigned, UserEmailAlreadyInUse, UserLoginAlreadyExists. - Request"
input CreateUserCommandRequestInput {
"The display name of the user."
name: String!
"The cloud account ID (\"sub\"), opaque text. Must not be in use. Errors: IDENTITY_PROVIDER_USER_ID_TOO_LONG, USER_IDENTITY_PROVIDER_USER_ID_NOT_IN_TENANT."
identityProviderUserId: String!
"The email address of the user, unique without regard to case and outer spaces. It becomes the login."
emailAddress: String
"The department of the user. Null or empty text leaves it empty."
department: String
"The phone number of the user. Null or empty text leaves it empty."
phoneNumber: String
"The mobile phone number of the user. Null or empty text leaves it empty."
mobilePhoneNumber: String
"A note on the user. Null or empty text leaves it empty."
note: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates an empty user group. Errors: UserGroupNameRequired, UserGroupNameTooLong, UserGroupNameAlreadyExists. - Request"
input CreateUserGroupCommandRequestInput {
"The unique name of the user group."
name: String!
"What the group is for. More than 255 characters fail with UserGroupDescriptionTooLong."
description: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a custom field whose value is one entry out of a list of allowed values. - Request"
input CreateValueListCustomFieldCommandRequestInput {
"The kind of record the field belongs to. It cannot be changed afterwards. Known keys: 'ITEM', 'CATEGORY', 'CUSTOMER', 'SALES_ORDER', 'SALES_ORDER_LINE_ITEM', 'COMPANY', 'OPERATION', 'PRODUCTION_ITEM', 'PRODUCTION_ORDER', 'RESOURCE'. New keys can be added; handle an unknown key as not known, never as a failure."
entityType: String!
"The allowed values in the order they are offered. At least one entry; entries are trimmed, not empty, distinct ignoring letter case and must not contain the character '|'."
allowedValues: [String]!
"The name of the group the field is displayed under. A name that matches an existing group of the same entity type apart from letter case uses the existing spelling."
groupName: String!
"The name of the field. It must be unique among the fields of the same entity type, ignoring letter case."
name: String!
"An internal description of the field."
description: String
"Where user interfaces show the field. Defaults to the custom fields section. Not available for sales orders and sales order line items. Known keys: 'GENERAL', 'CUSTOM_FIELDS_TAB'. New keys can be added; handle an unknown key as not known, never as a failure."
displayLocation: String
"Indicates that a value is expected for this field. A hint for user interfaces, not enforced by the API."
isRequired: Boolean
"Indicates that user interfaces hide the field."
isHidden: Boolean
"The position within the group, starting at 1. Defaults to the end of the group; a larger value also places the field at the end."
sortOrder: Int
"Restricts the field to items of certain product groups in user interfaces; the API does not enforce it when values are written. Only for item fields. Both properties must be given. If omitted, the field applies to all current product groups and to items without a product group; product groups created later are not included."
productGroupRestriction: ProductGroupRestrictionInput
"If true, automatic workflows are not triggered by this call."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds an axis with its values to a variation parent. Existing combinations would get no value on the new axis, so the call is refused while the parent has combinations. - Request"
input CreateVariationAxisCommandRequestInput {
"The ID of the item."
itemId: ID!
"Display name of the axis in the default language."
name: String!
"The display name of the axis in further languages."
names: [LocalizedTextInput]
"How the shop shows the axis. The style is one of DROPDOWN, RADIO_BUTTONS, IMAGE_SWATCHES or TEXT_SWATCHES. It changes how the axis is shown in the shop, not which fields exist. The list can grow with the shops; a client treats a value it does not know like DROPDOWN."
style: String!
"The values of the axis in their order. At least one."
values: [NewVariationValueInput]!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a new regular item and adds it as a combination of the variation parent. The new item takes over the categories of the parent; categories cannot be sent, because a combination has none of its own. - Request"
input CreateVariationCombinationCommandRequestInput {
"The ID of the item."
itemId: ID!
"The item number of the new item, unique among all items."
sku: String!
"The name of the new item in the default language."
name: String!
"The chosen value for every axis, one per axis. The set has to be new."
values: [VariationValueAssignmentInput]!
"Free-text variations of the combination itself, in addition to those of its parent, which it shows anyway. Omitted means none."
freeTextVariations: [NewFreeTextVariationInput]
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates the given combinations of a variation parent as new regular items, all or none in one transaction, and triggers the workflows once. The list usually comes from 'combination-proposals'. Nothing is created when one entry is refused. The new item takes over the categories of the parent; categories cannot be sent, because a combination has none of its own. - Request"
input CreateVariationCombinationsCommandRequestInput {
"The ID of the item."
itemId: ID!
"The combinations to create. At least one; every set of values has to be new and the SKUs distinct."
combinations: [NewVariationCombinationInput]!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a new VariationParentItem in one call. The request carries exactly the fields of this kind: mandatory ones, optional ones, and none of those the kind does not have. The item is valid right away: item number, name, at least one category and the mandatory fields of the kind are required. Everything else, such as prices, descriptions in further languages, suppliers and images, is added through its own sub-resource. - Request"
input CreateVariationParentItemCommandRequestInput {
"Name of the item in the default language. Further languages and sales channel texts are the descriptions of the item."
name: String!
"The identifiers of the item: its item number, which is unique."
identifiers: BasicItemIdentifiersInput!
"The IDs of the categories the new item is assigned to. At least one: every item that is not a combination of a variation parent has a category, and an item without one is not valid (an empty list is refused with 400). A combination takes over the categories of its parent and is created through the combinations of the parent, which have no such field. Further assignments are made through the categories of the item."
categoryIds: [ID]!
"Whether the item is active. Defaults to true when omitted."
isActive: Boolean
"The ID of the product group."
productGroupId: ID
"The ID of the manufacturer."
manufacturerId: ID
"The ID of the item condition, for example new or used."
conditionId: ID
"The ID of the delivery status of the item (the master data of delivery statuses, for example \"in stock\" or \"ships in 3 days\")."
deliveryStatusId: ID
"The ID of the tax class. When omitted the item gets the company default. The value must reference an existing tax class."
taxClassId: ID
"The variation axes with their values. At least one axis. Later changes go through the variations of the item."
variationAxes: [NewVariationAxisInput]!
"The combinations. At least one."
combinations: [CombinationInput]!
"The characteristic values (German 'Merkmalwerte') assigned to the item. Omitted means none."
characteristicValueIds: [ID]
"The attribute values of the item, per attribute, sales channel and language. Omitted means none. The attributes the system derives itself, such as those of a voucher, cannot be sent."
attributes: [ItemAttributeInput]
"The custom field values of the item. Omitted means none. A custom field has to apply to the item, which depends on its product group."
customFields: [ItemCustomFieldInput]
"The free-text variations of the item (German 'Freitext'), added in the same call. Every kind can have them. Omitted means none. Refused with 409 for an item of the fulfillment network."
freeTextVariations: [NewFreeTextVariationInput]
"The sales channels the item is activated in, set in the same call. The item has to be in a category that is active in each of them. Omitted means none; the item is activated afterwards through its sales channels."
salesChannels: [SalesChannelActivationInput]
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Adds a value to an axis of a variation parent. - Request"
input CreateVariationValueCommandRequestInput {
"The ID of the item."
itemId: ID!
"The axis the value belongs to."
axisId: ID!
"Display name of the value in the default language."
name: String!
"The display name of the value in further languages."
names: [LocalizedTextInput]
"Own item number suffix or number of the value."
sku: String
"Own GTIN of the value."
gtin: String
"Default surcharge in net on the price when the value is chosen."
surchargeNet: Decimal
"Weight in kilograms that the value adds to the weight."
weightOffset: Decimal
"Surcharges per customer group, which take precedence over the default surcharge."
customerGroupSurcharges: [CustomerGroupSurchargeInput]
"Surcharges per sales channel, which take precedence over the default surcharge."
salesChannelSurcharges: [SalesChannelSurchargeInput]
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Creates a warehouse of one of the types a user can create (standard, WMS, external fulfillment, drop shipping). The input is a one-of: exactly one variant is sent and it is the type of the new warehouse. The variant carries exactly the fields of its type; a standard warehouse gets one implicit storage location and its settings with defaults, a WMS warehouse its system locations. errorCode is one of: WAREHOUSE_NAME_OR_SHORT_NAME_MISSING, WAREHOUSE_CONTACT_ADDRESS_INCOMPLETE, COUNTRY_NOT_FOUND, WAREHOUSE_TYPE_NOT_CREATABLE (the request is invalid, for example the name or short name is missing, the address is incomplete, the country is unknown or the variant does not fit); COMPANY_NOT_FOUND, CATEGORY_NOT_FOUND or WAREHOUSE_NOT_FOUND (a referenced company, category or source or target warehouse was not found); WAREHOUSE_NAME_NOT_UNIQUE (the name is already used by an active warehouse). - Request"
input CreateWarehouseCommandRequestInput {
"The data of the new warehouse. Exactly one variant."
warehouse: CreateWarehouseInput!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"The data of a new warehouse. Polymorphic: exactly one variant is sent, and the variant is the type of the warehouse. Only the types a user can create have a variant; the system types (Fulfillment Network, Amazon FBA) arise from their connections."
input CreateWarehouseInput @oneOf {
"Creates a standard warehouse, the plain warehouse without storage location management, in one call. It gets one implicit storage location and its settings with defaults. The request carries exactly the fields of this type. There is no storage location to maintain."
standardWarehouseCreation: StandardWarehouseCreationInput
"Creates a warehouse with storage location management in one call. The system creates the goods receipt location, the box location and the picking trolley location 'in progress' with it and sets them as the special locations. Further storage locations and settings are added with their own mutations."
wmsWarehouseCreation: WmsWarehouseCreationInput
"Creates a warehouse that an external fulfillment partner runs. Fulfillment orders and delivery notes are sent to the partner as set in 'dispatch'."
externalFulfillmentWarehouseCreation: ExternalFulfillmentWarehouseCreationInput
"Creates a warehouse that stands for the route from a source warehouse to a target warehouse. It has neither address nor settings of its own. Its name is built from the two warehouses when omitted."
dropShippingWarehouseCreation: DropShippingWarehouseCreationInput
}
"Saves a set of setting changes of a warehouse in one transaction: all of them or none, so a page of the dialog is saved at once. Follows the pattern of the settings API. errorCode is one of: the request is invalid. Properties are missing or not allowed (the error names the offending properties); SETTING_PERMISSION_DENIED (the caller lacks the permission of a setting); SETTING_NOT_FOUND (a setting does not exist); SETTING_READ_ONLY (a setting is read-only); SETTING_VALUE_INVALID, SETTING_VALUE_TYPE_MISMATCH, SETTING_SCOPE_NOT_SUPPORTED, SETTINGS_INCONSISTENT (a change breaks a constraint, has the wrong type, or breaks a rule across settings; nothing was saved); WAREHOUSE_SETTING_NOT_APPLICABLE or WAREHOUSE_TYPE_DOES_NOT_SUPPORT_SETTINGS (the setting does not apply to the type of the warehouse, or the warehouse has no settings). - Request"
input CreateWarehouseSettingValueChangeCommandRequestInput {
"The ID of the warehouse."
warehouseId: ID!
"The changes. At least one."
changes: [WarehouseSettingValueChangeInput]!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"A cross-selling group names a kind of recommendation, for example Accessories or Alternatives. It has a name and a description in every language it was given; only the languages Wawi is currently set up for are returned."
input CrossSellingGroupFilterInput {
and: [CrossSellingGroupFilterInput!]
or: [CrossSellingGroupFilterInput!]
"The ID of the cross-selling group."
id: ComparableCrossSellingGruppeKeyOperationFilterInput @cost(weight: "15")
"The name in the default language. It is never empty and has at most 255 characters."
name: StringOperationFilterInput @cost(weight: "200")
}
"A cross-selling group names a kind of recommendation, for example Accessories or Alternatives. It has a name and a description in every language it was given; only the languages Wawi is currently set up for are returned."
input CrossSellingGroupSortInput {
"The ID of the cross-selling group."
id: CrossSellingGruppeKeySortInput @cost(weight: "15")
"The name in the default language. It is never empty and has at most 255 characters."
name: SortEnumType @cost(weight: "200")
}
input CrossSellingGruppeKeySortInput {
kxSellGruppe: SortEnumType @cost(weight: "10")
}
"A currency of the tenant. The code identifies the currency (ISO 4217); the resource carries what the tenant configures for it: how it is written and its exchange rate to the default currency. All prices are stored in the default currency; every other currency is a conversion with its exchange rate."
input CurrencyFilterInput {
and: [CurrencyFilterInput!]
or: [CurrencyFilterInput!]
"The currency code. A standard currency uses its ISO 4217 alpha-3 code in capitals ('EUR'); a currency defined by the tenant uses a code with the prefix 'x-' in lower case ('x-loyalty'). Requests are matched ignoring case, responses always carry the canonical spelling."
code: StringOperationFilterInput @cost(weight: "15")
"Whether the code is a standard ISO 4217 code or was assigned by the tenant."
codeSource: ComparableCurrencyCodeSourceOperationFilterInput @cost(weight: "200")
"The display name, at most 20 characters."
name: StringOperationFilterInput @cost(weight: "50")
"Whether this is the default currency of the tenant, the one all prices are stored in. Exactly one currency is."
isDefault: ComparableBooleanOperationFilterInput @cost(weight: "15")
}
"A currency of the tenant. The code identifies the currency (ISO 4217); the resource carries what the tenant configures for it: how it is written and its exchange rate to the default currency. All prices are stored in the default currency; every other currency is a conversion with its exchange rate."
input CurrencySortInput {
"The currency code. A standard currency uses its ISO 4217 alpha-3 code in capitals ('EUR'); a currency defined by the tenant uses a code with the prefix 'x-' in lower case ('x-loyalty'). Requests are matched ignoring case, responses always carry the canonical spelling."
code: SortEnumType @cost(weight: "15")
"The display name, at most 20 characters."
name: SortEnumType @cost(weight: "50")
"Units of this currency per unit of the default currency: a price in the default currency times this rate is the price in this currency. 1 for the default currency."
exchangeRate: SortEnumType @cost(weight: "50")
"When the exchange rate was last set or fetched. Empty if it never was."
rateUpdatedAt: SortEnumType @cost(weight: "50")
}
"A permission of the current user, from all of the user's groups."
input CurrentUserPermissionFilterInput {
and: [CurrentUserPermissionFilterInput!]
or: [CurrentUserPermissionFilterInput!]
"The ID of the permission."
permissionId: ComparableBerechtigungKeyOperationFilterInput @cost(weight: "200")
}
"A permission of the current user, from all of the user's groups."
input CurrentUserPermissionSortInput {
"The ID of the permission."
permissionId: BerechtigungKeySortInput @cost(weight: "200")
}
"An address of a customer."
input CustomerAddressFilterInput {
and: [CustomerAddressFilterInput!]
or: [CustomerAddressFilterInput!]
"The ID of the address."
id: ComparableAdresseKeyOperationFilterInput
"The use of the address."
type: ComparableCustomerAddressTypeOperationFilterInput
"Whether the address is the default of its type. A customer always has a default billing address."
isDefault: ComparableBooleanOperationFilterInput
"The country as ISO 3166-1 alpha-2 code, 2 characters."
countryCode: StringOperationFilterInput
}
"An address of a customer."
input CustomerAddressSortInput {
"The ID of the address."
id: AdresseKeySortInput @cost(weight: "10")
"The use of the address."
type: SortEnumType @cost(weight: "10")
}
"A bank account of a customer, for example for direct debits. Payment card data are not part of the API."
input CustomerBankAccountFilterInput {
and: [CustomerBankAccountFilterInput!]
or: [CustomerBankAccountFilterInput!]
"The ID of the bank account."
id: ComparableKontoDatenKeyOperationFilterInput
"Whether this is the default bank account. A customer with bank accounts always has exactly one default."
isDefault: ComparableBooleanOperationFilterInput
"The IBAN, at most 34 characters, with a valid check sum. Spaces are removed."
iban: StringOperationFilterInput
}
"A bank account of a customer, for example for direct debits. Payment card data are not part of the API."
input CustomerBankAccountSortInput {
"The ID of the bank account."
id: KontoDatenKeySortInput @cost(weight: "10")
}
"A discount of a customer on the items of one item category. It applies in every sales channel."
input CustomerCategoryDiscountFilterInput {
and: [CustomerCategoryDiscountFilterInput!]
or: [CustomerCategoryDiscountFilterInput!]
"The item category."
categoryId: ComparableKategorieKeyOperationFilterInput
}
"A discount of a customer on the items of one item category. It applies in every sales channel."
input CustomerCategoryDiscountSortInput {
"The item category."
categoryId: KategorieKeySortInput @cost(weight: "10")
}
"A customer category: a free grouping of customers, for example for lists and statistics. It has no effect on prices."
input CustomerCategoryFilterInput {
and: [CustomerCategoryFilterInput!]
or: [CustomerCategoryFilterInput!]
"The ID of the customer category."
id: ComparableKundenKategorieKeyOperationFilterInput
"The name, unique."
name: StringOperationFilterInput
}
"A customer category: a free grouping of customers, for example for lists and statistics. It has no effect on prices."
input CustomerCategorySortInput {
"The ID of the customer category."
id: KundenKategorieKeySortInput @cost(weight: "10")
"The name, unique."
name: SortEnumType @cost(weight: "10")
}
"A contact person at a customer."
input CustomerContactFilterInput {
and: [CustomerContactFilterInput!]
or: [CustomerContactFilterInput!]
"The ID of the contact."
id: ComparableAnsprechpartnerKeyOperationFilterInput
"The last name, 1 to 64 characters."
lastName: StringOperationFilterInput
"The email address, at most 255 characters."
email: StringOperationFilterInput
}
"A contact person at a customer."
input CustomerContactSortInput {
"The ID of the contact."
id: AnsprechpartnerKeySortInput @cost(weight: "10")
"The last name, 1 to 64 characters."
lastName: SortEnumType @cost(weight: "10")
}
"A customer group. It decides which prices and discounts a customer gets."
input CustomerGroupFilterInput {
and: [CustomerGroupFilterInput!]
or: [CustomerGroupFilterInput!]
"The ID of the customer group."
id: ComparableKundenGruppeKeyOperationFilterInput
"The name, unique."
name: StringOperationFilterInput
"Whether this is the default group of new customers. There is always exactly one default group."
isDefault: ComparableBooleanOperationFilterInput
}
"The name of a customer group in one language, shown in online shops."
input CustomerGroupNameFilterInput {
and: [CustomerGroupNameFilterInput!]
or: [CustomerGroupNameFilterInput!]
"The language as BCP 47 language tag, for example de or de-AT: language subtag in lower case, region subtag in upper case. Case does not matter on input. Wawi currently holds only the two-letter language subtag."
languageTag: StringOperationFilterInput
}
"The name of a customer group in one language, shown in online shops."
input CustomerGroupNameSortInput {
"The language as BCP 47 language tag, for example de or de-AT: language subtag in lower case, region subtag in upper case. Case does not matter on input. Wawi currently holds only the two-letter language subtag."
languageTag: SortEnumType @cost(weight: "10")
}
"A customer group price list with its key, as sent when an item is created together with its prices."
input CustomerGroupPriceEntryInput {
"The sales channel the prices apply in."
salesChannelId: ID!
"The currency of the prices as ISO 4217 code. Prices are written in the default currency of the tenant only. Omitted means the default currency; any other currency is refused with 409 (error code CURRENCY_NOT_SUPPORTED)."
currencyCode: String
"The customer group the prices apply to."
customerGroupId: ID!
"Whether the item is offered in the sales channel for this customer group."
isVisible: Boolean!
"The price tiers, at least one."
tiers: [PriceTierInput]!
}
"The price of an item for one customer group in one sales channel. Polymorphic: the property 'source' tells whether the customer group takes over the base price of the item or has a price list of its own that overrides it. The sales channel is a property of the variants."
input CustomerGroupPriceListFilterInput {
and: [CustomerGroupPriceListFilterInput!]
or: [CustomerGroupPriceListFilterInput!]
"The customer group the price applies to."
customerGroupId: ComparableKundenGruppeKeyOperationFilterInput
"Whether the item is offered in the sales channel for this customer group."
isVisible: ComparableBooleanOperationFilterInput
"Discriminator: where the price comes from."
source: ComparableCustomerGroupPriceSourceOperationFilterInput
}
"The price of an item for one customer group in one sales channel. Polymorphic: the property 'source' tells whether the customer group takes over the base price of the item or has a price list of its own that overrides it. The sales channel is a property of the variants."
input CustomerGroupPriceListSortInput {
"The customer group the price applies to."
customerGroupId: KundenGruppeKeySortInput @cost(weight: "10")
}
"A customer group. It decides which prices and discounts a customer gets."
input CustomerGroupSortInput {
"The ID of the customer group."
id: KundenGruppeKeySortInput @cost(weight: "10")
"The name, unique."
name: SortEnumType @cost(weight: "10")
}
"A surcharge on the price of an item that applies to one customer group when a variation value is chosen. It takes precedence over the default surcharge of the value."
input CustomerGroupSurchargeInput {
"The customer group the surcharge applies to."
customerGroupId: ID!
"Surcharge in net."
surchargeNet: Decimal!
}
"An entry of the history of a customer: something that happened with the customer or one of its documents. Read-only."
input CustomerHistoryEntryFilterInput {
and: [CustomerHistoryEntryFilterInput!]
or: [CustomerHistoryEntryFilterInput!]
"What happened, as a stable key. The set grows over time; a client treats an unknown key as an event it does not know. Known keys: OTHER, SALES_ORDER_CREATED, DELIVERY_NOTE_SHIPPED, SALES_ORDER_CHANGED, SUBSCRIPTION_CREATED, SHIPPING_ADDRESS_CHANGED, RETURN_CREATED, RETURN_ARRIVED, RETURN_COMPLETED, INVOICE_CORRECTION_CREATED, INVOICE_CORRECTION_REFUNDED, CREDIT_NOTE_PAYOUT_CREATED, DUNNING_LETTER_CREATED, DUNNING_LETTER_CREATED_AND_SENT, DUNNING_LETTER_CREATED_AND_PRINTED, MESSAGE_SENT, CREDIT_RECEIVED_FROM_SHOP, CUSTOMER_DATA_CHANGED, QUOTATION_CREATED, FULFILLMENT_BILLING_COMPLETED, PAYMENT_POSTED_PARTIALLY_PAID, PAYMENT_POSTED_FULLY_PAID, SALES_ORDER_ADDED_TO_PICK_LIST, DOCUMENT_HELD, PARTIAL_REFUND_SENT, REFUND_SENT, WORKFLOW_EXECUTED, NOTE, INVOICE_SENT_BY_EMAIL, SALES_ORDER_CANCELLED, SALES_ORDER_CANCELLATION_REMOVED, DOCUMENT_DUPLICATED_FROM, DOCUMENT_DUPLICATED_TO, SUBSCRIPTION_CREATED_FROM_DOCUMENT, DOCUMENT_CREATED_AS_SUBSCRIPTION, SALES_ORDER_CREATED_FROM_SUBSCRIPTION, SUBSCRIPTION_CREATED_AS_SALES_ORDER, SALES_ORDER_CREATED_FROM_QUOTATION, QUOTATION_CONVERTED_TO_SALES_ORDER, SALES_ORDERS_COMBINED, QUOTATIONS_COMBINED, DROPSHIPPING_PURCHASE_ORDER_CREATED, SUBSCRIPTIONS_COMBINED, VAT_ID_CHECK_RESULT_RECEIVED, INVOICE_CREATED, DELETED_IN_SHOP, PAYMENT_CHANGED, SALES_ORDER_CREATED_BY_SPLIT, SALES_ORDER_SPLIT, VAT_ID_VIES_CHECK_SUCCEEDED, VAT_ID_VIES_CHECK_FAILED, INVOICE_CANCELLED, INVOICE_DRAFT_CREATED, INVOICE_DRAFT_FINALIZED, INVOICE_DRAFT_DELETED, INVOICE_CORRECTION_CANCELLED, INVOICE_CORRECTION_PAID_OUT, INVOICE_CORRECTION_DRAFT_CREATED, INVOICE_CORRECTION_DRAFT_DELETED, CREDIT_NOTE_CREATED, CREDIT_NOTE_CANCELLED, CREDIT_NOTE_DRAFT_FINALIZED, CREDIT_NOTE_DRAFT_CREATED, SHIPPING_PLATFORM_EVENT, INVOICE_UPLOADED_TO_MARKETPLACE, INVOICE_CORRECTION_UPLOADED_TO_MARKETPLACE, INVOICE_CORRECTION_QUANTITY_EXCEEDED, INVOICE_CORRECTION_AMOUNT_EXCEEDED."
eventType: StringOperationFilterInput
"When it happened."
occurredAt: ComparableDateTimeOffsetOperationFilterInput
"The user who caused it. Empty for automatic events."
userId: ComparableBenutzerKeyOperationFilterInput
"The sales order the event is about, if any."
salesOrderId: ComparableVerkaufAuftragKeyOperationFilterInput
}
"An entry of the history of a customer: something that happened with the customer or one of its documents. Read-only."
input CustomerHistoryEntrySortInput {
"When it happened."
occurredAt: SortEnumType @cost(weight: "10")
}
"A label assigned to a customer. The label itself is managed with the master data."
input CustomerLabelFilterInput {
and: [CustomerLabelFilterInput!]
or: [CustomerLabelFilterInput!]
"The ID of the label."
labelId: ComparableLabelKeyOperationFilterInput
}
"A label assigned to a customer. The label itself is managed with the master data."
input CustomerLabelSortInput {
"The ID of the label."
labelId: LabelKeySortInput @cost(weight: "10")
"The name of the label."
name: SortEnumType @cost(weight: "10")
}
"A customer in a list. Name and contact data come from the default billing address."
input CustomerListEntryFilterInput {
and: [CustomerListEntryFilterInput!]
or: [CustomerListEntryFilterInput!]
"The ID of the customer."
id: ComparableKundeKeyOperationFilterInput
"The customer number."
number: StringOperationFilterInput
"The company name."
companyName: StringOperationFilterInput
"The last name."
lastName: StringOperationFilterInput
"The email address."
email: StringOperationFilterInput
"The postal code."
postalCode: StringOperationFilterInput
"The city."
city: StringOperationFilterInput
"The country as ISO 3166-1 alpha-2 code."
countryCode: StringOperationFilterInput
"The customer group."
customerGroupId: ComparableKundenGruppeKeyOperationFilterInput
"The customer category."
customerCategoryId: ComparableKundenKategorieKeyOperationFilterInput
"Whether the customer is blocked."
isBlocked: ComparableBooleanOperationFilterInput
"Since when the customer exists."
customerSince: ComparableDateTimeOffsetOperationFilterInput
"When the customer or one of its parts was changed last. Use it to synchronize changes."
changedAt: ComparableNullableOfDateTimeOffsetOperationFilterInput
}
"A customer in a list. Name and contact data come from the default billing address."
input CustomerListEntrySortInput {
"The ID of the customer."
id: KundeKeySortInput @cost(weight: "10")
"The customer number."
number: SortEnumType @cost(weight: "10")
"The company name."
companyName: SortEnumType @cost(weight: "10")
"The last name."
lastName: SortEnumType @cost(weight: "10")
"The city."
city: SortEnumType @cost(weight: "10")
"Since when the customer exists."
customerSince: SortEnumType @cost(weight: "10")
"When the customer or one of its parts was changed last. Use it to synchronize changes."
changedAt: SortEnumType @cost(weight: "10")
}
"An event a user can raise by hand on a customer (the manual workflows menu in the Wawi). The workflows that listen to it start; raising it raises the event, not a single workflow."
input CustomerManualWorkflowEventFilterInput {
and: [CustomerManualWorkflowEventFilterInput!]
or: [CustomerManualWorkflowEventFilterInput!]
"How many active workflows listen to the event. Raising an event without any does nothing."
activeWorkflowCount: ComparableInt32OperationFilterInput @cost(weight: "15")
}
"An event a user can raise by hand on a customer (the manual workflows menu in the Wawi). The workflows that listen to it start; raising it raises the event, not a single workflow."
input CustomerManualWorkflowEventSortInput {
"The position in the menu of the Wawi."
sortOrder: SortEnumType @cost(weight: "50")
"The display name of the event."
name: SortEnumType @cost(weight: "15")
"The ID of the event."
id: ManualWorkflowEventKeySortInput @cost(weight: "15")
}
"A note about a customer, written by a user."
input CustomerNoteFilterInput {
and: [CustomerNoteFilterInput!]
or: [CustomerNoteFilterInput!]
"The ID of the note."
id: ComparableNotizKeyOperationFilterInput
"The kind of note."
type: ComparableCustomerNoteTypeOperationFilterInput
"The sales order the note is about. Empty means the note is about the customer only."
salesOrderId: ComparableVerkaufAuftragKeyOperationFilterInput
"When the note was written."
createdAt: ComparableDateTimeOffsetOperationFilterInput
"The user who wrote the note."
createdBy: ComparableBenutzerKeyOperationFilterInput
}
"A note about a customer, written by a user."
input CustomerNoteSortInput {
"The ID of the note."
id: NotizKeySortInput @cost(weight: "10")
"When the note was written."
createdAt: SortEnumType @cost(weight: "10")
}
"An invoice of a customer that is not fully paid. The invoice itself belongs to the sales invoices."
input CustomerOpenItemFilterInput {
and: [CustomerOpenItemFilterInput!]
or: [CustomerOpenItemFilterInput!]
"The invoice."
invoiceId: ComparableRechnungKeyOperationFilterInput
"The invoice date."
invoiceDate: ComparableDateTimeOffsetOperationFilterInput
"When payment is due."
dueDate: ComparableNullableOfDateTimeOffsetOperationFilterInput
"The dunning level reached; 0 means not dunned."
dunningLevel: ComparableInt32OperationFilterInput
"The currency of the invoice as ISO 4217 code."
currencyCode: StringOperationFilterInput
}
"An invoice of a customer that is not fully paid. The invoice itself belongs to the sales invoices."
input CustomerOpenItemSortInput {
"The invoice date."
invoiceDate: SortEnumType @cost(weight: "10")
"When payment is due."
dueDate: SortEnumType @cost(weight: "10")
"What is still open."
openAmount: SortEnumType @cost(weight: "10")
}
"One HTTP header that is sent with the upload request, for example a header the signature of a presigned URL covers."
input CustomerOutputUploadHeaderInput {
"The header name."
name: String!
"The header value."
value: String!
}
"The place a rendered file is uploaded to. The file is sent with a PUT request to the URL. Only https URLs to public addresses are accepted; redirects are not followed. The URL is a secret: it is never logged and never returned."
input CustomerOutputUploadTargetInput {
"The upload URL including its signature (SAS, presigned or signed URL)."
url: String!
"Headers to send with the upload. For Azure Blob Storage the header x-ms-blob-type is set automatically when the host is blob.core.windows.net. For other storages send the headers the signature requires."
headers: [CustomerOutputUploadHeaderInput]!
}
"Changes to the payment terms of a customer. Only the properties that are sent change."
input CustomerPaymentTermsChangesInput {
"The default payment method. Null removes it."
paymentMethodId: ID
"Days until payment is due, 0 to 999. Null means the global default."
paymentTermDays: Int
"The cash discount. It is replaced as a whole; null removes it."
cashDiscount: NewCustomerCashDiscountInput
}
"The individual prices of an item for one customer in one currency."
input CustomerPriceListFilterInput {
and: [CustomerPriceListFilterInput!]
or: [CustomerPriceListFilterInput!]
"The customer the prices apply to."
customerId: ComparableKundeKeyOperationFilterInput
}
"The individual prices of an item for one customer in one currency, as sent when an item is created together with its prices."
input CustomerPriceListInput {
"The customer the prices apply to."
customerId: ID!
"The currency of the prices as ISO 4217 code. Prices are written in the default currency of the tenant only. Omitted means the default currency; any other currency is refused with 409 (error code CURRENCY_NOT_SUPPORTED)."
currencyCode: String
"The price tiers, at least one. Quantities are distinct."
tiers: [PriceTierInput]!
}
"The individual prices of an item for one customer in one currency."
input CustomerPriceListSortInput {
"The customer the prices apply to."
customerId: KundeKeySortInput @cost(weight: "10")
}
"A set of texts that is printed on the documents of the customers and customer groups it is assigned to, in the language of the customer. The texts are read with 'QueryCustomerPrintTextTranslationsByCustomerPrintTextId'. Assigning a customer print text to a customer or customer group is done on the customer and on the customer group."
input CustomerPrintTextFilterInput {
and: [CustomerPrintTextFilterInput!]
or: [CustomerPrintTextFilterInput!]
"The ID of the customer print text."
id: ComparableKundenDrucktextKeyOperationFilterInput @cost(weight: "15")
"The name of the customer print text, 1 to 255 characters."
name: StringOperationFilterInput @cost(weight: "50")
}
"A set of texts that is printed on the documents of the customers and customer groups it is assigned to, in the language of the customer. The texts are read with 'QueryCustomerPrintTextTranslationsByCustomerPrintTextId'. Assigning a customer print text to a customer or customer group is done on the customer and on the customer group."
input CustomerPrintTextSortInput {
"The ID of the customer print text."
id: KundenDrucktextKeySortInput @cost(weight: "15")
"The name of the customer print text, 1 to 255 characters."
name: SortEnumType @cost(weight: "50")
}
"The five texts of a customer print text in one language. A text that is empty is not printed."
input CustomerPrintTextTranslationFilterInput {
and: [CustomerPrintTextTranslationFilterInput!]
or: [CustomerPrintTextTranslationFilterInput!]
"The language as BCP 47 tag."
languageTag: StringOperationFilterInput @cost(weight: "200")
}
"The five texts of a customer print text in one language. A text that is empty is not printed."
input CustomerPrintTextTranslationSortInput {
"The language as BCP 47 tag."
languageTag: SortEnumType @cost(weight: "200")
}
"The account of a customer in a sales channel, for example a customer account in an online shop. Read-only; the sales channel creates it."
input CustomerSalesChannelAccountFilterInput {
and: [CustomerSalesChannelAccountFilterInput!]
or: [CustomerSalesChannelAccountFilterInput!]
"The sales channel. Tenant-local, composite identifier, not a UUID. Valid values are listed by the sales channel endpoint (GET)."
salesChannelId: ComparableSalesChannelIdOperationFilterInput
"The customer group of the customer in this sales channel."
customerGroupId: ComparableKundenGruppeKeyOperationFilterInput
"Whether the customer has a registered account (true) or bought as a guest (false)."
isRegistered: ComparableBooleanOperationFilterInput
}
"The account of a customer in a sales channel, for example a customer account in an online shop. Read-only; the sales channel creates it."
input CustomerSalesChannelAccountSortInput {
"The sales channel. Tenant-local, composite identifier, not a UUID. Valid values are listed by the sales channel endpoint (GET)."
salesChannelId: SalesChannelIdSortInput @cost(weight: "10")
}
"An entry of the list of allowed values when the list is replaced."
input CustomFieldAllowedValueInput {
"The entry text. It must not be empty and must not contain the character '|'."
value: String!
"The text this entry had in the current list. Existing values with that text are changed to the new text. Omit for unchanged and new entries."
renamedFrom: String
}
"A custom field in a list."
input CustomFieldListEntryFilterInput {
and: [CustomFieldListEntryFilterInput!]
or: [CustomFieldListEntryFilterInput!]
"The kind of record the field belongs to. Known keys: 'ITEM', 'CATEGORY', 'CUSTOMER', 'SALES_ORDER', 'SALES_ORDER_LINE_ITEM', 'COMPANY', 'OPERATION', 'PRODUCTION_ITEM', 'PRODUCTION_ORDER', 'RESOURCE'. New keys can be added; handle an unknown key as not known, never as a failure."
entityType: StringOperationFilterInput
"The name of the group the field is displayed under. Null for fields that belong to no group."
groupName: StringOperationFilterInput
"The data type of the field. Known keys: 'INTEGER', 'DECIMAL', 'TEXT', 'SHORT_TEXT', 'CHECKBOX', 'VALUE_LIST', 'URL', 'EMAIL', 'PHONE', 'COUNTRY_ISO', 'PRICE', 'DATE'. New keys can be added; handle an unknown key as not known, never as a failure."
dataType: StringOperationFilterInput
"Indicates that user interfaces hide the field."
isHidden: ComparableBooleanOperationFilterInput
"Indicates that a value is expected for this field."
isRequired: ComparableBooleanOperationFilterInput
"The name of the field."
name: StringOperationFilterInput
}
"A custom field in a list."
input CustomFieldListEntrySortInput {
"The kind of record the field belongs to. Known keys: 'ITEM', 'CATEGORY', 'CUSTOMER', 'SALES_ORDER', 'SALES_ORDER_LINE_ITEM', 'COMPANY', 'OPERATION', 'PRODUCTION_ITEM', 'PRODUCTION_ORDER', 'RESOURCE'. New keys can be added; handle an unknown key as not known, never as a failure."
entityType: SortEnumType @cost(weight: "10")
"The name of the group the field is displayed under. Null for fields that belong to no group."
groupName: SortEnumType @cost(weight: "10")
"The position of the field within its group."
sortOrder: SortEnumType @cost(weight: "10")
"The name of the field."
name: SortEnumType @cost(weight: "10")
}
"Deactivates a category in a sales channel. By default the change applies to all subcategories and to all items of the categories; switch 'includeSubcategories' and 'includeItems' off to deactivate only the category itself. Idempotent. The change reaches the sales channel with the next synchronisation, not at once. - Request"
input DeactivateCategoryInSalesChannelCommandRequestInput {
"The ID of the category."
categoryId: ID!
"The sales channel. Tenant-local, composite identifier, not a UUID, for example 1-1-1. Malformed values are answered with 400 (errorCode is FORMAT_NOT_PARSABLE)."
salesChannelId: ID!
"Whether the change applies to all subcategories as well. Omitted means true."
includeSubcategories: Boolean
"Whether the items of the category, and of its subcategories if those are included, are deactivated in the sales channel as well. An item that is also in a category that stays activated in the sales channel keeps its activation. Omitted means true."
includeItems: Boolean
}
"Deactivates a company. A company is never deleted: documents keep pointing at it. Deactivating is final: the company cannot be activated again, and its mail settings, shipping accounts, tax zones and the assignment of users are removed with it. Calling it again for an inactive company changes nothing. A company that is still needed is refused with the blockers named in the error; ask 'allowed-actions' beforehand. - Request"
input DeactivateCompanyCommandRequestInput {
"The ID of the company."
companyId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Deactivates an item. Idempotent. An inactive item can no longer be sold or added as a component of a kit. - Request"
input DeactivateItemCommandRequestInput {
"The ID of the item."
itemId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Deactivates an item condition so that it can no longer be chosen; idempotent. Items and returns that carry it keep it. GraphQL only. Errors: errorCode is ITEM_CONDITION_NOT_FOUND (404); ITEM_CONDITION_CANNOT_BE_DEACTIVATED (409), blockers lists every reason: ITEM_CONDITION_IS_DEFAULT. - Request"
input DeactivateItemConditionCommandRequestInput {
"The ID of the item condition."
itemConditionId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Deactivates an item in a sales channel. Idempotent: an item that is not activated stays so. The activation of images for the sales channel stays, so that it is restored on a new activation. Deactivating is never refused for the kind of the item. - Request"
input DeactivateItemInSalesChannelCommandRequestInput {
"The ID of the item."
itemId: ID!
"The sales channel. Tenant-local, composite identifier, not a UUID, for example 1-1-1. Malformed values are answered with 400 (error code FORMAT_NOT_PARSABLE)."
salesChannelId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Deactivates a language. Only a language that nothing refers to can be deactivated: no sales orders, no text blocks and no item texts in it. The default language and the last active language cannot be deactivated. Unit names in the language are removed with it. Deactivating a language that is already inactive changes nothing and succeeds. - Request"
input DeactivateLanguageCommandRequestInput {
"The language as BCP 47 language tag, for example de or de-AT: language subtag in lower case, region subtag in upper case. Case does not matter on input. Wawi currently holds only the two-letter language subtag."
languageTag: String!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Takes a payment method out of use for new documents. Documents, payments and customers that carry it keep it, so there is no delete. Deactivating an inactive one does nothing and answers 204. Look with 'allowed-actions' first. - Request"
input DeactivatePaymentMethodCommandRequestInput {
"The ID of the payment method."
paymentMethodId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Deactivates a return state so that it cannot be set on return line items any more. A state that return line items are in right now cannot be deactivated. Errors: RETURN_STATE_NOT_FOUND (404); RETURN_STATE_CANNOT_BE_DEACTIVATED (409), blockers lists every reason: RETURN_STATE_IS_SYSTEM, RETURN_STATE_IS_USED_BY_RETURN_LINE_ITEMS, RETURN_STATE_IS_ALREADY_INACTIVE. GraphQL only. - Request"
input DeactivateReturnStateCommandRequestInput {
"The ID of the return state."
returnStateId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Takes a shipping method out of use. Orders and packages keep it. For an inactive one nothing changes. errorCode is one of: SHIPPING_METHOD_NOT_FOUND, SHIPPING_METHOD_USED_BY_AMAZON. - Request"
input DeactivateShippingMethodCommandRequestInput {
"The ID of the shipping method."
shippingMethodId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Deactivates a storage location. The blockers of the single deactivation apply."
input DeactivateStorageLocationChangeInput {
"The location to deactivate."
storageLocationId: ID!
}
"Sets a storage location to inactive. A location with stock cannot be switched off. errorCode is one of: WAREHOUSE_NOT_FOUND or STORAGE_LOCATION_NOT_FOUND (the warehouse or the storage location was not found); WAREHOUSE_TYPE_DOES_NOT_SUPPORT_STORAGE_LOCATIONS (the warehouse has no storage locations: only warehouses with storage location management have them); STORAGE_LOCATION_ALREADY_DEACTIVATED, STORAGE_LOCATION_HAS_STOCK, STORAGE_LOCATION_HAS_RESERVED_STOCK, STORAGE_LOCATION_INVENTORY_LOCKED, STORAGE_LOCATION_IS_SYSTEM_LOCATION (the status cannot be changed). - Request"
input DeactivateStorageLocationCommandRequestInput {
"The ID of the warehouse."
warehouseId: ID!
"The ID of the storage location."
storageLocationId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Deactivates a supplier. A deactivated supplier can no longer be used for purchasing: its item assignments and purchase list entries are removed, it is no longer returned, and it cannot be reactivated. A supplier with open purchase orders and a supplier that is the default supplier of an item are refused with the blockers named in the error; ask 'allowed-actions' beforehand. Errors: errorCode is SUPPLIER_NOT_FOUND (no active supplier has this ID), SUPPLIER_CANNOT_BE_DEACTIVATED (the main reason, see the 409 below). - Request"
input DeactivateSupplierCommandRequestInput {
"The ID of the supplier to deactivate."
supplierId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Deactivates a user and ends open sessions. Errors: USER_TYPE_NOT_EDITABLE, USER_IS_CURRENT_USER, USER_IS_LAST_ADMINISTRATOR. - Request"
input DeactivateUserCommandRequestInput {
"The ID of the user. Errors: USER_NOT_FOUND."
userId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Deactivates a warehouse. A warehouse is never deleted: its stock history stays. A warehouse that is still needed is refused with the blockers named in the error; ask 'allowed-actions' beforehand. A supplier that has the warehouse as its default is moved to 'replacementWarehouseId'. errorCode is one of: WAREHOUSE_NOT_FOUND (the warehouse was not found); WAREHOUSE_CANNOT_BE_DEACTIVATED (the warehouse cannot be deactivated The error lists the blocker codes: LAST_STANDARD_WAREHOUSE, WAREHOUSE_MANAGED_BY_FULFILLMENT_NETWORK, WAREHOUSE_MANAGED_BY_AMAZON, WAREHOUSE_HAS_STOCK, WAREHOUSE_IN_ACTIVE_TRANSFER, WAREHOUSE_IS_DROP_SHIPPING_TARGET_WITH_STOCK, WAREHOUSE_ON_PURCHASE_LIST, WAREHOUSE_USED_BY_MOBILE_SERVER, WAREHOUSE_USED_AS_SUPPLIER_DEFAULT, WAREHOUSE_HAS_OPEN_PICK_LISTS, WAREHOUSE_HAS_RESERVATIONS, WAREHOUSE_HAS_OPEN_FULFILLMENT_ORDERS). - Request"
input DeactivateWarehouseCommandRequestInput {
"The ID of the warehouse."
warehouseId: ID!
"The warehouse that takes over as the default warehouse of the suppliers that have this one. It must be an active warehouse of the standard type. Required when a supplier uses this warehouse."
replacementWarehouseId: ID
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"A decimal number."
input DecimalWarehouseSettingValueInput {
"The number."
value: Decimal!
}
"Deletes an additional cost type that is not in use. - Request"
input DeleteAdditionalCostTypeCommandRequestInput {
"The ID of the additional cost type."
additionalCostTypeId: ID!
}
"Deletes an advance shipping notice with its packages and line items. Goods received for the purchase order stay as they are. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: ADVANCE_SHIPPING_NOTICE_NOT_FOUND (the advance shipping notice was not found); ADVANCE_SHIPPING_NOTICE_MANAGED_BY_FULFILLMENT_NETWORK (the notice belongs to a fulfillment network inbound of another user and is read-only). - Request"
input DeleteAdvanceShippingNoticeCommandRequestInput {
"The ID of the advance shipping notice."
advanceShippingNoticeId: ID!
}
"Removes a line item from an advance shipping notice. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: ADVANCE_SHIPPING_NOTICE_NOT_FOUND or ADVANCE_SHIPPING_NOTICE_LINE_ITEM_NOT_FOUND (the notice or the line item was not found); ADVANCE_SHIPPING_NOTICE_MANAGED_BY_FULFILLMENT_NETWORK (the notice belongs to a fulfillment network inbound of another user and is read-only). - Request"
input DeleteAdvanceShippingNoticeLineItemCommandRequestInput {
"The ID of the advance shipping notice."
advanceShippingNoticeId: ID!
"The ID of the line item."
lineItemId: ID!
}
"Removes a package from an advance shipping notice. A package that line items are still assigned to cannot be removed; assign the line items to another package or to none first. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: ADVANCE_SHIPPING_NOTICE_NOT_FOUND or ADVANCE_SHIPPING_NOTICE_PACKAGE_NOT_FOUND (the notice or the package was not found); ADVANCE_SHIPPING_NOTICE_PACKAGE_IN_USE (line items are still assigned to the package); ADVANCE_SHIPPING_NOTICE_MANAGED_BY_FULFILLMENT_NETWORK (the notice belongs to a fulfillment network inbound of another user and is read-only). - Request"
input DeleteAdvanceShippingNoticePackageCommandRequestInput {
"The ID of the advance shipping notice."
advanceShippingNoticeId: ID!
"The ID of the package."
packageId: ID!
}
"Deletes an attribute or function attribute of either kind. The deletion cannot be undone: the values assigned to items and categories are deleted together with the attribute, and mappings of the fulfillment network that use it are removed. There is no check for assignments. A group disappears with its last attribute. System attributes cannot be deleted. Errors: errorCode is ATTRIBUTE_NOT_FOUND (no attribute has this ID); ATTRIBUTE_IS_SYSTEM_ATTRIBUTE (the attribute is supplied by the system). - Request"
input DeleteAttributeCommandRequestInput {
"The ID of the attribute to delete."
attributeId: ID!
}
"Deletes a child component of a bill of materials. Errors: BillOfMaterialsComponentNotFound (the child component was not found); BillOfMaterialsReadOnly (the bill of materials cannot be changed). - Request"
input DeleteBillOfMaterialsChildComponentCommandRequestInput {
"The ID of the child component to delete."
billOfMaterialsChildComponentId: ID!
}
"Deletes a bill of materials together with all its components. Errors: BillOfMaterialsNotFound (the bill of materials was not found); BillOfMaterialsNotDeletable (the bill of materials is in use and cannot be deleted). - Request"
input DeleteBillOfMaterialsCommandRequestInput {
"The ID of the bill of materials to delete."
billOfMaterialsId: ID!
}
"Deletes a parent component of a bill of materials together with all its child components. Errors: BillOfMaterialsComponentNotFound (the parent component was not found); BillOfMaterialsReadOnly (the bill of materials cannot be changed). - Request"
input DeleteBillOfMaterialsParentComponentCommandRequestInput {
"The ID of the parent component to delete."
billOfMaterialsParentComponentId: ID!
}
"Deletes a category with its texts, images, sales channels, customer groups and custom fields, and optionally its subcategories. Only the category tree is deleted, never items: an item that is assigned to a deleted category loses that assignment and keeps its other categories. An item that would be left without any category stops the deletion (CATEGORY_WOULD_LEAVE_ITEMS_WITHOUT_CATEGORY), because every item keeps at least one category: assign it to another category first. A category that is still needed is refused with the blockers named in the error; ask 'GetCategoryAllowedActions' beforehand. Cannot be undone, there is no restore operation. - Request"
input DeleteCategoryCommandRequestInput {
"The ID of the category."
categoryId: ID!
"The category the direct subcategories are moved below before the category is deleted. It must not be the category itself or one of its subcategories. Omitted means the category must not have subcategories."
moveSubcategoriesToCategoryId: ID
"Whether the subcategories are deleted with the category, at every depth. Omitted means false: the category then must not have subcategories unless 'moveSubcategoriesToCategoryId' names a target. Cannot be combined with 'moveSubcategoriesToCategoryId'."
deleteSubcategories: Boolean
}
"Removes the texts of a category in one language: the own texts of a sales channel so that it shows the default texts again, or, without a sales channel, the default texts of a further language. The default texts of the default language cannot be removed. - Request"
input DeleteCategoryDescriptionCommandRequestInput {
"The ID of the category."
categoryId: ID!
"The language of the texts as BCP 47 tag, for example 'de' or 'de-AT'. Case does not matter on input; the output uses the canonical form (language lower case, region upper case)."
languageTag: String!
"The sales channel of the texts, a tenant-local composite identifier such as 1-1-1. Omitted means the default texts."
salesChannelId: ID
}
"Removes the discount of a customer group in a sales channel. Idempotent. - Request"
input DeleteCategoryDiscountCommandRequestInput {
"The ID of the category."
categoryId: ID!
"The sales channel. Tenant-local, composite identifier, not a UUID, for example 1-1-1. Malformed values are answered with 400 (errorCode is FORMAT_NOT_PARSABLE)."
salesChannelId: ID!
"The ID of the customer group."
customerGroupId: ID!
}
"Deletes a characteristic together with its values, their texts and images and its group assignments. A characteristic whose values are still assigned to items is refused (error code CHARACTERISTIC_IS_IN_USE, the blockers name the number of items) unless 'removeItemAssignments' is true: then the values are taken away from all items first. Online shops that received the characteristic are told to remove it. The items themselves are never deleted. Errors: CHARACTERISTIC_NOT_FOUND (no characteristic has this ID); CHARACTERISTIC_IS_IN_USE (items still have a value of the characteristic and 'removeItemAssignments' is not true). - Request"
input DeleteCharacteristicCommandRequestInput {
"The ID of the characteristic to delete."
characteristicId: ID!
"True takes the values of the characteristic away from all items that have them and then deletes the characteristic. Omitted or false refuses to delete a characteristic that is in use."
removeItemAssignments: Boolean
}
"Deletes a characteristic group. The characteristics of the group stay; they only leave the group. Errors: CHARACTERISTIC_GROUP_NOT_FOUND (no group has this ID). - Request"
input DeleteCharacteristicGroupCommandRequestInput {
"The ID of the group to delete."
characteristicGroupId: ID!
}
"Removes the name of a characteristic in one language. The name in the default language cannot be removed. Errors: CHARACTERISTIC_NOT_FOUND (no characteristic has this ID); CHARACTERISTIC_NAME_NOT_FOUND (the characteristic has no name in this language); CHARACTERISTIC_DEFAULT_NAME_REQUIRED (it is the name in the default language). - Request"
input DeleteCharacteristicNameCommandRequestInput {
"The ID of the characteristic."
characteristicId: ID!
"The language as BCP 47 language tag, for example 'de' or 'de-AT'. Language subtag in lower case, region subtag in upper case; the input is not case-sensitive. It must be a language Wawi is set up for (error code CHARACTERISTIC_LANGUAGE_NOT_FOUND)."
languageTag: String!
}
"Deletes a characteristic value together with its texts and image. A value that is still assigned to items is refused (error code CHARACTERISTIC_VALUE_IS_IN_USE, the blockers name the number of items) unless 'removeItemAssignments' is true: then the value is taken away from all items first. Online shops that received the characteristic receive it again without the value. Errors: CHARACTERISTIC_NOT_FOUND (no characteristic has this ID); CHARACTERISTIC_VALUE_NOT_FOUND (the characteristic has no value with this ID); CHARACTERISTIC_VALUE_IS_IN_USE (items still have the value and 'removeItemAssignments' is not true). - Request"
input DeleteCharacteristicValueCommandRequestInput {
"The ID of the characteristic."
characteristicId: ID!
"The ID of the characteristic value."
characteristicValueId: ID!
"True takes the value away from all items that have it and then deletes it. Omitted or false refuses to delete a value that is in use."
removeItemAssignments: Boolean
}
"Removes the texts of a characteristic value in one language: name, description and search engine data. Errors: CHARACTERISTIC_NOT_FOUND (no characteristic has this ID), CHARACTERISTIC_VALUE_NOT_FOUND (the characteristic has no value with this ID), CHARACTERISTIC_VALUE_TEXT_NOT_FOUND (the value has no texts in this language), CHARACTERISTIC_VALUE_LAST_TEXT (the language is the only one with a name; delete the value instead). - Request"
input DeleteCharacteristicValueTextCommandRequestInput {
"The ID of the characteristic."
characteristicId: ID!
"The ID of the characteristic value."
characteristicValueId: ID!
"The language as BCP 47 language tag, for example 'de' or 'de-AT'. Language subtag in lower case, region subtag in upper case; the input is not case-sensitive. It must be a language Wawi is set up for (error code CHARACTERISTIC_LANGUAGE_NOT_FOUND)."
languageTag: String!
}
"Deletes a cross-selling group together with all its translations and with every assignment of items to it. The deletion is not blocked and cannot be undone: the assignments of items are removed silently (a documented difference to the product group, shipping class, item condition and delivery status, which refuse). Errors: errorCode is CROSS_SELLING_GROUP_NOT_FOUND (no group has this ID). - Request"
input DeleteCrossSellingGroupCommandRequestInput {
"The ID of the cross-selling group to delete."
crossSellingGroupId: ID!
}
"Removes the translation of a cross-selling group in one language. The default language cannot be removed. Errors: errorCode is CROSS_SELLING_GROUP_NOT_FOUND (no group has this ID); CROSS_SELLING_GROUP_LANGUAGE_NOT_ACTIVE (the language is not one Wawi is set up for); CROSS_SELLING_GROUP_TRANSLATION_NOT_FOUND (the group has no translation in this language); CROSS_SELLING_GROUP_DEFAULT_TRANSLATION_REQUIRED (the language is the default language); CROSS_SELLING_GROUP_LAST_TRANSLATION_REQUIRED (it is the only translation the group has left, translations in languages that are not active included; a group always keeps at least one name). - Request"
input DeleteCrossSellingGroupTranslationCommandRequestInput {
"The ID of the cross-selling group."
crossSellingGroupId: ID!
"The language as BCP 47 tag, for example 'de' or 'de-AT'. Case does not matter on input. It must be a language Wawi is set up for (errorCode is CROSS_SELLING_GROUP_LANGUAGE_NOT_ACTIVE)."
languageTag: String!
}
"Deletes a currency that nothing uses. The default currency cannot be deleted, neither can a currency that suppliers, purchasing, sales documents, sales channels or countries refer to. Use 'GetCurrencyAllowedActions' to see the reasons. - Request"
input DeleteCurrencyCommandRequestInput {
"The currency code. A standard currency uses its ISO 4217 alpha-3 code in capitals ('EUR'); a currency defined by the tenant uses a code with the prefix 'x-' in lower case ('x-loyalty'). Requests are matched ignoring case, responses always carry the canonical spelling."
currencyCode: String!
}
"Deletes an address of a customer. When it was the default of its type, the oldest other address of that type becomes the default. - Request"
input DeleteCustomerAddressCommandRequestInput {
"The ID of the customer."
customerId: ID!
"The ID of the address."
addressId: ID!
"Suppresses the automatic workflow triggers of this call (the customer event 'changed'). Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Deletes a bank account of a customer. When it was the default, the oldest other account becomes the default. - Request"
input DeleteCustomerBankAccountCommandRequestInput {
"The ID of the customer."
customerId: ID!
"The ID of the bank account."
bankAccountId: ID!
"Suppresses the automatic workflow triggers of this call (the customer event 'changed'). Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Deletes a customer category that no customer belongs to. - Request"
input DeleteCustomerCategoryCommandRequestInput {
"The ID of the customer category."
customerCategoryId: ID!
"Suppresses the automatic workflow triggers of this call. Customer categories raise no workflow event today; the parameter keeps calls stable when one is added. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Deletes a customer with all its parts. Only a customer without sales documents can be deleted; anonymize a customer with documents instead. - Request"
input DeleteCustomerCommandRequestInput {
"The ID of the customer."
customerId: ID!
"Suppresses the automatic workflow triggers of this call. Deletions raise no workflow event today; the parameter keeps calls stable when one is added. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Deletes a contact of a customer. - Request"
input DeleteCustomerContactCommandRequestInput {
"The ID of the customer."
customerId: ID!
"The ID of the contact."
contactId: ID!
"Suppresses the automatic workflow triggers of this call (the customer event 'changed'). Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Deletes a customer group that nothing uses. - Request"
input DeleteCustomerGroupCommandRequestInput {
"The ID of the customer group."
customerGroupId: ID!
"Suppresses the automatic workflow triggers of this call. Customer groups raise no workflow event today; the parameter keeps calls stable when one is added. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes the own price list of a customer group in a sales channel. The customer group takes over the base price of the item again. - Request"
input DeleteCustomerGroupPricesCommandRequestInput {
"The ID of the item."
itemId: ID!
"The sales channel the prices apply in. Tenant-local, composite identifier, not a UUID, for example 1-1-1. Malformed values are answered with 400 (error code FORMAT_NOT_PARSABLE)."
salesChannelId: ID!
"The customer group the prices apply to."
customerGroupId: ID!
"The currency of the prices as ISO 4217 code. Prices are written in the default currency of the tenant only. Omitted means the default currency; any other currency, including one the tenant has, is refused with 409 (error code CURRENCY_NOT_SUPPORTED), nothing is converted when writing."
currencyCode: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Deletes a note of a customer. - Request"
input DeleteCustomerNoteCommandRequestInput {
"The ID of the customer."
customerId: ID!
"The ID of the note."
noteId: ID!
"Suppresses the automatic workflow triggers of this call (the customer event 'changed'). Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes the individual prices of an item for one customer. - Request"
input DeleteCustomerPricesCommandRequestInput {
"The ID of the item."
itemId: ID!
"The customer the prices apply to."
customerId: ID!
"The currency of the prices as ISO 4217 code. Prices are written in the default currency of the tenant only. Omitted means the default currency; any other currency, including one the tenant has, is refused with 409 (error code CURRENCY_NOT_SUPPORTED), nothing is converted when writing."
currencyCode: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Deletes a customer print text together with its texts in all languages. It cannot be deleted while a customer or a customer group has it assigned; assign another one or none first. Documents that were already created keep their texts. - Request"
input DeleteCustomerPrintTextCommandRequestInput {
"The ID of the customer print text."
customerPrintTextId: ID!
}
"Deletes a custom field. Refused while values exist, unless 'deleteValues' is true. - Request"
input DeleteCustomFieldCommandRequestInput {
"The ID of the custom field to delete."
customFieldId: ID!
"If true, existing values of the field are deleted together with the field."
deleteValues: Boolean
"If true, automatic workflows are not triggered by this call."
disableAutomaticWorkflows: Boolean
}
"Deletes a dunning level. Deleting the last level of a scope removes the scope, and its invoices use the next less specific scope from then on. Notices that were issued at the level keep their values but lose the level name. A new level always gets the number after the highest one, so after deleting level 1 the scope starts at a higher number while it has other levels, and it no longer provides the default payment term for new sales orders. - Request"
input DeleteDunningLevelCommandRequestInput {
"The ID of the dunning level."
dunningLevelId: ID!
}
"Withdraws a dunning notice: the notice is deleted and the invoice goes back to the previous level, with the fee and the payment due date of the previous notice, or of the invoice if there is none. Only the current notice of an open invoice can be withdrawn, and only as long as no dunning fee of the invoice has been paid. A letter that was already sent is not recalled, and the entry in the customer history stays. - Request"
input DeleteDunningNoticeCommandRequestInput {
"The ID of the dunning notice."
dunningNoticeId: ID!
}
"Deletes a file that no business object uses; errors: FILE_NOT_FOUND, FILE_IN_USE. - Request"
input DeleteFileCommandRequestInput {
"The blob identifier of the file."
blobIdentifier: UUID!
}
"Deletes an incoming invoice that is open and has no payments. A posted invoice has already changed purchase prices, and payments belong to the accounting; both cannot be undone by a delete. - Request"
input DeleteIncomingInvoiceCommandRequestInput {
"The ID of the incoming invoice."
incomingInvoiceId: ID!
}
"Deletes a line item of any kind together with the additional costs allocated to it. The additional costs are not redistributed to the other line items. - Request"
input DeleteIncomingInvoiceLineItemCommandRequestInput {
"The ID of the incoming invoice."
incomingInvoiceId: ID!
"The ID of the line item."
lineItemId: ID!
}
"Deletes a payment of an incoming invoice. The invoice must be approved for payment. A closed invoice goes back to posted when an amount is open again. - Request"
input DeleteIncomingInvoicePaymentCommandRequestInput {
"The ID of the incoming invoice."
incomingInvoiceId: ID!
"The ID of the payment."
paymentId: ID!
}
"Deletes an inventory count that has not been booked yet. The stock of the item is not changed. - Request"
input DeleteInventoryCountCommandRequestInput {
"The ID of the inventory count to delete."
inventoryCountId: ID!
}
"Deletes an item permanently, with its sub-resources, if it may be deleted. Otherwise it refuses and deletes nothing: an item that is still needed (it is part of a fulfillment network, on an open picklist or in a stocktaking, has active eBay listings, is a production item or component, is a combination, has stock, is a component of a kit or is on an open purchase order) is answered with 409 and all blockers. Ask 'GetItemAllowedActions' beforehand. There is no soft delete and no list of deleted items: a deleted item is gone and cannot be restored. Order lines and returns that refer to the item become free-text lines. - Request"
input DeleteItemCommandRequestInput {
"The ID of the item."
itemId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Deletes an item condition that nothing uses, with its translations, restriction and marketplace codes. GraphQL only. Errors: errorCode is ITEM_CONDITION_NOT_FOUND (404); ITEM_CONDITION_CANNOT_BE_DELETED (409), blockers lists every reason: ITEM_CONDITION_IS_SYSTEM, ITEM_CONDITION_IS_ASSIGNED_TO_ITEMS, ITEM_CONDITION_IS_USED_IN_RETURNS, ITEM_CONDITION_IS_USED_IN_PICK_LIST_TEMPLATES, ITEM_CONDITION_IS_USED_IN_SHIPPING_CONFIGURATIONS, ITEM_CONDITION_IS_USED_IN_PRODUCTION. - Request"
input DeleteItemConditionCommandRequestInput {
"The ID of the item condition."
itemConditionId: ID!
}
"Removes a container from an item. - Request"
input DeleteItemContainerCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the container."
containerId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Deletes a delivery status that no item carries, with all its translations. Errors: errorCode is ITEM_DELIVERY_STATUS_NOT_FOUND (404); ITEM_DELIVERY_STATUS_CANNOT_BE_DELETED (409), blockers lists every reason: ITEM_DELIVERY_STATUS_IS_ASSIGNED_TO_ITEMS. - Request"
input DeleteItemDeliveryStatusCommandRequestInput {
"The ID of the delivery status."
itemDeliveryStatusId: ID!
}
"Removes the own texts of a sales channel so that it shows the default texts again. The default texts cannot be removed. - Request"
input DeleteItemDescriptionCommandRequestInput {
"The ID of the item."
itemId: ID!
"The language of the texts as BCP 47 language tag, for example 'de' or 'de-AT'. The input is not case-sensitive."
languageTag: String!
"The sales channel whose own texts are removed, a tenant-local composite identifier such as 1-1-1."
salesChannelId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes a free-text variation from an item. An inherited one is removed at the variation parent. - Request"
input DeleteItemFreeTextVariationCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the free-text variation."
freeTextVariationId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes a medium from an item. - Request"
input DeleteItemMediumCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the medium."
mediumId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes the default order quantity rule. Idempotent. - Request"
input DeleteItemOrderQuantityDefaultCommandRequestInput {
"The ID of the item."
itemId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes the own rule of a customer group, which then takes over the default. Idempotent. - Request"
input DeleteItemOrderQuantityForCustomerGroupCommandRequestInput {
"The ID of the item."
itemId: ID!
"The customer group the rule applies to."
customerGroupId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes a packaging from an item. - Request"
input DeleteItemPackagingCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the packaging."
packagingId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes a selection variation with its values. - Request"
input DeleteItemSelectionVariationCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the selection variation."
variationId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes a value from a selection variation. The last value cannot be removed; remove the selection variation instead. - Request"
input DeleteItemSelectionVariationValueCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the selection variation."
variationId: ID!
"The ID of the value of the selection variation."
valueId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes the special price of an item. - Request"
input DeleteItemSpecialPriceCommandRequestInput {
"The ID of the item."
itemId: ID!
"The currency of the prices as ISO 4217 code. Prices are written in the default currency of the tenant only. Omitted means the default currency; any other currency, including one the tenant has, is refused with 409 (error code CURRENCY_NOT_SUPPORTED), nothing is converted when writing."
currencyCode: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes a supplier item. A supplier item used in open purchase orders is refused. - Request"
input DeleteItemSupplierCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the supplier item."
itemSupplierId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes the limits of an item in one warehouse. Idempotent. - Request"
input DeleteItemWarehouseStockLimitCommandRequestInput {
"The ID of the item."
itemId: ID!
"The warehouse."
warehouseId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Deletes a label. A label that objects still carry is refused unless 'removeAssignments' is true; then the label is taken off all objects in the same step. A label that a pick list template uses as a filter is always refused. GraphQL only. - Request"
input DeleteLabelCommandRequestInput {
"The ID of the label."
labelId: ID!
"Whether the label is taken off all objects that carry it before it is deleted. Defaults to false."
removeAssignments: Boolean
}
"Deletes a lot size. - Request"
input DeleteLotSizeCommandRequestInput {
"The ID of the lot size to delete."
lotSizeId: ID!
}
"Deletes a manufacturer that nothing uses, together with its texts, images and contact. A manufacturer that items or pick list templates still refer to is refused with the blockers named in the error; ask 'allowed-actions' beforehand. Errors: errorCode is MANUFACTURER_NOT_FOUND (no manufacturer has this ID), MANUFACTURER_CANNOT_BE_DELETED (the main reason, see the 409 below). - Request"
input DeleteManufacturerCommandRequestInput {
"The ID of the manufacturer to delete."
manufacturerId: ID!
}
"Deletes the texts of a manufacturer in one language. The texts in the system's default language cannot be deleted. Errors: errorCode is MANUFACTURER_NOT_FOUND (no manufacturer has this ID), MANUFACTURER_DESCRIPTION_NOT_FOUND (the manufacturer has no texts in this language), MANUFACTURER_DEFAULT_DESCRIPTION_REQUIRED (the language is the default language). - Request"
input DeleteManufacturerDescriptionCommandRequestInput {
"The ID of the manufacturer whose texts are deleted."
manufacturerId: ID!
"The language of the texts as BCP 47 tag, for example 'de' or 'de-AT'. Case does not matter on input; the output uses the canonical form (language lower case, region upper case)."
languageTag: String!
}
"Removes the image of a manufacturer in one sales channel. Errors: errorCode is MANUFACTURER_NOT_FOUND (no manufacturer has this ID), MANUFACTURER_IMAGE_NOT_FOUND (the manufacturer has no image in this sales channel). - Request"
input DeleteManufacturerImageCommandRequestInput {
"The ID of the manufacturer whose image is removed."
manufacturerId: ID!
"The sales channel the image is assigned to. Tenant-local, composite identifier, not a UUID. Only specific sales channels are allowed for this operation and are specified in the sales channel endpoint (GET)."
salesChannelId: ID!
}
"Deletes a measurement unit that nothing uses. System measurement units cannot be deleted. It is refused while an item, a dimension set, a bill of material or work job component or another measurement unit refers to it. Documents keep the name as text and are not affected. - Request"
input DeleteMeasurementUnitCommandRequestInput {
"The ID of the measurement unit."
measurementUnitId: ID!
}
"Deletes the number range of a company. The company's documents of this type then use the global range; numbers already issued stay as they are, and numbers that documents already have are skipped. The global range of a type cannot be deleted. Error codes: NUMBER_RANGE_NOT_FOUND, NUMBER_RANGE_CANNOT_BE_DELETED. GraphQL only. - Request"
input DeleteNumberRangeCommandRequestInput {
"The ID of the number range."
numberRangeId: ID!
}
"Deletes an on-hold reason that no order carries. For a reason that orders carry use 'ReplaceOnHoldReason'. GraphQL only. - Request"
input DeleteOnHoldReasonCommandRequestInput {
"The ID of the on-hold reason."
onHoldReasonId: ID!
}
"Deletes an operation together with its steps. An operation that is used in a bill of materials or in production cannot be deleted. Errors: OperationNotFound (the operation was not found); OperationInUse (the operation is used in a bill of materials or in production). - Request"
input DeleteOperationCommandRequestInput {
"The ID of the operation to delete."
operationId: ID!
}
"Deletes a step of an operation together with its texts. The last step of an operation cannot be deleted. Errors: OperationStepNotFound (the step was not found); LastOperationStepNotDeletable (the step is the last step of its operation). - Request"
input DeleteOperationStepCommandRequestInput {
"The ID of the step to delete."
operationStepId: ID!
}
"Deletes the text of an operation step in one language. The text in the default language cannot be deleted. Errors: OperationStepTextNotFound (the step has no text in this language or the step was not found); OperationStepDefaultTextRequired (the text is in the default language). - Request"
input DeleteOperationStepTextCommandRequestInput {
"The ID of the step."
operationStepId: ID!
"The language of the text to delete as a BCP 47 language tag, e.g. \"de\" or \"de-AT\"; case-insensitive."
languageTag: String!
}
"Deletes a template with its layouts. Errors: 404 TEMPLATE_NOT_FOUND; 409 TEMPLATE_IN_USE (blockers lists every reason). GraphQL only (new API rule). - Request"
input DeleteOutputTemplateCommandRequestInput {
"The ID of the template."
templateId: ID!
}
"Deletes a template set together with its templates. GraphQL only (new API rule). Errors: 404 TEMPLATE_SET_NOT_FOUND; 409 with errorCode of the main reason and every reason in blockers: TEMPLATE_SET_IS_STANDARD (the set is the standard of its document type), TEMPLATE_SET_IS_LAST (the document type would have no set), TEMPLATE_SET_IN_USE (the set is in use). 'GetOutputTemplateSetAllowedActions' tells beforehand. - Request"
input DeleteOutputTemplateSetCommandRequestInput {
"The ID of the template set."
templateSetId: ID!
}
"Removes a package from its delivery note. A delivery note keeps at least one package. A refused action reports 'errorCode' (the main reason) and 'blockers' (all reasons, each with 'code' and 'message'). errorCode is one of: PACKAGE_NOT_FOUND (the package was not found); LAST_PACKAGE_OF_DELIVERY_NOTE (the delivery note has no other package); PACKAGE_ALREADY_SHIPPED (the package already has a shipping date); PACKAGE_HAS_SHIPPING_LABEL (a label exists; cancel it in the shipping service first); DELIVERY_NOTE_HANDLED_BY_FULFILLMENT_NETWORK (the delivery note is handled by the JTL Fulfillment Network and cannot be changed here). - Request"
input DeletePackageCommandRequestInput {
"The ID of the package."
packageId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Deletes a payment. The payment status of the document it counted for can change; deleting a payout can make the document fully paid and start its workflows. A payment created from or matched with a payment transaction is no longer assigned to it, and the fees of that transaction on the sales order are removed with it. A voucher redemption is cancelled through the vouchers, a payout of a refund by deleting the refund. Errors: PAYMENT_NOT_FOUND (the payment was not found); PAYMENT_CANNOT_BE_DELETED (the payment cannot be deleted. The error lists the blocker codes: PAYMENT_IS_VOUCHER_REDEMPTION, PAYMENT_BOOKED_BY_REFUND). - Request"
input DeletePaymentCommandRequestInput {
"The ID of the payment."
paymentId: ID!
"Whether to suppress the workflows this call would start because a sales order or a sales invoice becomes fully paid. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes the translation of a payment method in one language. The default language cannot be removed. - Request"
input DeletePaymentMethodTranslationCommandRequestInput {
"The ID of the payment method."
paymentMethodId: ID!
"The language as BCP 47 language tag, for example de or de-AT: language subtag in lower case, region subtag in upper case. Case does not matter on input."
languageTag: String!
}
"Deletes a pick list that nobody has worked on and releases its reservations. A pick list whose line items are picked or further, or that a delivery session holds, is refused. A refused action reports 'errorCode' (the main reason) and 'blockers' (all reasons, each with 'code' and 'message'). errorCode is one of: PICK_LIST_NOT_FOUND (the pick list was not found); PICK_LIST_NOT_DELETABLE (the pick list cannot be deleted; the blockers are PICK_LIST_WORKED_ON (a line item is picked or further; line items the system creates already processed, such as vouchers, do not count) and PICK_LIST_HELD_BY_SESSION (a delivery session holds it)). - Request"
input DeletePickListCommandRequestInput {
"The ID of the pick list."
pickListId: ID!
}
"Deletes one line item that nobody has worked on and releases its reservation. Only the addressed line item is removed. Removing the last line item would remove the pick list: call 'DeletePickList' instead. A refused action reports 'errorCode' (the main reason) and 'blockers' (all reasons, each with 'code' and 'message'). errorCode is one of: PICK_LIST_NOT_FOUND (the pick list was not found); PICK_LIST_LINE_ITEM_NOT_FOUND (the line item was not found on the pick list); PICK_LIST_LINE_ITEM_NOT_DELETABLE (the line item cannot be deleted; the blockers are PICK_LIST_LINE_ITEM_WORKED_ON (it is picked or further) and PICK_LIST_LINE_ITEM_HELD_BY_SESSION (a delivery session holds it)); PICK_LIST_LAST_LINE_ITEM (it is the last line item of the pick list). - Request"
input DeletePickListLineItemCommandRequestInput {
"The ID of the pick list."
pickListId: ID!
"The ID of the pick list line item."
lineItemId: ID!
}
"Deletes a pick list template. A template that an open pick list was created from is refused; existing pick lists are not changed otherwise. A refused action reports 'errorCode' (the main reason) and 'blockers' (all reasons, each with 'code' and 'message'). errorCode is one of: PICK_LIST_TEMPLATE_NOT_FOUND (the pick list template was not found); PICK_LIST_TEMPLATE_IN_USE (an open pick list was created from the template). - Request"
input DeletePickListTemplateCommandRequestInput {
"The ID of the pick list template."
pickListTemplateId: ID!
}
"Deletes a price inquiry with its lines. A price inquiry can be deleted at any time; a purchase order that was made from it is not affected. A price inquiry raises no workflow events. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: PRICE_INQUIRY_NOT_FOUND (the price inquiry was not found). - Request"
input DeletePriceInquiryCommandRequestInput {
"The ID of the price inquiry."
priceInquiryId: ID!
}
"Removes a line from a price inquiry. The last line cannot be removed; delete the price inquiry instead. A price inquiry raises no workflow events. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: PRICE_INQUIRY_NOT_FOUND or PRICE_INQUIRY_LINE_ITEM_NOT_FOUND (the price inquiry or the line was not found); PRICE_INQUIRY_LAST_LINE_ITEM (the price inquiry would have no line left); PRICE_INQUIRY_LINE_ITEM_NOT_WRITABLE (an allowance or charge). - Request"
input DeletePriceInquiryLineItemCommandRequestInput {
"The ID of the price inquiry."
priceInquiryId: ID!
"The ID of the line."
lineItemId: ID!
}
"Deletes a product group that nothing uses. A product group that items, tax keys, item condition restrictions or return reasons still refer to is refused with the blockers named in the error; ask 'allowed-actions' beforehand. Errors: errorCode is PRODUCT_GROUP_NOT_FOUND (no product group has this ID); PRODUCT_GROUP_CANNOT_BE_DELETED (the main reason; the error lists every reason in blockers: PRODUCT_GROUP_IS_ASSIGNED_TO_ITEMS, PRODUCT_GROUP_IS_USED_IN_TAX_KEYS, PRODUCT_GROUP_IS_USED_IN_ITEM_CONDITION_RESTRICTIONS or PRODUCT_GROUP_IS_USED_IN_RETURN_REASONS). - Request"
input DeleteProductGroupCommandRequestInput {
"The ID of the product group to delete."
productGroupId: ID!
}
"Deletes a production item. The underlying item is not deleted. Errors: ProductionItemNotFound (the production item was not found). - Request"
input DeleteProductionItemCommandRequestInput {
"The ID of the production item to delete."
productionItemId: ID!
}
"Deletes a production order. A deleted production order can no longer be retrieved. Not possible while a production session of the production order is neither finished nor canceled, or while stock is reserved for the production order. Errors: PRODUCTION_ORDER_NOT_FOUND (the production order was not found); PRODUCTION_ORDER_CANNOT_BE_DELETED (the production order cannot be deleted; all reasons are listed in 'blockers': PRODUCTION_ORDER_HAS_ACTIVE_PRODUCTION_SESSION, a production session is neither finished nor canceled; PRODUCTION_ORDER_HAS_STOCK_RESERVATION, stock is reserved for the production order). - Request"
input DeleteProductionOrderCommandRequestInput {
"The ID of the production order to delete."
productionOrderId: ID!
}
"Removes an entry from the purchase list. The purchase list has no workflow events. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: PURCHASE_LIST_ENTRY_NOT_FOUND (the entry was not found). - Request"
input DeletePurchaseListEntryCommandRequestInput {
"The ID of the purchase list entry."
entryId: ID!
}
"Deletes a purchase order with its line items, in every status. Goods receipts that were booked stay in stock; incoming invoice lines and reminders keep the ID of an order that no longer exists; the supplier stock lowered by a sent drop shipping order is not restored, and the delivery note of a drop shipping order stays. An order sent to the fulfillment network is closed there first. Raises the workflow event 'deleted'. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: PURCHASE_ORDER_NOT_FOUND (the order was not found); PURCHASE_ORDER_FULFILLMENT_INBOUND_NOT_CLOSED (the order was sent to the fulfillment network and cannot be closed there). - Request"
input DeletePurchaseOrderCommandRequestInput {
"The ID of the purchase order."
purchaseOrderId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes an item or custom line from a purchase order, in every status, also when something was delivered: its goods receipts stay in stock. The last line cannot be removed; delete the order instead. The allowances and charges are computed anew. An order that is sent or partially delivered gets its status computed anew from the ordered and delivered quantities; a completed order stays completed. Raises the workflow event 'changed'. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: PURCHASE_ORDER_NOT_FOUND or PURCHASE_ORDER_LINE_ITEM_NOT_FOUND (the order or the line was not found); PURCHASE_ORDER_LAST_LINE_ITEM (the order would have no line left); PURCHASE_ORDER_LINE_ITEM_NOT_WRITABLE (an allowance or charge; it is computed). - Request"
input DeletePurchaseOrderLineItemCommandRequestInput {
"The ID of the purchase order."
purchaseOrderId: ID!
"The ID of the line item."
lineItemId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Deletes a refund that has not been sent, together with the payout it booked. Without the payout the sales order or the corrected invoice can become fully paid and start its workflows. Errors: REFUND_NOT_FOUND (the refund was not found); REFUND_ALREADY_SENT (the refund was sent or confirmed and cannot be deleted). - Request"
input DeleteRefundCommandRequestInput {
"The ID of the refund."
refundId: ID!
"Whether to suppress the workflows this call would start because a sales order or a sales invoice becomes fully paid. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Deletes a resource. Errors: RESOURCE_NOT_FOUND (the resource was not found); RESOURCE_IN_USE (the resource is still used, e.g. by an operation). - Request"
input DeleteResourceCommandRequestInput {
"The ID of the resource to delete."
resourceId: ID!
}
"Deletes a resource group. The assigned resources themselves are not deleted. Errors: RESOURCE_GROUP_NOT_FOUND (the resource group was not found); RESOURCE_GROUP_IN_USE (the resource group is still assigned to an operation). - Request"
input DeleteResourceGroupCommandRequestInput {
"The ID of the resource group to delete."
resourceGroupId: ID!
}
"Deletes a resource type. Errors: RESOURCE_TYPE_NOT_FOUND (the resource type was not found); RESOURCE_TYPE_IN_USE (resources or resource groups still have this resource type). - Request"
input DeleteResourceTypeCommandRequestInput {
"The ID of the resource type to delete."
resourceTypeId: ID!
}
"Deletes a destination area with its entries. Templates that use it keep the reference; a calculation with them refuses. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: RESTOCK_SUGGESTION_DESTINATION_AREA_NOT_FOUND (the destination area was not found; an area of the other kind counts as not found). - Request"
input DeleteRestockSuggestionDestinationAreaCommandRequestInput {
"The ID of the destination area."
destinationAreaId: ID!
}
"Removes an entry from a destination area; the entries below it move up by one. The last entry cannot be removed: delete the destination area instead. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: RESTOCK_SUGGESTION_DESTINATION_AREA_NOT_FOUND or RESTOCK_SUGGESTION_DESTINATION_AREA_ENTRY_NOT_FOUND (the destination area or the entry was not found); RESTOCK_SUGGESTION_DESTINATION_AREA_LAST_ENTRY (the destination area would have no entry left). - Request"
input DeleteRestockSuggestionDestinationAreaEntryCommandRequestInput {
"The ID of the destination area."
destinationAreaId: ID!
"The ID of the entry."
entryId: ID!
}
"Deletes a start area with its entries. Templates that use it keep the reference; a calculation with them refuses. The ERP itself deletes a start area that loses its last entry because a supplier is deactivated or deleted. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: RESTOCK_SUGGESTION_START_AREA_NOT_FOUND (the start area was not found; an area of the other kind counts as not found). - Request"
input DeleteRestockSuggestionStartAreaCommandRequestInput {
"The ID of the start area."
startAreaId: ID!
}
"Removes an entry from a start area; the entries below it move up by one. The last entry cannot be removed: delete the start area instead. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: RESTOCK_SUGGESTION_START_AREA_NOT_FOUND or RESTOCK_SUGGESTION_START_AREA_ENTRY_NOT_FOUND (the start area or the entry was not found); RESTOCK_SUGGESTION_START_AREA_LAST_ENTRY (the start area would have no entry left). - Request"
input DeleteRestockSuggestionStartAreaEntryCommandRequestInput {
"The ID of the start area."
startAreaId: ID!
"The ID of the entry."
entryId: ID!
}
"Deletes a template. Nothing else refers to a template; the last template can be deleted as well. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: RESTOCK_SUGGESTION_TEMPLATE_NOT_FOUND (the template was not found). - Request"
input DeleteRestockSuggestionTemplateCommandRequestInput {
"The ID of the template."
templateId: ID!
}
"Deletes a return with its line items, labels and exchange items. If goods of it have arrived, errorCode is RETURN_HAS_ARRIVED_LINE_ITEMS. - Request"
input DeleteReturnCommandRequestInput {
"The ID of the return. If it does not exist, errorCode is RETURN_NOT_FOUND."
returnId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes an exchange item from a return. If the exchange sales order exists, errorCode is RETURN_EXCHANGE_SALES_ORDER_EXISTS. - Request"
input DeleteReturnExchangeItemCommandRequestInput {
"The ID of the return. If it does not exist, errorCode is RETURN_NOT_FOUND."
returnId: ID!
"The ID of the exchange item. If it does not exist, errorCode is RETURN_EXCHANGE_ITEM_NOT_FOUND."
returnExchangeItemId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes a return label from a return. - Request"
input DeleteReturnLabelCommandRequestInput {
"The ID of the return. If it does not exist, errorCode is RETURN_NOT_FOUND."
returnId: ID!
"The ID of the return label. If it does not exist, errorCode is RETURN_LABEL_NOT_FOUND."
returnLabelId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes a line item from a return. If its goods have arrived, errorCode is RETURN_LINE_ITEM_ARRIVED; if it is the last one, RETURN_LAST_LINE_ITEM. - Request"
input DeleteReturnLineItemCommandRequestInput {
"The ID of the return. If it does not exist, errorCode is RETURN_NOT_FOUND."
returnId: ID!
"The ID of the line item. If it does not exist, errorCode is RETURN_LINE_ITEM_NOT_FOUND."
returnLineItemId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Deletes a return reason that no return line item uses, with all its translations and its restriction. Errors: RETURN_REASON_NOT_FOUND (404); RETURN_REASON_CANNOT_BE_DELETED (409), blockers lists every reason: RETURN_REASON_IS_SYSTEM, RETURN_REASON_IS_USED_BY_RETURN_LINE_ITEMS. GraphQL only. - Request"
input DeleteReturnReasonCommandRequestInput {
"The ID of the return reason."
returnReasonId: ID!
}
"Deletes a return state that no return line item is in and none has ever been in, with all its names; a state with a history is deactivated instead. Workflows and assignments to sales channels must be removed first. Errors: RETURN_STATE_NOT_FOUND (404); RETURN_STATE_CANNOT_BE_DELETED (409), blockers lists every reason: RETURN_STATE_IS_SYSTEM, RETURN_STATE_IS_USED_BY_RETURN_LINE_ITEMS, RETURN_STATE_HAS_HISTORY, RETURN_STATE_HAS_WORKFLOWS, RETURN_STATE_HAS_CHANNEL_MAPPING. GraphQL only. - Request"
input DeleteReturnStateCommandRequestInput {
"The ID of the return state."
returnStateId: ID!
}
"Deletes a cancellation reason for sales invoices that no cancelled document refers to and that Wawi did not create itself. GraphQL only. - Request"
input DeleteSalesInvoiceCancellationReasonCommandRequestInput {
"The ID of the cancellation reason for sales invoices."
cancellationReasonId: ID!
}
"Deletes a draft with its line items. A finalized invoice cannot be deleted; cancel it. A refusal carries 'blockers' with all reasons, each with a code and a message. Errors: errorCode is SALES_INVOICE_NOT_FOUND (no sales invoice with this ID); errorCode is SALES_INVOICE_NOT_DRAFT (the invoice is finalized or cancelled); errorCode is SALES_INVOICE_IS_EXTERNAL (the sales order of the invoice is invoiced externally); errorCode is SALES_ORDER_NOT_CHANGEABLE (the sales order must not be changed); errorCode is SALES_INVOICE_HAS_PAYMENTS (a payment exists on the invoice); errorCode is SALES_INVOICE_CORRECTION_HAS_PAYMENTS (a payment exists on a correction of the invoice). - Request"
input DeleteSalesInvoiceCommandRequestInput {
"The ID of the sales invoice."
salesInvoiceId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Deletes a cancellation reason for sales invoice corrections that no cancelled document refers to and that Wawi did not create itself. GraphQL only. - Request"
input DeleteSalesInvoiceCorrectionCancellationReasonCommandRequestInput {
"The ID of the cancellation reason for sales invoice corrections."
cancellationReasonId: ID!
}
"Removes a file from a sales invoice. The file itself stays in the blob storage. - Request"
input DeleteSalesInvoiceFileCommandRequestInput {
"The ID of the sales invoice. Fails with a GraphQL error whose extensions.code is SalesInvoiceNotFound."
salesInvoiceId: ID!
"The ID of the attachment. Fails with a GraphQL error whose extensions.code is SalesInvoiceFileNotFound."
salesInvoiceFileId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes a line item from a draft. The components of a kit or configurable item go with their parent; removing a component of a kit scales the quantity of the parent. A refusal carries 'blockers' with all reasons, each with a code and a message. Errors: errorCode is SALES_INVOICE_NOT_FOUND (no sales invoice with this ID); errorCode is SALES_INVOICE_NOT_DRAFT (only a draft can be changed; a finalized or cancelled invoice cannot); errorCode is SALES_INVOICE_LINE_ITEM_NOT_FOUND (no line item with this ID on the invoice). - Request"
input DeleteSalesInvoiceLineItemCommandRequestInput {
"The ID of the sales invoice."
salesInvoiceId: ID!
"The ID of the line item."
salesInvoiceLineItemId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes a file from a sales invoice line item. The file itself stays in the blob storage. - Request"
input DeleteSalesInvoiceLineItemFileCommandRequestInput {
"The ID of the sales invoice. Fails with a GraphQL error whose extensions.code is SalesInvoiceNotFound."
salesInvoiceId: ID!
"The ID of the line item. Fails with a GraphQL error whose extensions.code is SalesInvoiceLineItemNotFound."
salesInvoiceLineItemId: ID!
"The ID of the attachment. Fails with a GraphQL error whose extensions.code is SalesInvoiceLineItemFileNotFound."
salesInvoiceLineItemFileId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Deletes a cancellation reason for sales orders that no cancelled document refers to and that Wawi did not create itself. GraphQL only. - Request"
input DeleteSalesOrderCancellationReasonCommandRequestInput {
"The ID of the cancellation reason for sales orders."
cancellationReasonId: ID!
}
"Deletes a sales order. Fails with SalesOrderCannotBeDeleted (invoice, delivery note, open picklist) or SalesOrderDeleteDisabled. - Request"
input DeleteSalesOrderCommandRequestInput {
"The ID of the sales order. Fails with a GraphQL error whose extensions.code is SalesOrderNotFound."
salesOrderId: ID!
"Why the sales order is deleted. It is written to the log."
reason: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Clears the value of a custom field of a sales order. Clearing a value that is not set succeeds. - Request"
input DeleteSalesOrderCustomFieldValueCommandRequestInput {
"The ID of the sales order. Fails with a GraphQL error whose extensions.code is SalesOrderNotFound, SalesOrderIsPending or SalesOrderReadOnly."
salesOrderId: ID!
"The ID of the custom field. Fails with a GraphQL error whose extensions.code is CustomFieldNotFound."
customFieldId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes a file from a sales order. The file itself stays in the blob storage. - Request"
input DeleteSalesOrderFileCommandRequestInput {
"The ID of the sales order. Fails with a GraphQL error whose extensions.code is SalesOrderNotFound."
salesOrderId: ID!
"The ID of the attachment. Fails with a GraphQL error whose extensions.code is SalesOrderFileNotFound."
salesOrderFileId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes a line item and its components; refused when it was invoiced, picked or sent to fulfillment. - Request"
input DeleteSalesOrderLineItemCommandRequestInput {
"The ID of the sales order. Fails with a GraphQL error whose extensions.code is SalesOrderNotFound, SalesOrderIsPending or SalesOrderReadOnly."
salesOrderId: ID!
"The ID of the line item. Fails with a GraphQL error whose extensions.code is SalesOrderLineItemNotFound."
salesOrderLineItemId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Clears the value of a custom field of a sales order line item. Clearing a value that is not set succeeds. - Request"
input DeleteSalesOrderLineItemCustomFieldValueCommandRequestInput {
"The ID of the sales order. Fails with a GraphQL error whose extensions.code is SalesOrderNotFound, SalesOrderIsPending or SalesOrderReadOnly."
salesOrderId: ID!
"The ID of the line item. Fails with a GraphQL error whose extensions.code is SalesOrderLineItemNotFound."
salesOrderLineItemId: ID!
"The ID of the custom field. Fails with a GraphQL error whose extensions.code is CustomFieldNotFound."
customFieldId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes a file from a sales order line item. The file itself stays in the blob storage. - Request"
input DeleteSalesOrderLineItemFileCommandRequestInput {
"The ID of the sales order. Fails with a GraphQL error whose extensions.code is SalesOrderNotFound."
salesOrderId: ID!
"The ID of the line item. Fails with a GraphQL error whose extensions.code is SalesOrderLineItemNotFound."
salesOrderLineItemId: ID!
"The ID of the attachment. Fails with a GraphQL error whose extensions.code is SalesOrderLineItemFileNotFound."
salesOrderLineItemFileId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Deletes a note on a sales order. - Request"
input DeleteSalesOrderNoteCommandRequestInput {
"The ID of the sales order. Fails with a GraphQL error whose extensions.code is SalesOrderNotFound."
salesOrderId: ID!
"The ID of the note. Fails with a GraphQL error whose extensions.code is SalesOrderNoteNotFound."
salesOrderNoteId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Deletes a sales quotation with its line items, notes and files. Sales orders created from it stay. - Request"
input DeleteSalesQuotationCommandRequestInput {
"The ID of the quotation. Fails with extensions.code SalesQuotationNotFound, or SalesQuotationCannotBeDeleted with extensions.blockers."
salesQuotationId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes a file from a sales quotation. - Request"
input DeleteSalesQuotationFileCommandRequestInput {
"The ID of the sales quotation. Fails with a GraphQL error whose extensions.code is SalesQuotationNotFound."
salesQuotationId: ID!
"The ID of the attachment. Fails with a GraphQL error whose extensions.code is SalesQuotationFileNotFound."
salesQuotationFileId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes a line item from a sales quotation, with its child line items. - Request"
input DeleteSalesQuotationLineItemCommandRequestInput {
"The ID of the quotation. Fails with extensions.code SalesQuotationNotFound, or SalesQuotationCannotBeUpdated with extensions.blockers."
salesQuotationId: ID!
"The ID of the line item. Fails with a GraphQL error whose extensions.code is SalesQuotationLineItemNotFound."
salesQuotationLineItemId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Deletes a note on a sales quotation. - Request"
input DeleteSalesQuotationNoteCommandRequestInput {
"The ID of the sales quotation. Fails with a GraphQL error whose extensions.code is SalesQuotationNotFound."
salesQuotationId: ID!
"The ID of the note. Fails with a GraphQL error whose extensions.code is SalesQuotationNoteNotFound."
salesQuotationNoteId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Deletes a subscription that has no follow-up sales order. A subscription with follow-up sales orders is ended with 'TerminateSalesSubscription' instead. - Request"
input DeleteSalesSubscriptionCommandRequestInput {
"The ID of the subscription."
salesSubscriptionId: ID!
}
"Removes a file from a sales subscription. The file itself stays in the blob storage. - Request"
input DeleteSalesSubscriptionFileCommandRequestInput {
"The ID of the sales subscription. Fails with a GraphQL error whose extensions.code is SalesSubscriptionNotFound."
salesSubscriptionId: ID!
"The ID of the attachment. Fails with a GraphQL error whose extensions.code is SalesSubscriptionFileNotFound."
salesSubscriptionFileId: ID!
}
"Removes a line item from a subscription. Follow-up sales orders that were already created are not changed. - Request"
input DeleteSalesSubscriptionLineItemCommandRequestInput {
"The ID of the subscription."
salesSubscriptionId: ID!
"The ID of the line item."
salesSubscriptionLineItemId: ID!
}
"Deletes a sales unit that nothing uses. It is refused while an item has the sales unit as sales unit or as packaging unit, or a container of an item refers to it. Documents keep the name as text and are not affected. Hidden sales units can be deleted when nothing uses them. - Request"
input DeleteSalesUnitCommandRequestInput {
"The ID of the sales unit."
salesUnitId: ID!
}
"Deletes a shipping account. An account that a shipping method uses is not deleted, and neither is a test account. Deleting an account that applies to all companies deletes the accounts of single companies that refine it; it is refused when one of them is in use. Creating and changing accounts is not part of the API. errorCode is one of: SHIPPING_ACCOUNT_NOT_FOUND (404), SHIPPING_ACCOUNT_CANNOT_BE_DELETED (409, with the blockers SHIPPING_ACCOUNT_IS_TEST_ACCOUNT, SHIPPING_ACCOUNT_IN_USE and SHIPPING_ACCOUNT_COMPANY_ACCOUNT_IN_USE). GraphQL only. - Request"
input DeleteShippingAccountCommandRequestInput {
"The ID of the shipping account."
shippingAccountId: ID!
}
"Deletes a shipping class that nothing uses. A shipping class that items, shipping configurations or pick list templates still refer to is refused with the blockers named in the error; ask 'allowed-actions' beforehand. - Request"
input DeleteShippingClassCommandRequestInput {
"The ID of the shipping class."
shippingClassId: ID!
}
"Deletes a shipping method. A shipping method that orders use is not deleted when it is an own one: it is deactivated instead, and the answer says so (outcome Deactivated). An automatically created one that orders use is refused. Translations and the assignment to the Shipping app are deleted with the shipping method. errorCode is one of: SHIPPING_METHOD_NOT_FOUND, SHIPPING_METHOD_IS_MAIN_OF_AUTOMATIC_METHODS, SHIPPING_METHOD_USED_BY_AMAZON, SHIPPING_METHOD_USED_BY_ORDERS. - Request"
input DeleteShippingMethodCommandRequestInput {
"The ID of the shipping method."
shippingMethodId: ID!
}
"Removes the name of a shipping method in one language. The name in the default language cannot be removed. errorCode is one of: SHIPPING_METHOD_NOT_FOUND, SHIPPING_METHOD_TRANSLATION_NOT_FOUND, SHIPPING_METHOD_DEFAULT_TRANSLATION_REQUIRED. - Request"
input DeleteShippingMethodTranslationCommandRequestInput {
"The ID of the shipping method."
shippingMethodId: ID!
"The language as BCP 47 language tag, for example de or de-AT: language subtag in lower case, region subtag in upper case. Case does not matter on input. Wawi currently holds only the two-letter language subtag."
languageTag: String!
}
"Removes a line item from an open stock transfer. The last line item cannot be removed; cancel the stock transfer instead. - Request"
input DeleteStockTransferLineItemCommandRequestInput {
"The ID of the stock transfer the line item belongs to."
stockTransferId: ID!
"The ID of the line item to delete. It must belong to the stock transfer in the route."
stockTransferLineItemId: ID!
}
"Deletes a storage location. A location that is still needed is refused with the blockers named in the error; ask 'allowed-actions' beforehand. A location that has a history, that is stock or stock movements ever booked on it, is never deleted, for reasons of audit; deactivate it instead. errorCode is one of: WAREHOUSE_NOT_FOUND or STORAGE_LOCATION_NOT_FOUND (the warehouse or the storage location was not found); WAREHOUSE_TYPE_DOES_NOT_SUPPORT_STORAGE_LOCATIONS (the warehouse has no storage locations: only warehouses with storage location management have them); STORAGE_LOCATION_CANNOT_BE_DELETED (the location cannot be deleted. The error lists the blocker codes: STORAGE_LOCATION_NOT_ACTIVE, STORAGE_LOCATION_HAS_STOCK, STORAGE_LOCATION_HAS_HISTORY, STORAGE_LOCATION_IS_SYSTEM_LOCATION, STORAGE_LOCATION_IS_LAST_GOODS_RECEIPT_LOCATION, STORAGE_LOCATION_IS_SPECIAL_LOCATION, STORAGE_LOCATION_INVENTORY_LOCKED). - Request"
input DeleteStorageLocationCommandRequestInput {
"The ID of the warehouse."
warehouseId: ID!
"The ID of the storage location."
storageLocationId: ID!
}
"Deletes a tax class that nothing uses. The default tax class cannot be deleted, and neither can a tax class with rates in tax zones (remove them with 'RemoveTaxRate' first) or one that items, shipping methods, configuration items or documents refer to. - Request"
input DeleteTaxClassCommandRequestInput {
"The ID of the tax class."
taxClassId: ID!
}
"Deletes a tax code that nothing uses: no rate, no override and no document. - Request"
input DeleteTaxCodeCommandRequestInput {
"The ID of the tax code."
taxCodeId: ID!
}
"Deletes a tax zone together with its countries, its rates and their overrides. Sales to its countries can no longer be taxed until another tax zone of the company and departure country takes them. - Request"
input DeleteTaxZoneCommandRequestInput {
"The ID of the tax zone."
taxZoneId: ID!
}
"Deletes a text block together with its content in all languages. - Request"
input DeleteTextBlockCommandRequestInput {
"The ID of the text block."
textBlockId: ID!
}
"Deletes an empty text block group. A group that still has text blocks cannot be deleted: delete or empty it first. - Request"
input DeleteTextBlockGroupCommandRequestInput {
"The ID of the text block group."
textBlockGroupId: ID!
}
"Deletes a transaction colour that no sales document carries. Errors: TRANSACTION_COLOR_NOT_FOUND (404); TRANSACTION_COLOR_CANNOT_BE_DELETED (409), blockers lists every reason: TRANSACTION_COLOR_IS_USED_BY_SALES_DOCUMENTS. GraphQL only. - Request"
input DeleteTransactionColorCommandRequestInput {
"The ID of the transaction colour."
transactionColorId: ID!
}
"Deletes a transaction status that no sales document carries and no pick list template refers to. Errors: TRANSACTION_STATUS_NOT_FOUND (404); TRANSACTION_STATUS_CANNOT_BE_DELETED (409), blockers lists every reason: TRANSACTION_STATUS_IS_USED_BY_SALES_DOCUMENTS, TRANSACTION_STATUS_IS_USED_BY_PICK_LIST_TEMPLATES. GraphQL only. - Request"
input DeleteTransactionStatusCommandRequestInput {
"The ID of the transaction status."
transactionStatusId: ID!
}
"Deletes a user group with its permissions. Errors: USER_GROUP_NOT_FOUND, USER_GROUP_IS_ADMINISTRATOR_GROUP. - Request"
input DeleteUserGroupCommandRequestInput {
"The ID of the user group."
userGroupId: ID!
}
"Removes an axis with its values. The last axis cannot be removed; dissolve the variation instead. The remaining values have to keep the combinations distinct. - Request"
input DeleteVariationAxisCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the variation axis."
axisId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes a value. A value that a combination uses cannot be removed; an axis keeps at least one value. - Request"
input DeleteVariationValueCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the variation value."
valueId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"A sales order line item and the quantity to deliver."
input DeliveryLineItemInput {
"The sales order line item. It must belong to the sales order."
salesOrderLineItemId: ID!
"The quantity to deliver. Greater than 0 and at most the open quantity."
quantity: Decimal!
"A note on the delivery note line item."
note: String
"The serial numbers to deliver, one per unit. Required for items with serial numbers, not allowed for others."
serialNumbers: [String]
}
"How delivery notes are sent to the partner. Any combination is possible."
input DeliveryNoteDispatchInput {
"Print."
print: Boolean!
"Send by e-mail."
mail: Boolean!
"Send by fax."
fax: Boolean!
"The template the delivery note is output with."
templateId: ID
}
"A line item of a delivery note: a delivered quantity of one sales order line item. Item, price and tax stay on the sales order line item."
input DeliveryNoteLineItemFilterInput {
and: [DeliveryNoteLineItemFilterInput!]
or: [DeliveryNoteLineItemFilterInput!]
"The ID of the line item."
id: ComparableLieferscheinPosKeyOperationFilterInput @cost(weight: "15")
"The sales order line item that was delivered."
salesOrderLineItemId: ComparableVerkaufAuftragPositionKeyOperationFilterInput @cost(weight: "50")
"The item of the sales order line item. Absent for line items without an item."
itemId: ComparableArtikelKeyOperationFilterInput @cost(weight: "200")
"The SKU of the item."
sku: StringOperationFilterInput @cost(weight: "200")
}
"A line item of a delivery note: a delivered quantity of one sales order line item. Item, price and tax stay on the sales order line item."
input DeliveryNoteLineItemSortInput {
"The ID of the line item."
id: LieferscheinPosKeySortInput @cost(weight: "15")
"The SKU of the item."
sku: SortEnumType @cost(weight: "200")
}
"One row of the delivery note overview, with the delivery and billing address of the sales order flattened so that they can be filtered and sorted. The delivery note itself is read with the single query; packages and line items have their own queries."
input DeliveryNoteListEntryFilterInput {
and: [DeliveryNoteListEntryFilterInput!]
or: [DeliveryNoteListEntryFilterInput!]
"The ID of the delivery note."
id: ComparableLieferscheinKeyOperationFilterInput @cost(weight: "15")
"The number of the delivery note, by default the number of the sales order with a running suffix."
number: StringOperationFilterInput @cost(weight: "15")
"When the delivery note was created (the delivery note date)."
createdAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "15")
"The sales order the delivery note belongs to."
salesOrderId: ComparableVerkaufAuftragKeyOperationFilterInput @cost(weight: "15")
"The number of the sales order."
salesOrderNumber: StringOperationFilterInput @cost(weight: "200")
"The order number of the sales channel, for example of the shop or marketplace."
externalOrderNumber: StringOperationFilterInput @cost(weight: "200")
"The customer of the sales order."
customerId: ComparableKundeKeyOperationFilterInput @cost(weight: "200")
"The number of the customer."
customerNumber: StringOperationFilterInput @cost(weight: "200")
"The own company of the sales order."
companyId: ComparableFirmaKeyOperationFilterInput @cost(weight: "200")
"The status: open while at least one package has no shipping date, shipped when all packages have one. Computed."
status: ComparableDeliveryNoteStatusOperationFilterInput @cost(weight: "200")
"When the delivery note was shipped: the latest shipping date of its packages. Absent while it is open."
shippedAt: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "200")
"The shipping method of the delivery note: the shipping method of its packages, or the one of the sales order when the packages have none."
shippingMethodId: ComparableVersandartKeyOperationFilterInput @cost(weight: "200")
"How far the delivered quantities are invoiced. Computed."
invoicingStatus: ComparableDeliveryNoteInvoicingStatusOperationFilterInput @cost(weight: "50")
"Who ships the goods. Stable key in UPPER_SNAKE. Known values: OWN_WAREHOUSE, DROP_SHIPPING, EXTERNAL_FULFILLMENT, FULFILLMENT_NETWORK. New values can be added; a client that does not know a value ignores or tolerates it."
fulfillment: StringOperationFilterInput @cost(weight: "200")
"Whether the last transfer of at least one package to a shipping service failed. Computed."
hasTransferError: ComparableBooleanOperationFilterInput @cost(weight: "200")
"The company name of the delivery address."
deliveryAddressCompanyName: StringOperationFilterInput @cost(weight: "200")
"The first name of the delivery address."
deliveryAddressFirstName: StringOperationFilterInput @cost(weight: "200")
"The last name of the delivery address."
deliveryAddressLastName: StringOperationFilterInput @cost(weight: "200")
"Street and house number of the delivery address."
deliveryAddressStreet: StringOperationFilterInput @cost(weight: "200")
"The postal code of the delivery address."
deliveryAddressPostalCode: StringOperationFilterInput @cost(weight: "200")
"The city of the delivery address."
deliveryAddressCity: StringOperationFilterInput @cost(weight: "200")
"The country of the delivery address as ISO 3166-1 alpha-2 code."
deliveryAddressCountryCode: StringOperationFilterInput @cost(weight: "200")
"The company name of the billing address."
billingAddressCompanyName: StringOperationFilterInput @cost(weight: "200")
"The first name of the billing address."
billingAddressFirstName: StringOperationFilterInput @cost(weight: "200")
"The last name of the billing address."
billingAddressLastName: StringOperationFilterInput @cost(weight: "200")
"Street and house number of the billing address."
billingAddressStreet: StringOperationFilterInput @cost(weight: "200")
"The postal code of the billing address."
billingAddressPostalCode: StringOperationFilterInput @cost(weight: "200")
"The city of the billing address."
billingAddressCity: StringOperationFilterInput @cost(weight: "200")
"The country of the billing address as ISO 3166-1 alpha-2 code."
billingAddressCountryCode: StringOperationFilterInput @cost(weight: "200")
}
"One row of the delivery note overview, with the delivery and billing address of the sales order flattened so that they can be filtered and sorted. The delivery note itself is read with the single query; packages and line items have their own queries."
input DeliveryNoteListEntrySortInput {
"The ID of the delivery note."
id: LieferscheinKeySortInput @cost(weight: "15")
"The number of the delivery note, by default the number of the sales order with a running suffix."
number: SortEnumType @cost(weight: "15")
"When the delivery note was created (the delivery note date)."
createdAt: SortEnumType @cost(weight: "15")
"The number of the sales order."
salesOrderNumber: SortEnumType @cost(weight: "200")
"The number of the customer."
customerNumber: SortEnumType @cost(weight: "200")
"When the delivery note was shipped: the latest shipping date of its packages. Absent while it is open."
shippedAt: SortEnumType @cost(weight: "200")
"The last name of the delivery address."
deliveryAddressLastName: SortEnumType @cost(weight: "200")
"The shipping weight of the delivered items in kilograms. Computed."
shippingWeight: SortEnumType @cost(weight: "50")
}
"An event a user can raise by hand on a delivery note (the manual workflows menu in the Wawi). The workflows that listen to it start; raising it raises the event, not a single workflow."
input DeliveryNoteManualWorkflowEventFilterInput {
and: [DeliveryNoteManualWorkflowEventFilterInput!]
or: [DeliveryNoteManualWorkflowEventFilterInput!]
"How many active workflows listen to the event. Raising an event without any does nothing."
activeWorkflowCount: ComparableInt32OperationFilterInput @cost(weight: "15")
}
"An event a user can raise by hand on a delivery note (the manual workflows menu in the Wawi). The workflows that listen to it start; raising it raises the event, not a single workflow."
input DeliveryNoteManualWorkflowEventSortInput {
"The position in the menu of the Wawi."
sortOrder: SortEnumType @cost(weight: "50")
"The display name of the event."
name: SortEnumType @cost(weight: "15")
"The ID of the event."
id: ManualWorkflowEventKeySortInput @cost(weight: "15")
}
"One HTTP header that is sent with the upload request, for example a header the signature of a presigned URL covers."
input DeliveryOutputUploadHeaderInput {
"The header name."
name: String!
"The header value."
value: String!
}
"The place a rendered file is uploaded to. The file is sent with a PUT request to the URL. Only https URLs to public addresses are accepted; redirects are not followed. The URL is a secret: it is never logged and never returned."
input DeliveryOutputUploadTargetInput {
"The upload URL including its signature (SAS, presigned or signed URL)."
url: String!
"Headers to send with the upload. For Azure Blob Storage the header x-ms-blob-type is set automatically when the host is blob.core.windows.net. For other storages send the headers the signature requires."
headers: [DeliveryOutputUploadHeaderInput]!
}
"A package (parcel) of a delivery note. A package is shipped when it has a shipping date."
input DeliveryPackageFilterInput {
and: [DeliveryPackageFilterInput!]
or: [DeliveryPackageFilterInput!]
"The ID of the package."
id: ComparableVersandKeyOperationFilterInput @cost(weight: "15")
"The delivery note of the package."
deliveryNoteId: ComparableLieferscheinKeyOperationFilterInput @cost(weight: "15")
"The sales order of the delivery note."
salesOrderId: ComparableVerkaufAuftragKeyOperationFilterInput @cost(weight: "200")
"The tracking number of the carrier."
trackingNumber: StringOperationFilterInput @cost(weight: "15")
"Whether the package has a shipping date. Computed."
isShipped: ComparableBooleanOperationFilterInput @cost(weight: "50")
"When the package was shipped."
shippedAt: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "15")
"The shipping method. Absent when none is set."
shippingMethodId: ComparableVersandartKeyOperationFilterInput @cost(weight: "50")
"When the package was created (packed)."
packedAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "50")
"Result of the last transfer of the package to a shipping service."
transferStatus: ComparableShippingTransferStatusOperationFilterInput @cost(weight: "50")
}
"A package to create with the delivery."
input DeliveryPackageInput {
"A temporary identifier chosen by the client to find this package in the response. It is not stored."
clientId: String
"The shipping method. Defaults to the shipping method of the sales order."
shippingMethodId: ID
"The weight in kilograms. When omitted, the item weight is spread over the packages without weight."
weight: Decimal
"The tracking number, if the package already has one."
trackingNumber: String
"The tracking number of an enclosed return label."
enclosedReturnTrackingNumber: String
"The shipping method of the enclosed return label."
returnShippingMethodId: ID
"The expected delivery date."
expectedDeliveryDate: DateTime
"The shipping date, if the package already left. When set, the package is created as shipped."
shippedAt: DateTime
"A note on the package."
note: String
}
"A package (parcel) of a delivery note. A package is shipped when it has a shipping date."
input DeliveryPackageSortInput {
"The ID of the package."
id: VersandKeySortInput @cost(weight: "15")
"When the package was created (packed)."
packedAt: SortEnumType @cost(weight: "50")
"When the package was shipped."
shippedAt: SortEnumType @cost(weight: "15")
}
"The settings of a digital voucher. A voucher without them is a physical voucher card."
input DigitalVoucherDeliveryInput {
"The ID of the print template set the voucher is produced with."
printTemplateSetId: ID!
"How the voucher document is produced. Absent when the voucher is not issued by Wawi. One of PRINT, EMAIL or PRINT_AND_EMAIL. The list can grow; a client treats a value it does not know as unknown and does not fail."
issueMethod: String
}
"Disconnects the OAuth sign-in of the mail settings and deletes the stored authorisation. Nothing happens if there is none. Connecting a sign-in needs the user to sign in at the mail provider and is only possible in the application. - Request"
input DisconnectCompanyEmailOAuthCommandRequestInput {
"The ID of the company."
companyId: ID!
}
"A disposition. It records the demand for a production item, together with the quantity planned and already produced to cover it."
input DispositionFilterInput {
and: [DispositionFilterInput!]
or: [DispositionFilterInput!]
"The ID of this disposition."
id: ComparableDispositionKeyOperationFilterInput @cost(weight: "15")
"The ID of the production item this disposition is for (see GetProductionItemById)."
productionItemId: ComparableProdItemKeyOperationFilterInput @cost(weight: "50")
"The required quantity (demand)."
targetQuantity: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The quantity planned for production, for example in production orders."
plannedQuantity: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The quantity produced so far."
actualQuantity: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The processing status of this disposition."
status: ComparableDispositionStatusOperationFilterInput @cost(weight: "50")
"The point in time by which the required quantity has to be available. Not set if there is no such deadline."
targetCompletionDate: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "50")
"The point in time at which this disposition was created."
createdAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "50")
"The ID of the user who created this disposition. Not set if the user is unknown."
createdBy: ComparableBenutzerKeyOperationFilterInput @cost(weight: "50")
}
input DispositionKeySortInput {
kDisposition: SortEnumType @cost(weight: "10")
}
"A disposition. It records the demand for a production item, together with the quantity planned and already produced to cover it."
input DispositionSortInput {
"The ID of this disposition."
id: DispositionKeySortInput @cost(weight: "15")
"The ID of the production item this disposition is for (see GetProductionItemById)."
productionItemId: ProdItemKeySortInput @cost(weight: "50")
"The required quantity (demand)."
targetQuantity: SortEnumType @cost(weight: "50")
"The quantity planned for production, for example in production orders."
plannedQuantity: SortEnumType @cost(weight: "50")
"The quantity produced so far."
actualQuantity: SortEnumType @cost(weight: "50")
"The processing status of this disposition."
status: SortEnumType @cost(weight: "50")
"The point in time by which the required quantity has to be available. Not set if there is no such deadline."
targetCompletionDate: SortEnumType @cost(weight: "50")
"The point in time at which this disposition was created."
createdAt: SortEnumType @cost(weight: "50")
"The ID of the user who created this disposition. Not set if the user is unknown."
createdBy: BenutzerKeySortInput @cost(weight: "50")
}
"Represents the primary key of a download file entity (tDownload)."
input DownloadDateiKeyInput {
"Gets the primary key value of the download file."
kDownload: Int!
}
"Changes of a drop shipping purchase order. The customer cannot be changed."
input DropShippingPurchaseOrderChangesInput {
"The new ordering company; the billing address becomes its address. It cannot be cleared."
companyId: ID
"The supplier's contact person to address the order to; null addresses the supplier without a person."
supplierContactId: ID
"When the goods are requested. It cannot be cleared."
requestedDeliveryDate: DateTime
"The new delivery address, as a whole. It cannot be cleared."
deliveryAddress: PurchaseOrderAddressInput
"The supplier's number for the order."
supplierDocumentNumber: String
"A free reference."
referenceNumber: String
"A comment for internal use."
internalComment: String
"A note printed on the order documents."
printNote: String
}
"A new purchase order the supplier delivers straight to a customer. It starts as 'Released'; its goods are never booked into stock."
input DropShippingPurchaseOrderCreationInput {
"The ID of the supplier, an active one. Currency and language of the order are the supplier's."
supplierId: ID!
"The ID of the company that orders; its address becomes the billing address. When omitted, the supplier's default company is used, else the first company."
companyId: ID
"The ID of the supplier's contact person to address the order to. When omitted, the supplier's address is used without a person."
supplierContactId: ID
"When the goods are requested. When omitted: today plus the supplier's delivery time, or plus 14 days when the supplier has none."
requestedDeliveryDate: DateTime
"Replaces the delivery address the order would get from its warehouse or customer."
deliveryAddress: PurchaseOrderAddressInput
"The supplier's number for the order."
supplierDocumentNumber: String
"A free reference."
referenceNumber: String
"A comment for internal use."
internalComment: String
"A note printed on the order documents."
printNote: String
"The ID of the customer who receives the goods. The delivery address is the customer's main address unless 'deliveryAddress' replaces it."
customerId: ID!
}
"Changes a drop shipping warehouse. Source and target cannot be changed: create a new drop shipping warehouse for another route."
input DropShippingWarehouseChangesInput {
"The new name."
name: String
"The new description."
description: String
"The new priority."
deliveryPriority: Int
"Whether the stock is left out of the available stock."
isLockedForAvailableStock: Boolean
}
"Creates a warehouse that stands for the route from a source warehouse to a target warehouse. It has neither address nor settings of its own. Its name is built from the two warehouses when omitted."
input DropShippingWarehouseCreationInput {
"The warehouse the goods come from."
sourceWarehouseId: ID!
"The warehouse the goods go to. It must differ from the source."
targetWarehouseId: ID!
"The name. When omitted, it is built from the names of the source and the target warehouse."
name: String
"A free description."
description: String
"The priority when orders are delivered."
deliveryPriority: Int
"Whether the stock is left out of the available stock."
isLockedForAvailableStock: Boolean
}
"One step of the dunning procedure, for example a payment reminder or a second dunning notice. Levels belong to a scope: a company and a customer group, each of which can be 'all'. For an invoice that has not been dunned yet, the most specific scope that has levels is used, in this order: the company and the customer group of the invoice, the company and all customer groups, all companies and the customer group, all companies and all customer groups. Later notices stay in the scope of the first one."
input DunningLevelFilterInput {
and: [DunningLevelFilterInput!]
or: [DunningLevelFilterInput!]
"The ID of the dunning level."
id: ComparableMahnstufeKeyOperationFilterInput
"The company the level applies to. Empty means all companies."
companyId: ComparableFirmaKeyOperationFilterInput
"The customer group the level applies to. Empty means all customer groups."
customerGroupId: ComparableKundenGruppeKeyOperationFilterInput
"The position of the level in its scope, 1 to 255. A notice at a level is followed by a notice at the next higher number of the same scope. A new level gets the number one higher than the highest number in its scope. Numbers never change, so deleting a level in the middle leaves a gap, and the number of a deleted highest level goes to the next new level."
levelNumber: ComparableInt32OperationFilterInput
"The name of the level, for example 'Payment reminder'. Output templates for dunning letters are chosen by this name. Empty if the level has no name."
name: StringOperationFilterInput
}
"One step of the dunning procedure, for example a payment reminder or a second dunning notice. Levels belong to a scope: a company and a customer group, each of which can be 'all'. For an invoice that has not been dunned yet, the most specific scope that has levels is used, in this order: the company and the customer group of the invoice, the company and all customer groups, all companies and the customer group, all companies and all customer groups. Later notices stay in the scope of the first one."
input DunningLevelSortInput {
"The ID of the dunning level."
id: MahnstufeKeySortInput @cost(weight: "10")
"The company the level applies to. Empty means all companies."
companyId: FirmaKeySortInput @cost(weight: "10")
"The customer group the level applies to. Empty means all customer groups."
customerGroupId: KundenGruppeKeySortInput @cost(weight: "10")
"The position of the level in its scope, 1 to 255. A notice at a level is followed by a notice at the next higher number of the same scope. A new level gets the number one higher than the highest number in its scope. Numbers never change, so deleting a level in the middle leaves a gap, and the number of a deleted highest level goes to the next new level."
levelNumber: SortEnumType @cost(weight: "10")
"The name of the level, for example 'Payment reminder'. Output templates for dunning letters are chosen by this name. Empty if the level has no name."
name: SortEnumType @cost(weight: "10")
}
"A dunning notice for one sales invoice: a payment reminder or a dunning letter at one dunning level. An invoice gets at most one notice per level number, and the notice with the highest level number is the current one. The values of the level are copied into the notice when it is issued, so later changes of the level do not change it."
input DunningNoticeFilterInput {
and: [DunningNoticeFilterInput!]
or: [DunningNoticeFilterInput!]
"The ID of the dunning notice."
id: ComparableZahlungsErinnerungKeyOperationFilterInput
"The ID of the dunning level the notice was issued at. The level may have been deleted since."
dunningLevelId: ComparableMahnstufeKeyOperationFilterInput
"The level number the notice was issued at."
levelNumber: ComparableInt32OperationFilterInput
"The date printed on the notice. Empty if none was recorded."
dunningDate: ComparableNullableOfDateTimeOffsetOperationFilterInput
"The new payment due date the notice gives the customer: the dunning date plus the payment term of the level, unless it was changed later. Empty if the notice sets none; then the payment due date of the invoice applies."
paymentDueDate: ComparableNullableOfDateTimeOffsetOperationFilterInput
"When the notice was issued. Empty if it was not recorded."
createdAt: ComparableNullableOfDateTimeOffsetOperationFilterInput
}
"A dunning notice for one sales invoice: a payment reminder or a dunning letter at one dunning level. An invoice gets at most one notice per level number, and the notice with the highest level number is the current one. The values of the level are copied into the notice when it is issued, so later changes of the level do not change it."
input DunningNoticeSortInput {
"The ID of the dunning notice."
id: ZahlungsErinnerungKeySortInput @cost(weight: "10")
"The level number the notice was issued at."
levelNumber: SortEnumType @cost(weight: "10")
"The date printed on the notice. Empty if none was recorded."
dunningDate: SortEnumType @cost(weight: "10")
"The new payment due date the notice gives the customer: the dunning date plus the payment term of the level, unless it was changed later. Empty if the notice sets none; then the payment due date of the invoice applies."
paymentDueDate: SortEnumType @cost(weight: "10")
"When the notice was issued. Empty if it was not recorded."
createdAt: SortEnumType @cost(weight: "10")
}
"A sales invoice that can be dunned now, with the notice it would get. The list is a snapshot for display and is not binding: a dunning run selects the invoices again when it runs."
input DunningProposalSortInput {
"The ID of the sales invoice."
salesInvoiceId: RechnungKeySortInput @cost(weight: "15")
"The current payment due date: the one of the current notice, or of the invoice if it has not been dunned yet."
dueDate: SortEnumType @cost(weight: "200")
"The open amount of the invoice, gross, without dunning fees."
openAmount: SortEnumType @cost(weight: "200")
}
"A dunning run: the dunning notices issued for all invoices that matched a selection at the time of the run."
input DunningRunFilterInput {
and: [DunningRunFilterInput!]
or: [DunningRunFilterInput!]
"The ID of the dunning run."
id: ComparableMahnlaufKeyOperationFilterInput
"When the run was started."
createdAt: ComparableDateTimeOffsetOperationFilterInput
}
"A dunning run: the dunning notices issued for all invoices that matched a selection at the time of the run."
input DunningRunSortInput {
"When the run was started."
createdAt: SortEnumType @cost(weight: "10")
"When the run finished. Empty while it is running."
completedAt: SortEnumType @cost(weight: "10")
}
"Creates a new item as a copy of an existing one. The copy has the same kind. The new item number is required; which parts and sub-resources are taken over is chosen per part, parts that are omitted are taken over. The categories are always taken over unless others are named, because the copy is never a combination of a variation parent, not even when the original is one, and so always needs a category. - Request"
input DuplicateItemCommandRequestInput {
"The ID of the item."
itemId: ID!
"The item number of the copy, unique among all items."
sku: String!
"The name of the copy. Omitted means the name of the original."
name: String
"Whether the texts are taken over."
copyDescriptions: Boolean
"Whether the prices are taken over."
copyPrices: Boolean
"Whether the image assignments are taken over."
copyImages: Boolean
"The categories of the copy. Omitted means the categories of the original are taken over. If given, at least one: the copy is never a combination of a variation parent, so it always needs a category of its own."
categoryIds: [ID]
"Whether the characteristics are taken over."
copyCharacteristics: Boolean
"Whether the attributes are taken over."
copyAttributes: Boolean
"Whether the supplier items are taken over. Only stock items have them."
copySuppliers: Boolean
"Whether the stock settings are taken over. The stock itself is never copied."
copyStockSettings: Boolean
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Represents a unique key for identifying an eBay user within the system."
input EbayUserKeySortInput {
kEbayUser: SortEnumType @cost(weight: "10")
}
input EigenesFeldKeySortInput {
kAttribut: SortEnumType @cost(weight: "10")
}
input EinheitKeySortInput {
kEinheit: SortEnumType @cost(weight: "10")
}
"Changes an employee. Only the properties that are sent change. The linked user cannot be changed."
input EmployeeChangesInput {
"The new number of the resource."
number: String
"The new name of the resource."
name: String
"The new description of the resource. Sending null removes the description."
description: String
"The ID of the new resource type of the resource. It must belong to the category of the resource."
resourceTypeId: ID
"Whether the resource is active."
isActive: Boolean
}
"Creates an employee."
input EmployeeCreationInput {
"The number of the new resource."
number: String!
"The name of the new resource."
name: String!
"The description of the new resource. When omitted, the resource has no description."
description: String
"The ID of the resource type of the new resource. It must belong to the category of the new resource."
resourceTypeId: ID!
"Whether the new resource is active. When omitted, the resource is active."
isActive: Boolean
"The ID of the user the new employee is linked to. It cannot be changed later."
userId: ID!
}
"An existing item that becomes a combination of the parent. It can be of any kind except a variation parent (a bill of materials can be a combination) and must not be a combination of another parent already. Its categories are replaced by those of the parent."
input ExistingItemCombinationInput {
"The chosen value for every axis of the parent, one per axis."
values: [CombinationValueInput]!
"The ID of the existing item."
itemId: ID!
}
"Changes a warehouse run by an external fulfillment partner."
input ExternalFulfillmentWarehouseChangesInput {
"The new name. It must be unique among the active warehouses."
name: String
"The new short name."
shortName: String
"The new description."
description: String
"The new priority when orders are delivered."
deliveryPriority: Int
"The new company."
companyId: ID
"The new digit for the shipping unit numbers (NVE)."
nveExtensionDigit: String
"Whether the stock is left out of the available stock."
isLockedForAvailableStock: Boolean
"Whether the warehouse is locked for delivery."
isLockedForDelivery: Boolean
"The new address. It replaces the old address as a whole."
address: WarehouseAddressInput
"The new dispatch settings. They replace the old ones as a whole."
dispatch: FulfillmentDispatchSettingsInput
}
"Creates a warehouse that an external fulfillment partner runs. Fulfillment orders and delivery notes are sent to the partner as set in 'dispatch'."
input ExternalFulfillmentWarehouseCreationInput {
"The name of the warehouse, at most 250 characters. It must be unique among the active warehouses."
name: String!
"The short name of the warehouse."
shortName: String!
"A free description of the warehouse."
description: String
"The priority when orders are delivered. When omitted, the warehouse is put behind all others."
deliveryPriority: Int
"The ID of the company the warehouse belongs to. When omitted, the company of the user is used."
companyId: ID
"The digit from 0 to 9 for the shipping unit numbers (NVE)."
nveExtensionDigit: String
"Whether the stock is left out of the available stock. Defaults to false."
isLockedForAvailableStock: Boolean
"Whether the warehouse is locked for delivery. Defaults to false."
isLockedForDelivery: Boolean
"The postal address with the contact person."
address: WarehouseAddressInput!
"How fulfillment orders and delivery notes are sent to the partner. When omitted, nothing is sent automatically."
dispatch: FulfillmentDispatchSettingsInput
}
"Represents a key for identifying a color entity in the system."
input FarbeKeySortInput {
"Gets the unique identifier for the color."
kFarbe: SortEnumType @cost(weight: "10")
}
"Gives a draft its number from the number range of its company and makes it binding; from now on it can only be cancelled. The invoice date and the value date stay as they are. Payments of the sales order are taken over, and the workflow event for a created invoice fires. A refusal carries 'blockers' with all reasons, each with a code and a message. Errors: errorCode is SALES_INVOICE_NOT_FOUND (no sales invoice with this ID); errorCode is SALES_INVOICE_ALREADY_FINALIZED (the invoice is not a draft); errorCode is SALES_INVOICE_HAS_NO_LINE_ITEMS (a draft without line items cannot be finalized). - Request"
input FinalizeSalesInvoiceCommandRequestInput {
"The ID of the sales invoice."
salesInvoiceId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Finishes the inventory of a standard warehouse: the counted quantities of all inventory counts of the warehouse become its new stock, and the counts are removed. For each counted item, and for each counted batch number and best-before date, stock is posted in or out by the difference between the current stock and the counted quantity; a counted quantity of 0 posts the whole stock out. Items without a count keep their stock unless setUncountedToZero is true. Finishing can take a long time for a large inventory. Send an Idempotency-Key header to make retries safe. - Request"
input FinishInventoryCountCommandRequestInput {
"Unique identifier of the standard warehouse in which the inventory takes place."
warehouseId: ID!
"When true, every countable item of the warehouse without an inventory count is counted with a quantity of 0 before finishing, so its stock is posted out. Defaults to false when omitted: items without a count keep their stock."
setUncountedToZero: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Represents a key for identifying a firm within the application."
input FirmaKeySortInput {
"Gets the unique identifier for the firm."
kFirma: SortEnumType @cost(weight: "10")
}
"A free-text variation of an item: a text the customer types in when ordering, for example an engraving. It has no values, no surcharge and no item number. It is not a kind of item and every kind can have it. The free-text variations of a variation parent are shown on every combination as well (isInherited)."
input FreeTextVariationFilterInput {
and: [FreeTextVariationFilterInput!]
or: [FreeTextVariationFilterInput!]
"The ID of the free-text variation."
id: ComparableVariationKeyOperationFilterInput
}
"A free-text variation of an item: a text the customer types in when ordering, for example an engraving. It has no values, no surcharge and no item number. It is not a kind of item and every kind can have it. The free-text variations of a variation parent are shown on every combination as well (isInherited)."
input FreeTextVariationSortInput {
"The ID of the free-text variation."
id: VariationKeySortInput @cost(weight: "10")
"Zero-based position among the variations of the item."
position: SortEnumType @cost(weight: "10")
}
"How an external fulfillment partner gets its documents."
input FulfillmentDispatchSettingsInput {
"Fulfillment orders."
fulfillmentOrder: FulfillmentOrderDispatchInput!
"Delivery notes."
deliveryNote: DeliveryNoteDispatchInput!
}
"Changes a warehouse of the JTL-Fulfillment Network. Address and fulfillment network ID come from the network and cannot be changed."
input FulfillmentNetworkWarehouseChangesInput {
"The new name."
name: String
"The new description."
description: String
"The new priority."
deliveryPriority: Int
"Whether the stock is left out of the available stock."
isLockedForAvailableStock: Boolean
"Whether the warehouse is locked for delivery."
isLockedForDelivery: Boolean
}
"How fulfillment orders are sent to the partner. Any combination is possible."
input FulfillmentOrderDispatchInput {
"Print."
print: Boolean!
"Send by e-mail."
mail: Boolean!
"Send by fax."
fax: Boolean!
"Export."
export: Boolean!
"The template the fulfillment order is output with."
templateId: ID
}
"An allowed value of a function attribute of type value list, when written."
input FunctionAttributeAllowedValueInput {
"The entry text. It must not be empty and must not contain the character '|'."
value: String!
"The text this entry had in the current list. Values assigned to items and categories with that text change to the new text. Omit for unchanged and new entries."
renamedFrom: String
}
input GebindeKeySortInput {
kGebinde: SortEnumType @cost(weight: "10")
}
"Requests return labels from the carrier of a shipping method and adds them to the return. It needs a pickup address. - Request"
input GenerateReturnLabelsCommandRequestInput {
"The ID of the return. If it does not exist, errorCode is RETURN_NOT_FOUND."
returnId: ID!
"The ID of the shipping method whose carrier creates the labels."
shippingMethodId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
input GutschriftKeySortInput {
kGutschrift: SortEnumType @cost(weight: "10")
}
input GutschriftPosKeySortInput {
kGutschriftPos: SortEnumType @cost(weight: "10")
}
input GutschriftStornogrundKeySortInput {
kGutschriftStornogrund: SortEnumType @cost(weight: "10")
}
"Hazardous goods classification of an item."
input HazardousGoodsInput {
"UN number of the hazardous good."
unNumber: String
"Hazard identification number (Kemler number)."
hazardIdentificationNumber: String
}
input HerstellerKeySortInput {
kHersteller: SortEnumType @cost(weight: "10")
}
"Hides a category for a customer group in a sales channel. Idempotent. Not possible for the Wawi sales channel. - Request"
input HideCategoryForCustomerGroupCommandRequestInput {
"The ID of the category."
categoryId: ID!
"The sales channel. Tenant-local, composite identifier, not a UUID, for example 1-1-1. Malformed values are answered with 400 (errorCode is FORMAT_NOT_PARSABLE)."
salesChannelId: ID!
"The ID of the customer group."
customerGroupId: ID!
}
"Hides an image of a category in a sales channel again. The remaining images of that sales channel move up. The image has to stay visible in at least one sales channel: use the image API to remove the image. Idempotent. The image files are handled by the image API (blob storage and image API); this operation only changes how the image is assigned to the category. - Request"
input HideCategoryImageInSalesChannelCommandRequestInput {
"The ID of the category."
categoryId: ID!
"The ID of the image in the blob storage."
blobIdentifier: UUID!
"The sales channel. Tenant-local, composite identifier, not a UUID, for example 1-1-1. Malformed values are answered with 400 (errorCode is FORMAT_NOT_PARSABLE). The Wawi sales channel carries the default images."
salesChannelId: ID!
}
"Hides a payment account: it is not fetched any more, nothing can be imported into it, and its transactions are left out of the matching and out of the default lists. Hiding a hidden account does nothing and answers 204. Errors: PAYMENT_ACCOUNT_NOT_FOUND (the payment account was not found). - Request"
input HidePaymentAccountCommandRequestInput {
"The ID of the payment account."
paymentAccountId: ID!
"Whether to suppress the automatic workflows this call would start. Events for other systems are still published. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Holds the sales order with a reason; holding again replaces the reason. Fails with a GraphQL error whose extensions.code is SalesOrderCannotBeHeld. - Request"
input HoldSalesOrderCommandRequestInput {
"The ID of the sales order. An unknown ID fails with SalesOrderNotFound."
salesOrderId: ID!
"The reason. An unknown ID fails with OnHoldReasonNotFound."
onHoldReasonId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Ignores a payment transaction: it is left out of the matching and out of the default list. Its assignments stay. An import keeps the flag. Ignoring an ignored transaction does nothing and answers 204. Errors: PAYMENT_TRANSACTION_NOT_FOUND (the payment transaction was not found); PAYMENT_ACCOUNT_HIDDEN (the payment account is hidden; show it with 'ShowPaymentAccount' first). - Request"
input IgnorePaymentTransactionCommandRequestInput {
"The ID of the payment transaction."
paymentTransactionId: ID!
"Whether to suppress the automatic workflows this call would start. Events for other systems are still published. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Delivers one transaction of an external payment account, for example from a payment service the ERP has no connection for. A transaction with the same 'transactionId' in the account is updated (its note and whether it is ignored stay); this is how a pending transaction is completed later. Import filters, workflows and the import cutoff date of the account apply as for a fetch; 'outcome' tells what happened. When automatic assignment is switched on in the settings, it runs for the delivered transaction afterwards. Errors: PAYMENT_ACCOUNT_NOT_FOUND (the payment account was not found); PAYMENT_ACCOUNT_HIDDEN (the payment account is hidden; show it with 'ShowPaymentAccount' first); PAYMENT_ACCOUNT_NOT_EXTERNAL (the account is not an external account; its transactions come from the bank or the payment provider); PAYMENT_TRANSACTION_ASSIGNED (the transaction is assigned or refunded, and the change would alter its amount or its currency, switch its kind to or from Fee, or end it as cancelled, failed or expired); CURRENCY_ISO_CODE_INVALID (the currency is not a three-letter ISO 4217 code). - Request"
input ImportPaymentTransactionCommandRequestInput {
"The ID of the payment account."
paymentAccountId: ID!
"The ID of the transaction in the external system. Unique within the account; delivering it again updates the transaction."
transactionId: String!
"When the transaction was booked."
bookingDate: DateTime!
"The amount with at most two decimals: positive for money received, negative for money sent or taken back."
amount: Decimal!
"The currency (ISO 4217). Case does not matter; it is stored in upper case."
currencyCode: String!
"What the transaction stands for. Defaults to Regular when omitted."
kind: PaymentTransactionKind
"How far it is processed. Defaults to Completed when omitted. A pending transaction is completed by delivering it again."
state: PaymentTransactionState
"The name of the payer or the payee."
counterpartyName: String
"The account of the payer or the payee: an IBAN, an account number or an email address."
counterpartyAccount: String
"An addition to the account, for example the BIC."
counterpartyAccountAddition: String
"The payment reference. The matching looks for order and invoice numbers in it."
paymentReference: String
"For refunds, chargebacks and fees: the 'transactionId' of the earlier transaction of the same account."
referenceTransactionId: String
"A further reference, for example a mandate or an end-to-end reference."
providerReference: String
"A status message, for example why a payment failed."
statusText: String
"Further information about the transaction."
additionalInformation: String
"Whether to suppress the workflows of the import: the event that runs while a transaction is read in (its workflows can refuse or hide the transaction, so with this flag such rules do not apply) and the event after it is saved. Events for other systems are still published. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"An additional cost of an incoming invoice, for example freight or customs, and how much of it is allocated to the line items."
input IncomingInvoiceAdditionalCostFilterInput {
and: [IncomingInvoiceAdditionalCostFilterInput!]
or: [IncomingInvoiceAdditionalCostFilterInput!]
"The type of the cost. An invoice has at most one cost per type."
additionalCostTypeId: ComparableEingangsrechnungZusatzkostenKeyOperationFilterInput
}
"An additional cost of an incoming invoice, for example freight or customs, and how much of it is allocated to the line items."
input IncomingInvoiceAdditionalCostSortInput {
"Name of the type."
additionalCostTypeName: SortEnumType @cost(weight: "10")
"Net amount of the cost in its own currency, the sum over all line items, rounded to 2 decimal places."
netAmount: SortEnumType @cost(weight: "10")
}
"The part of an additional cost allocated to one line item."
input IncomingInvoiceLineItemAdditionalCostFilterInput {
and: [IncomingInvoiceLineItemAdditionalCostFilterInput!]
or: [IncomingInvoiceLineItemAdditionalCostFilterInput!]
"The type of the cost."
additionalCostTypeId: ComparableEingangsrechnungZusatzkostenKeyOperationFilterInput
}
"The part of an additional cost allocated to one line item."
input IncomingInvoiceLineItemAdditionalCostSortInput {
"Name of the type."
additionalCostTypeName: SortEnumType @cost(weight: "10")
}
"A line item of an incoming invoice. Polymorphic: \"lineItemType\" selects the variant."
input IncomingInvoiceLineItemFilterInput {
and: [IncomingInvoiceLineItemFilterInput!]
or: [IncomingInvoiceLineItemFilterInput!]
"The kind of the line item."
lineItemType: ComparableIncomingInvoiceLineItemTypeOperationFilterInput
}
"A line item of an incoming invoice. Polymorphic: \"lineItemType\" selects the variant."
input IncomingInvoiceLineItemSortInput {
"Description of the line item."
name: SortEnumType @cost(weight: "10")
"Quantity times net unit price, in the invoice currency, rounded to 2 decimal places."
netAmount: SortEnumType @cost(weight: "10")
}
"An incoming invoice as an entry of a list: the header fields and the main amounts, without address and totals details."
input IncomingInvoiceListEntryFilterInput {
and: [IncomingInvoiceListEntryFilterInput!]
or: [IncomingInvoiceListEntryFilterInput!]
"The supplier who issued the invoice. Empty only for older invoices recorded without a supplier."
supplierId: ComparableLieferantKeyOperationFilterInput @cost(weight: "50")
"Lifecycle status."
status: ComparableIncomingInvoiceStatusOperationFilterInput @cost(weight: "50")
"How much of the payable amount is paid."
paymentStatus: ComparableIncomingInvoicePaymentStatusOperationFilterInput @cost(weight: "500")
"Whether the invoice is approved for payment."
isApprovedForPayment: ComparableBooleanOperationFilterInput @cost(weight: "50")
"The date printed on the invoice."
invoiceDate: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "50")
"Date by which the invoice is to be paid."
dueDate: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "50")
"When the invoice or one of its line items, additional costs or payments was last changed."
changedAt: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "50")
}
"An incoming invoice as an entry of a list: the header fields and the main amounts, without address and totals details."
input IncomingInvoiceListEntrySortInput {
"The own number of the invoice."
number: SortEnumType @cost(weight: "50")
"The number the supplier printed on the invoice."
supplierInvoiceNumber: SortEnumType @cost(weight: "50")
"The date printed on the invoice."
invoiceDate: SortEnumType @cost(weight: "50")
"Date by which the invoice is to be paid."
dueDate: SortEnumType @cost(weight: "50")
"Gross amount payable to the supplier, in the invoice currency, rounded to 2 decimal places."
grossAmount: SortEnumType @cost(weight: "200")
"Amount still to be paid, in the home currency, rounded to 2 decimal places."
openAmount: SortEnumType @cost(weight: "500")
"When the invoice was created. Empty only for invoices imported without this date."
createdAt: SortEnumType @cost(weight: "50")
"When the invoice or one of its line items, additional costs or payments was last changed."
changedAt: SortEnumType @cost(weight: "50")
}
"An event a user can raise by hand on a incoming invoice (the manual workflows menu in the Wawi). The workflows that listen to it start; raising it raises the event, not a single workflow."
input IncomingInvoiceManualWorkflowEventFilterInput {
and: [IncomingInvoiceManualWorkflowEventFilterInput!]
or: [IncomingInvoiceManualWorkflowEventFilterInput!]
"How many active workflows listen to the event. Raising an event without any does nothing."
activeWorkflowCount: ComparableInt32OperationFilterInput @cost(weight: "15")
}
"An event a user can raise by hand on a incoming invoice (the manual workflows menu in the Wawi). The workflows that listen to it start; raising it raises the event, not a single workflow."
input IncomingInvoiceManualWorkflowEventSortInput {
"The position in the menu of the Wawi."
sortOrder: SortEnumType @cost(weight: "50")
"The display name of the event."
name: SortEnumType @cost(weight: "15")
"The ID of the event."
id: ManualWorkflowEventKeySortInput @cost(weight: "15")
}
"A payment to the supplier for an incoming invoice. Amounts are in the home currency of the tenant."
input IncomingInvoicePaymentFilterInput {
and: [IncomingInvoicePaymentFilterInput!]
or: [IncomingInvoicePaymentFilterInput!]
"Date of the payment."
paidAt: ComparableNullableOfDateTimeOffsetOperationFilterInput
"Whether the payment is a down payment."
isDownPayment: ComparableBooleanOperationFilterInput
}
"A payment to the supplier for an incoming invoice. Amounts are in the home currency of the tenant."
input IncomingInvoicePaymentSortInput {
"Date of the payment."
paidAt: SortEnumType @cost(weight: "10")
"Paid amount in the home currency, 2 decimal places. Positive for money paid to the supplier, negative for money refunded by the supplier."
amount: SortEnumType @cost(weight: "10")
}
"A purchase order whose open lines become line items of an incoming invoice."
input IncomingInvoicePurchaseOrderAssignmentInput {
"The purchase order. Must belong to the supplier of the invoice and be at least in processing."
purchaseOrderId: ID!
"Which quantity becomes the quantity of the new line items. Defaults to Ordered."
quantityBasis: PurchaseOrderQuantityBasis
}
"A purchase order that has line items on an incoming invoice."
input IncomingInvoicePurchaseOrderFilterInput {
and: [IncomingInvoicePurchaseOrderFilterInput!]
or: [IncomingInvoicePurchaseOrderFilterInput!]
"The purchase order."
purchaseOrderId: ComparableLieferantenBestellungKeyOperationFilterInput
}
"A purchase order that has line items on an incoming invoice."
input IncomingInvoicePurchaseOrderSortInput {
"The number of the purchase order."
purchaseOrderNumber: SortEnumType @cost(weight: "10")
}
"The address of the supplier as printed on the invoice. Every field at most 255 characters."
input IncomingInvoiceSupplierAddressInput {
"Name of the supplier (company)."
name: String
"Additional address line."
addressSupplement: String
"Street and house number."
street: String
"Postal code."
postalCode: String
"City."
city: String
"State or region."
state: String
"Country as ISO 3166-1 alpha-2 code, two letters. Accepted in any letter case, stored in upper case."
countryCode: String
"Phone number."
phone: String
"Fax number."
fax: String
"Mobile phone number."
mobile: String
"Email address."
email: String
}
"A whole number."
input IntegerOptionValueInput {
"The number."
value: Long!
}
"A whole number."
input IntegerWarehouseSettingValueInput {
"The number."
value: Long!
}
"The counted quantity of an item in a standard warehouse, recorded during an inventory and not yet booked. For items managed by batch number, best-before date or serial number, one count exists per batch number and best-before date, or per serial number. A count exists until the inventory of its warehouse is finished; finishing books the counted quantities and removes the counts."
input InventoryCountFilterInput {
and: [InventoryCountFilterInput!]
or: [InventoryCountFilterInput!]
"Unique identifier of the inventory count."
id: ComparableInventurKeyOperationFilterInput @cost(weight: "15")
"Unique identifier of the counted item."
itemId: ComparableArtikelKeyOperationFilterInput @cost(weight: "50")
"The counted quantity of the item. Never negative; a whole number unless the item is divisible."
quantity: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The best-before date of the counted stock. Present only for items managed by best-before date."
shelfLifeEndDate: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "50")
"The batch number of the counted stock. Present only for items managed by batch number."
batchNumber: StringOperationFilterInput @cost(weight: "50")
"The serial number of the counted unit. Present only for items managed by serial number; the quantity is then 1."
serialNumber: StringOperationFilterInput @cost(weight: "50")
}
"The counted quantity of an item in a standard warehouse, recorded during an inventory and not yet booked. For items managed by batch number, best-before date or serial number, one count exists per batch number and best-before date, or per serial number. A count exists until the inventory of its warehouse is finished; finishing books the counted quantities and removes the counts."
input InventoryCountSortInput {
"Unique identifier of the inventory count."
id: InventurKeySortInput @cost(weight: "15")
"Unique identifier of the counted item."
itemId: ArtikelKeySortInput @cost(weight: "50")
"The counted quantity of the item. Never negative; a whole number unless the item is divisible."
quantity: SortEnumType @cost(weight: "50")
"The best-before date of the counted stock. Present only for items managed by best-before date."
shelfLifeEndDate: SortEnumType @cost(weight: "50")
"The batch number of the counted stock. Present only for items managed by batch number."
batchNumber: SortEnumType @cost(weight: "50")
"The serial number of the counted unit. Present only for items managed by serial number; the quantity is then 1."
serialNumber: SortEnumType @cost(weight: "50")
}
input InventurKeySortInput {
kInventur: SortEnumType @cost(weight: "10")
}
"An attribute of an item with its values per sales channel and language."
input ItemAttributeFilterInput {
and: [ItemAttributeFilterInput!]
or: [ItemAttributeFilterInput!]
"The ID of the attribute definition."
attributeId: ComparableAttributKeyOperationFilterInput
}
"An attribute of an item with its values per sales channel and language."
input ItemAttributeInput {
"The ID of the attribute definition."
attributeId: ID!
"The values of the attribute the item has, at least one."
values: [ItemAttributeValueInput]!
}
"An attribute of an item with its values per sales channel and language."
input ItemAttributeSortInput {
"The ID of the attribute definition."
attributeId: AttributKeySortInput @cost(weight: "10")
}
"One value of an attribute: for a sales channel and a language."
input ItemAttributeValueInput {
"The sales channel the value applies in. The Wawi sales channel carries the default value."
salesChannelId: ID!
"The language of the value as BCP 47 language tag, for example 'de' or 'de-AT'. Language subtag in lower case, region subtag in upper case; the input is not case-sensitive. Absent for a value without language."
languageTag: String
"The value."
value: ItemFieldValueInput!
}
"The base price (German 'Grundpreis') of an item, stated for a reference quantity of a unit, for example per 1 liter or per 100 grams. It exists only for an item that has content."
input ItemBasePriceInput {
"The unit the base price refers to, for example liter. It has to be a unit of the same kind as the unit of the content, so that the content can be converted into it."
referenceUnitId: ID!
"The quantity of the reference unit the base price refers to, for example 1 or 100."
referenceQuantity: Decimal!
}
"A yes or no."
input ItemBooleanFieldValueInput {
"Whether it is yes."
flag: Boolean!
}
"A category an item is assigned to. Every item that is not a combination of a variation parent is assigned to at least one."
input ItemCategoryFilterInput {
and: [ItemCategoryFilterInput!]
or: [ItemCategoryFilterInput!]
"The ID of the category."
categoryId: ComparableKategorieKeyOperationFilterInput
}
"A category an item is assigned to. Every item that is not a combination of a variation parent is assigned to at least one."
input ItemCategorySortInput {
"The ID of the category."
categoryId: KategorieKeySortInput @cost(weight: "10")
"The names of the category and its parents from the root, in the default language. Absent when the category has no name in the default language."
path: SortEnumType @cost(weight: "10")
}
"A characteristic (German 'Merkmal') of an item with the values the item has for it."
input ItemCharacteristicFilterInput {
and: [ItemCharacteristicFilterInput!]
or: [ItemCharacteristicFilterInput!]
"The ID of the characteristic."
characteristicId: ComparableMerkmalKeyOperationFilterInput
}
"A characteristic (German 'Merkmal') of an item with the values the item has for it."
input ItemCharacteristicSortInput {
"The ID of the characteristic."
characteristicId: MerkmalKeySortInput @cost(weight: "10")
"Name of the characteristic in the default language."
name: SortEnumType @cost(weight: "10")
}
"An item condition in a list."
input ItemConditionListEntryFilterInput {
and: [ItemConditionListEntryFilterInput!]
or: [ItemConditionListEntryFilterInput!]
"The ID of the item condition."
id: ComparableZustandKeyOperationFilterInput @cost(weight: "15")
"How the condition deals with stock. It cannot be changed after the condition was created."
stockHandling: ComparableItemConditionStockHandlingOperationFilterInput @cost(weight: "50")
"Whether the condition can be chosen. Inactive conditions stay on the items and returns that already carry them."
isActive: ComparableBooleanOperationFilterInput @cost(weight: "50")
"Whether it is the standard condition that items without another condition carry. Computed; there is exactly one."
isDefault: ComparableBooleanOperationFilterInput @cost(weight: "200")
"Whether it was delivered with the Wawi. A system condition cannot be deleted. Computed."
isSystem: ComparableBooleanOperationFilterInput @cost(weight: "50")
}
"An item condition in a list."
input ItemConditionListEntrySortInput {
"The ID of the item condition."
id: ZustandKeySortInput @cost(weight: "15")
"The position in lists; smaller comes first."
sortOrder: SortEnumType @cost(weight: "50")
}
"A sales platform that item conditions can be mapped to, with the values it offers."
input ItemConditionMarketplaceFilterInput {
and: [ItemConditionMarketplaceFilterInput!]
or: [ItemConditionMarketplaceFilterInput!]
"The key of the platform."
marketplace: StringOperationFilterInput @cost(weight: "15")
}
"A sales platform that item conditions can be mapped to, with the values it offers."
input ItemConditionMarketplaceSortInput {
"The key of the platform."
marketplace: SortEnumType @cost(weight: "15")
}
"Where a new item condition can be chosen. A property that is omitted or null means no limit by that criterion."
input ItemConditionRestrictionInput {
"Only items of these product groups can take the condition. Null or omitted means no limit by product group; an empty list means no item."
productGroupIds: [ID]!
"Only items directly in one of these categories can take the condition; subcategories do not count. Null or omitted means no limit by category; an empty list means no item."
categoryIds: [ID]!
}
"The name of a new item condition in one language."
input ItemConditionTranslationInput {
"The language as BCP 47 tag, for example 'de' or 'de-AT'. Case is not significant. It must be an active language. Each language at most once."
languageTag: String!
"The name in that language, 1 to 50 characters."
name: String!
}
"A container (German 'Gebinde') the item is also traded in, for example a box of twelve. It has its own GTIN and UPC."
input ItemContainerFilterInput {
and: [ItemContainerFilterInput!]
or: [ItemContainerFilterInput!]
"The ID of the container."
id: ComparableGebindeKeyOperationFilterInput
}
"A container (German 'Gebinde') the item is also traded in, for example a box of twelve. It has its own GTIN and UPC."
input ItemContainerSortInput {
"The ID of the container."
id: GebindeKeySortInput @cost(weight: "10")
"How many units of the item the container holds."
quantity: SortEnumType @cost(weight: "10")
}
"What the item contains, for example 500 ml, and, when a base price is declared, what it refers to. Quantity and unit belong together, and the base price only makes sense with content, so the base price is part of the content."
input ItemContentInput {
"How much the item contains, measured in the unit, for example 500."
quantity: Decimal!
"The unit of the quantity, for example milliliter."
unitId: ID!
"The base price. Present when a base price is declared for the item, absent otherwise."
basePrice: ItemBasePriceInput
}
"A group of cross-selling items of an item, for example accessories, with the items in it."
input ItemCrossSellingGroupFilterInput {
and: [ItemCrossSellingGroupFilterInput!]
or: [ItemCrossSellingGroupFilterInput!]
"The ID of the cross-selling group."
groupId: ComparableCrossSellingGruppeKeyOperationFilterInput
}
"A group of cross-selling items of an item, for example accessories, with the items in it."
input ItemCrossSellingGroupSortInput {
"The ID of the cross-selling group."
groupId: CrossSellingGruppeKeySortInput @cost(weight: "10")
"Name of the group in the default language."
name: SortEnumType @cost(weight: "10")
}
"A custom field (German 'Eigenes Feld') of an item with its value. A custom field has neither a sales channel nor a language."
input ItemCustomFieldFilterInput {
and: [ItemCustomFieldFilterInput!]
or: [ItemCustomFieldFilterInput!]
"The ID of the custom field."
customFieldId: ComparableEigenesFeldKeyOperationFilterInput
}
"A custom field (German 'Eigenes Feld') of an item with its value. A custom field has neither a sales channel nor a language."
input ItemCustomFieldInput {
"The ID of the custom field."
customFieldId: ID!
"The value."
value: ItemFieldValueInput!
}
"A custom field (German 'Eigenes Feld') of an item with its value. A custom field has neither a sales channel nor a language."
input ItemCustomFieldSortInput {
"The ID of the custom field."
customFieldId: EigenesFeldKeySortInput @cost(weight: "10")
}
"Customs information of an item."
input ItemCustomsInput {
"Customs tariff number (HS code)."
tariffNumber: String
"Country of origin as ISO 3166-1 alpha-2 code."
countryOfOrigin: String
"Hazardous goods classification. Absent for an item that is not a hazardous good."
hazardousGoods: HazardousGoodsInput
}
"A date with time."
input ItemDateFieldValueInput {
"The date."
date: DateTime!
}
"A decimal number."
input ItemDecimalFieldValueInput {
"The number."
number: Decimal!
}
"A delivery status of items: the availability text an item shows in the sales channels, for example 'in stock' or 'delivery in 2 to 3 days'. It exists as its translations: one name per language."
input ItemDeliveryStatusFilterInput {
and: [ItemDeliveryStatusFilterInput!]
or: [ItemDeliveryStatusFilterInput!]
"The ID of the delivery status."
id: ComparableLieferstatusKeyOperationFilterInput @cost(weight: "15")
}
"A delivery status of items: the availability text an item shows in the sales channels, for example 'in stock' or 'delivery in 2 to 3 days'. It exists as its translations: one name per language."
input ItemDeliveryStatusSortInput {
"The ID of the delivery status."
id: LieferstatusKeySortInput @cost(weight: "15")
}
"The name of a new delivery status in one language."
input ItemDeliveryStatusTranslationInput {
"The language as BCP 47 tag, for example 'de' or 'de-AT'. Case is not significant. It must be an active language. Each language at most once."
languageTag: String!
"The name in that language, 1 to 255 characters."
name: String!
}
"The texts of an item in one language, for the default or for one sales channel."
input ItemDescriptionFilterInput {
and: [ItemDescriptionFilterInput!]
or: [ItemDescriptionFilterInput!]
"The language of the texts as BCP 47 language tag, for example 'de' or 'de-AT'. Language subtag in lower case, region subtag in upper case; the input is not case-sensitive."
languageTag: StringOperationFilterInput
"The sales channel the texts apply in. The Wawi sales channel carries the default texts."
salesChannelId: ComparableSalesChannelIdOperationFilterInput
}
"The texts of an item in one language, for the default or for one sales channel."
input ItemDescriptionSortInput {
"The language of the texts as BCP 47 language tag, for example 'de' or 'de-AT'. Language subtag in lower case, region subtag in upper case; the input is not case-sensitive."
languageTag: SortEnumType @cost(weight: "10")
}
"Outer dimensions of the item as it is shipped, in centimeters. All three belong together, so the object is either complete or absent."
input ItemDimensionsInput {
"Length in centimeters."
length: Decimal!
"Width in centimeters."
width: Decimal!
"Height in centimeters."
height: Decimal!
}
"A download file assigned to an item. The files themselves and their definitions are managed in the media API."
input ItemDownloadFilterInput {
and: [ItemDownloadFilterInput!]
or: [ItemDownloadFilterInput!]
"The ID of the download file."
downloadId: ComparableDownloadDateiKeyOperationFilterInput
}
"A download file assigned to an item. The files themselves and their definitions are managed in the media API."
input ItemDownloadSortInput {
"Zero-based position among the downloads of the item."
position: SortEnumType @cost(weight: "10")
"Name of the download."
name: SortEnumType @cost(weight: "10")
}
"The value of an attribute or a custom field. Polymorphic: the property 'type' selects the variant, which has to match the field type of the definition."
input ItemFieldValueInput @oneOf {
"A text value."
itemTextFieldValue: ItemTextFieldValueInput
"A whole number."
itemIntegerFieldValue: ItemIntegerFieldValueInput
"A decimal number."
itemDecimalFieldValue: ItemDecimalFieldValueInput
"A yes or no."
itemBooleanFieldValue: ItemBooleanFieldValueInput
"A date with time."
itemDateFieldValue: ItemDateFieldValueInput
}
"An image of an item. The image data is not part of the item: the item carries URLs into the blob storage, and the image gets to the item through the blob upload."
input ItemImageFilterInput {
and: [ItemImageFilterInput!]
or: [ItemImageFilterInput!]
"The sales channel the image is assigned to. The Wawi sales channel carries the default images of the item."
salesChannelId: ComparableSalesChannelIdOperationFilterInput
"Whether it is the main image of its scope. Read-only: it is the image with sort number 1."
isMainImage: ComparableBooleanOperationFilterInput
"The ID of the image in the blob storage."
blobIdentifier: ComparableGuidOperationFilterInput
}
"An image of an item. The image data is not part of the item: the item carries URLs into the blob storage, and the image gets to the item through the blob upload."
input ItemImageSortInput {
"Position of the image among the images of its scope, starting at 1."
sortNumber: SortEnumType @cost(weight: "10")
}
"A whole number."
input ItemIntegerFieldValueInput {
"The number."
number: Int!
}
"One item label selection: the object and how many labels to output."
input ItemLabelEntryInput {
"The ID of the object."
itemId: ID!
"The number of labels of this object. At least 1; a lower value is refused with OUTPUT_LABEL_ENTRY_INVALID."
quantity: Int!
}
"A label assigned to an item. The label itself is managed with the master data."
input ItemLabelFilterInput {
and: [ItemLabelFilterInput!]
or: [ItemLabelFilterInput!]
"The ID of the label."
labelId: ComparableLabelKeyOperationFilterInput
}
"A label assigned to an item. The label itself is managed with the master data."
input ItemLabelSortInput {
"Name of the label."
name: SortEnumType @cost(weight: "10")
}
"One row of the item list: the properties every item has that are needed to find and show it. The full structure of an item is read with the single item query."
input ItemListEntryFilterInput {
and: [ItemListEntryFilterInput!]
or: [ItemListEntryFilterInput!]
"The ID of the item."
id: ComparableArtikelKeyOperationFilterInput
"The kind of the item."
itemType: ComparableItemTypeOperationFilterInput
"The item number (SKU)."
sku: StringOperationFilterInput
"Name in the default language."
name: StringOperationFilterInput
"Whether the item is active."
isActive: ComparableBooleanOperationFilterInput
"The GTIN of the item, kept in the list so that items can be searched and filtered by it. All identifiers are read from the single item."
gtin: StringOperationFilterInput
"The ID of the product group."
productGroupId: ComparableWarengruppeKeyOperationFilterInput
"The ID of the manufacturer."
manufacturerId: ComparableHerstellerKeyOperationFilterInput
"The variation parent this item is a combination of, absent when the item is no combination. Filter by it to list the combinations of a parent."
variationParentId: ComparableArtikelKeyOperationFilterInput
"When the item was last changed."
changedAt: ComparableNullableOfDateTimeOffsetOperationFilterInput
}
"One row of the item list: the properties every item has that are needed to find and show it. The full structure of an item is read with the single item query."
input ItemListEntrySortInput {
"The ID of the item."
id: ArtikelKeySortInput @cost(weight: "10")
"The item number (SKU)."
sku: SortEnumType @cost(weight: "10")
"Name in the default language."
name: SortEnumType @cost(weight: "10")
"When the item was last changed."
changedAt: SortEnumType @cost(weight: "10")
}
"An event a user can raise by hand on a item (the manual workflows menu in the Wawi). The workflows that listen to it start; raising it raises the event, not a single workflow."
input ItemManualWorkflowEventFilterInput {
and: [ItemManualWorkflowEventFilterInput!]
or: [ItemManualWorkflowEventFilterInput!]
"How many active workflows listen to the event. Raising an event without any does nothing."
activeWorkflowCount: ComparableInt32OperationFilterInput @cost(weight: "15")
}
"An event a user can raise by hand on a item (the manual workflows menu in the Wawi). The workflows that listen to it start; raising it raises the event, not a single workflow."
input ItemManualWorkflowEventSortInput {
"The position in the menu of the Wawi."
sortOrder: SortEnumType @cost(weight: "50")
"The display name of the event."
name: SortEnumType @cost(weight: "15")
"The ID of the event."
id: ManualWorkflowEventKeySortInput @cost(weight: "15")
}
"A medium of an item: a document or video that is shown with it. Images are not media."
input ItemMediumFilterInput {
and: [ItemMediumFilterInput!]
or: [ItemMediumFilterInput!]
"The ID of the medium."
id: ComparableMedienDateiKeyOperationFilterInput
}
"A medium of an item: a document or video that is shown with it. Images are not media."
input ItemMediumSortInput {
"Zero-based position among the media of the item."
position: SortEnumType @cost(weight: "10")
"Display name of the medium."
name: SortEnumType @cost(weight: "10")
}
"One HTTP header that is sent with the upload request, for example a header the signature of a presigned URL covers."
input ItemOutputUploadHeaderInput {
"The header name."
name: String!
"The header value."
value: String!
}
"The place a rendered file is uploaded to. The file is sent with a PUT request to the URL. Only https URLs to public addresses are accepted; redirects are not followed. The URL is a secret: it is never logged and never returned."
input ItemOutputUploadTargetInput {
"The upload URL including its signature (SAS, presigned or signed URL)."
url: String!
"Headers to send with the upload. For Azure Blob Storage the header x-ms-blob-type is set automatically when the host is blob.core.windows.net. For other storages send the headers the signature requires."
headers: [ItemOutputUploadHeaderInput]!
}
"A packaging of an item as the German packaging law (Verpackungsgesetz) asks for it. It is not the packaging item kind."
input ItemPackagingFilterInput {
and: [ItemPackagingFilterInput!]
or: [ItemPackagingFilterInput!]
"The ID of the packaging."
id: ComparableVerpackungKeyOperationFilterInput
}
"A packaging of an item as the German packaging law (Verpackungsgesetz) asks for it. It is not the packaging item kind."
input ItemPackagingSortInput {
"Name of the packaging."
name: SortEnumType @cost(weight: "10")
}
"The reference prices of an item that help to price a sales document: the standard sales price, the average and the last purchase price, and the last price the item was sold for, to anyone and to one customer. All amounts are net and in one currency: the requested one, converted from the default currency of the tenant at its current exchange rate. Amounts are not rounded. Clients round for display."
input ItemPriceDetailsFilterInput {
and: [ItemPriceDetailsFilterInput!]
or: [ItemPriceDetailsFilterInput!]
"The ID of the item."
itemId: ComparableArtikelKeyOperationFilterInput @cost(weight: "15")
}
"The reference prices of an item that help to price a sales document: the standard sales price, the average and the last purchase price, and the last price the item was sold for, to anyone and to one customer. All amounts are net and in one currency: the requested one, converted from the default currency of the tenant at its current exchange rate. Amounts are not rounded. Clients round for display."
input ItemPriceDetailsSortInput {
"The ID of the item."
itemId: ArtikelKeySortInput @cost(weight: "15")
}
"A sales channel of an item: whether the item is activated in it, and what its prices can be set for. Prices can only be set in the sales channels the item is activated in, and only for the customer groups and currencies of that sales channel."
input ItemSalesChannelFilterInput {
and: [ItemSalesChannelFilterInput!]
or: [ItemSalesChannelFilterInput!]
"The ID of the sales channel."
salesChannelId: ComparableSalesChannelIdOperationFilterInput
"Whether the item is activated in the sales channel."
isActivated: ComparableBooleanOperationFilterInput
"Whether the item can be activated in the sales channel: it can when it is activated already, or when it is in a category that is active in the sales channel and the kind of the sales channel accepts the item (see the blockers)."
canBeActivated: ComparableBooleanOperationFilterInput
}
"A sales channel of an item: whether the item is activated in it, and what its prices can be set for. Prices can only be set in the sales channels the item is activated in, and only for the customer groups and currencies of that sales channel."
input ItemSalesChannelSortInput {
"The ID of the sales channel."
salesChannelId: SalesChannelIdSortInput @cost(weight: "10")
"Name of the sales channel."
name: SortEnumType @cost(weight: "10")
}
"The special price of an item in one currency, as sent when an item is created together with its prices."
input ItemSpecialPriceInput {
"The currency of the prices as ISO 4217 code. Prices are written in the default currency of the tenant only. Omitted means the default currency; any other currency is refused with 409 (error code CURRENCY_NOT_SUPPORTED)."
currencyCode: String
"Whether the special price is active."
isActive: Boolean!
"The period the special price applies in. Absent when it is not limited by date."
validity: SpecialPriceValidityInput
"The stock the special price needs. Absent when it is not limited by stock."
stockRestriction: SpecialPriceStockRestrictionInput
"The special prices per sales channel and customer group, at least one."
entries: [SpecialPriceEntryInput]!
}
"The standard sales price of an item as net and gross price, with the tax rate that connects them. The tax rate is the rate of the tax class of the item in the country of the company, for a consumer in that country. An item without a tax class of its own is taxed with the default tax class. A rate of 0 percent is a valid rate. Amounts are not rounded: the net price is kept with 13 decimal places, the gross price is the exact product of net price and tax factor. Clients round for display. Prices are in the default currency of the tenant."
input ItemStandardGrossPriceFilterInput {
and: [ItemStandardGrossPriceFilterInput!]
or: [ItemStandardGrossPriceFilterInput!]
"The ID of the item."
itemId: ComparableArtikelKeyOperationFilterInput @cost(weight: "15")
}
"The standard sales price of an item as net and gross price, with the tax rate that connects them. The tax rate is the rate of the tax class of the item in the country of the company, for a consumer in that country. An item without a tax class of its own is taxed with the default tax class. A rate of 0 percent is a valid rate. Amounts are not rounded: the net price is kept with 13 decimal places, the gross price is the exact product of net price and tax factor. Clients round for display. Prices are in the default currency of the tenant."
input ItemStandardGrossPriceSortInput {
"The ID of the item."
itemId: ArtikelKeySortInput @cost(weight: "15")
}
"A supplier item (German 'Lieferantenartikel'): the item as one supplier delivers it. Only items with stock management have them."
input ItemSupplierFilterInput {
and: [ItemSupplierFilterInput!]
or: [ItemSupplierFilterInput!]
"The ID of the supplier item."
id: ComparableLieferantenArtikelKeyOperationFilterInput
"The ID of the supplier."
supplierId: ComparableLieferantKeyOperationFilterInput
"Whether the supplier ships to the customers directly."
isDropshippingActive: ComparableBooleanOperationFilterInput
}
"A supplier item (German 'Lieferantenartikel'): the item as one supplier delivers it. Only items with stock management have them."
input ItemSupplierSortInput {
"The ID of the supplier item."
id: LieferantenArtikelKeySortInput @cost(weight: "10")
"The ID of the supplier."
supplierId: LieferantKeySortInput @cost(weight: "10")
}
"A text value."
input ItemTextFieldValueInput {
"The text."
text: String!
}
"The units of an item to write. The packaging unit is derived from the base price and cannot be written."
input ItemUnitsInput {
"The unit the item is sold in, for example piece."
salesUnitId: ID
"What the item contains and its base price."
content: ItemContentInput
}
"An upload field assigned to an item: a file the customer can attach when ordering."
input ItemUploadFilterInput {
and: [ItemUploadFilterInput!]
or: [ItemUploadFilterInput!]
"The ID of the upload field."
uploadId: ComparableArtikelUploadDateiKeyOperationFilterInput
}
"An upload field assigned to an item: a file the customer can attach when ordering."
input ItemUploadSortInput {
"Name of the upload field."
name: SortEnumType @cost(weight: "10")
}
"The smallest and the largest stock an item should have in one warehouse. It drives the purchase suggestions."
input ItemWarehouseStockLimitFilterInput {
and: [ItemWarehouseStockLimitFilterInput!]
or: [ItemWarehouseStockLimitFilterInput!]
"The warehouse."
warehouseId: ComparableWarenlagerKeyOperationFilterInput
}
"The smallest and the largest stock an item should have in one warehouse. It drives the purchase suggestions."
input ItemWarehouseStockLimitSortInput {
"The warehouse."
warehouseId: WarenlagerKeySortInput @cost(weight: "10")
}
"Weights of the item in kilograms."
input ItemWeightsInput {
"Weight of the item including its packaging, in kilograms. Used for shipping costs."
shippingWeight: Decimal
"Weight of the item without packaging, in kilograms."
netWeight: Decimal
}
input KategorieKeySortInput {
kKategorie: SortEnumType @cost(weight: "10")
}
"One component of a kit."
input KitComponentFilterInput {
and: [KitComponentFilterInput!]
or: [KitComponentFilterInput!]
"The ID of the component item. A component has no identifier of its own, the pair of kit and component item identifies it."
componentItemId: ComparableArtikelKeyOperationFilterInput
}
"One component of a kit."
input KitComponentSortInput {
"The ID of the component item. A component has no identifier of its own, the pair of kit and component item identifies it."
componentItemId: ArtikelKeySortInput @cost(weight: "10")
"Zero-based position of the component within the kit."
position: SortEnumType @cost(weight: "10")
}
input KonfiggruppeKeySortInput {
kKonfiggruppe: SortEnumType @cost(weight: "10")
}
input KontoDatenKeySortInput {
kKontoDaten: SortEnumType @cost(weight: "10")
}
"Represents a unique key for identifying a customer in the JTL system."
input KundeKeySortInput {
"Gets the unique identifier for the customer."
kKunde: SortEnumType @cost(weight: "10")
"Gets a value indicating whether the customer key represents an existing customer."
isExisting: SortEnumType @cost(weight: "10")
}
"Represents a unique key for identifying a customer print text."
input KundenDrucktextKeySortInput {
"Gets the unique identifier for the customer print text."
kKundenDrucktext: SortEnumType @cost(weight: "10")
"Gets a value indicating whether the customer print text key represents an existing entry."
isExisting: SortEnumType @cost(weight: "10")
}
input KundenGruppeKeySortInput {
kKundenGruppe: SortEnumType @cost(weight: "10")
}
input KundenKategorieKeySortInput {
kKundenKategorie: SortEnumType @cost(weight: "10")
}
"A kind of object that labels can be put on."
input LabelEntityTypeFilterInput {
and: [LabelEntityTypeFilterInput!]
or: [LabelEntityTypeFilterInput!]
"The stable key of the kind, lower case with hyphens."
key: StringOperationFilterInput @cost(weight: "50")
"The name of the kind in the language of the caller."
name: StringOperationFilterInput @cost(weight: "200")
}
"A kind of object that labels can be put on."
input LabelEntityTypeSortInput {
"The stable key of the kind, lower case with hyphens."
key: SortEnumType @cost(weight: "50")
"The name of the kind in the language of the caller."
name: SortEnumType @cost(weight: "200")
}
"A label: a named, colored mark that is put on objects of one kind to sort them, for example on items or customers. This is the definition of the label; which objects carry it is told by the object itself."
input LabelFilterInput {
and: [LabelFilterInput!]
or: [LabelFilterInput!]
"The ID of the label."
id: ComparableLabelKeyOperationFilterInput @cost(weight: "15")
"The key of the kind of object the label is put on, as 'QueryLabelEntityTypes' lists it. It cannot be changed."
entityTypeKey: StringOperationFilterInput @cost(weight: "50")
"The name of the label, 1 to 255 characters. It is the same in every language and unique among the labels of the same kind, ignoring letter case."
name: StringOperationFilterInput @cost(weight: "50")
"How many objects of its kind carry the label right now. Computed when requested; leave it out of lists that do not need it."
assignmentCount: ComparableInt32OperationFilterInput @cost(weight: "500")
}
input LabelKeySortInput {
identifier: SortEnumType @cost(weight: "10")
}
"A label: a named, colored mark that is put on objects of one kind to sort them, for example on items or customers. This is the definition of the label; which objects carry it is told by the object itself."
input LabelSortInput {
"The ID of the label."
id: LabelKeySortInput @cost(weight: "15")
"The key of the kind of object the label is put on, as 'QueryLabelEntityTypes' lists it. It cannot be changed."
entityTypeKey: SortEnumType @cost(weight: "200")
"The name of the label, 1 to 255 characters. It is the same in every language and unique among the labels of the same kind, ignoring letter case."
name: SortEnumType @cost(weight: "50")
}
"A language Wawi knows. Every language Wawi can work with is listed; the active ones are the languages texts can be kept in. At most one active language is the default language. The same model serves the list and the single read, because it is small."
input LanguageFilterInput {
and: [LanguageFilterInput!]
or: [LanguageFilterInput!]
"The language as BCP 47 language tag, for example de or de-AT: language subtag in lower case, region subtag in upper case. Case does not matter on input. Wawi currently holds only the two-letter language subtag."
tag: StringOperationFilterInput
"The code of the language with usually three letters as Wawi stores it (ISO 639-2 bibliographic, for example 'ger' and 'fre', not 'deu' and 'fra')."
iso3Code: StringOperationFilterInput
"Whether the language is active, that is whether texts can be kept in it."
isActive: ComparableBooleanOperationFilterInput
"Whether this is the default language. At most one active language is."
isDefault: ComparableBooleanOperationFilterInput
}
"A language Wawi knows. Every language Wawi can work with is listed; the active ones are the languages texts can be kept in. At most one active language is the default language. The same model serves the list and the single read, because it is small."
input LanguageSortInput {
"The language as BCP 47 language tag, for example de or de-AT: language subtag in lower case, region subtag in upper case. Case does not matter on input. Wawi currently holds only the two-letter language subtag."
tag: SortEnumType @cost(weight: "10")
"The code of the language with usually three letters as Wawi stores it (ISO 639-2 bibliographic, for example 'ger' and 'fre', not 'deu' and 'fra')."
iso3Code: SortEnumType @cost(weight: "10")
}
"LieferArtikel Schlüssel"
input LieferantenArtikelKeySortInput {
"Der Interne Named Key"
kLiefArtikel: SortEnumType @cost(weight: "10")
}
"Der LieferantenBestellung Schlüssel."
input LieferantenBestellungKeySortInput {
"Der Interne Named Key."
klieferantenBestellung: SortEnumType @cost(weight: "10")
}
input LieferantKeySortInput {
kLieferant: SortEnumType @cost(weight: "10")
}
input LieferscheinKeySortInput {
kLieferschein: SortEnumType @cost(weight: "10")
isExisting: SortEnumType @cost(weight: "10")
}
input LieferscheinPosKeySortInput {
kLieferscheinPos: SortEnumType @cost(weight: "10")
isExisting: SortEnumType @cost(weight: "10")
}
input LieferstatusKeySortInput {
kLieferstatus: SortEnumType @cost(weight: "10")
}
"Tax codes that replace those of a rate for one type of line item."
input LineItemTypeTaxCodeOverrideFilterInput {
and: [LineItemTypeTaxCodeOverrideFilterInput!]
or: [LineItemTypeTaxCodeOverrideFilterInput!]
"The type of line item. Known values: CUSTOM, SHIPPING, COUPON, PAYMENT, SHIPPING_SURCHARGE, NEW_CUSTOMER_COUPON, CASH_ON_DELIVERY, SHIPPING_SURCHARGE_ITEM, PACKING, GIFT_FOR_FREE, TRUSTED_SHOPS, INTEREST_PREMIUM, PROCESSING_FEE, CARTON, RETURN_DELIVERY, MULTI_PURPOSE_VOUCHER, MULTI_PURPOSE_VOUCHER_DIGITAL, SINGLE_PURPOSE_VOUCHER, SINGLE_PURPOSE_VOUCHER_DIGITAL, SINGLE_PURPOSE_VOUCHER_REDEMPTION. New types can be added without a contract change."
lineItemType: StringOperationFilterInput
}
"Tax codes that replace those of a rate for one type of line item."
input LineItemTypeTaxCodeOverrideSortInput {
"The type of line item. Known values: CUSTOM, SHIPPING, COUPON, PAYMENT, SHIPPING_SURCHARGE, NEW_CUSTOMER_COUPON, CASH_ON_DELIVERY, SHIPPING_SURCHARGE_ITEM, PACKING, GIFT_FOR_FREE, TRUSTED_SHOPS, INTEREST_PREMIUM, PROCESSING_FEE, CARTON, RETURN_DELIVERY, MULTI_PURPOSE_VOUCHER, MULTI_PURPOSE_VOUCHER_DIGITAL, SINGLE_PURPOSE_VOUCHER, SINGLE_PURPOSE_VOUCHER_DIGITAL, SINGLE_PURPOSE_VOUCHER_REDEMPTION. New types can be added without a contract change."
lineItemType: SortEnumType @cost(weight: "10")
}
"A text in one language."
input LocalizedTextInput {
"The language as BCP 47 language tag, for example 'de' or 'de-AT'. Language subtag in lower case, region subtag in upper case; the input is not case-sensitive."
languageTag: String!
"The text in that language."
text: String!
}
"Sets the retention period of a kind of process and locks it. A locked period can never be changed or removed again, so check the values before calling. The period must not be 0 years, 0 months and 0 days. - Request"
input LockCompanyRetentionPeriodCommandRequestInput {
"The ID of the company."
companyId: ID!
"The identifier of the kind of process. The set of identifiers is fixed by the application and listed by the query for retention periods; it is empty while the retention function is not active."
processId: String!
"Years of the period, 0 or more."
years: Int!
"Months of the period, 0 or more."
months: Int!
"Days of the period, 0 or more."
days: Int!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Locks the automatic, unattended import of a payment account. 'StartPaymentAccountImport' still fetches it. Locking a locked import does nothing and answers 204. Works on a hidden account too. Errors: PAYMENT_ACCOUNT_NOT_FOUND (the payment account was not found). - Request"
input LockPaymentAccountAutoImportCommandRequestInput {
"The ID of the payment account."
paymentAccountId: ID!
"Whether to suppress the automatic workflows this call would start. Events for other systems are still published. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Locks a storage location. A location with reserved stock cannot be locked. errorCode is one of: WAREHOUSE_NOT_FOUND or STORAGE_LOCATION_NOT_FOUND (the warehouse or the storage location was not found); WAREHOUSE_TYPE_DOES_NOT_SUPPORT_STORAGE_LOCATIONS (the warehouse has no storage locations: only warehouses with storage location management have them); STORAGE_LOCATION_ALREADY_LOCKED, STORAGE_LOCATION_HAS_RESERVED_STOCK, STORAGE_LOCATION_INVENTORY_LOCKED, STORAGE_LOCATION_IS_SYSTEM_LOCATION (the status cannot be changed). - Request"
input LockStorageLocationCommandRequestInput {
"The ID of the warehouse."
warehouseId: ID!
"The ID of the storage location."
storageLocationId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"A user with at least one living session. It contains personal data."
input LoggedInUserFilterInput {
and: [LoggedInUserFilterInput!]
or: [LoggedInUserFilterInput!]
"The ID of the user."
userId: ComparableBenutzerKeyOperationFilterInput @cost(weight: "15")
}
"A user with at least one living session. It contains personal data."
input LoggedInUserSortInput {
"The ID of the user."
userId: BenutzerKeySortInput @cost(weight: "15")
"The latest sign of life of any session of the user."
lastHeartbeatAt: SortEnumType @cost(weight: "500")
}
"A lot size that is created together with a production item."
input LotSizeCreationInput {
"The quantity of the production item that is produced in one lot. Must be greater than zero."
quantity: Int!
}
"A lot size of a production item. It defines the quantity of the production item that is produced in one lot."
input LotSizeFilterInput {
and: [LotSizeFilterInput!]
or: [LotSizeFilterInput!]
"The quantity of the production item that is produced in one lot. Unique per production item."
quantity: ComparableInt32OperationFilterInput @cost(weight: "50")
}
"A lot size of a production item. It defines the quantity of the production item that is produced in one lot."
input LotSizeSortInput {
"The quantity of the production item that is produced in one lot. Unique per production item."
quantity: SortEnumType @cost(weight: "50")
}
"Changes a machine. Only the properties that are sent change. The hardware is changed by ChangeMachineHardware."
input MachineChangesInput {
"The new number of the resource."
number: String
"The new name of the resource."
name: String
"The new description of the resource. Sending null removes the description."
description: String
"The ID of the new resource type of the resource. It must belong to the category of the resource."
resourceTypeId: ID
"Whether the resource is active."
isActive: Boolean
}
"Creates a machine."
input MachineCreationInput {
"The number of the new resource."
number: String!
"The name of the new resource."
name: String!
"The description of the new resource. When omitted, the resource has no description."
description: String
"The ID of the resource type of the new resource. It must belong to the category of the new resource."
resourceTypeId: ID!
"Whether the new resource is active. When omitted, the resource is active."
isActive: Boolean
"The ID of the hardware assigned to the new machine. When omitted, no hardware is assigned."
hardwareId: ID
}
input MahnstufeKeySortInput {
kMahnstufe: SortEnumType @cost(weight: "10")
}
"Sends the delivery note by e-mail, as the mail channel of the template set defines it. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is DELIVERY_NOTE_NOT_FOUND (no delivery note with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_MAIL_RECIPIENT_MISSING (the document has no e-mail address to send to). - Request"
input MailDeliveryNoteCommandRequestInput {
"The ID of the delivery note."
deliveryNoteId: ID!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Sends the shipping notification of the delivery note by e-mail. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is DELIVERY_NOTE_NOT_FOUND (no delivery note with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_MAIL_RECIPIENT_MISSING (the document has no e-mail address to send to). - Request"
input MailDeliveryNoteShippingNotificationCommandRequestInput {
"The ID of the delivery note."
deliveryNoteId: ID!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Sends the dunning notice by e-mail, as the mail channel of the template set defines it. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is DUNNING_NOTICE_NOT_FOUND (no dunning notice with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_MAIL_RECIPIENT_MISSING (the document has no e-mail address to send to). - Request"
input MailDunningNoticeCommandRequestInput {
"The ID of the dunning notice."
dunningNoticeId: ID!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Sends the payment receipt of the payment by e-mail. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is PAYMENT_NOT_FOUND (no payment with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_MAIL_RECIPIENT_MISSING (the document has no e-mail address to send to). - Request"
input MailPaymentReceiptCommandRequestInput {
"The ID of the payment."
paymentId: ID!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Sends the purchase order by e-mail, as the mail channel of the template set defines it. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is PURCHASE_ORDER_NOT_FOUND (no purchase order with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_MAIL_RECIPIENT_MISSING (the document has no e-mail address to send to). - Request"
input MailPurchaseOrderCommandRequestInput {
"The ID of the purchase order."
purchaseOrderId: ID!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Sends the return by e-mail, as the mail channel of the template set defines it. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is RETURN_NOT_FOUND (no return with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_MAIL_RECIPIENT_MISSING (the document has no e-mail address to send to). - Request"
input MailReturnCommandRequestInput {
"The ID of the return."
returnId: ID!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Sends the return label notification of the return by e-mail. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is RETURN_NOT_FOUND (no return with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_MAIL_RECIPIENT_MISSING (the document has no e-mail address to send to). - Request"
input MailReturnLabelNotificationCommandRequestInput {
"The ID of the return."
returnId: ID!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Sends the sales credit note by e-mail, as the mail channel of the template set defines it. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_CREDIT_NOTE_NOT_FOUND (no sales credit note with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_MAIL_RECIPIENT_MISSING (the document has no e-mail address to send to). - Request"
input MailSalesCreditNoteCommandRequestInput {
"The ID of the sales credit note."
salesCreditNoteId: ID!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Sends the sales invoice by e-mail, as the mail channel of the template set defines it. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_INVOICE_NOT_FOUND (no sales invoice with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_MAIL_RECIPIENT_MISSING (the document has no e-mail address to send to). - Request"
input MailSalesInvoiceCommandRequestInput {
"The ID of the sales invoice."
salesInvoiceId: ID!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Sends the sales invoice correction by e-mail, as the mail channel of the template set defines it. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_INVOICE_CORRECTION_NOT_FOUND (no sales invoice correction with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_MAIL_RECIPIENT_MISSING (the document has no e-mail address to send to). - Request"
input MailSalesInvoiceCorrectionCommandRequestInput {
"The ID of the sales invoice correction."
salesInvoiceCorrectionId: ID!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Sends the sales order by e-mail, as the mail channel of the template set defines it. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_ORDER_NOT_FOUND (no sales order with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_MAIL_RECIPIENT_MISSING (the document has no e-mail address to send to). - Request"
input MailSalesOrderCommandRequestInput {
"The ID of the sales order."
salesOrderId: ID!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Sends the sales quotation by e-mail, as the mail channel of the template set defines it. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_QUOTATION_NOT_FOUND (no sales quotation with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_MAIL_RECIPIENT_MISSING (the document has no e-mail address to send to). - Request"
input MailSalesQuotationCommandRequestInput {
"The ID of the sales quotation."
salesQuotationId: ID!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Makes a draft, default or archived bill of materials an alternative bill of materials of its production item. If it was the default bill of materials, the production item no longer has a default bill of materials. After that the bill of materials can be produced but no longer changed. Errors: BillOfMaterialsNotFound (the bill of materials was not found); InvalidBillOfMaterialsStateTransition (the bill of materials is neither a draft, nor the default, nor an archived bill of materials). - Request"
input MakeBillOfMaterialsAlternativeCommandRequestInput {
"The ID of the bill of materials that becomes an alternative bill of materials."
billOfMaterialsId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Makes a draft, alternative or archived bill of materials the default bill of materials of its production item. The bill of materials that was the default bill of materials of the production item becomes an alternative bill of materials. After that the bill of materials can be produced but no longer changed. Errors: BillOfMaterialsNotFound (the bill of materials was not found); InvalidBillOfMaterialsStateTransition (the bill of materials is neither a draft, nor an alternative, nor an archived bill of materials). - Request"
input MakeBillOfMaterialsDefaultCommandRequestInput {
"The ID of the bill of materials that becomes the default bill of materials."
billOfMaterialsId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Makes an address the default of its type. The previous default of that type stops being it. - Request"
input MakeCustomerAddressDefaultCommandRequestInput {
"The ID of the customer."
customerId: ID!
"The ID of the address."
addressId: ID!
"Suppresses the automatic workflow triggers of this call (the customer event 'changed'). Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Makes a bank account the default of the customer. The previous default stops being it. - Request"
input MakeCustomerBankAccountDefaultCommandRequestInput {
"The ID of the customer."
customerId: ID!
"The ID of the bank account."
bankAccountId: ID!
"Suppresses the automatic workflow triggers of this call (the customer event 'changed'). Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Makes a customer group the default group of new customers. The previous default group stops being it. - Request"
input MakeCustomerGroupDefaultCommandRequestInput {
"The ID of the customer group."
customerGroupId: ID!
"Suppresses the automatic workflow triggers of this call. Customer groups raise no workflow event today; the parameter keeps calls stable when one is added. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Makes an active language the default language; the former default language stays active. Making the default language the default again changes nothing and succeeds. The default language is the language item texts are first kept and shown in, so the change affects every item whose texts are missing in the new default language. - Request"
input MakeLanguageDefaultCommandRequestInput {
"The language as BCP 47 language tag, for example de or de-AT: language subtag in lower case, region subtag in upper case. Case does not matter on input. Wawi currently holds only the two-letter language subtag."
languageTag: String!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Makes a template set the standard of its document type. The previous standard set loses the flag. Making the standard set the standard again changes nothing and succeeds. GraphQL only (new API rule). Errors: 404 TEMPLATE_SET_NOT_FOUND. - Request"
input MakeOutputTemplateSetStandardCommandRequestInput {
"The ID of the template set."
templateSetId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Makes a payment method the one used when a customer has none. The method that was the default stops being it. Making the default one the default does nothing and answers 204. - Request"
input MakePaymentMethodDefaultCommandRequestInput {
"The ID of the payment method."
paymentMethodId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Makes a tax class the default tax class; the former default tax class stays as it is otherwise. Line items without a tax class of their own, for example of items without one, are taxed with the default tax class, so the change affects every sale of them from now on. Making the default tax class the default again changes nothing and succeeds. - Request"
input MakeTaxClassDefaultCommandRequestInput {
"The ID of the tax class."
taxClassId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Der Schlüssel eines manuellen Workflow-Ereignisses."
input ManualWorkflowEventKeySortInput {
"Der eindeutige Bezeichner des manuellen Workflow-Ereignisses."
manualWorkflowEventId: SortEnumType @cost(weight: "10")
}
"The texts of a manufacturer in one language, when written."
input ManufacturerDescriptionInput {
"The language of the texts as BCP 47 tag, for example 'de' or 'de-AT'. Case does not matter on input; the output uses the canonical form (language lower case, region upper case). Each language may occur only once."
languageTag: String!
"The meta title of the manufacturer page in an online shop."
metaTitle: String
"The meta keywords of the manufacturer page in an online shop."
metaKeywords: String
"The meta description of the manufacturer page in an online shop."
metaDescription: String
"The description of the manufacturer."
description: String
"The search-engine-friendly URL segment of the manufacturer page in an online shop."
seo: String
}
"The image of a manufacturer in one sales channel, when written."
input ManufacturerImageInput {
"The sales channel the image is assigned to. Tenant-local, composite identifier, not a UUID. Only specific sales channels are allowed for this operation and are specified in the sales channel endpoint (GET). Each sales channel may occur only once."
salesChannelId: ID!
"The ID of a file uploaded beforehand with the file upload endpoints."
blobIdentifier: UUID!
}
"A manufacturer in a list: the master data without texts and images."
input ManufacturerListEntryFilterInput {
and: [ManufacturerListEntryFilterInput!]
or: [ManufacturerListEntryFilterInput!]
"The ID of the manufacturer."
id: ComparableHerstellerKeyOperationFilterInput @cost(weight: "15")
"The name of the manufacturer."
name: StringOperationFilterInput @cost(weight: "15")
"The website of the manufacturer."
website: StringOperationFilterInput @cost(weight: "50")
"The position of the manufacturer in sorted lists."
sortNumber: ComparableNullableOfInt32OperationFilterInput @cost(weight: "50")
}
"A manufacturer in a list: the master data without texts and images."
input ManufacturerListEntrySortInput {
"The ID of the manufacturer."
id: HerstellerKeySortInput @cost(weight: "15")
"The name of the manufacturer."
name: SortEnumType @cost(weight: "15")
"The position of the manufacturer in sorted lists."
sortNumber: SortEnumType @cost(weight: "50")
}
"Marks a package as shipped: sets the shipping date and, if given, the tracking number. When the last open package of the delivery note is shipped, the delivery note counts as shipped and its shipping is completed: the shipment is reported to the sales channel of the order, the shipping confirmation mail is sent if the shipping method and the settings ask for it and it was not sent yet, open drop-shipping and fulfillment orders of the delivery note are closed, and the workflow event 'delivery note shipped' fires. A refused action reports 'errorCode' (the main reason) and 'blockers' (all reasons, each with 'code' and 'message'). errorCode is one of: PACKAGE_NOT_FOUND (the package was not found); PACKAGE_ALREADY_SHIPPED (the package already has a shipping date); SHIPPING_DATE_OUT_OF_RANGE (the shipping date is outside the supported range); TRACKING_NUMBER_INVALID (the tracking number is empty, longer than 255 characters or does not match the rule of the shipping method); DELIVERY_NOTE_HANDLED_BY_FULFILLMENT_NETWORK (the delivery note is handled by the JTL Fulfillment Network and cannot be changed here). - Request"
input MarkPackageShippedCommandRequestInput {
"The ID of the package."
packageId: ID!
"The shipping date. Defaults to now."
shippedAt: DateTime
"The tracking number. When omitted, the tracking number of the package stays."
trackingNumber: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Marks a released purchase order as sent to the supplier, for example when it was transmitted outside the ERP. For a drop shipping order the stock of the supplier items whose stock the ERP tracks is lowered by the ordered quantities. For a warehouse of the fulfillment network every item must be managed in stock and ordered with a quantity above 0. Raises the workflow events 'processing-started' and 'changed'. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: PURCHASE_ORDER_NOT_FOUND (the order was not found); PURCHASE_ORDER_NOT_RELEASED (the order is not released yet); PURCHASE_ORDER_ALREADY_SENT (the order was sent already); PURCHASE_ORDER_FULFILLMENT_ITEMS_NOT_STOCK_MANAGED or PURCHASE_ORDER_FULFILLMENT_QUANTITY_INVALID (an item does not meet the rules of the fulfillment network). - Request"
input MarkPurchaseOrderAsSentCommandRequestInput {
"The ID of the purchase order."
purchaseOrderId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
input MassEinheitKeySortInput {
kMassEinheit: SortEnumType @cost(weight: "10")
"Internes Identifizierungsmerkmal der Einheit"
unitIdentifier: SortEnumType @cost(weight: "10")
}
"How a new measurement unit converts to its base unit, when written. One of this unit equals 'factor' of the base unit."
input MeasurementUnitConversionInput {
"The ID of the base unit. It must itself be a base unit: conversions are one level deep."
baseUnitId: ID!
"How many base units one of the new unit is. Greater than 0, at most 13 decimals."
factor: Decimal!
}
"A measurement unit as a list entry, with its name in one language."
input MeasurementUnitListEntryFilterInput {
and: [MeasurementUnitListEntryFilterInput!]
or: [MeasurementUnitListEntryFilterInput!]
"The ID of the measurement unit."
id: ComparableMassEinheitKeyOperationFilterInput @cost(weight: "15")
"The short form shown next to quantities, for example 'kg'."
displayCode: StringOperationFilterInput @cost(weight: "50")
"The name in the requested language; the name in the default language when there is none in it."
name: StringOperationFilterInput @cost(weight: "200")
"The code of a predefined measurement unit: the units Wawi ships with (UCUM codes such as 'kg' or '[lb_av]') and those created by the synchronisation with a shop. Empty for units created by users."
predefinedCode: StringOperationFilterInput @cost(weight: "50")
"The UN/CEFACT unit code shown on e-invoices for items with this measurement unit, for example 'KGM'. Values stored before can be of any format; a value written through the API has 2 or 3 letters or digits (see 'QueryUnitCodes'). Empty when none is set."
unitCode: StringOperationFilterInput @cost(weight: "50")
"The ID of the base unit of the family this unit belongs to; the unit itself for a base unit. Two measurement units convert into each other when their base unit is the same."
baseUnitId: ComparableMassEinheitKeyOperationFilterInput @cost(weight: "200")
}
"A measurement unit as a list entry, with its name in one language."
input MeasurementUnitListEntrySortInput {
"The ID of the measurement unit."
id: MassEinheitKeySortInput @cost(weight: "15")
"The short form shown next to quantities, for example 'kg'."
displayCode: SortEnumType @cost(weight: "50")
"The name in the requested language; the name in the default language when there is none in it."
name: SortEnumType @cost(weight: "200")
}
"The name of a measurement unit in one language, when written."
input MeasurementUnitTranslationInput {
"The language as BCP 47 tag, for example 'de' or 'de-AT'. Case is not significant. The language must be activated."
languageTag: String!
"The name, 1 to 255 characters. Names are unique per language."
name: String!
}
"Represents the primary key of a media file entity (tMedienDatei)."
input MedienDateiKeyInput {
"Gets the primary key value of the media file."
kMedienDatei: Int!
}
"Merges another customer (the source) into this customer (the target). Addresses, contacts, bank accounts, notes, history, documents and sales channel accounts of the source move to the target; custom field values, labels and item category discounts move where the target has none. The source is deleted afterwards. The target keeps its own master data except what is chosen with 'billingAddressFrom' and 'numberFrom'. - Request"
input MergeCustomerCommandRequestInput {
"The ID of the target customer, which stays."
customerId: ID!
"The ID of the source customer, which is merged into the target and then deleted. It must not be the target."
sourceCustomerId: ID!
"Whose default billing address the target keeps. Omitted means 'Target'."
billingAddressFrom: CustomerMergeSide
"Whose customer number the target keeps. Omitted means 'Target'. With 'Source', open sales documents of both customers get the number."
numberFrom: CustomerMergeSide
"Suppresses the automatic workflow triggers of this call (the customer event 'changed'). Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Merges the source sales order into this one; the source is deleted. Fails with a GraphQL error whose extensions.code is SalesOrdersCannotBeMerged. - Request"
input MergeSalesOrdersCommandRequestInput {
"The sales order that is merged in. Unknown fails with SalesOrderNotFound, this order itself with SameSalesOrder."
sourceSalesOrderId: ID!
"The ID of the target sales order. An unknown ID fails with SalesOrderNotFound."
salesOrderId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
input MerkmalGruppeKeySortInput {
kMerkmalGruppe: SortEnumType @cost(weight: "10")
}
input MerkmalKeySortInput {
kMerkmal: SortEnumType @cost(weight: "10")
}
input MerkmalWertKeySortInput {
kMerkmalWert: SortEnumType @cost(weight: "10")
}
"Moves a child component of a bill of materials to another position within its parent component or to another parent component of the same bill of materials. Without \"parentId\" the child component stays in its parent component and \"sortIndex\" is required. With \"parentId\" the child component moves to that parent component: to the position \"sortIndex\", or after its last child component when \"sortIndex\" is omitted. Errors: the request is invalid; SortIndexRequiredWithoutParentId (neither \"parentId\" nor \"sortIndex\" was sent); BillOfMaterialsComponentNotFound (the child component or the new parent component was not found); ParentComponentNotInSameBillOfMaterials (the new parent component belongs to another bill of materials); BillOfMaterialsReadOnly (the bill of materials cannot be changed). - Request"
input MoveBillOfMaterialsChildComponentCommandRequestInput {
"The ID of the child component to move."
billOfMaterialsChildComponentId: ID!
"The ID of the new parent component of the same bill of materials. When omitted, the child component stays in its parent component."
parentId: ID
"The new position of the child component within its parent component. Required when \"parentId\" is omitted; when \"parentId\" is sent and this is omitted, the child component is appended after the last child component of the new parent component."
sortIndex: Int
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Moves a parent component of a bill of materials to another position within the bill of materials. Errors: the request is invalid; BillOfMaterialsComponentNotFound (the parent component was not found); BillOfMaterialsReadOnly (the bill of materials cannot be changed). - Request"
input MoveBillOfMaterialsParentComponentCommandRequestInput {
"The ID of the parent component to move."
billOfMaterialsParentComponentId: ID!
"The new position of the parent component within the bill of materials."
sortIndex: Int!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Moves a category with its subcategories below another parent, or to the top level. The category is put at the end of its new siblings. Everything below it moves along. The category is marked for transfer to the sales channels it is activated in. - Request"
input MoveCategoryCommandRequestInput {
"The ID of the category."
categoryId: ID!
"The ID of the new parent category. Has to be given: null moves the category to the top level, so a request that forgets it does not move anything by accident."
parentId: ID
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Moves a step to another position within its operation. Errors: the request is invalid; OperationStepNotFound (the step was not found). - Request"
input MoveOperationStepCommandRequestInput {
"The ID of the step to move."
operationStepId: ID!
"The new position of the step within its operation."
sortIndex: Int!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Moves a payment to a sales invoice of the same sales order. The amount counts for the invoice from then on; an invoice that becomes fully paid starts its workflows. Errors: PAYMENT_NOT_FOUND (the payment was not found); SALES_INVOICE_NOT_FOUND (the sales invoice was not found); DOCUMENT_NOT_OF_PAYMENT_SALES_ORDER (the invoice does not belong to the sales order of the payment); SALES_INVOICE_IS_DRAFT (the invoice is a draft; finalise it first); SALES_INVOICE_CANCELLED (the invoice is cancelled; the payments of a cancelled invoice belong to the sales order); PAYMENT_CANNOT_BE_MOVED (the payment cannot be moved. The error lists the blocker codes: PAYMENT_BOOKED_BY_REFUND). - Request"
input MovePaymentToSalesInvoiceCommandRequestInput {
"The ID of the payment."
paymentId: ID!
"The sales invoice the payment counts for from now on."
salesInvoiceId: ID!
"Whether to suppress the workflows this call would start because a sales order or a sales invoice becomes fully paid. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Moves a payment to an invoice correction of the same sales order. An invoice that becomes fully paid starts its workflows. - Request"
input MovePaymentToSalesInvoiceCorrectionCommandRequestInput {
"The ID of the payment."
paymentId: ID!
"The sales invoice correction the payment counts for from now on. A sales credit note ID fails as not found."
salesInvoiceCorrectionId: ID!
"Whether to suppress the workflows this call would start because a sales order or a sales invoice becomes fully paid. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Moves a payment to the sales order recorded on it, for example a payment of an invoice that belongs on the order. The amount counts for the order from then on. Moving a payout away from an invoice or an invoice correction raises the paid amount of the invoice, which can then become fully paid and start its workflows. Errors: PAYMENT_NOT_FOUND (the payment was not found); PAYMENT_HAS_NO_SALES_ORDER (no sales order is recorded on the payment); PAYMENT_CANNOT_BE_MOVED (the payment cannot be moved. The error lists the blocker codes: PAYMENT_BOOKED_BY_REFUND). - Request"
input MovePaymentToSalesOrderCommandRequestInput {
"The ID of the payment."
paymentId: ID!
"Whether to suppress the workflows this call would start because a sales order or a sales invoice becomes fully paid. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Ships all quantities of an open stock transfer from the source warehouse into the transit warehouse. Batch numbers, shelf life expiration dates and serial numbers of the shipped stock are kept. Afterwards the stock transfer is in transit and its line items can no longer be changed. - Request"
input MoveStockTransferToTransitCommandRequestInput {
"The ID of the stock transfer to ship."
stockTransferId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"The keys of several options."
input MultiChoiceWarehouseSettingValueInput {
"The keys of the chosen options. Empty when none is chosen."
values: [String]!
}
"An allowed value of a multilingual value list attribute, when written."
input MultilingualAllowedValueInput {
"The texts per language. The text in the default language is required; the other languages are optional."
texts: [AttributeValueTextInput]!
"The text this entry had in the default language in the current list. Values assigned to items and categories with that text change to the new text. Omit for unchanged and new entries."
renamedFrom: String
}
"A tier that states the net price."
input NetPriceTierInput {
"The quantity from which the tier applies. The first tier starts at 1."
fromQuantity: Decimal!
"The net price from this quantity on."
netPrice: Decimal!
}
"A tier that states the net purchase price."
input NetSupplierPriceTierInput {
"The quantity from which the tier applies. The first tier starts at 0 or 1."
fromQuantity: Decimal!
"The net purchase price from this quantity on."
netPrice: Decimal!
}
"The name and the description of a new cross-selling group in one language."
input NewCrossSellingGroupTranslationInput {
"The language as BCP 47 tag, for example 'de' or 'de-AT'. Case does not matter on input. It must be a language Wawi is set up for (errorCode is CROSS_SELLING_GROUP_LANGUAGE_NOT_ACTIVE)."
languageTag: String!
"The name in this language, 1 to 255 characters. Leading and trailing spaces are removed."
name: String!
"The description in this language, at most 255 characters. Optional."
description: String
}
"An address given when a customer is created. First name and last name have at most 126 characters and the city at most 64 characters here."
input NewCustomerAddressInput {
"The company name, at most 128 characters. Omitted means none."
companyName: String
"An addition to the company name, at most 60 characters. Omitted means none."
companyAddition: String
"The salutation, at most 30 characters. Omitted means none."
salutation: String
"The academic title, at most 64 characters. Omitted means none."
title: String
"The first name, at most 126 characters. Omitted means none."
firstName: String
"The last name, at most 126 characters. Omitted means none."
lastName: String
"Street and house number, at most 255 characters. Omitted means none."
street: String
"An addition to the address, at most 255 characters. Omitted means none."
addressAddition: String
"The postal code, at most 24 characters. Omitted means none."
postalCode: String
"The city, at most 64 characters. Omitted means none."
city: String
"The state or region, at most 255 characters. Omitted means none."
state: String
"The country as ISO 3166-1 alpha-2 code, 2 characters."
countryCode: String!
"The email address, at most 255 characters. Omitted means none."
email: String
"The phone number, at most 30 characters. Omitted means none."
phone: String
"The mobile number, at most 30 characters. Omitted means none."
mobile: String
"The fax number, at most 30 characters. Omitted means none."
fax: String
"The post number for parcel lockers, at most 255 characters. Omitted means none."
postId: String
"The VAT identification number, at most 20 characters. Omitted means none."
vatId: String
"The Global Location Number, at most 13 characters. Omitted means none."
gln: String
}
"A cash discount given when payment terms are written."
input NewCustomerCashDiscountInput {
"The discount in percent, greater than 0 and at most 100."
percent: Decimal!
"Days within which the discount applies, 1 to 999."
days: Int!
}
"Payment terms given when a customer is created."
input NewCustomerPaymentTermsInput {
"The default payment method. Omitted means none."
paymentMethodId: ID
"Days until payment is due, 0 to 999. Omitted means the global default."
paymentTermDays: Int
"The cash discount. Omitted means none."
cashDiscount: NewCustomerCashDiscountInput
}
"A free-text variation to add to an item. The ID is assigned on creation."
input NewFreeTextVariationInput {
"Display name in the default language. It is the label of the input field."
name: String!
"The label in further languages."
names: [LocalizedTextInput]!
"Whether the customer has to enter a text. Defaults to false when omitted."
isRequired: Boolean
}
"A new regular item that is created as a combination of the parent. It takes over the categories of the parent and has none of its own."
input NewItemCombinationInput {
"The chosen value for every axis of the parent, one per axis."
values: [CombinationValueInput]!
"The item number of the new item, unique among all items."
sku: String!
"The name of the new item in the default language."
name: String!
}
"A container (German 'Gebinde') to add to an item. The ID is assigned on creation."
input NewItemContainerInput {
"The unit the container is traded in, for example box."
unitId: ID!
"How many units of the item the container holds."
quantity: Decimal!
"Global Trade Item Number of the container."
gtin: String
"Universal Product Code of the container."
upc: String
}
"The default texts of a new item in one language."
input NewItemDescriptionInput {
"The language of the texts as BCP 47 language tag, for example 'de' or 'de-AT'. Language subtag in lower case, region subtag in upper case; the input is not case-sensitive."
languageTag: String!
"The name of the item."
name: String!
"Short description."
shortDescription: String
"Long description, may contain HTML."
description: String
}
"The setting that goods receipt creates an item that does not exist yet, when written."
input NewItemOnReceiptInput {
"The category the new items are put into."
categoryId: ID!
}
"A material of a packaging to write. Either a material of the master data or an own name."
input NewItemPackagingMaterialInput {
"The material from the master data. Exactly one of materialId and customName."
materialId: ID
"The own name of the material. Exactly one of materialId and customName."
customName: String
"Weight of the material in grams. Greater than zero."
weightInGrams: Decimal!
}
"The prices of an item sent in one call together with the item. Every part is the model of the matching prices route. Every list holds one entry per currency, where the currency is part of the entry."
input NewItemPricesInput {
"The standard prices, one entry per currency."
standardPrices: [StandardPricesInput]!
"The price lists per sales channel, customer group and currency."
customerGroupPrices: [CustomerGroupPriceEntryInput]!
"The individual prices per customer and currency."
customerPrices: [CustomerPriceListInput]!
"The special prices, one per currency."
specialPrices: [ItemSpecialPriceInput]!
}
"A supplier item sent in one call together with the item. It is the model of the supplier item route."
input NewItemSupplierInput {
"The ID of the supplier."
supplierId: ID!
"The item number the supplier uses for the item."
supplierItemNumber: String
"The name the supplier uses for the item."
supplierItemName: String
"The VAT rate of the purchase price, in percent."
vatRate: Decimal!
"The currency of the purchase price as ISO 4217 code."
currencyCode: String
"The tiers of the purchase price, at least one. A tier from quantity 0 or 1 is the base price."
purchasePriceTiers: [SupplierPriceTierInput]!
"The delivery time in days that the supplier item has of its own. Absent when the delivery time of the supplier applies."
ownDeliveryTimeInDays: Int
"The stock of the supplier, when it is considered. Absent when it is not."
supplierStock: SupplierStockInput
"Whether the supplier ships to the customers directly."
isDropshippingActive: Boolean!
"How the supplier packs the item. Absent when it is not maintained."
packageUnit: SupplierPackageUnitInput
"The smallest quantity that is purchased."
minimumPurchaseQuantity: Decimal
"The interval in which the quantity is purchased, for example 6 for packs of six."
purchaseInterval: Decimal
"Free-text notes on the supplier item."
notes: String
}
"A component to add to a kit. The position follows from the order of the list or is appended."
input NewKitComponentInput {
"The ID of the component item. It has to be active and no kit and no variation parent (a kit does not contain a kit, and a variation parent is not sold itself). A combination of a variation parent is allowed."
componentItemId: ID!
"How many units of the component one unit of the kit consumes. Greater than zero."
quantity: Decimal!
"Free-text comment on the component."
comment: String
}
"A selection variation to add to an item, with its values. The ID is assigned on creation."
input NewSelectionVariationInput {
"Display name in the default language."
name: String!
"The display name in further languages."
names: [LocalizedTextInput]!
"How the shop shows the variation. The style is one of DROPDOWN, RADIO_BUTTONS, IMAGE_SWATCHES or TEXT_SWATCHES. It changes how the axis is shown in the shop, not which fields exist. The list can grow with the shops; a client treats a value it does not know like DROPDOWN."
style: String!
"The values in their order. At least one."
values: [NewVariationValueInput]!
}
"The new value of a setting, for writing, in REST and GraphQL alike. Exactly one field is set, the one that matches the type of the setting; none or several is rejected with SettingValueInvalid, a field of another type with SettingValueTypeMismatch. Reading uses SettingValue."
input NewSettingValueInput {
"For a setting of the type Boolean: true or false."
booleanValue: Boolean
"For a setting of the type Integer: the number."
integerValue: Long
"For a setting of the type Decimal: the number."
decimalValue: Decimal
"For a setting of the type Text: the text."
textValue: String
"For a setting of the type DateTime: the point in time."
dateTimeValue: DateTime
"For a setting of the type Choice: the key of the chosen option."
choiceKey: String
"For a setting of the type MultiChoice: the chosen options. A list with no key chooses none. Wrapped in an object so the field can be left out (a bare list would be required in GraphQL)."
multiChoice: ChoiceKeyListInput
"For a setting of the type Secret: the new secret. It is never returned."
secretValue: String
}
"A new variation axis with its values. The ID is assigned on creation."
input NewVariationAxisInput {
"Display name of the axis in the default language."
name: String!
"The display name of the axis in further languages."
names: [LocalizedTextInput]!
"How the shop shows the axis. The style is one of DROPDOWN, RADIO_BUTTONS, IMAGE_SWATCHES or TEXT_SWATCHES. It changes how the axis is shown in the shop, not which fields exist. The list can grow with the shops; a client treats a value it does not know like DROPDOWN."
style: String!
"The values of the axis in their order. At least one."
values: [NewVariationValueInput]!
}
"A combination to create. It has the shape of a proposal without 'alreadyExists', so proposals can be sent back as they are after choosing and, if wanted, changing sku and name."
input NewVariationCombinationInput {
"The item number of the new item, unique among all items."
sku: String!
"The name of the new item in the default language."
name: String!
"The value on every axis of the parent, one per axis."
values: [VariationValueAssignmentInput]!
}
"A value of a new variation axis. The ID is assigned on creation."
input NewVariationValueInput {
"Display name of the value in the default language."
name: String!
"The display name of the value in further languages."
names: [LocalizedTextInput]!
"Own item number suffix or number of the value."
sku: String
"Own GTIN of the value."
gtin: String
"Default surcharge in net on the price of the item when the value is chosen."
surchargeNet: Decimal
"Weight in kilograms that the value adds to the weight of the item."
weightOffset: Decimal
"Surcharges per customer group, which take precedence over the default surcharge."
customerGroupSurcharges: [CustomerGroupSurchargeInput]!
"Surcharges per sales channel, which take precedence over the default surcharge."
salesChannelSurcharges: [SalesChannelSurchargeInput]!
}
"Changes a condition that only informs."
input NoStockItemConditionChangesInput {
"The new colour as hex value with a leading '#'. Null removes it."
color: String
"The new position in lists; smaller comes first. Other conditions keep their position."
sortOrder: Int
}
"Creates a condition that only informs."
input NoStockItemConditionCreationInput {
"The names, one per language, at least one. It must contain the standard language of the Wawi."
translations: [ItemConditionTranslationInput]!
"The colour as hex value with a leading '#', for example #0ead00. Omitted or null: white (#ffffff)."
color: String
"The position in lists. Omitted: behind the last condition."
sortOrder: Int
"Where the condition can be chosen. Omitted or null: no restriction."
restriction: ItemConditionRestrictionInput
}
input NotizKeySortInput {
kNotiz: SortEnumType @cost(weight: "10")
}
"The rule by which the system builds the numbers of one type: text in front of the counter, the counter, and text behind it. A range without a company is the global range that every company without a range of its own uses; a range with a company applies to the documents of that company only."
input NumberRangeFilterInput {
and: [NumberRangeFilterInput!]
or: [NumberRangeFilterInput!]
"The ID of the number range."
id: ComparableNumberRangeKeyOperationFilterInput @cost(weight: "15")
"The key of the number range type in upper case (UPPER_SNAKE_CASE), see 'QueryNumberRangeTypes'. It cannot change. A client that meets a key it does not know shows it as it is."
typeKey: StringOperationFilterInput @cost(weight: "50")
"The company the range is for. Empty for the global range of the type. It cannot change."
companyId: ComparableFirmaKeyOperationFilterInput @cost(weight: "50")
}
"Schlüssel für einen Nummernkreis Datensatz"
input NumberRangeKeySortInput {
"Der Eindeutige Schlüssel eines Nummernkreises"
kLaufendeNummer: SortEnumType @cost(weight: "10")
}
"The rule by which the system builds the numbers of one type: text in front of the counter, the counter, and text behind it. A range without a company is the global range that every company without a range of its own uses; a range with a company applies to the documents of that company only."
input NumberRangeSortInput {
"The ID of the number range."
id: NumberRangeKeySortInput @cost(weight: "15")
"The key of the number range type in upper case (UPPER_SNAKE_CASE), see 'QueryNumberRangeTypes'. It cannot change. A client that meets a key it does not know shows it as it is."
typeKey: SortEnumType @cost(weight: "50")
"The company the range is for. Empty for the global range of the type. It cannot change."
companyId: FirmaKeySortInput @cost(weight: "50")
}
"A kind of number the system issues, for example sales invoice numbers. A client must not assume it knows all keys."
input NumberRangeTypeFilterInput {
and: [NumberRangeTypeFilterInput!]
or: [NumberRangeTypeFilterInput!]
"The stable key of the type, upper case words joined by underscores (UPPER_SNAKE_CASE), for example 'SALES_INVOICE'. It is the value of 'typeKey' on number ranges. Responses always carry the key in upper case; filter values and arguments are accepted in any case. The set of keys can grow: a key that a client does not know is not an error."
key: StringOperationFilterInput @cost(weight: "50")
"The name of the type in the language of the caller."
name: StringOperationFilterInput @cost(weight: "200")
}
"A kind of number the system issues, for example sales invoice numbers. A client must not assume it knows all keys."
input NumberRangeTypeSortInput {
"The stable key of the type, upper case words joined by underscores (UPPER_SNAKE_CASE), for example 'SALES_INVOICE'. It is the value of 'typeKey' on number ranges. Responses always carry the key in upper case; filter values and arguments are accepted in any case. The set of keys can grow: a key that a client does not know is not an error."
key: SortEnumType @cost(weight: "50")
"The name of the type in the language of the caller."
name: SortEnumType @cost(weight: "200")
}
"A reason for holding back a sales order. Any on-hold reason makes the order not deliverable until the reason is removed from it; the reason itself decides whether the order may be merged with others and whether its items count for the purchase list. The model serves list and detail alike."
input OnHoldReasonFilterInput {
and: [OnHoldReasonFilterInput!]
or: [OnHoldReasonFilterInput!]
"The ID of the on-hold reason."
id: ComparableRueckhaltegrundKeyOperationFilterInput @cost(weight: "15")
"The name of the reason."
name: StringOperationFilterInput @cost(weight: "50")
"Whether orders that carry this reason may be merged with other orders of the same customer."
isMergeable: ComparableBooleanOperationFilterInput @cost(weight: "50")
"Whether the items of orders that carry this reason are left out when the purchase list is calculated."
isExcludedFromPurchaseList: ComparableBooleanOperationFilterInput @cost(weight: "50")
}
"A reason for holding back a sales order. Any on-hold reason makes the order not deliverable until the reason is removed from it; the reason itself decides whether the order may be merged with others and whether its items count for the purchase list. The model serves list and detail alike."
input OnHoldReasonSortInput {
"The ID of the on-hold reason."
id: RueckhaltegrundKeySortInput @cost(weight: "15")
"The name of the reason."
name: SortEnumType @cost(weight: "50")
}
"An operation is a reusable work step definition of production, e.g. sawing or assembling. Bills of materials refer to operations, and an operation describes its work in steps."
input OperationFilterInput {
and: [OperationFilterInput!]
or: [OperationFilterInput!]
"The ID of the operation."
id: ComparableOperationKeyOperationFilterInput @cost(weight: "15")
"The number of the operation. Unique across all operations."
operationNumber: StringOperationFilterInput @cost(weight: "15")
"The name of the operation."
name: StringOperationFilterInput @cost(weight: "50")
"Indicates whether the operation is active."
isActive: ComparableBooleanOperationFilterInput @cost(weight: "50")
"The timestamp when the operation was created."
createdAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "50")
"The timestamp of the last change of the operation."
changedAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "50")
}
input OperationKeySortInput {
kOperation: SortEnumType @cost(weight: "10")
}
"A resource that is assigned to an operation. The resource is required to carry out the operation."
input OperationResourceFilterInput {
and: [OperationResourceFilterInput!]
or: [OperationResourceFilterInput!]
"The ID of the assigned resource."
resourceId: ComparableResourceKeyOperationFilterInput @cost(weight: "15")
}
"A resource group that is assigned to an operation. One of the resources of the group is required to carry out the operation."
input OperationResourceGroupFilterInput {
and: [OperationResourceGroupFilterInput!]
or: [OperationResourceGroupFilterInput!]
"The ID of the assigned resource group."
resourceGroupId: ComparableResourceGroupKeyOperationFilterInput @cost(weight: "15")
}
"A resource group that is assigned to an operation. One of the resources of the group is required to carry out the operation."
input OperationResourceGroupSortInput {
"The ID of the assigned resource group."
resourceGroupId: ResourceGroupKeySortInput @cost(weight: "15")
}
"A resource that is assigned to an operation. The resource is required to carry out the operation."
input OperationResourceSortInput {
"The ID of the assigned resource."
resourceId: ResourceKeySortInput @cost(weight: "15")
}
"An operation is a reusable work step definition of production, e.g. sawing or assembling. Bills of materials refer to operations, and an operation describes its work in steps."
input OperationSortInput {
"The ID of the operation."
id: OperationKeySortInput @cost(weight: "15")
"The number of the operation. Unique across all operations."
operationNumber: SortEnumType @cost(weight: "15")
"The name of the operation."
name: SortEnumType @cost(weight: "50")
"Indicates whether the operation is active."
isActive: SortEnumType @cost(weight: "50")
"The timestamp when the operation was created."
createdAt: SortEnumType @cost(weight: "50")
"The timestamp of the last change of the operation."
changedAt: SortEnumType @cost(weight: "50")
}
"A step of an operation. It describes a part of the work of the operation with texts in several languages."
input OperationStepFilterInput {
and: [OperationStepFilterInput!]
or: [OperationStepFilterInput!]
"The ID of the step."
id: ComparableOperationStepKeyOperationFilterInput @cost(weight: "15")
"The name of the step."
name: StringOperationFilterInput @cost(weight: "50")
}
"A new step of a new operation."
input OperationStepInput {
"The name of the step. Must not consist of white space only."
name: String!
"The texts of the new step, at most one per language. At least the text in the default language is required."
texts: [OperationStepTextInput]!
}
input OperationStepKeySortInput {
kOperationStep: SortEnumType @cost(weight: "10")
}
"A step of an operation. It describes a part of the work of the operation with texts in several languages."
input OperationStepSortInput {
"The ID of the step."
id: OperationStepKeySortInput @cost(weight: "15")
"The position of the step within its operation. Changed only by moving the step."
sortIndex: SortEnumType @cost(weight: "50")
"The name of the step."
name: SortEnumType @cost(weight: "50")
}
"The text of an operation step in one language."
input OperationStepTextFilterInput {
and: [OperationStepTextFilterInput!]
or: [OperationStepTextFilterInput!]
"The language of the text as a BCP 47 language tag, e.g. \"de\" or \"de-AT\". The language subtag is lowercase and the region subtag uppercase; input is case-insensitive."
languageTag: StringOperationFilterInput @cost(weight: "200")
}
"The text of a new operation step in one language."
input OperationStepTextInput {
"The language of the text as a BCP 47 language tag, e.g. \"de\" or \"de-AT\". The language subtag is lowercase and the region subtag uppercase; input is case-insensitive."
languageTag: String!
"The text of the step in this language. Must not consist of white space only."
text: String!
}
"The text of an operation step in one language."
input OperationStepTextSortInput {
"The language of the text as a BCP 47 language tag, e.g. \"de\" or \"de-AT\". The language subtag is lowercase and the region subtag uppercase; input is case-insensitive."
languageTag: SortEnumType @cost(weight: "200")
}
"The value of a sync option. An option accepts the type its definition names."
input OptionValueInput @oneOf {
"A yes or no value."
booleanOptionValue: BooleanOptionValueInput
"A whole number."
integerOptionValue: IntegerOptionValueInput
"A text."
textOptionValue: TextOptionValueInput
}
"A document type output templates exist for, with the channels and assignment criteria it supports."
input OutputDocumentTypeInfoFilterInput {
and: [OutputDocumentTypeInfoFilterInput!]
or: [OutputDocumentTypeInfoFilterInput!]
"The document type. Known values: SALES_QUOTATION, SALES_ORDER, SALES_INVOICE, DELIVERY_NOTE, SALES_INVOICE_CORRECTION, PRICE_LIST, CUSTOMER_DETAILS, CUSTOMER_MESSAGE, STOCK_VALUATION, INVENTORY_DIFFERENCE_LIST, ITEM_LABEL, SHIPPING_LABEL, SUPPLIER_MESSAGE, WAREHOUSE_PACK_LIST, SHIPPING_LIST, STORAGE_LOCATION_LABEL, PURCHASE_ORDER, PURCHASE_ORDER_REMINDER, SUPPLIER_PRICE_REQUEST, FULFILLMENT_ORDER, PICK_LIST, PUTAWAY_LIST, WMS_INVENTORY_LIST, PAYMENT_RECEIPT, SHIPPING_NOTIFICATION, DUNNING_LETTER, SALES_RETURN, RETURN_LABEL_EMAIL, ADDRESS_LABEL, VOUCHER, EXTERNAL_DOCUMENT, PDF, PACKAGE_ID_LABEL, SSCC_LABEL. The list is the catalogue of QueryOutputDocumentTypes and grows with the product. A client treats a value it does not know as a document type it cannot handle and does not offer it; the server answers an unknown value in a body with 422 and in a path or query with 404 (OUTPUT_DOCUMENT_TYPE_NOT_FOUND)."
documentType: StringOperationFilterInput @cost(weight: "50")
"The display name of the document type."
name: StringOperationFilterInput @cost(weight: "50")
"The business area the document type belongs to. Known values: SALES, PURCHASING, WAREHOUSE, OTHER. New values can be added without a contract change. A client files a group it does not know under the other groups."
group: StringOperationFilterInput @cost(weight: "50")
}
"A document type output templates exist for, with the channels and assignment criteria it supports."
input OutputDocumentTypeInfoSortInput {
"The document type. Known values: SALES_QUOTATION, SALES_ORDER, SALES_INVOICE, DELIVERY_NOTE, SALES_INVOICE_CORRECTION, PRICE_LIST, CUSTOMER_DETAILS, CUSTOMER_MESSAGE, STOCK_VALUATION, INVENTORY_DIFFERENCE_LIST, ITEM_LABEL, SHIPPING_LABEL, SUPPLIER_MESSAGE, WAREHOUSE_PACK_LIST, SHIPPING_LIST, STORAGE_LOCATION_LABEL, PURCHASE_ORDER, PURCHASE_ORDER_REMINDER, SUPPLIER_PRICE_REQUEST, FULFILLMENT_ORDER, PICK_LIST, PUTAWAY_LIST, WMS_INVENTORY_LIST, PAYMENT_RECEIPT, SHIPPING_NOTIFICATION, DUNNING_LETTER, SALES_RETURN, RETURN_LABEL_EMAIL, ADDRESS_LABEL, VOUCHER, EXTERNAL_DOCUMENT, PDF, PACKAGE_ID_LABEL, SSCC_LABEL. The list is the catalogue of QueryOutputDocumentTypes and grows with the product. A client treats a value it does not know as a document type it cannot handle and does not offer it; the server answers an unknown value in a body with 422 and in a path or query with 404 (OUTPUT_DOCUMENT_TYPE_NOT_FOUND)."
documentType: SortEnumType @cost(weight: "50")
"The display name of the document type."
name: SortEnumType @cost(weight: "50")
"The business area the document type belongs to. Known values: SALES, PURCHASING, WAREHOUSE, OTHER. New values can be added without a contract change. A client files a group it does not know under the other groups."
group: SortEnumType @cost(weight: "50")
}
"The value of one assignment criterion to set on a template."
input OutputTemplateAssignmentInput {
"The key of the criterion of the document type. Known values: COMPANY, CUSTOMER_GROUP, LANGUAGE, SUPPLIER, WAREHOUSE, DUNNING_LEVEL, SHIPPING_METHOD."
criterion: String!
"The value, one of those the value source of the criterion lists."
value: String!
}
"A template as shown in lists."
input OutputTemplateListEntryFilterInput {
and: [OutputTemplateListEntryFilterInput!]
or: [OutputTemplateListEntryFilterInput!]
"The unique identifier of the template."
id: ComparableVorlageKeyOperationFilterInput @cost(weight: "15")
"The name of the template."
name: StringOperationFilterInput @cost(weight: "50")
"The document type the template belongs to. Known values: SALES_QUOTATION, SALES_ORDER, SALES_INVOICE, DELIVERY_NOTE, SALES_INVOICE_CORRECTION, PRICE_LIST, CUSTOMER_DETAILS, CUSTOMER_MESSAGE, STOCK_VALUATION, INVENTORY_DIFFERENCE_LIST, ITEM_LABEL, SHIPPING_LABEL, SUPPLIER_MESSAGE, WAREHOUSE_PACK_LIST, SHIPPING_LIST, STORAGE_LOCATION_LABEL, PURCHASE_ORDER, PURCHASE_ORDER_REMINDER, SUPPLIER_PRICE_REQUEST, FULFILLMENT_ORDER, PICK_LIST, PUTAWAY_LIST, WMS_INVENTORY_LIST, PAYMENT_RECEIPT, SHIPPING_NOTIFICATION, DUNNING_LETTER, SALES_RETURN, RETURN_LABEL_EMAIL, ADDRESS_LABEL, VOUCHER, EXTERNAL_DOCUMENT, PDF, PACKAGE_ID_LABEL, SSCC_LABEL. The list is the catalogue of QueryOutputDocumentTypes and grows with the product. A client treats a value it does not know as a document type it cannot handle and does not offer it; the server answers an unknown value in a body with 422 and in a path or query with 404 (OUTPUT_DOCUMENT_TYPE_NOT_FOUND)."
documentType: StringOperationFilterInput @cost(weight: "50")
"The time the template was last changed."
changedAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "50")
}
"A template as shown in lists."
input OutputTemplateListEntrySortInput {
"The unique identifier of the template."
id: VorlageKeySortInput @cost(weight: "15")
"The name of the template."
name: SortEnumType @cost(weight: "50")
"The document type the template belongs to. Known values: SALES_QUOTATION, SALES_ORDER, SALES_INVOICE, DELIVERY_NOTE, SALES_INVOICE_CORRECTION, PRICE_LIST, CUSTOMER_DETAILS, CUSTOMER_MESSAGE, STOCK_VALUATION, INVENTORY_DIFFERENCE_LIST, ITEM_LABEL, SHIPPING_LABEL, SUPPLIER_MESSAGE, WAREHOUSE_PACK_LIST, SHIPPING_LIST, STORAGE_LOCATION_LABEL, PURCHASE_ORDER, PURCHASE_ORDER_REMINDER, SUPPLIER_PRICE_REQUEST, FULFILLMENT_ORDER, PICK_LIST, PUTAWAY_LIST, WMS_INVENTORY_LIST, PAYMENT_RECEIPT, SHIPPING_NOTIFICATION, DUNNING_LETTER, SALES_RETURN, RETURN_LABEL_EMAIL, ADDRESS_LABEL, VOUCHER, EXTERNAL_DOCUMENT, PDF, PACKAGE_ID_LABEL, SSCC_LABEL. The list is the catalogue of QueryOutputDocumentTypes and grows with the product. A client treats a value it does not know as a document type it cannot handle and does not offer it; the server answers an unknown value in a body with 422 and in a path or query with 404 (OUTPUT_DOCUMENT_TYPE_NOT_FOUND)."
documentType: SortEnumType @cost(weight: "50")
"The time the template was last changed."
changedAt: SortEnumType @cost(weight: "50")
}
"A template set. It groups the templates of one document type. Exactly one set per document type is the standard."
input OutputTemplateSetFilterInput {
and: [OutputTemplateSetFilterInput!]
or: [OutputTemplateSetFilterInput!]
"The unique identifier of the template set."
id: ComparableVorlagenSetKeyOperationFilterInput @cost(weight: "15")
"The document type the template set belongs to. Known values: SALES_QUOTATION, SALES_ORDER, SALES_INVOICE, DELIVERY_NOTE, SALES_INVOICE_CORRECTION, PRICE_LIST, CUSTOMER_DETAILS, CUSTOMER_MESSAGE, STOCK_VALUATION, INVENTORY_DIFFERENCE_LIST, ITEM_LABEL, SHIPPING_LABEL, SUPPLIER_MESSAGE, WAREHOUSE_PACK_LIST, SHIPPING_LIST, STORAGE_LOCATION_LABEL, PURCHASE_ORDER, PURCHASE_ORDER_REMINDER, SUPPLIER_PRICE_REQUEST, FULFILLMENT_ORDER, PICK_LIST, PUTAWAY_LIST, WMS_INVENTORY_LIST, PAYMENT_RECEIPT, SHIPPING_NOTIFICATION, DUNNING_LETTER, SALES_RETURN, RETURN_LABEL_EMAIL, ADDRESS_LABEL, VOUCHER, EXTERNAL_DOCUMENT, PDF, PACKAGE_ID_LABEL, SSCC_LABEL. The list is the catalogue of QueryOutputDocumentTypes and grows with the product. A client treats a value it does not know as a document type it cannot handle and does not offer it; the server answers an unknown value in a body with 422 and in a path or query with 404 (OUTPUT_DOCUMENT_TYPE_NOT_FOUND)."
documentType: StringOperationFilterInput @cost(weight: "50")
"The name of the template set."
name: StringOperationFilterInput @cost(weight: "50")
"Whether this is the standard template set of its document type."
isStandard: ComparableBooleanOperationFilterInput @cost(weight: "200")
}
"A template set. It groups the templates of one document type. Exactly one set per document type is the standard."
input OutputTemplateSetSortInput {
"The document type the template set belongs to. Known values: SALES_QUOTATION, SALES_ORDER, SALES_INVOICE, DELIVERY_NOTE, SALES_INVOICE_CORRECTION, PRICE_LIST, CUSTOMER_DETAILS, CUSTOMER_MESSAGE, STOCK_VALUATION, INVENTORY_DIFFERENCE_LIST, ITEM_LABEL, SHIPPING_LABEL, SUPPLIER_MESSAGE, WAREHOUSE_PACK_LIST, SHIPPING_LIST, STORAGE_LOCATION_LABEL, PURCHASE_ORDER, PURCHASE_ORDER_REMINDER, SUPPLIER_PRICE_REQUEST, FULFILLMENT_ORDER, PICK_LIST, PUTAWAY_LIST, WMS_INVENTORY_LIST, PAYMENT_RECEIPT, SHIPPING_NOTIFICATION, DUNNING_LETTER, SALES_RETURN, RETURN_LABEL_EMAIL, ADDRESS_LABEL, VOUCHER, EXTERNAL_DOCUMENT, PDF, PACKAGE_ID_LABEL, SSCC_LABEL. The list is the catalogue of QueryOutputDocumentTypes and grows with the product. A client treats a value it does not know as a document type it cannot handle and does not offer it; the server answers an unknown value in a body with 422 and in a path or query with 404 (OUTPUT_DOCUMENT_TYPE_NOT_FOUND)."
documentType: SortEnumType @cost(weight: "50")
"The name of the template set."
name: SortEnumType @cost(weight: "50")
"The unique identifier of the template set."
id: VorlagenSetKeySortInput @cost(weight: "15")
}
"Changes a condition with own items."
input OwnItemConditionChangesInput {
"The new colour as hex value with a leading '#'. Null removes it."
color: String
"The new position in lists; smaller comes first. Other conditions keep their position."
sortOrder: Int
"The new suffix, 1 to 50 characters, unique among the conditions with own items, ignoring letter case. Existing condition items keep their suffix."
suffix: String
"Whether the supplier data of the main item is copied to a new condition item."
copySupplierData: Boolean
}
"Creates a condition whose items are their own items with their own stock."
input OwnItemConditionCreationInput {
"The names, one per language, at least one. It must contain the standard language of the Wawi."
translations: [ItemConditionTranslationInput]!
"The colour as hex value with a leading '#', for example #0ead00. Omitted or null: white (#ffffff)."
color: String
"The position in lists. Omitted: behind the last condition."
sortOrder: Int
"Where the condition can be chosen. Omitted or null: no restriction."
restriction: ItemConditionRestrictionInput
"The suffix of the condition items, 1 to 50 characters, unique among the conditions with own items, ignoring letter case."
suffix: String!
"Whether the supplier data of the main item is copied to a new condition item. Omitted: true."
copySupplierData: Boolean
}
"One package ID label selection: the object and how many labels to output."
input PackageIdLabelEntryInput {
"The ID of the object."
packageId: ID!
"The number of labels of this object. At least 1; a lower value is refused with OUTPUT_LABEL_ENTRY_INVALID."
quantity: Int!
}
"An item that is used as shipping carton or packaging material and is assigned to shipping methods. Creating or changing one is an item operation."
input PackagingMaterialFilterInput {
and: [PackagingMaterialFilterInput!]
or: [PackagingMaterialFilterInput!]
"The ID of the item that is the packaging material."
id: ComparableArtikelKeyOperationFilterInput @cost(weight: "15")
"The item number (SKU)."
itemNumber: StringOperationFilterInput @cost(weight: "50")
"The name of the item in the default language."
name: StringOperationFilterInput @cost(weight: "200")
"The GTIN of the item."
gtin: StringOperationFilterInput @cost(weight: "50")
}
"An item that is used as shipping carton or packaging material and is assigned to shipping methods. Creating or changing one is an item operation."
input PackagingMaterialSortInput {
"The ID of the item that is the packaging material."
id: ArtikelKeySortInput @cost(weight: "15")
"The item number (SKU)."
itemNumber: SortEnumType @cost(weight: "50")
"The name of the item in the default language."
name: SortEnumType @cost(weight: "200")
}
"A bank account, a payment provider account or an external account whose transactions the ERP reads in and matches."
input PaymentAccountFilterInput {
and: [PaymentAccountFilterInput!]
or: [PaymentAccountFilterInput!]
"The ID of the payment account."
id: ComparableZahlungsabgleichKontoKeyOperationFilterInput @cost(weight: "15")
"The payment provider of the account ('QueryPaymentProviders')."
providerId: ComparableZahlungsanbieterKeyOperationFilterInput @cost(weight: "50")
"The display name of the account."
name: StringOperationFilterInput @cost(weight: "50")
"Whether the account is hidden: it is not fetched, nothing can be imported into it, and its transactions are left out of the matching and out of the default list. Set with 'HidePaymentAccount' and 'ShowPaymentAccount'."
isHidden: ComparableBooleanOperationFilterInput @cost(weight: "50")
"Whether the automatic, unattended import of the account is locked. The ERP locks it itself when the bank asks for a confirmation or the credentials are no longer valid. Set with 'LockPaymentAccountAutoImport' and 'UnlockPaymentAccountAutoImport'."
isAutoImportLocked: ComparableBooleanOperationFilterInput @cost(weight: "50")
"Whether it is an external account: created with 'CreatePaymentAccount' and filled with 'ImportPaymentTransaction'. Follows from the provider."
isExternal: ComparableBooleanOperationFilterInput @cost(weight: "200")
"Whether the account can send money, for refunds and bank transfers. Follows from the provider."
canSend: ComparableBooleanOperationFilterInput @cost(weight: "200")
}
"A bank account, a payment provider account or an external account whose transactions the ERP reads in and matches."
input PaymentAccountSortInput {
"The ID of the payment account."
id: ZahlungsabgleichKontoKeySortInput @cost(weight: "15")
"The display name of the account."
name: SortEnumType @cost(weight: "50")
}
"Money received from or paid back to a customer for a sales order, sales invoice, sales invoice correction or sales credit note."
input PaymentFilterInput {
and: [PaymentFilterInput!]
or: [PaymentFilterInput!]
"The ID of the payment."
id: ComparableZahlungKeyOperationFilterInput @cost(weight: "15")
"The sales order of the payment. Also set for most payments of its invoices and corrections; never for credit notes."
salesOrderId: ComparableVerkaufAuftragKeyOperationFilterInput @cost(weight: "15")
"The sales invoice the payment counts for; for a payment of an invoice correction, the corrected invoice when it is known."
salesInvoiceId: ComparableRechnungKeyOperationFilterInput @cost(weight: "15")
"The sales invoice correction the payment counts for. Never a sales credit note."
salesInvoiceCorrectionId: ComparableGutschriftKeyOperationFilterInput @cost(weight: "15")
"The sales credit note the payment counts for. Only payouts count for one; when it is cancelled, they leave QueryPayments."
salesCreditNoteId: ComparableGutschriftKeyOperationFilterInput @cost(weight: "15")
"The payment transaction (bank, payment provider or marketplace) the payment was created from or matched with."
paymentTransactionId: ComparableZahlungsabgleichUmsatzKeyOperationFilterInput @cost(weight: "15")
"What the payment stands for. Known values: REGULAR, DUNNING_FEE_PAYMENT, CASH_DISCOUNT, VOUCHER_REDEMPTION. Treat unknown values as unknown."
kind: StringOperationFilterInput @cost(weight: "15")
"The date of the payment. Can be empty for old records that were imported without one."
paymentDate: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "15")
"The amount with two decimals: positive for money received, negative for money paid back."
amount: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The payment method. Can be empty for old records that were imported without one."
paymentMethodId: ComparableZahlungsartKeyOperationFilterInput @cost(weight: "50")
"The ID of the transaction at the payment provider, the marketplace or the bank, as it was delivered. For some shop orders it holds the payment note of the shop instead."
externalTransactionId: StringOperationFilterInput @cost(weight: "50")
"Whether money came in or went out; follows from the sign of 'amount'."
direction: ComparablePaymentDirectionOperationFilterInput @cost(weight: "200")
"The kind of sales document the payment counts for. Known values: SALES_ORDER, SALES_INVOICE, SALES_INVOICE_CORRECTION, SALES_CREDIT_NOTE."
documentType: StringOperationFilterInput @cost(weight: "200")
"The refund that booked this payment."
refundId: ComparableZahlungsabgleichAusgangKeyOperationFilterInput @cost(weight: "200")
}
"A cash discount given when a payment method is written."
input PaymentMethodCashDiscountInput {
"The discount in percent, greater than 0 and at most 100."
percent: Decimal!
"How many days the discount applies after the invoice date, at least 0."
days: Int!
}
"A payment method in a list. The other properties are only in the single payment method."
input PaymentMethodListEntryFilterInput {
and: [PaymentMethodListEntryFilterInput!]
or: [PaymentMethodListEntryFilterInput!]
"The ID of the payment method."
id: ComparableZahlungsartKeyOperationFilterInput @cost(weight: "15")
"The name in the default language."
name: StringOperationFilterInput @cost(weight: "15")
"Whether the payment method can be chosen for new documents."
isActive: ComparableBooleanOperationFilterInput @cost(weight: "50")
"Whether this is the payment method used when a customer has none."
isDefault: ComparableBooleanOperationFilterInput @cost(weight: "50")
}
"A payment method in a list. The other properties are only in the single payment method."
input PaymentMethodListEntrySortInput {
"The ID of the payment method."
id: ZahlungsartKeySortInput @cost(weight: "15")
"The name in the default language."
name: SortEnumType @cost(weight: "15")
}
"The name and the print texts of a payment method in one language."
input PaymentMethodTranslationFilterInput {
and: [PaymentMethodTranslationFilterInput!]
or: [PaymentMethodTranslationFilterInput!]
"The language as BCP 47 language tag, for example de or de-AT: language subtag in lower case, region subtag in upper case. Case does not matter on input."
languageTag: StringOperationFilterInput @cost(weight: "200")
"Whether this is the default language of the tenant. Its name is the name of the payment method."
isDefaultLanguage: ComparableBooleanOperationFilterInput @cost(weight: "200")
"The name of the payment method in this language."
name: StringOperationFilterInput @cost(weight: "200")
}
"The name and the print texts of a payment method in one language."
input PaymentMethodTranslationSortInput {
"The language as BCP 47 language tag, for example de or de-AT: language subtag in lower case, region subtag in upper case. Case does not matter on input."
languageTag: SortEnumType @cost(weight: "200")
"The name of the payment method in this language."
name: SortEnumType @cost(weight: "200")
}
"A kind of payment account the ERP can read transactions from: a banking standard, a file format, a payment provider, or external accounts that an integration fills. The list can grow with a release; it is a catalogue, not an enum."
input PaymentProviderFilterInput {
and: [PaymentProviderFilterInput!]
or: [PaymentProviderFilterInput!]
"The ID of the payment provider."
id: ComparableZahlungsanbieterKeyOperationFilterInput @cost(weight: "50")
"The name of the payment provider."
name: StringOperationFilterInput @cost(weight: "50")
"Whether transactions can be read from accounts of the provider."
canReceive: ComparableBooleanOperationFilterInput @cost(weight: "50")
"Whether accounts of the provider can send money."
canSend: ComparableBooleanOperationFilterInput @cost(weight: "50")
"Whether accounts of the provider are external accounts, filled with 'ImportPaymentTransaction'."
isExternal: ComparableBooleanOperationFilterInput @cost(weight: "50")
"Whether the licence covers the provider. Accounts of an unlicensed provider are not fetched."
isLicensed: ComparableBooleanOperationFilterInput @cost(weight: "50")
}
"A kind of payment account the ERP can read transactions from: a banking standard, a file format, a payment provider, or external accounts that an integration fills. The list can grow with a release; it is a catalogue, not an enum."
input PaymentProviderSortInput {
"The ID of the payment provider."
id: ZahlungsanbieterKeySortInput @cost(weight: "50")
"The name of the payment provider."
name: SortEnumType @cost(weight: "50")
}
"Money received from or paid back to a customer for a sales order, sales invoice, sales invoice correction or sales credit note."
input PaymentSortInput {
"The ID of the payment."
id: ZahlungKeySortInput @cost(weight: "15")
"The date of the payment. Can be empty for old records that were imported without one."
paymentDate: SortEnumType @cost(weight: "15")
"The amount with two decimals: positive for money received, negative for money paid back."
amount: SortEnumType @cost(weight: "50")
}
"What a part of a payment transaction is assigned to. Polymorphic: 'kind' selects the variant."
input PaymentTransactionAssignmentFilterInput {
and: [PaymentTransactionAssignmentFilterInput!]
or: [PaymentTransactionAssignmentFilterInput!]
"What the assignment is."
kind: ComparablePaymentTransactionAssignmentKindOperationFilterInput @cost(weight: "200")
"The amount assigned, in the currency of the transaction. Negative for a payout or for money taken back."
amount: ComparableDecimalOperationFilterInput @cost(weight: "200")
}
"What a part of a payment transaction is assigned to. Polymorphic: 'kind' selects the variant."
input PaymentTransactionAssignmentSortInput {
"What the assignment is."
kind: SortEnumType @cost(weight: "200")
"The amount assigned, in the currency of the transaction. Negative for a payout or for money taken back."
amount: SortEnumType @cost(weight: "200")
}
"Money observed on a payment account: a booking the bank, the payment provider or an external system reported. Assigning a transaction to a sales order or a sales invoice records a payment there (see the payments)."
input PaymentTransactionFilterInput {
and: [PaymentTransactionFilterInput!]
or: [PaymentTransactionFilterInput!]
"The ID of the payment transaction."
id: ComparableZahlungsabgleichUmsatzKeyOperationFilterInput @cost(weight: "15")
"The payment account the transaction belongs to."
paymentAccountId: ComparableZahlungsabgleichKontoKeyOperationFilterInput @cost(weight: "15")
"The ID of the transaction at the bank, the payment provider or the external system. Unique within the payment account, not across accounts."
transactionId: StringOperationFilterInput @cost(weight: "15")
"When the bank or the provider booked the transaction, in the time zone of the ERP server."
bookingDate: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "15")
"The amount with two decimals: positive for money received, negative for money sent or taken back."
amount: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The currency of the amount (ISO 4217), in upper case."
currencyCode: StringOperationFilterInput @cost(weight: "50")
"Whether the transaction is ignored: it is left out of the matching and out of the default list. Set with 'IgnorePaymentTransaction' and 'UnignorePaymentTransaction'; import filters and workflows can set it too."
isIgnored: ComparableBooleanOperationFilterInput @cost(weight: "50")
"When the transaction was last read in or refreshed from the bank, the provider or the external system. Assigning, ignoring or a note do not change it, so it is no change timestamp."
lastImportedAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "50")
"The payment reference as delivered. It carries the order or invoice numbers the matching looks for."
paymentReference: StringOperationFilterInput @cost(weight: "50")
"For refunds, chargebacks and fees: the 'transactionId' of the earlier transaction of the same payment account that this one refers to."
referenceTransactionId: StringOperationFilterInput @cost(weight: "50")
"What the transaction stands for."
kind: ComparablePaymentTransactionKindOperationFilterInput @cost(weight: "200")
"How far the bank or the provider has processed the transaction."
state: ComparablePaymentTransactionStateOperationFilterInput @cost(weight: "200")
"Whether money came in or went out; follows from the sign of 'amount'."
direction: ComparablePaymentDirectionOperationFilterInput @cost(weight: "200")
"The part of 'amount' that is assigned: payments of sales documents and of incoming invoices, refunds paid out without a sales document and, for a fee, the order costs booked from it. 'QueryPaymentTransactionAssignmentsByPaymentTransactionId' lists them."
assignedAmount: ComparableDecimalOperationFilterInput @cost(weight: "200")
"What is left to assign: 'amount' minus 'assignedAmount'. A cash discount written off on a document does not count as assigned."
openAmount: ComparableDecimalOperationFilterInput @cost(weight: "200")
"What can still be refunded without a sales document ('RefundPaymentTransactionRemainder'): 'amount' minus all refunds and minus all payments of the transaction, a cash discount included. Never below 0."
refundableAmount: ComparableDecimalOperationFilterInput @cost(weight: "200")
"How much of the transaction is assigned."
assignmentStatus: ComparablePaymentTransactionAssignmentStatusOperationFilterInput @cost(weight: "200")
}
"An event a user can raise by hand on a payment transaction (the manual workflows menu in the Wawi). The workflows that listen to it start; raising it raises the event, not a single workflow."
input PaymentTransactionManualWorkflowEventFilterInput {
and: [PaymentTransactionManualWorkflowEventFilterInput!]
or: [PaymentTransactionManualWorkflowEventFilterInput!]
"How many active workflows listen to the event. Raising an event without any does nothing."
activeWorkflowCount: ComparableInt32OperationFilterInput @cost(weight: "15")
}
"An event a user can raise by hand on a payment transaction (the manual workflows menu in the Wawi). The workflows that listen to it start; raising it raises the event, not a single workflow."
input PaymentTransactionManualWorkflowEventSortInput {
"The position in the menu of the Wawi."
sortOrder: SortEnumType @cost(weight: "50")
"The display name of the event."
name: SortEnumType @cost(weight: "15")
"The ID of the event."
id: ManualWorkflowEventKeySortInput @cost(weight: "15")
}
"Money observed on a payment account: a booking the bank, the payment provider or an external system reported. Assigning a transaction to a sales order or a sales invoice records a payment there (see the payments)."
input PaymentTransactionSortInput {
"The ID of the payment transaction."
id: ZahlungsabgleichUmsatzKeySortInput @cost(weight: "15")
"When the bank or the provider booked the transaction, in the time zone of the ERP server."
bookingDate: SortEnumType @cost(weight: "15")
"The amount with two decimals: positive for money received, negative for money sent or taken back."
amount: SortEnumType @cost(weight: "50")
"When the transaction was last read in or refreshed from the bank, the provider or the external system. Assigning, ignoring or a note do not change it, so it is no change timestamp."
lastImportedAt: SortEnumType @cost(weight: "50")
"What is left to assign: 'amount' minus 'assignedAmount'. A cash discount written off on a document does not count as assigned."
openAmount: SortEnumType @cost(weight: "200")
}
"A tier that states a percentage discount."
input PercentageDiscountSupplierPriceTierInput {
"The quantity from which the tier applies."
fromQuantity: Decimal!
"The percentage discount from this quantity on."
discountPercent: Decimal!
}
"A tier that states a percentage reduction of the standard price."
input PercentageReductionTierInput {
"The quantity from which the tier applies. The first tier starts at 1."
fromQuantity: Decimal!
"The percentage by which the standard price is reduced from this quantity on."
reductionPercent: Decimal!
}
"A permission of Wawi. Permissions form a tree and are the same in all tenants."
input PermissionFilterInput {
and: [PermissionFilterInput!]
or: [PermissionFilterInput!]
"The fixed ID of the permission. It is the same on every installation and is never reused."
id: ComparableBerechtigungKeyOperationFilterInput @cost(weight: "15")
"Whether it can be given to a group. False for entries that only group others."
isGrantable: ComparableBooleanOperationFilterInput @cost(weight: "200")
"The ID of the parent permission in the tree. Null for the top entries."
parentId: ComparableBerechtigungKeyOperationFilterInput @cost(weight: "200")
"The position among the permissions with the same parent, lowest first."
sortOrder: ComparableInt32OperationFilterInput @cost(weight: "200")
}
"A permission of Wawi. Permissions form a tree and are the same in all tenants."
input PermissionSortInput {
"The fixed ID of the permission. It is the same on every installation and is never reused."
id: BerechtigungKeySortInput @cost(weight: "15")
"The ID of the parent permission in the tree. Null for the top entries."
parentId: BerechtigungKeySortInput @cost(weight: "200")
"The position among the permissions with the same parent, lowest first."
sortOrder: SortEnumType @cost(weight: "200")
}
input PicklisteKeySortInput {
kPickliste: SortEnumType @cost(weight: "10")
}
input PicklistePosKeySortInput {
kPicklistePos: SortEnumType @cost(weight: "10")
}
input PicklisteVorlageKeySortInput {
kPicklisteVorlage: SortEnumType @cost(weight: "10")
}
"A line item of a pick list: one quantity of one item to take from one storage location for one sales order line item."
input PickListLineItemFilterInput {
and: [PickListLineItemFilterInput!]
or: [PickListLineItemFilterInput!]
"The ID of the line item."
id: ComparablePicklistePosKeyOperationFilterInput @cost(weight: "15")
"The status of the line item."
status: ComparablePickListLineItemStatusOperationFilterInput @cost(weight: "50")
"The item to pick. Absent for line items without an item, such as vouchers and free-text line items. A line item without an item cannot be picked (PICK_LIST_LINE_ITEM_NOT_PICKABLE)."
itemId: ComparableArtikelKeyOperationFilterInput @cost(weight: "50")
"The storage location to take the goods from. Absent for line items that are not taken from a storage location, such as vouchers, free-text line items and the parent of a bill of materials. A line item without a storage location cannot be picked (PICK_LIST_LINE_ITEM_NOT_PICKABLE)."
storageLocationId: ComparableWarenLagerPlatzKeyOperationFilterInput @cost(weight: "50")
"The sales order the quantity is reserved for. Absent for pick lists that do not belong to a sales order."
salesOrderId: ComparableVerkaufAuftragKeyOperationFilterInput @cost(weight: "200")
}
"A line item of a pick list: one quantity of one item to take from one storage location for one sales order line item."
input PickListLineItemSortInput {
"The ID of the line item."
id: PicklistePosKeySortInput @cost(weight: "15")
"The item number (SKU)."
itemNumber: SortEnumType @cost(weight: "200")
"The name of the storage location."
storageLocationName: SortEnumType @cost(weight: "200")
}
"One row of the pick list overview, flat so that it can be filtered and sorted. The line items are read with their own query."
input PickListListEntryFilterInput {
and: [PickListListEntryFilterInput!]
or: [PickListListEntryFilterInput!]
"The ID of the pick list."
id: ComparablePicklisteKeyOperationFilterInput @cost(weight: "15")
"The number of the pick list, as shown in the Wawi and on the printout."
number: StringOperationFilterInput @cost(weight: "15")
"When the pick list was created."
createdAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "200")
"The warehouse the pick list is worked in."
warehouseId: ComparableWarenlagerKeyOperationFilterInput @cost(weight: "50")
"The template the pick list was created from. Absent when the template was deleted."
pickListTemplateId: ComparablePicklisteVorlageKeyOperationFilterInput @cost(weight: "200")
"The status. Computed from the line items."
status: ComparablePickListStatusOperationFilterInput @cost(weight: "50")
"The user who is working on the pick list right now. Absent when nobody is."
activeUserId: ComparableBenutzerKeyOperationFilterInput @cost(weight: "200")
}
"One row of the pick list overview, flat so that it can be filtered and sorted. The line items are read with their own query."
input PickListListEntrySortInput {
"The ID of the pick list."
id: PicklisteKeySortInput @cost(weight: "15")
"The number of the pick list, as shown in the Wawi and on the printout."
number: SortEnumType @cost(weight: "15")
"When the pick list was created."
createdAt: SortEnumType @cost(weight: "200")
"The status. Computed from the line items."
status: SortEnumType @cost(weight: "50")
}
"A range to set. Only the limits that are sent change; the other limit keeps its value (on create: the default of the Wawi). null clears a limit, which is then not checked."
input PickListRangeInput {
"The lower limit (inclusive); null clears it."
min: Decimal
"The upper limit (inclusive); null clears it."
max: Decimal
}
"One step of the order in which stock is chosen for a reservation."
input PickListStockSortInput {
"What to sort by. Known values: GOODS_RECEIPT_DATE (date of the goods receipt of the stock), STORAGE_LOCATION_NAME, STORAGE_LOCATION_SORT_NUMBER, STORAGE_LOCATION_PRIORITY, PREFERRED_LOCATIONS (preferred storage locations of the item), SHELF_LIFE_DATE (best-before date), RETURNED_ITEMS. The list can grow; a client treats a value it does not know as an unknown criterion."
criterion: String!
"The direction."
direction: PickListSortDirection!
}
"Automatic creation of pick lists. Properties that are not sent keep their value (on create: the default of the Wawi). A list that is sent replaces the whole list; an empty list switches automatic creation off. null is refused for the group and for the list."
input PickListTemplateAutomationInput {
"Whether pick lists are created automatically."
isEnabled: Boolean
"The windows in which pick lists are created, each with its own limit; without an active window nothing is created automatically. Sending the list replaces all windows."
timeWindows: [PickListTemplateTimeWindowInput]
}
"Which items are put on the pick lists of a template. Properties that are not sent keep their value (on create: the default of the Wawi). A range that is sent changes only the limits that are sent in it. A list that is sent replaces the whole list; an empty list removes the filter, so the template gets broader. null is refused for the group, for a range and for a list."
input PickListTemplateItemSelectionInput {
"The width of an item in centimetres."
width: PickListRangeInput
"The height of an item in centimetres."
height: PickListRangeInput
"The length of an item in centimetres."
length: PickListRangeInput
"The shortest edge of an item in centimetres."
shortestEdge: PickListRangeInput
"The longest edge of an item in centimetres."
longestEdge: PickListRangeInput
"The standard gross selling price of an item."
itemPrice: PickListRangeInput
"Only items of these product groups. Empty: not limited."
productGroupIds: [ID]
"Only items of these manufacturers. Empty: not limited."
manufacturerIds: [ID]
"Only items with one of these conditions. Empty: not limited."
itemConditionIds: [ID]
"Only items of these shipping classes. Empty: not limited."
shippingClassIds: [ID]
"Only items with one of these labels. Empty: not limited."
itemLabelIds: [ID]
"Only stock on storage locations of these types (read the types with 'QueryStorageLocationTypes'). Empty: not limited."
storageLocationTypeIds: [UUID]
"Only stock in these warehouse areas. Empty: not limited."
warehouseAreaIds: [ID]
"The least number of different warehouse areas; null: not checked."
minWarehouseAreaCount: Int
}
"One row of the template overview."
input PickListTemplateListEntryFilterInput {
and: [PickListTemplateListEntryFilterInput!]
or: [PickListTemplateListEntryFilterInput!]
"The ID of the template."
id: ComparablePicklisteVorlageKeyOperationFilterInput @cost(weight: "15")
"The warehouse the template creates pick lists for."
warehouseId: ComparableWarenlagerKeyOperationFilterInput @cost(weight: "50")
"How pick lists of the template are worked; see the template for the known values."
type: StringOperationFilterInput @cost(weight: "50")
"The name of the template."
name: StringOperationFilterInput @cost(weight: "50")
"Whether pick lists are created automatically."
isAutomaticCreationEnabled: ComparableBooleanOperationFilterInput @cost(weight: "50")
}
"One row of the template overview."
input PickListTemplateListEntrySortInput {
"The ID of the template."
id: PicklisteVorlageKeySortInput @cost(weight: "15")
"The name of the template."
name: SortEnumType @cost(weight: "50")
"The quick slot (1 to 15) of the template. A slot is unique per warehouse and template type; BOXES and EAZY_SHIPPING templates share their slots. Absent when it has none."
quickSlot: SortEnumType @cost(weight: "50")
}
"Which orders are put on the pick lists of a template. Properties that are not sent keep their value (on create: the default of the Wawi). A range that is sent changes only the limits that are sent in it. A list that is sent replaces the whole list; an empty list removes the filter, so the template gets broader. null is refused for the group, for a range and for a list."
input PickListTemplateOrderSelectionInput {
"The kinds of process that are put on pick lists, at least one. Known values: SALES_ORDER, STOCK_TRANSFER, PRODUCTION_REPLENISHMENT_ORDER, PRODUCTION_TRANSFER. The list can grow; a client treats a value it does not know as an unknown kind."
sourceTypes: [String]
"How many orders a pick list holds."
orderCount: PickListRangeInput
"How many items an order may have."
itemsPerOrder: PickListRangeInput
"How many items a pick list holds."
itemsPerList: PickListRangeInput
"The shipping weight of an order in kilograms."
shippingWeight: PickListRangeInput
"The gross total of an order."
grossTotal: PickListRangeInput
"The volume of an order in cubic centimetres."
volume: PickListRangeInput
"Whether orders without volume information are left out."
excludeOrdersWithoutVolume: Boolean
"Orders up to this weight in kilograms are delivered partially; null: not used."
partialDeliveryMaxWeight: Decimal
"Whether line items may be split for a partial delivery."
partialDeliverySplitLineItems: Boolean
"Whether fully deliverable orders are always pre-picked."
prePickFullyDeliverable: Boolean
"Whether fully deliverable orders are kept off the pick list."
excludeFullyDeliverable: Boolean
"Whether unpaid orders are pre-picked as well."
includeUnpaid: Boolean
"Whether all unpaid orders are pre-picked automatically."
includeUnpaidAutomatically: Boolean
"Which orders are put on the pick list by their addresses."
addressMode: PickListAddressMode
"Whether orders that FIFO delivery completely delivered in parts are put on the pick list."
fifoFullyPartiallyDelivered: Boolean
"How the expected delivery date limits the orders."
expectedDeliveryDateMode: PickListExpectedDeliveryDateMode
"The number of days for the mode WithinDays; null clears it."
expectedDeliveryDateDays: Int
"Only orders with one of these colours. Empty: not limited."
colorIds: [ID]
"Only orders of customers in one of these customer groups. Empty: not limited."
customerGroupIds: [ID]
"Only orders to one of these countries, as ISO 3166-1 alpha-2 codes such as DE; matched case-insensitively on input and returned in upper case. Empty: not limited."
deliveryCountryCodes: [String]
"Only orders with an invoice address in one of these countries, as ISO 3166-1 alpha-2 codes such as DE; matched case-insensitively on input and returned in upper case. Empty: not limited."
invoiceCountryCodes: [String]
"Only orders with one of these priorities, each a whole number from -5 (lowest) to 5 (highest); 0 is the normal priority. Empty: not limited."
priorities: [Int]
"Only orders of these companies. Empty: not limited."
companyIds: [ID]
"Only orders of these sales channels. A sales channel ID is a tenant-local composite identifier such as 1-1-1, not a UUID. Valid values are listed by the sales channel endpoint (GET). Empty: not limited."
salesChannelIds: [ID]
"Only orders with one of these payment methods. Empty: not limited."
paymentMethodIds: [ID]
"Only orders with one of these shipping methods. Empty: not limited."
shippingMethodIds: [ID]
"Only orders with one of these order statuses. Empty: not limited."
orderStatusIds: [ID]
}
"How stock is chosen and reserved for the pick lists of a template. Properties that are not sent keep their value (on create: the default of the Wawi). A list that is sent replaces the whole list. null is refused for the group and for the list."
input PickListTemplateReservationInput {
"The order in which stock is chosen, most important first. Only the criteria that are used are listed; a criterion that is not listed is not used."
stockSortOrder: [PickListStockSortInput]
"Whether stock from replenishment areas is reserved last."
reserveReplenishmentAreasLast: Boolean
"Whether storage locations that hold the whole quantity are preferred."
preferLocationsWithEnoughStock: Boolean
"Whether storage locations without active reservations are preferred."
preferLocationsWithoutReservations: Boolean
"Whether a pick list holds only one kind of item (sort-pure pick list)."
singleItemKindOnly: Boolean
"The most different items on a sort-pure pick list; null: no limit."
maxDistinctItems: Int
"Whether line items of a multi pick list are worked in the order of the lists."
processInListOrder: Boolean
"Whether an order is reserved from one batch only."
batchPure: Boolean
"Whether stock with an expired best-before date is reserved."
expiredShelfLife: PickListExpiredShelfLifeHandling
"The stock must stay good for at least this many days; null: not checked."
shelfLifeMinimumDays: Int
"Whether a bill of materials is only reserved when all its components are available."
billOfMaterialsCompleteOnly: Boolean
"Whether the components of a bill of materials are preferably taken from the same storage location."
billOfMaterialsSameLocation: Boolean
}
"A weekday and time range in which a template creates pick lists automatically. A window can wrap past midnight and over the end of the week."
input PickListTemplateTimeWindowInput {
"Whether the window is used; a window that is not active never creates pick lists."
isActive: Boolean!
"The first day of the window."
dayFrom: PickListWeekday!
"The last day of the window. The window covers the days from 'dayFrom' to 'dayTo'; 'dayFrom' may be later than 'dayTo' for a window that wraps over the end of the week (Saturday to Monday)."
dayTo: PickListWeekday!
"The start time of the day as hh:mm."
timeFrom: String!
"The end time of the day as hh:mm; 24:00 is the end of the day, so 00:00 to 24:00 is the whole day. A 'timeFrom' later than 'timeTo' is a window that wraps past midnight (for example 22:00 to 06:00 on the days of the window). A window that the desktop stored with an end time of 23:59 or later is returned with 24:00."
timeTo: String!
"The limit of the window: pick lists are created while fewer than this many unprocessed pick lists of the template exist. At least 1."
limit: Int!
}
"Who sees the template and the pick lists created from it. Properties that are not sent keep their value (on create: the default of the Wawi). A range that is sent changes only the limits that are sent in it. A list that is sent replaces the whole list; an empty list removes the filter, so the template gets broader. null is refused for the group, for a range and for a list."
input PickListTemplateVisibilityInput {
"The users who can choose the template. Empty: all users."
visibleToUserIds: [ID]
"Whether 'createdListsUserIds' are the only users who see pick lists created from the template, or the users who do not see them."
createdListsUserMode: PickListUserSelectionMode
"The users the mode applies to. Empty: all users see the pick lists, whatever the mode."
createdListsUserIds: [ID]
}
"Picks a quantity of a line item: the goods are moved from the storage location of the line item into the pick box of the pick list, which the server creates with the first pick; the client does not choose a target. The pick list is not locked: two callers are decided by the status check and the second one is refused. A quantity smaller than the line item splits it: the picked part is Picked, the remainder stays Created and its ID is returned. Batch number, best-before date and serial numbers are validated on both sides: what the item needs must be sent, what it does not need must not be sent; the line item says what it needs ('lotTracking', 'isSerialNumberTracked'). A refused action reports 'errorCode' (the main reason) and 'blockers' (all reasons, each with 'code' and 'message'). errorCode is one of: PICK_LIST_NOT_FOUND (the pick list was not found); PICK_LIST_LINE_ITEM_NOT_FOUND (the line item was not found on the pick list); PICK_LIST_LINE_ITEM_ALREADY_PICKED (the line item is Picked or further); PICK_LIST_LINE_ITEM_HELD_BY_SESSION (a delivery session holds the line item); PICK_LIST_LINE_ITEM_NOT_PICKABLE (the line item has no item or no storage location, for example a free-text line item or the parent of a bill of materials; the Wawi pick refuses such a line item as invalid data); PICK_LIST_QUANTITY_INVALID (the quantity is not larger than 0); PICK_LIST_QUANTITY_EXCEEDS_LINE_ITEM (the quantity is larger than the quantity of the line item); PICK_LIST_QUANTITY_NOT_DIVISIBLE (the quantity has decimals and the item cannot be divided); PICK_LIST_BATCH_NUMBER_REQUIRED (the item has batch tracking and no batch number was sent); PICK_LIST_SHELF_LIFE_DATE_REQUIRED (the item has best-before tracking and no date was sent); PICK_LIST_SERIAL_NUMBERS_REQUIRED ('isSerialNumberTracked' is true and none were sent); PICK_LIST_SERIAL_NUMBER_COUNT_MISMATCH (the number of serial numbers differs from the quantity); PICK_LIST_SERIAL_NUMBER_NOT_ON_STORAGE_LOCATION (a serial number is not in stock on the storage location of the line item); PICK_LIST_BATCH_NUMBER_NOT_ALLOWED (the item has no batch tracking); PICK_LIST_SHELF_LIFE_DATE_NOT_ALLOWED (the item has no best-before tracking); PICK_LIST_SERIAL_NUMBERS_NOT_ALLOWED ('isSerialNumberTracked' is false); PICK_LIST_STOCK_INSUFFICIENT (the storage location holds less than the quantity); PICK_LIST_NO_STOCK_SWAP_PARTNER (no other stock could be swapped in to match the batch or best-before date); PICK_LIST_BATCH_QUANTITY_INSUFFICIENT (there is not enough stock of that batch or best-before date). - Request"
input PickPickListLineItemCommandRequestInput {
"The ID of the pick list."
pickListId: ID!
"The ID of the pick list line item."
lineItemId: ID!
"The quantity to pick: larger than 0 and at most the quantity of the line item. 0 passes the schema and is refused with PICK_LIST_QUANTITY_INVALID."
quantity: Decimal!
"The batch number. Required for items with batch tracking, not allowed otherwise."
batchNumber: String
"The best-before date. Required for items with best-before tracking, not allowed otherwise."
shelfLifeExpirationDate: DateTime
"The serial numbers, as many as the quantity. Required when 'isSerialNumberTracked' of the line item is true, not allowed otherwise; each must be in stock on the storage location of the line item."
serialNumbers: [String]
"Suppresses the automatic workflows of the pick events ('item picked', 'pick list picked'). Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
input PlattformKeySortInput {
kPlattform: SortEnumType @cost(weight: "10")
}
"A place that belongs to a postal code in a country. A postal code can have several places, and the same place can have several postal codes."
input PostalCodeEntryFilterInput {
and: [PostalCodeEntryFilterInput!]
or: [PostalCodeEntryFilterInput!]
"The postal code, as text with leading zeros, at most 10 characters."
postalCode: StringOperationFilterInput @cost(weight: "15")
"The name of the place, at most 50 characters."
city: StringOperationFilterInput @cost(weight: "50")
}
"A place that belongs to a postal code in a country. A postal code can have several places, and the same place can have several postal codes."
input PostalCodeEntrySortInput {
"The postal code, as text with leading zeros, at most 10 characters."
postalCode: SortEnumType @cost(weight: "15")
"The name of the place, at most 50 characters."
city: SortEnumType @cost(weight: "50")
}
"Posts an incoming invoice. Posting makes the invoice binding: its supplier, address, line items and additional costs are locked, and the purchase prices of the delivered items (average and last purchase price, value of the goods receipts) are updated from the invoice prices and the additional costs that count towards the purchase price. Posting cannot be undone. Per item of a purchase order, the posted invoices must not contain more than was delivered; line items of fulfilment-network (FBA) purchases and of dropshipping purchase orders are not checked. - Request"
input PostIncomingInvoiceCommandRequestInput {
"The ID of the incoming invoice."
incomingInvoiceId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes of a free line."
input PriceInquiryCustomLineChangesInput {
"The new quantity, 0 or more. On an item line it is raised to the supplier's minimum order quantity and rounded up to its order interval, and items that are not divisible take whole numbers, as when a line is added. When omitted, unchanged."
quantity: Decimal
"The new net price per unit in the currency of the price inquiry. This is how the supplier's answer is entered. When omitted, unchanged."
netUnitPrice: Decimal
"The new tax rate in percent, 0 to 100. When omitted, unchanged."
taxRate: Decimal
"The new expected delivery date; null removes it. When omitted, unchanged."
expectedDeliveryDate: DateTime
"The new note; null removes it. When omitted, unchanged."
note: String
"The new position of the line on the price inquiry. When omitted, unchanged."
sortOrder: Int
"The new text, 1 to 255 characters. When omitted, unchanged."
name: String
"The new number; null removes it. When omitted, unchanged."
sku: String
}
"A new free line without an item."
input PriceInquiryCustomLineCreationInput {
"A temporary identifier chosen by the client, for example to match the answer to an optimistic update. It is not stored and is returned unchanged."
clientId: String
"The text of the line, 1 to 255 characters."
name: String!
"A number for the line."
sku: String
"The quantity asked for, 0 or more."
quantity: Decimal!
"The net price per unit in the currency of the price inquiry, 0 or more."
netUnitPrice: Decimal!
"The tax rate in percent, 0 to 100. When omitted, the ERP's standard tax rate."
taxRate: Decimal
"When the supplier is asked to deliver."
expectedDeliveryDate: DateTime
"A note on the line, printed on the price inquiry."
note: String
}
"Changes of a line with an item."
input PriceInquiryItemLineChangesInput {
"The new quantity, 0 or more. On an item line it is raised to the supplier's minimum order quantity and rounded up to its order interval, and items that are not divisible take whole numbers, as when a line is added. When omitted, unchanged."
quantity: Decimal
"The new net price per unit in the currency of the price inquiry. This is how the supplier's answer is entered. When omitted, unchanged."
netUnitPrice: Decimal
"The new tax rate in percent, 0 to 100. When omitted, unchanged."
taxRate: Decimal
"The new expected delivery date; null removes it. When omitted, unchanged."
expectedDeliveryDate: DateTime
"The new note; null removes it. When omitted, unchanged."
note: String
"The new position of the line on the price inquiry. When omitted, unchanged."
sortOrder: Int
"The new supplier's number for the item; null removes it. When omitted, unchanged."
supplierSku: String
"The new number of units the packaging unit holds; null removes it. When omitted, unchanged."
packagingQuantity: Decimal
}
"A new line with an item."
input PriceInquiryItemLineCreationInput {
"A temporary identifier chosen by the client, for example to match the answer to an optimistic update. It is not stored and is returned unchanged."
clientId: String
"The ID of the item, an active one that is neither a variation parent nor a bill of materials."
itemId: ID!
"The quantity asked for, 0 or more. It is raised to the supplier's minimum order quantity and rounded up to its order interval; items that are not divisible take whole numbers."
quantity: Decimal!
"The net price per unit in the currency of the price inquiry, 0 or more. When omitted, the price the ERP knows for this item and supplier, or 0."
netUnitPrice: Decimal
"The tax rate in percent, 0 to 100. When omitted, the tax rate of the item at the supplier."
taxRate: Decimal
"The supplier's number for the item. When omitted, the one of the supplier item."
supplierSku: String
"How many units the packaging unit holds. When omitted, the one of the supplier item."
packagingQuantity: Decimal
"When the supplier is asked to deliver. When omitted, today plus the supplier's delivery time for the item."
expectedDeliveryDate: DateTime
"A note on the line, printed on the price inquiry."
note: String
"Whether to assign the item to the supplier when it is not yet, like an 'assign automatically' choice. Defaults to false; the line is then refused for an item the supplier does not have."
assignItemToSupplier: Boolean
}
"A line of a price inquiry. Polymorphic: 'lineItemType' selects the variant."
input PriceInquiryLineItemFilterInput {
and: [PriceInquiryLineItemFilterInput!]
or: [PriceInquiryLineItemFilterInput!]
"The ID of the line."
id: ComparableLieferantenBestellungPosKeyOperationFilterInput @cost(weight: "15")
"Discriminator: the kind of the line."
lineItemType: ComparablePriceInquiryLineItemTypeOperationFilterInput @cost(weight: "15")
}
"A line of a price inquiry. Polymorphic: 'lineItemType' selects the variant."
input PriceInquiryLineItemSortInput {
"The position of the line on the price inquiry."
sortOrder: SortEnumType @cost(weight: "50")
}
"A price inquiry in a list: the properties to find and sort price inquiries by. Read the full price inquiry with 'GetPriceInquiry'."
input PriceInquiryListEntryFilterInput {
and: [PriceInquiryListEntryFilterInput!]
or: [PriceInquiryListEntryFilterInput!]
"The ID of the price inquiry."
id: ComparableLieferantenBestellungKeyOperationFilterInput @cost(weight: "15")
"The price inquiry number; empty for an older price inquiry without one."
number: StringOperationFilterInput @cost(weight: "50")
"Whether the price inquiry is marked as confirmed."
isConfirmed: ComparableBooleanOperationFilterInput @cost(weight: "50")
"The ID of the supplier."
supplierId: ComparableLieferantKeyOperationFilterInput @cost(weight: "15")
"The ID of the company that asks."
companyId: ComparableFirmaKeyOperationFilterInput @cost(weight: "15")
"The ID of the warehouse the goods would be delivered to."
warehouseId: ComparableWarenlagerKeyOperationFilterInput @cost(weight: "50")
"When the goods are requested."
requestedDeliveryDate: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "50")
"A free reference."
referenceNumber: StringOperationFilterInput @cost(weight: "50")
"When the price inquiry was created."
createdAt: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "50")
}
"A price inquiry in a list: the properties to find and sort price inquiries by. Read the full price inquiry with 'GetPriceInquiry'."
input PriceInquiryListEntrySortInput {
"The price inquiry number; empty for an older price inquiry without one."
number: SortEnumType @cost(weight: "50")
"When the price inquiry was created."
createdAt: SortEnumType @cost(weight: "50")
"When the goods are requested."
requestedDeliveryDate: SortEnumType @cost(weight: "50")
"The net total of the lines in the currency of the price inquiry. Computed."
totalNetAmount: SortEnumType @cost(weight: "500")
}
"One tier of a price list. Polymorphic: the property 'kind' selects the variant. A list of tiers has distinct quantities."
input PriceTierInput @oneOf {
"A tier that states the net price."
netPriceTier: NetPriceTierInput
"A tier that states a percentage reduction of the standard price."
percentageReductionTier: PercentageReductionTierInput
}
"Prints the customer on a printer of the machine that runs the API. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is CUSTOMER_NOT_FOUND (no customer with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_PRINTER_REQUIRED (no printer is given and none is configured); errorCode is OUTPUT_PRINTER_NOT_FOUND (the printer is not installed on the machine that runs the API); errorCode is OUTPUT_PRINTER_NOT_AVAILABLE (the API runs where no printers exist, for example in the cloud). - Request"
input PrintCustomerCommandRequestInput {
"The ID of the customer."
customerId: ID!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"The name of the printer, as returned by QueryOutputPrinters. Without it the printer of the template or of the user's workplace setup is used. If there is none, the call fails."
printer: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Prints the delivery note on a printer of the machine that runs the API. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is DELIVERY_NOTE_NOT_FOUND (no delivery note with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_PRINTER_REQUIRED (no printer is given and none is configured); errorCode is OUTPUT_PRINTER_NOT_FOUND (the printer is not installed on the machine that runs the API); errorCode is OUTPUT_PRINTER_NOT_AVAILABLE (the API runs where no printers exist, for example in the cloud). - Request"
input PrintDeliveryNoteCommandRequestInput {
"The ID of the delivery note."
deliveryNoteId: ID!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"The name of the printer, as returned by QueryOutputPrinters. Without it the printer of the template or of the user's workplace setup is used. If there is none, the call fails."
printer: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Prints the dunning notice on a printer of the machine that runs the API. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is DUNNING_NOTICE_NOT_FOUND (no dunning notice with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_PRINTER_REQUIRED (no printer is given and none is configured); errorCode is OUTPUT_PRINTER_NOT_FOUND (the printer is not installed on the machine that runs the API); errorCode is OUTPUT_PRINTER_NOT_AVAILABLE (the API runs where no printers exist, for example in the cloud). - Request"
input PrintDunningNoticeCommandRequestInput {
"The ID of the dunning notice."
dunningNoticeId: ID!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"The name of the printer, as returned by QueryOutputPrinters. Without it the printer of the template or of the user's workplace setup is used. If there is none, the call fails."
printer: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Prints the inventory count on a printer of the machine that runs the API. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is INVENTORY_COUNT_NOT_FOUND (no inventory count with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_PRINTER_REQUIRED (no printer is given and none is configured); errorCode is OUTPUT_PRINTER_NOT_FOUND (the printer is not installed on the machine that runs the API); errorCode is OUTPUT_PRINTER_NOT_AVAILABLE (the API runs where no printers exist, for example in the cloud). - Request"
input PrintInventoryCountCommandRequestInput {
"The ID of the inventory count."
inventoryCountId: ID!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"The name of the printer, as returned by QueryOutputPrinters. Without it the printer of the template or of the user's workplace setup is used. If there is none, the call fails."
printer: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Prints item labels on a printer of the machine that runs the API; all labels of one call are one print job. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is OUTPUT_LABEL_LIMIT_EXCEEDED (more than 500 entries; split the selection into several calls); errorCode is OUTPUT_LABEL_ENTRY_INVALID (an entry has no valid ID or a quantity below 1); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_PRINTER_REQUIRED (no printer is given and none is configured); errorCode is OUTPUT_PRINTER_NOT_FOUND (the printer is not installed on the machine that runs the API); errorCode is OUTPUT_PRINTER_NOT_AVAILABLE (the API runs where no printers exist, for example in the cloud). - Request"
input PrintItemLabelsCommandRequestInput {
"The item labels to output, each with the number of labels. At most 500 entries per call; split larger selections into several calls."
entries: [ItemLabelEntryInput]!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"The name of the printer, as returned by QueryOutputPrinters. Without it the printer of the template or of the user's workplace setup is used. If there is none, the call fails."
printer: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Prints package ID labels on a printer of the machine that runs the API; all labels of one call are one print job. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is OUTPUT_LABEL_LIMIT_EXCEEDED (more than 500 entries; split the selection into several calls); errorCode is OUTPUT_LABEL_ENTRY_INVALID (an entry has no valid ID or a quantity below 1); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_PRINTER_REQUIRED (no printer is given and none is configured); errorCode is OUTPUT_PRINTER_NOT_FOUND (the printer is not installed on the machine that runs the API); errorCode is OUTPUT_PRINTER_NOT_AVAILABLE (the API runs where no printers exist, for example in the cloud). - Request"
input PrintPackageIdLabelsCommandRequestInput {
"The package ID labels to output, each with the number of labels. At most 500 entries per call; split larger selections into several calls."
entries: [PackageIdLabelEntryInput]!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"The name of the printer, as returned by QueryOutputPrinters. Without it the printer of the template or of the user's workplace setup is used. If there is none, the call fails."
printer: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Prints the pick list on a printer of the machine that runs the API. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is PICK_LIST_NOT_FOUND (no pick list with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_PRINTER_REQUIRED (no printer is given and none is configured); errorCode is OUTPUT_PRINTER_NOT_FOUND (the printer is not installed on the machine that runs the API); errorCode is OUTPUT_PRINTER_NOT_AVAILABLE (the API runs where no printers exist, for example in the cloud). - Request"
input PrintPickListCommandRequestInput {
"The ID of the pick list."
pickListId: ID!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"The name of the printer, as returned by QueryOutputPrinters. Without it the printer of the template or of the user's workplace setup is used. If there is none, the call fails."
printer: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Prints the purchase order on a printer of the machine that runs the API. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is PURCHASE_ORDER_NOT_FOUND (no purchase order with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_PRINTER_REQUIRED (no printer is given and none is configured); errorCode is OUTPUT_PRINTER_NOT_FOUND (the printer is not installed on the machine that runs the API); errorCode is OUTPUT_PRINTER_NOT_AVAILABLE (the API runs where no printers exist, for example in the cloud). - Request"
input PrintPurchaseOrderCommandRequestInput {
"The ID of the purchase order."
purchaseOrderId: ID!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"The name of the printer, as returned by QueryOutputPrinters. Without it the printer of the template or of the user's workplace setup is used. If there is none, the call fails."
printer: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Prints the return on a printer of the machine that runs the API. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is RETURN_NOT_FOUND (no return with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_PRINTER_REQUIRED (no printer is given and none is configured); errorCode is OUTPUT_PRINTER_NOT_FOUND (the printer is not installed on the machine that runs the API); errorCode is OUTPUT_PRINTER_NOT_AVAILABLE (the API runs where no printers exist, for example in the cloud). - Request"
input PrintReturnCommandRequestInput {
"The ID of the return."
returnId: ID!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"The name of the printer, as returned by QueryOutputPrinters. Without it the printer of the template or of the user's workplace setup is used. If there is none, the call fails."
printer: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Prints the sales credit note on a printer of the machine that runs the API. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_CREDIT_NOTE_NOT_FOUND (no sales credit note with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_PRINTER_REQUIRED (no printer is given and none is configured); errorCode is OUTPUT_PRINTER_NOT_FOUND (the printer is not installed on the machine that runs the API); errorCode is OUTPUT_PRINTER_NOT_AVAILABLE (the API runs where no printers exist, for example in the cloud). - Request"
input PrintSalesCreditNoteCommandRequestInput {
"The ID of the sales credit note."
salesCreditNoteId: ID!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"The name of the printer, as returned by QueryOutputPrinters. Without it the printer of the template or of the user's workplace setup is used. If there is none, the call fails."
printer: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Prints the sales invoice on a printer of the machine that runs the API. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_INVOICE_NOT_FOUND (no sales invoice with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_PRINTER_REQUIRED (no printer is given and none is configured); errorCode is OUTPUT_PRINTER_NOT_FOUND (the printer is not installed on the machine that runs the API); errorCode is OUTPUT_PRINTER_NOT_AVAILABLE (the API runs where no printers exist, for example in the cloud). - Request"
input PrintSalesInvoiceCommandRequestInput {
"The ID of the sales invoice."
salesInvoiceId: ID!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"The name of the printer, as returned by QueryOutputPrinters. Without it the printer of the template or of the user's workplace setup is used. If there is none, the call fails."
printer: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Prints the sales invoice correction on a printer of the machine that runs the API. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_INVOICE_CORRECTION_NOT_FOUND (no sales invoice correction with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_PRINTER_REQUIRED (no printer is given and none is configured); errorCode is OUTPUT_PRINTER_NOT_FOUND (the printer is not installed on the machine that runs the API); errorCode is OUTPUT_PRINTER_NOT_AVAILABLE (the API runs where no printers exist, for example in the cloud). - Request"
input PrintSalesInvoiceCorrectionCommandRequestInput {
"The ID of the sales invoice correction."
salesInvoiceCorrectionId: ID!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"The name of the printer, as returned by QueryOutputPrinters. Without it the printer of the template or of the user's workplace setup is used. If there is none, the call fails."
printer: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Prints the sales order on a printer of the machine that runs the API. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_ORDER_NOT_FOUND (no sales order with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_PRINTER_REQUIRED (no printer is given and none is configured); errorCode is OUTPUT_PRINTER_NOT_FOUND (the printer is not installed on the machine that runs the API); errorCode is OUTPUT_PRINTER_NOT_AVAILABLE (the API runs where no printers exist, for example in the cloud). - Request"
input PrintSalesOrderCommandRequestInput {
"The ID of the sales order."
salesOrderId: ID!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"The name of the printer, as returned by QueryOutputPrinters. Without it the printer of the template or of the user's workplace setup is used. If there is none, the call fails."
printer: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Prints the sales quotation on a printer of the machine that runs the API. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_QUOTATION_NOT_FOUND (no sales quotation with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_PRINTER_REQUIRED (no printer is given and none is configured); errorCode is OUTPUT_PRINTER_NOT_FOUND (the printer is not installed on the machine that runs the API); errorCode is OUTPUT_PRINTER_NOT_AVAILABLE (the API runs where no printers exist, for example in the cloud). - Request"
input PrintSalesQuotationCommandRequestInput {
"The ID of the sales quotation."
salesQuotationId: ID!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"The name of the printer, as returned by QueryOutputPrinters. Without it the printer of the template or of the user's workplace setup is used. If there is none, the call fails."
printer: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Prints SSCC labels on a printer of the machine that runs the API; all labels of one call are one print job. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is OUTPUT_LABEL_LIMIT_EXCEEDED (more than 500 entries; split the selection into several calls); errorCode is OUTPUT_LABEL_ENTRY_INVALID (an entry has no valid ID or a quantity below 1); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_PRINTER_REQUIRED (no printer is given and none is configured); errorCode is OUTPUT_PRINTER_NOT_FOUND (the printer is not installed on the machine that runs the API); errorCode is OUTPUT_PRINTER_NOT_AVAILABLE (the API runs where no printers exist, for example in the cloud). - Request"
input PrintSsccLabelsCommandRequestInput {
"The SSCC labels to output, each with the number of labels. At most 500 entries per call; split larger selections into several calls."
entries: [SsccLabelEntryInput]!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"The name of the printer, as returned by QueryOutputPrinters. Without it the printer of the template or of the user's workplace setup is used. If there is none, the call fails."
printer: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Prints storage location labels on a printer of the machine that runs the API; all labels of one call are one print job. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is OUTPUT_LABEL_LIMIT_EXCEEDED (more than 500 entries; split the selection into several calls); errorCode is OUTPUT_LABEL_ENTRY_INVALID (an entry has no valid ID or a quantity below 1); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_PRINTER_REQUIRED (no printer is given and none is configured); errorCode is OUTPUT_PRINTER_NOT_FOUND (the printer is not installed on the machine that runs the API); errorCode is OUTPUT_PRINTER_NOT_AVAILABLE (the API runs where no printers exist, for example in the cloud). - Request"
input PrintStorageLocationLabelsCommandRequestInput {
"The ID of the warehouse."
warehouseId: ID!
"The storage location labels to output, each with the number of labels. At most 500 entries per call; split larger selections into several calls."
entries: [StorageLocationLabelEntryInput]!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"The name of the printer, as returned by QueryOutputPrinters. Without it the printer of the template or of the user's workplace setup is used. If there is none, the call fails."
printer: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Der Schlüssel eines Produktionsartikels."
input ProdItemKeySortInput {
"Der eindeutige Bezeichner eines Produktionsartikels."
kArtikel: SortEnumType @cost(weight: "10")
}
"A product group is a label to classify items. It has a name and no hierarchy. Each item belongs to at most one product group."
input ProductGroupFilterInput {
and: [ProductGroupFilterInput!]
or: [ProductGroupFilterInput!]
"The ID of the product group."
id: ComparableWarengruppeKeyOperationFilterInput @cost(weight: "15")
"The name of the product group. It is never empty and has at most 255 characters."
name: StringOperationFilterInput @cost(weight: "50")
}
"Defines for which items a custom field applies. A field applies to an item if the item's product group is listed or if the item has no product group and that case is included. With no product group listed and that case excluded, the field applies to no item."
input ProductGroupRestrictionInput {
"Indicates that the field applies to items without a product group."
includesItemsWithoutProductGroup: Boolean!
"The product groups the field applies to."
productGroupIds: [ID]!
}
"A product group is a label to classify items. It has a name and no hierarchy. Each item belongs to at most one product group."
input ProductGroupSortInput {
"The ID of the product group."
id: WarengruppeKeySortInput @cost(weight: "15")
"The name of the product group. It is never empty and has at most 255 characters."
name: SortEnumType @cost(weight: "50")
}
"Tax codes that replace those of a rate for the items of one product group."
input ProductGroupTaxCodeOverrideFilterInput {
and: [ProductGroupTaxCodeOverrideFilterInput!]
or: [ProductGroupTaxCodeOverrideFilterInput!]
"The product group."
productGroupId: ComparableWarengruppeKeyOperationFilterInput
}
"Tax codes that replace those of a rate for the items of one product group."
input ProductGroupTaxCodeOverrideSortInput {
"The product group."
productGroupId: WarengruppeKeySortInput @cost(weight: "10")
}
"An item condition that is selected for a production item. A produced unit of the production item can end up in each of its selected item conditions. The default item condition is always selected."
input ProductionItemConditionFilterInput {
and: [ProductionItemConditionFilterInput!]
or: [ProductionItemConditionFilterInput!]
"The ID of the item condition that is selected for the production item."
itemConditionId: ComparableZustandKeyOperationFilterInput @cost(weight: "15")
"The average percentage of produced units of the production item that resulted in this item condition. It is calculated from the recorded production results and cannot be set. For an item condition other than the default item condition, it is 0 if no production results have been recorded for it yet."
sharePercentage: ComparableDecimalOperationFilterInput @cost(weight: "50")
}
"An item condition that is selected for a production item. A produced unit of the production item can end up in each of its selected item conditions. The default item condition is always selected."
input ProductionItemConditionSortInput {
"The ID of the item condition that is selected for the production item."
itemConditionId: ZustandKeySortInput @cost(weight: "15")
"The average percentage of produced units of the production item that resulted in this item condition. It is calculated from the recorded production results and cannot be set. For an item condition other than the default item condition, it is 0 if no production results have been recorded for it yet."
sharePercentage: SortEnumType @cost(weight: "50")
}
"A production item. It is an item that is manufactured according to its bills of materials."
input ProductionItemFilterInput {
and: [ProductionItemFilterInput!]
or: [ProductionItemFilterInput!]
"The ID of the production item."
id: ComparableProdItemKeyOperationFilterInput @cost(weight: "15")
"The ID of the item underlying this production item."
itemId: ComparableArtikelKeyOperationFilterInput @cost(weight: "15")
"Defines the type of lot size configuration for this production item."
lotType: ComparableLotTypeOperationFilterInput @cost(weight: "50")
"Defines the type of manufacturing of this production item."
productionType: ComparableProductionTypeOperationFilterInput @cost(weight: "50")
"The ID of a template to be used for printing an item label when a lot is completed, or null if no item label is printed on completion."
lotLabelTemplateId: ComparableVorlagenSetKeyOperationFilterInput @cost(weight: "50")
"The ID of a template to be used for printing an item label for each produced unit when a lot is completed, or null if no item label is printed for each produced unit on completion."
singleItemLabelTemplateId: ComparableVorlagenSetKeyOperationFilterInput @cost(weight: "50")
"The timestamp when the production item was created."
createdAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "50")
"The timestamp when the production item was last changed. Equals the creation timestamp if it has not been changed yet."
changedAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "50")
"The ID of the user who last changed the production item, or null if it has not been changed yet."
changedBy: ComparableBenutzerKeyOperationFilterInput @cost(weight: "50")
}
"A production item. It is an item that is manufactured according to its bills of materials."
input ProductionItemSortInput {
"The ID of the production item."
id: ProdItemKeySortInput @cost(weight: "15")
"The ID of the item underlying this production item."
itemId: ArtikelKeySortInput @cost(weight: "15")
"Defines the type of lot size configuration for this production item."
lotType: SortEnumType @cost(weight: "50")
"Defines the type of manufacturing of this production item."
productionType: SortEnumType @cost(weight: "50")
"The ID of a template to be used for printing an item label when a lot is completed, or null if no item label is printed on completion."
lotLabelTemplateId: VorlagenSetKeySortInput @cost(weight: "50")
"The ID of a template to be used for printing an item label for each produced unit when a lot is completed, or null if no item label is printed for each produced unit on completion."
singleItemLabelTemplateId: VorlagenSetKeySortInput @cost(weight: "50")
"The timestamp when the production item was created."
createdAt: SortEnumType @cost(weight: "50")
"The timestamp when the production item was last changed. Equals the creation timestamp if it has not been changed yet."
changedAt: SortEnumType @cost(weight: "50")
"The ID of the user who last changed the production item, or null if it has not been changed yet."
changedBy: BenutzerKeySortInput @cost(weight: "50")
}
"A production order. It produces one production item according to one of its bills of materials."
input ProductionOrderFilterInput {
and: [ProductionOrderFilterInput!]
or: [ProductionOrderFilterInput!]
"The ID of this production order."
id: ComparableProductionOrderKeyOperationFilterInput @cost(weight: "15")
"The issue number of this production order. It is assigned on creation."
issueNumber: StringOperationFilterInput @cost(weight: "50")
"The ID of the production item produced by this production order (see GetProductionItemById)."
productionItemId: ComparableProdItemKeyOperationFilterInput @cost(weight: "200")
"The ID of the bill of materials used to produce the production item (see GetBillOfMaterialsById)."
billOfMaterialsId: ComparableBillOfMaterialKeyOperationFilterInput @cost(weight: "200")
"The ID of the disposition this production order originates from. Not set if the production order was not created from a disposition."
dispositionId: ComparableDispositionKeyOperationFilterInput @cost(weight: "200")
"The planned number of lots."
lotCount: ComparableInt32OperationFilterInput @cost(weight: "50")
"The planned size of each lot."
lotSize: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The planned total quantity to be produced. It is at most the lot count multiplied by the lot size; any difference is produced in excess."
targetTotalQuantity: ComparableDecimalOperationFilterInput @cost(weight: "200")
"The quantity produced so far."
actualQuantity: ComparableDecimalOperationFilterInput @cost(weight: "200")
"The progress of this production order in percent, between 0 (not started) and 100 (completed)."
progress: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The planned start of this production order."
targetStartAt: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "50")
"The planned completion of this production order."
targetCompletionAt: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "50")
"The reported start of this production order."
actualStartAt: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "50")
"The reported completion of this production order."
actualCompletionAt: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "50")
"The planned delivery date of this production order."
deliveryAt: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "50")
"The project number associated with this production order. Empty if none is set."
projectNumber: StringOperationFilterInput @cost(weight: "50")
"The reference number of the order underlying this production order. Empty if none is set."
referenceNumber: StringOperationFilterInput @cost(weight: "50")
"An additional note on this production order that is displayed during production. Empty if none is set."
notice: StringOperationFilterInput @cost(weight: "50")
"The ID of the resource type whose workbenches may produce this production order (see GetResourceTypeById). At most one of ResourceTypeId and ResourceId is set; if neither is set, any workbench may produce the production order. Changed by ChangeProductionOrderResourceAssignment."
resourceTypeId: ComparableResourceTypeKeyOperationFilterInput @cost(weight: "50")
"The ID of the resource (always a workbench) to which this production order is assigned (see GetResourceById). At most one of ResourceTypeId and ResourceId is set; if neither is set, any workbench may produce the production order. Changed by ChangeProductionOrderResourceAssignment."
resourceId: ComparableResourceKeyOperationFilterInput @cost(weight: "200")
"The point in time at which this production order was released. Not set while the production order has not been released."
releasedAt: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "50")
"The ID of the user who released this production order. Not set while the production order has not been released."
releasedBy: ComparableBenutzerKeyOperationFilterInput @cost(weight: "50")
"The point in time at which this production order was created (issued)."
createdAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "50")
"The ID of the user who created this production order."
createdBy: ComparableBenutzerKeyOperationFilterInput @cost(weight: "50")
"The point in time at which this production order was last changed."
changedAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "50")
"The ID of the user who last changed this production order."
changedBy: ComparableBenutzerKeyOperationFilterInput @cost(weight: "50")
}
input ProductionOrderKeySortInput {
kProductionOrder: SortEnumType @cost(weight: "10")
}
"Specifies the quantity of a production order by lot count and lot size. The target total quantity is the lot count multiplied by the lot size."
input ProductionOrderLotsSpecificationInput {
"The number of lots. Must be at least 1."
lotCount: Int!
"The size of each lot. Must be one of the lot sizes of the production item."
lotSize: Int!
}
"The quantity of a production order. Polymorphic: exactly one variant is sent, either the target total quantity or lot count and lot size."
input ProductionOrderQuantitySpecificationInput @oneOf {
"Specifies the quantity of a production order by its target total quantity. If the production item has no lot sizes, the production order gets one lot whose size is the target total quantity; in this case the lot size may be a decimal number. Otherwise the combination of a lot count and one of the lot sizes of the production item is used whose total exceeds the target total quantity the least; among equal ones, the larger lot size is used."
productionOrderTargetTotalQuantitySpecification: ProductionOrderTargetTotalQuantitySpecificationInput
"Specifies the quantity of a production order by lot count and lot size. The target total quantity is the lot count multiplied by the lot size."
productionOrderLotsSpecification: ProductionOrderLotsSpecificationInput
}
"A production order. It produces one production item according to one of its bills of materials."
input ProductionOrderSortInput {
"The ID of this production order."
id: ProductionOrderKeySortInput @cost(weight: "15")
"The issue number of this production order. It is assigned on creation."
issueNumber: SortEnumType @cost(weight: "50")
"The ID of the production item produced by this production order (see GetProductionItemById)."
productionItemId: ProdItemKeySortInput @cost(weight: "200")
"The ID of the bill of materials used to produce the production item (see GetBillOfMaterialsById)."
billOfMaterialsId: BillOfMaterialKeySortInput @cost(weight: "200")
"The progress of this production order in percent, between 0 (not started) and 100 (completed)."
progress: SortEnumType @cost(weight: "50")
"The planned start of this production order."
targetStartAt: SortEnumType @cost(weight: "50")
"The planned completion of this production order."
targetCompletionAt: SortEnumType @cost(weight: "50")
"The reported start of this production order."
actualStartAt: SortEnumType @cost(weight: "50")
"The reported completion of this production order."
actualCompletionAt: SortEnumType @cost(weight: "50")
"The planned delivery date of this production order."
deliveryAt: SortEnumType @cost(weight: "50")
"The project number associated with this production order. Empty if none is set."
projectNumber: SortEnumType @cost(weight: "50")
"The reference number of the order underlying this production order. Empty if none is set."
referenceNumber: SortEnumType @cost(weight: "50")
"The ID of the resource type whose workbenches may produce this production order (see GetResourceTypeById). At most one of ResourceTypeId and ResourceId is set; if neither is set, any workbench may produce the production order. Changed by ChangeProductionOrderResourceAssignment."
resourceTypeId: ResourceTypeKeySortInput @cost(weight: "50")
"The ID of the resource (always a workbench) to which this production order is assigned (see GetResourceById). At most one of ResourceTypeId and ResourceId is set; if neither is set, any workbench may produce the production order. Changed by ChangeProductionOrderResourceAssignment."
resourceId: ResourceKeySortInput @cost(weight: "200")
"The point in time at which this production order was released. Not set while the production order has not been released."
releasedAt: SortEnumType @cost(weight: "50")
"The point in time at which this production order was created (issued)."
createdAt: SortEnumType @cost(weight: "50")
"The ID of the user who created this production order."
createdBy: BenutzerKeySortInput @cost(weight: "50")
"The point in time at which this production order was last changed."
changedAt: SortEnumType @cost(weight: "50")
}
"Specifies the quantity of a production order by its target total quantity. If the production item has no lot sizes, the production order gets one lot whose size is the target total quantity; in this case the lot size may be a decimal number. Otherwise the combination of a lot count and one of the lot sizes of the production item is used whose total exceeds the target total quantity the least; among equal ones, the larger lot size is used."
input ProductionOrderTargetTotalQuantitySpecificationInput {
"The total quantity to be produced. Must be greater than zero."
targetTotalQuantity: Decimal!
}
"An entry of the purchase list: how much of an item is to be bought, optionally from which supplier and for which warehouse. The purchase list is the working set from which purchase orders and price inquiries are made. There is at most one entry per item, warehouse and supplier."
input PurchaseListEntryFilterInput {
and: [PurchaseListEntryFilterInput!]
or: [PurchaseListEntryFilterInput!]
"The ID of the entry."
id: ComparableArtikelEinkaufslisteKeyOperationFilterInput @cost(weight: "15")
"The ID of the item."
itemId: ComparableArtikelKeyOperationFilterInput @cost(weight: "15")
"The ID of the supplier the item is to be bought from. Empty when none is chosen; such an entry is not ordered."
supplierId: ComparableLieferantKeyOperationFilterInput @cost(weight: "50")
"The ID of the warehouse the goods are for. Empty when none is chosen; the order then uses the supplier's default warehouse, else the first active warehouse that is no drop shipping target."
warehouseId: ComparableWarenlagerKeyOperationFilterInput @cost(weight: "50")
"The quantity to buy."
quantity: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The item number (SKU) of the item. Computed."
sku: StringOperationFilterInput @cost(weight: "200")
"The name of the item. Computed."
itemName: StringOperationFilterInput @cost(weight: "200")
"When the entry was created."
createdAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "50")
}
"An entry of the purchase list: how much of an item is to be bought, optionally from which supplier and for which warehouse. The purchase list is the working set from which purchase orders and price inquiries are made. There is at most one entry per item, warehouse and supplier."
input PurchaseListEntrySortInput {
"When the entry was created."
createdAt: SortEnumType @cost(weight: "50")
"The quantity to buy."
quantity: SortEnumType @cost(weight: "50")
"The item number (SKU) of the item. Computed."
sku: SortEnumType @cost(weight: "200")
"The name of the item. Computed."
itemName: SortEnumType @cost(weight: "200")
"'orderQuantity' times 'netUnitPrice', in the supplier's currency. Empty when the entry has no supplier. Computed."
netAmount: SortEnumType @cost(weight: "500")
}
"An address that replaces the delivery address of a purchase order, as a whole."
input PurchaseOrderAddressInput {
"The company name."
companyName: String
"An additional line for the company."
additionalCompanyLine: String
"The salutation of the person."
salutation: String
"The title of the person."
title: String
"The first name of the person."
firstName: String
"The last name of the person."
lastName: String
"The street and house number."
street: String!
"An additional address line."
additionalAddressLine: String
"The postal code."
postalCode: String!
"The city."
city: String!
"The state or region."
state: String
"The country as ISO 3166-1 alpha-2 code."
countryCode: String!
"The phone number."
phoneNumber: String
"The fax number."
faxNumber: String
"The mobile phone number."
mobilePhoneNumber: String
"The e-mail address."
emailAddress: String
}
"Changes of a custom line."
input PurchaseOrderCustomLineChangesInput {
"The ordered quantity, 0 or more; also below the delivered quantity, which leaves nothing open. It cannot be cleared."
quantity: Decimal
"The net price per unit in the order currency; it may be negative. When the quantity of an item line changes without a price, the supplier's scale price for the new quantity applies. It cannot be cleared."
netUnitPrice: Decimal
"The tax rate in percent, 0 to 100. It cannot be cleared."
taxRate: Decimal
"When the line is expected."
expectedDeliveryDate: DateTime
"A note on the line. It must not contain control characters."
note: String
"The new position of the line among the item and custom lines, from 1; the others move up or down. It cannot be cleared."
sortOrder: Int
"The text of the line. It must not contain control characters. It cannot be cleared."
name: String
"A free number of the line. It must not contain control characters."
sku: String
}
"A new free line without an item. It is delivered like an item line but never booked into stock."
input PurchaseOrderCustomLineCreationInput {
"A temporary identifier chosen by the client, for example to match the answer to an optimistic update. It is not stored and is returned unchanged."
clientId: String
"The text of the line. It must not contain control characters."
name: String!
"A free number of the line. It must not contain control characters."
sku: String
"The quantity to order, 0 or more."
quantity: Decimal!
"The net price per unit in the order currency; it may be negative."
netUnitPrice: Decimal!
"The tax rate in percent, 0 to 100. When omitted, the supplier's rate for free lines is used, else the standard rate; 0 for a supplier exempt from tax."
taxRate: Decimal
"When the line is expected. When omitted, today."
expectedDeliveryDate: DateTime
"A note on the line. It must not contain control characters."
note: String
}
"Goods booked into stock against a line item. A later relocation within the warehouse can split a receipt into several records with their own location. Receipts of custom lines, of items without stock management and of drop shipping orders book no stock and have no record; they show only in the delivered quantity of the line."
input PurchaseOrderGoodsReceiptFilterInput {
and: [PurchaseOrderGoodsReceiptFilterInput!]
or: [PurchaseOrderGoodsReceiptFilterInput!]
"The ID of the goods receipt."
id: ComparableWarenLagerEingangKeyOperationFilterInput @cost(weight: "15")
"The ID of the line item."
lineItemId: ComparableLieferantenBestellungPosKeyOperationFilterInput @cost(weight: "15")
"The ID of the item."
itemId: ComparableArtikelKeyOperationFilterInput @cost(weight: "15")
"The ID of the warehouse the goods are in."
warehouseId: ComparableWarenlagerKeyOperationFilterInput @cost(weight: "200")
"The number on the supplier's delivery note."
deliveryNoteNumber: StringOperationFilterInput @cost(weight: "50")
"The day the goods were received."
receivedAt: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "50")
}
"What was received for one line item. A line can appear more than once, for example with two batches."
input PurchaseOrderGoodsReceiptLineInput {
"The ID of the item or custom line. It must still have an open quantity."
lineItemId: ID!
"The quantity received, more than 0. Whole numbers for items that are not divisible. More than the open quantity is accepted."
quantity: Decimal!
"The ID of the warehouse for this line, if it differs from the warehouse of the receipt. The warehouse of the order does not change."
warehouseId: ID
"The batch number. Required exactly when the item is tracked by batch."
batchNumber: String
"The shelf life expiration date (best-before date). Required exactly when the item is tracked by it."
shelfLifeExpirationDate: DateTime
"The serial numbers, one per unit, each at most 128 characters. Required when the item is tracked strictly by serial number, allowed for every serial-number item, not allowed otherwise; an empty list counts as none. They must not be in stock already."
serialNumbers: [String]!
"The purchase price per unit in the base currency, 0 or more. When omitted: the confirmed price, else the price of the line, converted with the order's exchange rate."
unitPurchasePrice: Decimal
}
"Goods booked into stock against a line item. A later relocation within the warehouse can split a receipt into several records with their own location. Receipts of custom lines, of items without stock management and of drop shipping orders book no stock and have no record; they show only in the delivered quantity of the line."
input PurchaseOrderGoodsReceiptSortInput {
"The day the goods were received."
receivedAt: SortEnumType @cost(weight: "50")
}
"Changes of an item line."
input PurchaseOrderItemLineChangesInput {
"The ordered quantity, 0 or more; also below the delivered quantity, which leaves nothing open. It cannot be cleared."
quantity: Decimal
"The net price per unit in the order currency; it may be negative. When the quantity of an item line changes without a price, the supplier's scale price for the new quantity applies. It cannot be cleared."
netUnitPrice: Decimal
"The tax rate in percent, 0 to 100. It cannot be cleared."
taxRate: Decimal
"When the line is expected."
expectedDeliveryDate: DateTime
"A note on the line. It must not contain control characters."
note: String
"The new position of the line among the item and custom lines, from 1; the others move up or down. It cannot be cleared."
sortOrder: Int
"The supplier's number for the item. It must not contain control characters."
supplierSku: String
"How many units the supplier's packaging unit holds."
packagingQuantity: Decimal
}
"A new line with an item."
input PurchaseOrderItemLineCreationInput {
"A temporary identifier chosen by the client, for example to match the answer to an optimistic update. It is not stored and is returned unchanged."
clientId: String
"The ID of the item: an active item that is no variation parent and no bill of materials (order its components instead)."
itemId: ID!
"The quantity to order, 0 or more. Like the purchase order dialog, the ERP raises it to the supplier's minimum order quantity, rounds it to whole units for an item that is not divisible and up to the supplier's order interval."
quantity: Decimal!
"The net price per unit in the order currency; it may be negative. When omitted, the supplier's price for the item and quantity is used, including its scale prices."
netUnitPrice: Decimal
"The tax rate in percent, 0 to 100. When omitted, the supplier's rate for the item is used, 0 for a supplier exempt from tax."
taxRate: Decimal
"The supplier's number for the item. When omitted, the one of the supplier item is used. It must not contain control characters."
supplierSku: String
"How many units the supplier's packaging unit holds. When omitted, taken from the supplier item."
packagingQuantity: Decimal
"When the line is expected. When omitted: today plus the delivery time of the supplier item or of the supplier."
expectedDeliveryDate: DateTime
"A note on the line. It must not contain control characters."
note: String
"Whether to assign the item to the supplier when it is not assigned yet, with this price and supplier number, as the dialog's \"assign items automatically\" does. Defaults to false: an item the supplier does not deliver is refused."
assignItemToSupplier: Boolean
}
"A line item of a purchase order. Polymorphic: 'lineItemType' selects the variant."
input PurchaseOrderLineItemFilterInput {
and: [PurchaseOrderLineItemFilterInput!]
or: [PurchaseOrderLineItemFilterInput!]
"The ID of the line item."
id: ComparableLieferantenBestellungPosKeyOperationFilterInput @cost(weight: "15")
"Discriminator: the kind of the line."
lineItemType: ComparablePurchaseOrderLineItemTypeOperationFilterInput @cost(weight: "15")
}
"A line item of a purchase order. Polymorphic: 'lineItemType' selects the variant."
input PurchaseOrderLineItemSortInput {
"The position of the line on the order. Allowances and charges come last."
sortOrder: SortEnumType @cost(weight: "50")
}
"A purchase order in a list: the properties to find and sort orders by. Read the full order with 'GetPurchaseOrder'."
input PurchaseOrderListEntryFilterInput {
and: [PurchaseOrderListEntryFilterInput!]
or: [PurchaseOrderListEntryFilterInput!]
"The ID of the purchase order."
id: ComparableLieferantenBestellungKeyOperationFilterInput @cost(weight: "15")
"The purchase order number; empty for an older order without one."
number: StringOperationFilterInput @cost(weight: "50")
"The kind of the order."
purchaseOrderType: ComparablePurchaseOrderTypeOperationFilterInput @cost(weight: "200")
"Where the order stands."
status: ComparablePurchaseOrderStatusOperationFilterInput @cost(weight: "200")
"Whether an order to a warehouse is overdue. Computed."
isOverdue: ComparableBooleanOperationFilterInput @cost(weight: "500")
"Whether the supplier has confirmed the order."
isConfirmed: ComparableBooleanOperationFilterInput @cost(weight: "50")
"The ID of the supplier."
supplierId: ComparableLieferantKeyOperationFilterInput @cost(weight: "15")
"The ID of the company that orders."
companyId: ComparableFirmaKeyOperationFilterInput @cost(weight: "15")
"The ID of the receiving warehouse. Empty for a drop shipping order."
warehouseId: ComparableWarenlagerKeyOperationFilterInput @cost(weight: "50")
"The ID of the receiving customer. Empty for an order to a warehouse."
customerId: ComparableKundeKeyOperationFilterInput @cost(weight: "15")
"When the goods are requested."
requestedDeliveryDate: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "50")
"The supplier's number for the order."
supplierDocumentNumber: StringOperationFilterInput @cost(weight: "50")
"A free reference; for a drop shipping order from a sales delivery the sales order number."
referenceNumber: StringOperationFilterInput @cost(weight: "50")
"When the order was created."
createdAt: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "50")
}
"A purchase order in a list: the properties to find and sort orders by. Read the full order with 'GetPurchaseOrder'."
input PurchaseOrderListEntrySortInput {
"The purchase order number; empty for an older order without one."
number: SortEnumType @cost(weight: "50")
"Where the order stands."
status: SortEnumType @cost(weight: "200")
"When the order was created."
createdAt: SortEnumType @cost(weight: "50")
"When the goods are requested."
requestedDeliveryDate: SortEnumType @cost(weight: "50")
"The net total of the order in its currency. Computed."
totalNetAmount: SortEnumType @cost(weight: "500")
}
"A manual workflow event of purchase orders, as set up in the workflow management of the ERP. Triggering it on an order runs the workflows that react to it."
input PurchaseOrderManualWorkflowEventFilterInput {
and: [PurchaseOrderManualWorkflowEventFilterInput!]
or: [PurchaseOrderManualWorkflowEventFilterInput!]
"How many active workflows react to the event. Raising an event without any does nothing. Computed."
activeWorkflowCount: ComparableInt32OperationFilterInput @cost(weight: "500")
}
"A manual workflow event of purchase orders, as set up in the workflow management of the ERP. Triggering it on an order runs the workflows that react to it."
input PurchaseOrderManualWorkflowEventSortInput {
"The position of the event in the list of manual events."
sortOrder: SortEnumType @cost(weight: "50")
"The name of the event, as the ERP shows it."
name: SortEnumType @cost(weight: "50")
}
"One HTTP header that is sent with the upload request, for example a header the signature of a presigned URL covers."
input PurchaseOrderOutputUploadHeaderInput {
"The header name."
name: String!
"The header value."
value: String!
}
"The place a rendered file is uploaded to. The file is sent with a PUT request to the URL. Only https URLs to public addresses are accepted; redirects are not followed. The URL is a secret: it is never logged and never returned."
input PurchaseOrderOutputUploadTargetInput {
"The upload URL including its signature (SAS, presigned or signed URL)."
url: String!
"Headers to send with the upload. For Azure Blob Storage the header x-ms-blob-type is set automatically when the host is blob.core.windows.net. For other storages send the headers the signature requires."
headers: [PurchaseOrderOutputUploadHeaderInput]!
}
"Sets the name of a characteristic in one language and replaces the name of that language. Errors: CHARACTERISTIC_NOT_FOUND (no characteristic has this ID); CHARACTERISTIC_NAME_REQUIRED (the name is empty), CHARACTERISTIC_LANGUAGE_NOT_FOUND (the language is unknown or not active); CHARACTERISTIC_NAME_ALREADY_EXISTS (another characteristic has this name in the default language). - Request"
input PutCharacteristicNameCommandRequestInput {
"The ID of the characteristic."
characteristicId: ID!
"The language as BCP 47 language tag, for example 'de' or 'de-AT'. Language subtag in lower case, region subtag in upper case; the input is not case-sensitive. It must be a language Wawi is set up for (error code CHARACTERISTIC_LANGUAGE_NOT_FOUND)."
languageTag: String!
"The name in this language, at most 255 characters, not empty."
name: String!
}
"Gives a customer group in a sales channel a price list of its own and replaces what was there. This overrides the base price for that customer group. A sales channel that does not allow scale prices accepts one tier. - Request"
input PutCustomerGroupPricesCommandRequestInput {
"The ID of the item."
itemId: ID!
"The sales channel the prices apply in. Tenant-local, composite identifier, not a UUID, for example 1-1-1. Malformed values are answered with 400 (error code FORMAT_NOT_PARSABLE)."
salesChannelId: ID!
"The customer group the prices apply to."
customerGroupId: ID!
"The currency of the prices as ISO 4217 code. Prices are written in the default currency of the tenant only. Omitted means the default currency; any other currency, including one the tenant has, is refused with 409 (error code CURRENCY_NOT_SUPPORTED), nothing is converted when writing."
currencyCode: String
"Whether the item is offered in the sales channel for this customer group."
isVisible: Boolean!
"The price tiers, at least one. Quantities are distinct."
tiers: [PriceTierInput]!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Sets the individual prices of an item for one customer and replaces what was there. Creates the list when there is none. - Request"
input PutCustomerPricesCommandRequestInput {
"The ID of the item."
itemId: ID!
"The customer the prices apply to."
customerId: ID!
"The currency of the prices as ISO 4217 code. Prices are written in the default currency of the tenant only. Omitted means the default currency; any other currency, including one the tenant has, is refused with 409 (error code CURRENCY_NOT_SUPPORTED), nothing is converted when writing."
currencyCode: String
"The price tiers, at least one. Quantities are distinct."
tiers: [PriceTierInput]!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Sets the texts of an item in one language, for the default or for one sales channel, and replaces what was there. - Request"
input PutItemDescriptionCommandRequestInput {
"The ID of the item."
itemId: ID!
"The language of the texts as BCP 47 language tag, for example 'de' or 'de-AT'. The input is not case-sensitive."
languageTag: String!
"The sales channel of the texts, a tenant-local composite identifier such as 1-1-1. Omitted means the default texts."
salesChannelId: ID
"The name of the item."
name: String!
"Short description."
shortDescription: String
"Long description, may contain HTML."
description: String
"Title for search engines."
seoTitle: String
"Description for search engines."
metaDescription: String
"Keywords for search engines."
metaKeywords: String
"Path segment of the item URL in the shop."
urlPath: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Sets the order quantity rule that applies to every customer group without a rule of its own, and replaces what was there. - Request"
input PutItemOrderQuantityDefaultCommandRequestInput {
"The ID of the item."
itemId: ID!
"The smallest quantity that can be ordered. Greater than zero."
minimumQuantity: Decimal!
"The step in which larger quantities can be ordered."
quantityInterval: Decimal
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Sets the order quantity rule of one customer group and replaces what was there. - Request"
input PutItemOrderQuantityForCustomerGroupCommandRequestInput {
"The ID of the item."
itemId: ID!
"The customer group the rule applies to."
customerGroupId: ID!
"The smallest quantity that can be ordered. Greater than zero."
minimumQuantity: Decimal!
"The step in which larger quantities can be ordered."
quantityInterval: Decimal
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Sets the special price of an item and replaces what was there. Creates it when there is none. - Request"
input PutItemSpecialPriceCommandRequestInput {
"The ID of the item."
itemId: ID!
"The currency of the prices as ISO 4217 code. Prices are written in the default currency of the tenant only. Omitted means the default currency; any other currency, including one the tenant has, is refused with 409 (error code CURRENCY_NOT_SUPPORTED), nothing is converted when writing."
currencyCode: String
"Whether the special price is active."
isActive: Boolean!
"The period the special price applies in. Omitted means it is not limited by date."
validity: SpecialPriceValidityInput
"The stock the special price needs. Omitted means it is not limited by stock. Only items with stock management can be limited by stock."
stockRestriction: SpecialPriceStockRestrictionInput
"The special prices per sales channel and customer group, at least one."
entries: [SpecialPriceEntryInput]!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Sets the smallest and largest stock of an item in one warehouse and replaces what was there. At least one of the two; the smallest is not above the largest. - Request"
input PutItemWarehouseStockLimitCommandRequestInput {
"The ID of the item."
itemId: ID!
"The warehouse."
warehouseId: ID!
"The smallest stock."
minimumStock: Decimal
"The largest stock."
maximumStock: Decimal
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Sets the name and the print texts of a payment method in one language and replaces what was there. For the default language this is the name and the texts of the payment method itself. - Request"
input PutPaymentMethodTranslationCommandRequestInput {
"The ID of the payment method."
paymentMethodId: ID!
"The language as BCP 47 language tag, for example de or de-AT: language subtag in lower case, region subtag in upper case. Case does not matter on input. It must be a language Wawi is set up for, otherwise 409 (error code LANGUAGE_NOT_ACTIVE)."
languageTag: String!
"The name in this language, at most 255 characters. For the default language it must be unique among the payment methods, ignoring case."
name: String!
"The invoice text while the payment is open. Defaults to empty. A text that is left out is cleared: the call replaces the translation as a whole. At most 4000 characters."
textBeforePayment: String
"The invoice text once it is paid. Defaults to empty. A text that is left out is cleared: the call replaces the translation as a whole. At most 4000 characters."
textAfterPayment: String
}
"Sets the name of a shipping method in one language and replaces what was there. For the default language this is the name of the shipping method itself. errorCode is one of: SHIPPING_METHOD_NOT_FOUND, SHIPPING_METHOD_NAME_ALREADY_EXISTS, SHIPPING_METHOD_NOT_OWN, LANGUAGE_NOT_ACTIVE. - Request"
input PutShippingMethodTranslationCommandRequestInput {
"The ID of the shipping method."
shippingMethodId: ID!
"The language as BCP 47 language tag, for example de or de-AT: language subtag in lower case, region subtag in upper case. Case does not matter on input. Wawi currently holds only the two-letter language subtag. It must be a language Wawi is set up for, otherwise 409 (error code LANGUAGE_NOT_ACTIVE)."
languageTag: String!
"The name in this language, at most 255 characters."
name: String!
}
"Allows the actually used quantity to deviate from the planned quantity in one direction."
input QuantityDeviationConfigurationInput {
"The permitted deviation in percent of the planned quantity, or null if the deviation is unlimited. Not negative."
tolerance: Decimal
"Whether a comment must be entered when the actual quantity deviates from the planned quantity in this direction."
isCommentMandatoryOnDeviation: Boolean!
}
"A characteristic in a list."
input QueryCharacteristicsByCharacteristicGroupIdFilterInput {
and: [QueryCharacteristicsByCharacteristicGroupIdFilterInput!]
or: [QueryCharacteristicsByCharacteristicGroupIdFilterInput!]
"The ID of the characteristic."
id: ComparableMerkmalKeyOperationFilterInput @cost(weight: "15")
"How the values are presented to customers in the online shop: TEXT, SELECT_BOX, IMAGE or IMAGE_AND_TEXT. It changes how the values are shown, not which fields exist. The list can grow with the shops; a client treats a value it does not know like TEXT. An empty or unknown stored value is read as TEXT."
displayType: StringOperationFilterInput @cost(weight: "50")
"Indicates that several values can be assigned to one item."
isMultiSelect: ComparableBooleanOperationFilterInput @cost(weight: "50")
"Indicates that the characteristic is shown to customers in the online shop."
isVisibleInShop: ComparableBooleanOperationFilterInput @cost(weight: "50")
"Indicates that the characteristic is transferred to eBay as an item specific."
isEbayAttribute: ComparableBooleanOperationFilterInput @cost(weight: "50")
"The position of the characteristic among all characteristics in a custom order, counted from 1. Null means there is no custom order and the entries are sorted alphabetically by their name in the default language. Set a custom order with the order operations; the API does not accept single positions."
sortOrder: ComparableNullableOfInt32OperationFilterInput @cost(weight: "50")
"The name of the characteristic in the default language."
name: StringOperationFilterInput @cost(weight: "200")
}
"A characteristic in a list."
input QueryCharacteristicsByCharacteristicGroupIdSortInput {
"The ID of the characteristic."
id: MerkmalKeySortInput @cost(weight: "15")
"The position of the characteristic among all characteristics in a custom order, counted from 1. Null means there is no custom order and the entries are sorted alphabetically by their name in the default language. Set a custom order with the order operations; the API does not accept single positions."
sortOrder: SortEnumType @cost(weight: "50")
"The name of the characteristic in the default language."
name: SortEnumType @cost(weight: "200")
}
"A characteristic in a list."
input QueryCharacteristicsFilterInput {
and: [QueryCharacteristicsFilterInput!]
or: [QueryCharacteristicsFilterInput!]
"The ID of the characteristic."
id: ComparableMerkmalKeyOperationFilterInput @cost(weight: "15")
"How the values are presented to customers in the online shop: TEXT, SELECT_BOX, IMAGE or IMAGE_AND_TEXT. It changes how the values are shown, not which fields exist. The list can grow with the shops; a client treats a value it does not know like TEXT. An empty or unknown stored value is read as TEXT."
displayType: StringOperationFilterInput @cost(weight: "50")
"Indicates that several values can be assigned to one item."
isMultiSelect: ComparableBooleanOperationFilterInput @cost(weight: "50")
"Indicates that the characteristic is shown to customers in the online shop."
isVisibleInShop: ComparableBooleanOperationFilterInput @cost(weight: "50")
"Indicates that the characteristic is transferred to eBay as an item specific."
isEbayAttribute: ComparableBooleanOperationFilterInput @cost(weight: "50")
"The position of the characteristic among all characteristics in a custom order, counted from 1. Null means there is no custom order and the entries are sorted alphabetically by their name in the default language. Set a custom order with the order operations; the API does not accept single positions."
sortOrder: ComparableNullableOfInt32OperationFilterInput @cost(weight: "50")
"The name of the characteristic in the default language."
name: StringOperationFilterInput @cost(weight: "200")
"The number of values of the characteristic."
valueCount: ComparableInt32OperationFilterInput @cost(weight: "200")
"The number of items that have at least one value of the characteristic."
itemCount: ComparableInt32OperationFilterInput @cost(weight: "200")
}
"A characteristic in a list."
input QueryCharacteristicsSortInput {
"The ID of the characteristic."
id: MerkmalKeySortInput @cost(weight: "15")
"The position of the characteristic among all characteristics in a custom order, counted from 1. Null means there is no custom order and the entries are sorted alphabetically by their name in the default language. Set a custom order with the order operations; the API does not accept single positions."
sortOrder: SortEnumType @cost(weight: "50")
"The name of the characteristic in the default language."
name: SortEnumType @cost(weight: "200")
"The number of values of the characteristic."
valueCount: SortEnumType @cost(weight: "200")
"The number of items that have at least one value of the characteristic."
itemCount: SortEnumType @cost(weight: "200")
}
"A resource used in production, e.g. a workbench, a machine or an employee. Polymorphic: \"category\" selects the variant."
input QueryResourcesByResourceGroupIdFilterInput {
and: [QueryResourcesByResourceGroupIdFilterInput!]
or: [QueryResourcesByResourceGroupIdFilterInput!]
"The ID of this resource."
id: ComparableResourceKeyOperationFilterInput @cost(weight: "15")
"The category of this resource. It cannot be changed. Clients treat an unknown category as a resource without category-specific properties."
category: ComparableResourceCategoryTypeOperationFilterInput @cost(weight: "200")
"The number of this resource."
number: StringOperationFilterInput @cost(weight: "50")
"The name of this resource."
name: StringOperationFilterInput @cost(weight: "50")
"The ID of the resource type of this resource. The resource type belongs to the same category as the resource."
resourceTypeId: ComparableResourceTypeKeyOperationFilterInput @cost(weight: "50")
"Whether this resource is active. An inactive resource is no longer used for new production planning."
isActive: ComparableBooleanOperationFilterInput @cost(weight: "50")
"The point in time at which this resource was created."
createdAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "50")
"The point in time at which this resource was last changed."
changedAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "50")
}
"A resource used in production, e.g. a workbench, a machine or an employee. Polymorphic: \"category\" selects the variant."
input QueryResourcesByResourceGroupIdSortInput {
"The ID of this resource."
id: ResourceKeySortInput @cost(weight: "15")
"The category of this resource. It cannot be changed. Clients treat an unknown category as a resource without category-specific properties."
category: SortEnumType @cost(weight: "200")
"The number of this resource."
number: SortEnumType @cost(weight: "50")
"The name of this resource."
name: SortEnumType @cost(weight: "50")
"The ID of the resource type of this resource. The resource type belongs to the same category as the resource."
resourceTypeId: ResourceTypeKeySortInput @cost(weight: "50")
"Whether this resource is active. An inactive resource is no longer used for new production planning."
isActive: SortEnumType @cost(weight: "50")
"The point in time at which this resource was created."
createdAt: SortEnumType @cost(weight: "50")
"The point in time at which this resource was last changed."
changedAt: SortEnumType @cost(weight: "50")
}
"A resource used in production, e.g. a workbench, a machine or an employee. Polymorphic: \"category\" selects the variant."
input QueryResourcesFilterInput {
and: [QueryResourcesFilterInput!]
or: [QueryResourcesFilterInput!]
"The ID of this resource."
id: ComparableResourceKeyOperationFilterInput @cost(weight: "15")
"The category of this resource. It cannot be changed. Clients treat an unknown category as a resource without category-specific properties."
category: ComparableResourceCategoryTypeOperationFilterInput @cost(weight: "200")
"The number of this resource."
number: StringOperationFilterInput @cost(weight: "50")
"The name of this resource."
name: StringOperationFilterInput @cost(weight: "50")
"The ID of the resource type of this resource. The resource type belongs to the same category as the resource."
resourceTypeId: ComparableResourceTypeKeyOperationFilterInput @cost(weight: "50")
"Whether this resource is active. An inactive resource is no longer used for new production planning."
isActive: ComparableBooleanOperationFilterInput @cost(weight: "50")
"The point in time at which this resource was created."
createdAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "50")
"The point in time at which this resource was last changed."
changedAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "50")
}
"A resource used in production, e.g. a workbench, a machine or an employee. Polymorphic: \"category\" selects the variant."
input QueryResourcesSortInput {
"The ID of this resource."
id: ResourceKeySortInput @cost(weight: "15")
"The category of this resource. It cannot be changed. Clients treat an unknown category as a resource without category-specific properties."
category: SortEnumType @cost(weight: "200")
"The number of this resource."
number: SortEnumType @cost(weight: "50")
"The name of this resource."
name: SortEnumType @cost(weight: "50")
"The ID of the resource type of this resource. The resource type belongs to the same category as the resource."
resourceTypeId: ResourceTypeKeySortInput @cost(weight: "50")
"Whether this resource is active. An inactive resource is no longer used for new production planning."
isActive: SortEnumType @cost(weight: "50")
"The point in time at which this resource was created."
createdAt: SortEnumType @cost(weight: "50")
"The point in time at which this resource was last changed."
changedAt: SortEnumType @cost(weight: "50")
}
"A line item of a sales document. Polymorphic: the property 'type' selects the variant."
input QuerySalesLineItemsBySalesOrderIdFilterInput {
and: [QuerySalesLineItemsBySalesOrderIdFilterInput!]
or: [QuerySalesLineItemsBySalesOrderIdFilterInput!]
"The ID of the line item."
id: ComparableVerkaufAuftragPositionKeyOperationFilterInput @cost(weight: "15")
"The position of the line item in the document."
sortOrder: ComparableInt32OperationFilterInput @cost(weight: "50")
"The name printed on the document."
name: StringOperationFilterInput @cost(weight: "50")
"The quantity."
quantity: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The net price per unit."
salesPriceNet: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The net total of the line item after discount."
totalSalesPriceNet: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The gross total of the line item after discount."
totalSalesPriceGross: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The tax rate in percent."
taxRate: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The discount in percent."
discountPercent: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The net purchase price per unit when the line item was added."
purchasePriceNet: ComparableDecimalOperationFilterInput @cost(weight: "50")
"Discriminator of the line item type."
type: ComparableSalesLineItemTypeOperationFilterInput @cost(weight: "200")
}
"A line item of a sales document. Polymorphic: the property 'type' selects the variant."
input QuerySalesLineItemsBySalesOrderIdSortInput {
"The ID of the line item."
id: VerkaufAuftragPositionKeySortInput @cost(weight: "15")
"The position of the line item in the document."
sortOrder: SortEnumType @cost(weight: "50")
"The name printed on the document."
name: SortEnumType @cost(weight: "50")
"The quantity."
quantity: SortEnumType @cost(weight: "50")
"The net price per unit."
salesPriceNet: SortEnumType @cost(weight: "50")
"The net total of the line item after discount."
totalSalesPriceNet: SortEnumType @cost(weight: "50")
"The gross total of the line item after discount."
totalSalesPriceGross: SortEnumType @cost(weight: "50")
"The tax rate in percent."
taxRate: SortEnumType @cost(weight: "50")
"The discount in percent."
discountPercent: SortEnumType @cost(weight: "50")
"The net purchase price per unit when the line item was added."
purchasePriceNet: SortEnumType @cost(weight: "50")
"Discriminator of the line item type."
type: SortEnumType @cost(weight: "200")
}
"A line item of a sales document. Polymorphic: the property 'type' selects the variant."
input QuerySalesLineItemsBySalesQuotationIdFilterInput {
and: [QuerySalesLineItemsBySalesQuotationIdFilterInput!]
or: [QuerySalesLineItemsBySalesQuotationIdFilterInput!]
"The ID of the line item."
id: ComparableVerkaufAuftragPositionKeyOperationFilterInput @cost(weight: "15")
"The position of the line item in the document."
sortOrder: ComparableInt32OperationFilterInput @cost(weight: "50")
"The name printed on the document."
name: StringOperationFilterInput @cost(weight: "50")
"The quantity."
quantity: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The net price per unit."
salesPriceNet: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The net total of the line item after discount."
totalSalesPriceNet: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The gross total of the line item after discount."
totalSalesPriceGross: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The tax rate in percent."
taxRate: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The discount in percent."
discountPercent: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The net purchase price per unit when the line item was added."
purchasePriceNet: ComparableDecimalOperationFilterInput @cost(weight: "50")
"Discriminator of the line item type."
type: ComparableSalesLineItemTypeOperationFilterInput @cost(weight: "200")
}
"A line item of a sales document. Polymorphic: the property 'type' selects the variant."
input QuerySalesLineItemsBySalesQuotationIdSortInput {
"The ID of the line item."
id: VerkaufAuftragPositionKeySortInput @cost(weight: "15")
"The position of the line item in the document."
sortOrder: SortEnumType @cost(weight: "50")
"The name printed on the document."
name: SortEnumType @cost(weight: "50")
"The quantity."
quantity: SortEnumType @cost(weight: "50")
"The net price per unit."
salesPriceNet: SortEnumType @cost(weight: "50")
"The net total of the line item after discount."
totalSalesPriceNet: SortEnumType @cost(weight: "50")
"The gross total of the line item after discount."
totalSalesPriceGross: SortEnumType @cost(weight: "50")
}
"One row of the storage location list."
input QueryStorageLocationChangeSetCreatedLocationsFilterInput {
and: [QueryStorageLocationChangeSetCreatedLocationsFilterInput!]
or: [QueryStorageLocationChangeSetCreatedLocationsFilterInput!]
"The ID of the storage location."
id: ComparableWarenLagerPlatzKeyOperationFilterInput @cost(weight: "200")
"The name of the location."
name: StringOperationFilterInput @cost(weight: "200")
}
"One row of the storage location list."
input QueryStorageLocationChangeSetCreatedLocationsSortInput {
"The ID of the storage location."
id: WarenLagerPlatzKeySortInput @cost(weight: "200")
"The name of the location."
name: SortEnumType @cost(weight: "200")
}
"One row of the storage location list."
input QueryStorageLocationsByWarehouseIdFilterInput {
and: [QueryStorageLocationsByWarehouseIdFilterInput!]
or: [QueryStorageLocationsByWarehouseIdFilterInput!]
"The ID of the storage location."
id: ComparableWarenLagerPlatzKeyOperationFilterInput @cost(weight: "15")
"The name of the location."
name: StringOperationFilterInput @cost(weight: "15")
"The status of the location."
status: ComparableStorageLocationStatusOperationFilterInput @cost(weight: "200")
"Whether the stock on the location is left out of the available stock."
isLockedForAvailableStock: ComparableBooleanOperationFilterInput @cost(weight: "50")
}
"One row of the storage location list."
input QueryStorageLocationsByWarehouseIdSortInput {
"The ID of the storage location."
id: WarenLagerPlatzKeySortInput @cost(weight: "15")
"The name of the location."
name: SortEnumType @cost(weight: "15")
"The sort number."
sortNumber: SortEnumType @cost(weight: "50")
}
"Receives the goods of one delivery for a sent purchase order: any number of item and custom lines in one transaction, all of them or none. Item lines are booked into stock at the default location of the warehouse; custom lines, items without stock management and every line of a drop shipping order only count as delivered. The delivered quantities grow, a fully delivered line gets the day of the receipt as its delivery date, and the order becomes partially delivered or completed. The stock on order, the supplier's delivery time and the average purchase price follow the settings of the ERP. Raises the workflow event 'changed' when the status of the order changes, and 'completed' when the order is completed by it. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: an invalid request, for example no line, a quantity of 0, decimals for an item that is not divisible (PURCHASE_ORDER_QUANTITY_NOT_WHOLE), a warehouse on a drop shipping order (WAREHOUSE_NOT_ALLOWED), or PURCHASE_ORDER_BATCH_NUMBER_REQUIRED, PURCHASE_ORDER_BATCH_NUMBER_NOT_ALLOWED, PURCHASE_ORDER_SHELF_LIFE_EXPIRATION_DATE_REQUIRED, PURCHASE_ORDER_SHELF_LIFE_EXPIRATION_DATE_NOT_ALLOWED, PURCHASE_ORDER_SERIAL_NUMBERS_REQUIRED, PURCHASE_ORDER_SERIAL_NUMBERS_NOT_ALLOWED, PURCHASE_ORDER_SERIAL_NUMBER_COUNT_MISMATCH or PURCHASE_ORDER_SERIAL_NUMBER_DUPLICATE; PURCHASE_ORDER_NOT_FOUND or PURCHASE_ORDER_LINE_ITEM_NOT_FOUND (the order or a line was not found); WAREHOUSE_NOT_FOUND (the warehouse was not found); PURCHASE_ORDER_NOT_SENT or PURCHASE_ORDER_COMPLETED (the order is not open for deliveries); WAREHOUSE_NOT_RECEIVABLE (the warehouse cannot receive goods directly); PURCHASE_ORDER_LINE_ITEM_NOT_RECEIVABLE (an allowance or charge, or an item that cannot be received: variation parent, stock variation, bill of materials, partial-quantity item); PURCHASE_ORDER_LINE_ITEM_NOT_OPEN (nothing is open on the line); PURCHASE_ORDER_SERIAL_NUMBER_ALREADY_IN_STOCK. - Request"
input ReceivePurchaseOrderGoodsCommandRequestInput {
"The ID of the purchase order."
purchaseOrderId: ID!
"The warehouse the goods are booked into: active, not of the fulfillment network or Amazon, without storage location management, not tied to a stock transfer. When omitted, the warehouse of the order. Not allowed for a drop shipping order."
warehouseId: ID
"The number on the supplier's delivery note."
deliveryNoteNumber: String
"The day the goods were received. When omitted, today."
receivedAt: DateTime
"What was received, at least one line."
lines: [PurchaseOrderGoodsReceiptLineInput]!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Books returned goods into stock: sets the condition, splits the line item where needed and sets Announced line items to Arrived. - Request"
input ReceiveReturnGoodsCommandRequestInput {
"The ID of the return. If it does not exist, errorCode is RETURN_NOT_FOUND."
returnId: ID!
"What arrived, at least one line. All lines are booked or none."
lines: [ReturnGoodsReceiptLineInput]!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Receives quantities from the transit warehouse in the target warehouse. Can be called several times until all quantities have been received; the stock transfer is completed when nothing is left in transit. - Request"
input ReceiveStockTransferFromTransitCommandRequestInput {
"The ID of the stock transfer to receive items for."
stockTransferId: ID!
"Received quantities per line item. At least one entry is required, and each line item can appear only once."
lineItems: [ReceiveStockTransferLineItemInput]!
"Comment stored with the stock postings of this receipt."
comment: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Quantity of one line item received from the transit warehouse in the target warehouse."
input ReceiveStockTransferLineItemInput {
"Line item of the stock transfer the quantity is received for."
stockTransferLineItemId: ID!
"Quantity received. Must be greater than zero and must not exceed the quantity in transit."
quantity: Decimal!
"Shelf life expiration date, batch number and serial numbers of the received stock. Required for items with the corresponding detailed inventory management and not allowed for other items."
inventoryManagementInformation: StockTransferInventoryManagementInformationInput
}
input RechnungFileKeySortInput {
kRechnungFile: SortEnumType @cost(weight: "10")
}
input RechnungKeySortInput {
kRechnung: SortEnumType @cost(weight: "10")
}
input RechnungPositionFileKeySortInput {
kRechnungPositionFile: SortEnumType @cost(weight: "10")
}
input RechnungPositionKeySortInput {
kRechnungPosition: SortEnumType @cost(weight: "10")
}
input RechnungStornogrundKeySortInput {
kRechnungStornogrund: SortEnumType @cost(weight: "10")
}
"Records money paid back outside the ERP for a sales credit note, as a negative payment. No money is moved. - Request"
input RecordSalesCreditNotePayoutCommandRequestInput {
"The ID of the sales credit note. A sales invoice correction ID fails as not found."
salesCreditNoteId: ID!
"The amount paid back, greater than 0, with at most two decimals. It is recorded as a negative amount."
amount: Decimal!
"The date of the payout. Omitted means now."
paymentDate: DateTime
"The payment method the money was paid back with."
paymentMethodId: ID!
"The ID of the transaction at the payment provider, the marketplace or the bank."
externalTransactionId: String
"A free note."
note: String
"The general ledger account for the accounting export. Omitted means the account of the payment method."
generalLedgerAccount: String
"Whether the payout is left out of the accounting export. Defaults to false when omitted."
isExcludedFromAccountingExport: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Records money paid back outside the ERP for a sales invoice correction, as a negative payment. No money is moved. - Request"
input RecordSalesInvoiceCorrectionPayoutCommandRequestInput {
"The ID of the sales invoice correction. A sales credit note ID fails as not found."
salesInvoiceCorrectionId: ID!
"The amount paid back, greater than 0, with at most two decimals. It is recorded as a negative amount."
amount: Decimal!
"The date of the payout. Omitted means now."
paymentDate: DateTime
"The payment method the money was paid back with."
paymentMethodId: ID!
"The ID of the transaction at the payment provider, the marketplace or the bank."
externalTransactionId: String
"A free note."
note: String
"The general ledger account for the accounting export. Omitted means the account of the payment method."
generalLedgerAccount: String
"Whether the payout is left out of the accounting export. Defaults to false when omitted."
isExcludedFromAccountingExport: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Records money received for a sales invoice. By default the amount is distributed: first to this invoice and its open dunning fee, with a rest within the cash discount its payment terms allow written off as cash discount, then to the other open, finalised invoices of the same sales order and finally to the order. With 'distribute' false the whole amount is recorded on this invoice. One call can therefore record several payments; the response lists them all. Omitting 'amount' records the open amount. A sales invoice or order that becomes fully paid starts its workflows. Errors: SALES_INVOICE_NOT_FOUND (the sales invoice was not found); PAYMENT_METHOD_NOT_FOUND (the payment method was not found); AMOUNT_NOT_POSITIVE (the amount is not greater than 0); SALES_INVOICE_IS_DRAFT (the invoice is a draft; finalise it first); SALES_INVOICE_CANCELLED (the invoice is cancelled; the payments of a cancelled invoice belong to the sales order, record the payment there); NO_OPEN_AMOUNT ('amount' was omitted and nothing is open); OPEN_AMOUNT_CHANGED (the open amount differs from 'expectedOpenAmount'). - Request"
input RecordSalesInvoicePaymentCommandRequestInput {
"The ID of the sales invoice."
salesInvoiceId: ID!
"The amount received, greater than 0, with at most two decimals. Omitted means the open amount of the document ('openAmount' of its payment balance)."
amount: Decimal
"The date of the payment. Omitted means now."
paymentDate: DateTime
"The payment method."
paymentMethodId: ID!
"Whether the amount is distributed (see the description) or recorded exactly on this document. Defaults to true when omitted."
distribute: Boolean
"The ID of the transaction at the payment provider, the marketplace or the bank."
externalTransactionId: String
"A free note."
note: String
"Whether the payment is a down payment. Defaults to false when omitted."
isDownPayment: Boolean
"The general ledger account for the accounting export. Omitted means the account of the payment method."
generalLedgerAccount: String
"Whether the payment is left out of the accounting export. Defaults to false when omitted."
isExcludedFromAccountingExport: Boolean
"The open amount the caller expects the document to have, as read from its payment balance ('GetSalesOrderPaymentBalance', 'GetSalesInvoicePaymentBalance'). When given and the open amount differs, nothing is recorded; this protects against recording the same payment twice."
expectedOpenAmount: Decimal
"Whether to suppress the workflows this call would start because a sales order or a sales invoice becomes fully paid. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Records money received for a sales order. By default the amount is distributed: first to the open, finalised invoices of the order, oldest first, then to their open dunning fees; a rest of an invoice within the cash discount its payment terms allow is written off as cash discount; what is left goes to the order, so an overpayment stays on the order. With 'distribute' false the whole amount is recorded on the sales order. One call can therefore record several payments; the response lists them all. Omitting 'amount' records the open amount. A cancelled sales order still takes payments, for example money that arrives after the cancellation; the order is then overpaid and the money can be refunded with 'CreateSalesOrderRefund'. A sales order or invoice that becomes fully paid starts its workflows. Errors: SALES_ORDER_NOT_FOUND (the sales order was not found); PAYMENT_METHOD_NOT_FOUND (the payment method was not found); AMOUNT_NOT_POSITIVE (the amount is not greater than 0; record money paid back with 'RecordSalesOrderPayout'); NO_OPEN_AMOUNT ('amount' was omitted and nothing is open); OPEN_AMOUNT_CHANGED (the open amount differs from 'expectedOpenAmount'). - Request"
input RecordSalesOrderPaymentCommandRequestInput {
"The ID of the sales order."
salesOrderId: ID!
"The amount received, greater than 0, with at most two decimals. Omitted means the open amount of the document ('openAmount' of its payment balance)."
amount: Decimal
"The date of the payment. Omitted means now."
paymentDate: DateTime
"The payment method."
paymentMethodId: ID!
"Whether the amount is distributed (see the description) or recorded exactly on this document. Defaults to true when omitted."
distribute: Boolean
"The ID of the transaction at the payment provider, the marketplace or the bank."
externalTransactionId: String
"A free note."
note: String
"Whether the payment is a down payment. Defaults to false when omitted."
isDownPayment: Boolean
"The general ledger account for the accounting export. Omitted means the account of the payment method."
generalLedgerAccount: String
"Whether the payment is left out of the accounting export. Defaults to false when omitted."
isExcludedFromAccountingExport: Boolean
"The open amount the caller expects the document to have, as read from its payment balance ('GetSalesOrderPaymentBalance', 'GetSalesInvoicePaymentBalance'). When given and the open amount differs, nothing is recorded; this protects against recording the same payment twice."
expectedOpenAmount: Decimal
"Whether to suppress the workflows this call would start because a sales order or a sales invoice becomes fully paid. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Records money paid back to the customer outside the ERP for an overpaid or cancelled sales order, for example in cash or by a transfer made elsewhere. It records a payment with a negative amount on the order; no money is moved. Money paid back for an invoice correction is recorded on the correction ('RecordSalesInvoiceCorrectionPayout'). To let the ERP pay the money back, create a refund with 'CreateSalesOrderRefund' instead. Errors: SALES_ORDER_NOT_FOUND (the sales order was not found); PAYMENT_METHOD_NOT_FOUND (the payment method was not found); AMOUNT_NOT_POSITIVE (the amount is not greater than 0); SALES_INVOICE_CORRECTION_WITHOUT_PAYOUT_EXISTS (an invoice correction of the order has not been paid out yet; record the payout on the correction). - Request"
input RecordSalesOrderPayoutCommandRequestInput {
"The ID of the sales order."
salesOrderId: ID!
"The amount paid back, greater than 0, with at most two decimals. It is recorded as a negative amount."
amount: Decimal!
"The date of the payout. Omitted means now."
paymentDate: DateTime
"The payment method the money was paid back with."
paymentMethodId: ID!
"The ID of the transaction at the payment provider, the marketplace or the bank."
externalTransactionId: String
"A free note."
note: String
"The general ledger account for the accounting export. Omitted means the account of the payment method."
generalLedgerAccount: String
"Whether the payout is left out of the accounting export. Defaults to false when omitted."
isExcludedFromAccountingExport: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Transfers the amount from a bank account to the recipient's IBAN."
input RefundByBankTransferInput {
"The bank account that sends the transfer. It must be able to send transfers."
paymentAccountId: ID!
"The name of the recipient, 1 to 500 characters."
recipientName: String!
"The IBAN of the recipient."
recipientIban: String!
"The BIC of the recipient's bank, when the bank needs it."
recipientBic: String
}
"Refunds an earlier incoming payment transaction through the payment account that received it. The money goes back to the payer of the transaction."
input RefundByPaymentTransactionInput {
"The incoming payment transaction to refund. It must belong to the payments of the document (for an invoice correction, of the corrected invoice), and enough of it must be left to refund."
paymentTransactionId: ID!
}
"How a new refund moves the money. Polymorphic: exactly one variant is sent."
input RefundExecutionInput @oneOf {
"Refunds an earlier incoming payment transaction through the payment account that received it. The money goes back to the payer of the transaction."
refundByPaymentTransaction: RefundByPaymentTransactionInput
"Transfers the amount from a bank account to the recipient's IBAN."
refundByBankTransfer: RefundByBankTransferInput
}
"Money the ERP pays back to a customer through a payment account. Creating it books a payout on the sales document at once."
input RefundFilterInput {
and: [RefundFilterInput!]
or: [RefundFilterInput!]
"The ID of the refund."
id: ComparableZahlungsabgleichAusgangKeyOperationFilterInput @cost(weight: "15")
"The payment account that carries out the refund."
paymentAccountId: ComparableZahlungsabgleichKontoKeyOperationFilterInput @cost(weight: "15")
"Where the refund stands."
status: ComparableRefundStatusOperationFilterInput @cost(weight: "200")
"How the refund moves the money."
method: ComparableRefundMethodOperationFilterInput @cost(weight: "200")
"The customer who gets the money."
customerId: ComparableKundeKeyOperationFilterInput @cost(weight: "50")
"The sales invoice correction the refund pays out. Empty for a sales credit note, and after the correction is cancelled."
salesInvoiceCorrectionId: ComparableGutschriftKeyOperationFilterInput @cost(weight: "50")
"The sales credit note the refund pays out. Empty after the credit note is cancelled; its payout then has no document."
salesCreditNoteId: ComparableGutschriftKeyOperationFilterInput @cost(weight: "50")
"The sales order the refund belongs to, through its payout or its invoice correction. Empty for a sales credit note."
salesOrderId: ComparableVerkaufAuftragKeyOperationFilterInput @cost(weight: "200")
"The amount paid back, positive, with two decimals."
amount: ComparableDecimalOperationFilterInput @cost(weight: "50")
"When the refund was created."
createdAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "50")
"When the refund was sent successfully."
sentAt: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "50")
}
"Creates a refund of what is left of an incoming payment transaction that belongs to no sales document, for example money that was paid twice or by mistake. The money goes back to the payer through the payment account of the transaction; nothing is booked on a document. Send it with 'SendRefund'. Read it with 'GetRefund'. Errors: PAYMENT_TRANSACTION_NOT_FOUND (the payment transaction was not found); PAYMENT_ACCOUNT_HIDDEN (the payment account is hidden; show it with 'ShowPaymentAccount' first); PAYMENT_TRANSACTION_NOT_REFUNDABLE (nothing of the transaction is left to refund ('refundableAmount' is 0), or it is not an incoming transaction); PAYMENT_ACCOUNT_CANNOT_TRANSFER (the payment account cannot send money); AMOUNT_NOT_POSITIVE (the amount is not greater than 0); AMOUNT_EXCEEDS_REFUNDABLE_AMOUNT (the amount is more than 'refundableAmount'); REFUNDABLE_AMOUNT_CHANGED (the refundable amount of the transaction differs from 'expectedRefundableAmount'). - Request"
input RefundPaymentTransactionRemainderCommandRequestInput {
"The ID of the payment transaction."
paymentTransactionId: ID!
"The amount to refund, greater than 0, with at most two decimals. Omitted means all of 'refundableAmount'."
amount: Decimal
"The refundable amount the caller expects ('refundableAmount'). When given and it differs, nothing is created."
expectedRefundableAmount: Decimal
"Whether to suppress the automatic workflows this call would start. Events for other systems are still published. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Money the ERP pays back to a customer through a payment account. Creating it books a payout on the sales document at once."
input RefundSortInput {
"The ID of the refund."
id: ZahlungsabgleichAusgangKeySortInput @cost(weight: "15")
"When the refund was created."
createdAt: SortEnumType @cost(weight: "50")
"When the refund was sent successfully."
sentAt: SortEnumType @cost(weight: "50")
"The amount paid back, positive, with two decimals."
amount: SortEnumType @cost(weight: "50")
}
"Releases a production order for production. The point in time and the releasing user are then available as ReleasedAt and ReleasedBy. Errors: PRODUCTION_ORDER_NOT_FOUND (the production order was not found); PRODUCTION_ORDER_ALREADY_RELEASED (the production order has already been released). - Request"
input ReleaseProductionOrderCommandRequestInput {
"The ID of the production order to release."
productionOrderId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Releases an open purchase order, so that it may be sent. Releasing a released order changes nothing and succeeds. For a supplier that is the company's own production, releasing starts the production planning. Raises the workflow events 'released' and 'changed'. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: PURCHASE_ORDER_NOT_FOUND (the order was not found); PURCHASE_ORDER_NOT_OPEN (the order is past release). - Request"
input ReleasePurchaseOrderCommandRequestInput {
"The ID of the purchase order."
purchaseOrderId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Releases a held sales order. Fails with a GraphQL error whose extensions.code is SalesOrderCannotBeReleased. - Request"
input ReleaseSalesOrderCommandRequestInput {
"The ID of the sales order. An unknown ID fails with SalesOrderNotFound."
salesOrderId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Removes the name of a multilingual attribute in one language. The name in the default language cannot be removed. System attributes cannot be changed. Errors: errorCode is ATTRIBUTE_NOT_FOUND (no attribute has this ID); ATTRIBUTE_KIND_MISMATCH (the attribute is a function attribute); ATTRIBUTE_IS_SYSTEM_ATTRIBUTE (the attribute is supplied by the system); ATTRIBUTE_NAME_NOT_FOUND (the attribute has no name in this language); ATTRIBUTE_DEFAULT_NAME_REQUIRED (the language is the default language). - Request"
input RemoveAttributeNameCommandRequestInput {
"The ID of the multilingual attribute."
attributeId: ID!
"The language as BCP 47 tag, for example 'de' or 'de-AT'. Case does not matter on input; the output uses the canonical form (language lower case, region upper case)."
languageTag: String!
}
"Clears the value of a custom field of a category. Clearing a value that is not set succeeds. The definition of the field is not touched; it is maintained in the custom field definitions API. - Request"
input RemoveCategoryCustomFieldValueCommandRequestInput {
"The ID of the category."
categoryId: ID!
"The ID of the custom field."
customFieldId: ID!
}
"Takes a characteristic out of a group. The characteristic and the group stay. Errors: CHARACTERISTIC_NOT_FOUND (no characteristic has this ID); CHARACTERISTIC_GROUP_NOT_FOUND (no group has this ID); CHARACTERISTIC_NOT_IN_GROUP (the characteristic is not in this group). - Request"
input RemoveCharacteristicFromGroupCommandRequestInput {
"The ID of the characteristic."
characteristicId: ID!
"The ID of the characteristic group."
characteristicGroupId: ID!
}
"Removes a characteristic value from an item. Idempotent. - Request"
input RemoveCharacteristicValueFromItemCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the characteristic the value belongs to."
characteristicId: ID!
"The ID of the characteristic value."
characteristicValueId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Clears the value of a custom field of a company. Clearing a value that is not set succeeds. Error codes: COMPANY_NOT_FOUND, CUSTOM_FIELD_NOT_FOUND, COMPANY_INACTIVE. - Request"
input RemoveCompanyCustomFieldCommandRequestInput {
"The ID of the company."
companyId: ID!
"The ID of the custom field."
customFieldId: ID!
}
"Removes the VAT ID entry of a country. The entry of the country of the company cannot be removed, and neither can an entry whose country orders are shipped to or that the tax settings use. - Request"
input RemoveCompanyVatIdCommandRequestInput {
"The ID of the company."
companyId: ID!
"The ISO 3166-1 alpha-2 code of the country."
countryCode: String!
}
"Removes a configuration group from a configurable item. The last group cannot be removed. - Request"
input RemoveConfigurationGroupCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the configuration group."
configurationGroupId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes the discount of a customer on an item category. Idempotent. - Request"
input RemoveCustomerCategoryDiscountCommandRequestInput {
"The ID of the customer."
customerId: ID!
"The ID of the item category."
categoryId: ID!
"Suppresses the automatic workflow triggers of this call (the customer event 'changed'). Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes the dunning block of a customer. Blocks of single invoices still apply. Removing a block that is not set changes nothing. Like every change of the customer, it updates the change time of the customer. - Request"
input RemoveCustomerDunningBlockCommandRequestInput {
"The ID of the customer."
customerId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes the name of a customer group in one language. Shops then show the name of the group. Idempotent. - Request"
input RemoveCustomerGroupNameCommandRequestInput {
"The ID of the customer group."
customerGroupId: ID!
"The language as BCP 47 language tag, for example de or de-AT: language subtag in lower case, region subtag in upper case. Case does not matter on input. Wawi currently holds only the two-letter language subtag."
languageTag: String!
"Suppresses the automatic workflow triggers of this call. Customer groups raise no workflow event today; the parameter keeps calls stable when one is added. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes a label from a customer. Idempotent. - Request"
input RemoveCustomerLabelCommandRequestInput {
"The ID of the customer."
customerId: ID!
"The ID of the label."
labelId: ID!
"Suppresses the automatic workflow triggers of this call (the customer event 'changed'). Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes the texts of a customer print text in one language. Customers in that language get no texts printed from it. - Request"
input RemoveCustomerPrintTextTranslationCommandRequestInput {
"The ID of the customer print text."
customerPrintTextId: ID!
"The language as BCP 47 tag, for example de or de-AT; case is not significant."
languageTag: String!
}
"Removes the additional cost of one type from an incoming invoice, from all line items. - Request"
input RemoveIncomingInvoiceAdditionalCostCommandRequestInput {
"The ID of the incoming invoice."
incomingInvoiceId: ID!
"The ID of the additional cost type."
additionalCostTypeId: ID!
}
"Removes the part of an additional cost allocated to one line item. The other line items keep their parts. - Request"
input RemoveIncomingInvoiceLineItemAdditionalCostCommandRequestInput {
"The ID of the incoming invoice."
incomingInvoiceId: ID!
"The ID of the line item."
lineItemId: ID!
"The ID of the additional cost type."
additionalCostTypeId: ID!
}
"Removes one value of an attribute: the cell for the given sales channel and language. Without them the default value without language is removed, never all values. - Request"
input RemoveItemAttributeValueCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the attribute definition."
attributeId: ID!
"The sales channel of the value, a tenant-local composite identifier such as 1-1-1. Omitted means the Wawi default."
salesChannelId: ID
"The language of the value as BCP 47 language tag, for example 'de' or 'de-AT'. Language subtag in lower case, region subtag in upper case; the input is not case-sensitive. Omitted means the value without language."
languageTag: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Detaches a condition item. The item stays as a normal item. Idempotent. - Request"
input RemoveItemConditionItemCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the condition item."
conditionItemId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes the mapping of an item condition to a sales platform. Errors: errorCode is ITEM_CONDITION_NOT_FOUND, ITEM_CONDITION_MARKETPLACE_CODE_NOT_FOUND (404). - Request"
input RemoveItemConditionMarketplaceCodeCommandRequestInput {
"The ID of the item condition."
itemConditionId: ID!
"The key of the sales platform."
marketplace: String!
}
"Removes the name of an item condition in one language. The name in the standard language of the Wawi cannot be removed; replace it with 'SetItemConditionTranslation'. Errors: errorCode is ITEM_CONDITION_NOT_FOUND, ITEM_CONDITION_TRANSLATION_NOT_FOUND (404); ITEM_CONDITION_DEFAULT_NAME_REQUIRED (409). - Request"
input RemoveItemConditionTranslationCommandRequestInput {
"The ID of the item condition."
itemConditionId: ID!
"The language as BCP 47 tag, for example 'de' or 'de-AT'. Case is not significant."
languageTag: String!
}
"Stops offering an item in a cross-selling group of an item. Idempotent. - Request"
input RemoveItemCrossSellingCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the cross-selling group."
groupId: ID!
"The ID of the item that is offered."
crossSellItemId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes the value of a custom field of an item. Idempotent. - Request"
input RemoveItemCustomFieldValueCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the custom field."
customFieldId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes the name of a delivery status in one language. The last name cannot be removed: a delivery status without a name does not exist; delete the delivery status instead. Errors: errorCode is ITEM_DELIVERY_STATUS_NOT_FOUND, ITEM_DELIVERY_STATUS_TRANSLATION_NOT_FOUND (404); ITEM_DELIVERY_STATUS_LAST_NAME_REQUIRED (409). - Request"
input RemoveItemDeliveryStatusTranslationCommandRequestInput {
"The ID of the delivery status."
itemDeliveryStatusId: ID!
"The language as BCP 47 tag, for example 'de' or 'de-AT'. Case is not significant."
languageTag: String!
}
"Removes the assignment of a download file to an item. The file stays. Idempotent. - Request"
input RemoveItemDownloadCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the download file."
downloadId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes the assignment of an item to a category. Idempotent. Every item that is not a combination of a variation parent keeps at least one category, so the last one cannot be removed (error code ITEM_REQUIRES_CATEGORY). Removing a category from a variation parent removes it from its children as well. A combination has the categories of its parent and cannot lose one on its own (error code ITEM_CATEGORIES_MANAGED_BY_VARIATION_PARENT). - Request"
input RemoveItemFromCategoryCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the category."
categoryId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes the assignment of an image to an item in one scope. Only the assignment is removed; the file itself stays in the blob storage and is managed there. Idempotent. When the main image is removed, the next one becomes the main image. - Request"
input RemoveItemImageCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the image in the blob storage."
blobIdentifier: UUID!
"The sales channel, a tenant-local composite identifier such as 1-1-1. Omitted means the default images of the item."
salesChannelId: ID
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes a label from an item. Idempotent. - Request"
input RemoveItemLabelCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the label."
labelId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes the assignment of an upload field to an item. Idempotent. - Request"
input RemoveItemUploadCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the upload field."
uploadId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes a component from a kit. The last component cannot be removed: a kit without components would be dissolved, which turning it back with 'PUT items/{itemId}/regular' does. - Request"
input RemoveKitComponentCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the component item."
componentItemId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes the override; the tax codes of the rate apply again. - Request"
input RemoveLineItemTypeTaxCodeOverrideCommandRequestInput {
"The ID of the tax zone."
taxZoneId: ID!
"The ID of the tax class whose rate in the tax zone is meant."
taxClassId: ID!
"The type of line item, the key of the type, for example SHIPPING. Known values: CUSTOM, SHIPPING, COUPON, PAYMENT, SHIPPING_SURCHARGE, NEW_CUSTOMER_COUPON, CASH_ON_DELIVERY, SHIPPING_SURCHARGE_ITEM, PACKING, GIFT_FOR_FREE, TRUSTED_SHOPS, INTEREST_PREMIUM, PROCESSING_FEE, CARTON, RETURN_DELIVERY, MULTI_PURPOSE_VOUCHER, MULTI_PURPOSE_VOUCHER_DIGITAL, SINGLE_PURPOSE_VOUCHER, SINGLE_PURPOSE_VOUCHER_DIGITAL, SINGLE_PURPOSE_VOUCHER_REDEMPTION."
lineItemType: String!
}
"Removes the name of a measurement unit in one language. The name in the default language cannot be removed. Removing a name that does not exist succeeds. - Request"
input RemoveMeasurementUnitTranslationCommandRequestInput {
"The ID of the measurement unit."
measurementUnitId: ID!
"The language as BCP 47 tag, for example 'de' or 'de-AT'. Case is not significant."
languageTag: String!
}
"Removes the assignment of a resource from an operation. The resource itself is not deleted. errorCode is `OPERATION_NOT_FOUND` if the operation does not exist and `OPERATION_RESOURCE_NOT_ASSIGNED` if the resource is not assigned to the operation. - Request"
input RemoveOperationResourceCommandRequestInput {
"The ID of the operation."
operationId: ID!
"The ID of the resource whose assignment is removed."
resourceId: ID!
}
"Removes the assignment of a resource group from an operation. The resource group itself is not deleted. errorCode is `OPERATION_NOT_FOUND` if the operation does not exist and `OPERATION_RESOURCE_GROUP_NOT_ASSIGNED` if the resource group is not assigned to the operation. - Request"
input RemoveOperationResourceGroupCommandRequestInput {
"The ID of the operation."
operationId: ID!
"The ID of the resource group whose assignment is removed."
resourceGroupId: ID!
}
"Removes the assignment of one criterion from a template: it then applies to all values of the criterion. Removing an assignment it does not have changes nothing and succeeds. Errors: 404 TEMPLATE_NOT_FOUND. GraphQL only (new API rule). - Request"
input RemoveOutputTemplateAssignmentCommandRequestInput {
"The ID of the template."
templateId: ID!
"The key of the criterion in lowercase with hyphens, for example customer-group. The form of the known values (CUSTOMER_GROUP) is accepted as well."
criterion: String!
}
"Removes one postal code of a country with all its places. Error codes: POSTAL_CODE_NOT_FOUND (404), COUNTRY_NOT_FOUND (404). - Request"
input RemovePostalCodeCommandRequestInput {
"The country, as ISO 3166-1 alpha-2 code of two letters; case does not matter."
countryCode: String!
"The postal code."
postalCode: String!
}
"Removes the override; the tax codes of the rate apply again. - Request"
input RemoveProductGroupTaxCodeOverrideCommandRequestInput {
"The ID of the tax zone."
taxZoneId: ID!
"The ID of the tax class whose rate in the tax zone is meant."
taxClassId: ID!
"The ID of the product group."
productGroupId: ID!
}
"Removes the selection of an item condition from a production item. Removing an item condition that is not selected changes nothing and succeeds. The default item condition is always selected and cannot be removed. Errors: ProductionItemNotFound (the production item was not found); DefaultItemConditionNotRemovable (the item condition is the default item condition). - Request"
input RemoveProductionItemConditionCommandRequestInput {
"The ID of the production item from which the item condition is removed."
productionItemId: ID!
"The ID of the item condition to remove."
itemConditionId: ID!
}
"Removes the confirmation of a line item, in every status; the open quantity is based on the ordered quantity again. Raises the workflow event 'changed'. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: PURCHASE_ORDER_NOT_FOUND or PURCHASE_ORDER_LINE_ITEM_NOT_FOUND (the order or the line was not found). - Request"
input RemovePurchaseOrderLineItemConfirmationCommandRequestInput {
"The ID of the purchase order."
purchaseOrderId: ID!
"The ID of the line item."
lineItemId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes the assignment of a resource from a resource group. The resource itself is not deleted. Errors: RESOURCE_GROUP_NOT_FOUND (the resource group was not found); RESOURCE_GROUP_RESOURCE_NOT_ASSIGNED (the resource is not assigned to the resource group). - Request"
input RemoveResourceFromResourceGroupCommandRequestInput {
"The ID of the resource group."
resourceGroupId: ID!
"The ID of the resource whose assignment is removed."
resourceId: ID!
}
"Takes an item back into restock suggestions; an item that is not excluded changes nothing and succeeds. The item is marked for the next synchronisation with the sales channels. Raises no workflow event. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: ITEM_NOT_FOUND (the item was not found). - Request"
input RemoveRestockSuggestionItemExclusionCommandRequestInput {
"The ID of the item."
itemId: ID!
}
"Removes the name and the description of a return reason in one language. Removing a language that has no translation succeeds. The default language cannot be removed. Errors: RETURN_REASON_NOT_FOUND (404); RETURN_REASON_DEFAULT_NAME_REQUIRED, RETURN_REASON_SYSTEM_TRANSLATION_NOT_EDITABLE (409). GraphQL only. - Request"
input RemoveReturnReasonTranslationCommandRequestInput {
"The ID of the return reason."
returnReasonId: ID!
"The language as BCP 47 tag, for example 'de' or 'de-AT'. Case is not significant."
languageTag: String!
}
"Removes the name of a return state in one language. Removing a language that has no name succeeds. The default language cannot be removed. Errors: RETURN_STATE_NOT_FOUND (404); RETURN_STATE_DEFAULT_NAME_REQUIRED (409). GraphQL only. - Request"
input RemoveReturnStateTranslationCommandRequestInput {
"The ID of the return state."
returnStateId: ID!
"The language as BCP 47 tag, for example 'de' or 'de-AT'. Case is not significant."
languageTag: String!
}
"Removes the dunning block of a sales invoice. A block of its customer still applies. Removing a block that is not set changes nothing. - Request"
input RemoveSalesInvoiceDunningBlockCommandRequestInput {
"The ID of the sales invoice."
salesInvoiceId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Removes the mapping of a cancellation reason for sales orders to a sales platform. GraphQL only. - Request"
input RemoveSalesOrderCancellationReasonMarketplaceCodeCommandRequestInput {
"The ID of the cancellation reason for sales orders."
cancellationReasonId: ID!
"The key of the sales platform."
marketplace: String!
}
"Removes the name of a sales unit in one language. The name in the default language cannot be removed. Removing a name that does not exist succeeds. Hidden sales units cannot be changed. - Request"
input RemoveSalesUnitTranslationCommandRequestInput {
"The ID of the sales unit."
salesUnitId: ID!
"The language as BCP 47 tag, for example 'de' or 'de-AT'. Case is not significant."
languageTag: String!
}
"Removes the override; the tax codes of the rate apply again. - Request"
input RemoveShippingMethodTaxCodeOverrideCommandRequestInput {
"The ID of the tax zone."
taxZoneId: ID!
"The ID of the tax class whose rate in the tax zone is meant."
taxClassId: ID!
"The ID of the shipping method."
shippingMethodId: ID!
}
"Removes the rate of a tax class from a tax zone, together with its overrides. Sales of the tax class to the countries of the tax zone can then no longer be taxed. - Request"
input RemoveTaxRateCommandRequestInput {
"The ID of the tax zone."
taxZoneId: ID!
"The ID of the tax class whose rate in the tax zone is meant."
taxClassId: ID!
}
"Removes a country from a tax zone, together with the states of that country in the tax zone. - Request"
input RemoveTaxZoneCountryCommandRequestInput {
"The ID of the tax zone."
taxZoneId: ID!
"The country, as ISO 3166-1 alpha-2 code."
countryCode: String!
}
"Removes one state from a tax zone. - Request"
input RemoveTaxZoneStateCommandRequestInput {
"The ID of the tax zone."
taxZoneId: ID!
"The country, as ISO 3166-1 alpha-2 code."
countryCode: String!
"The state within the country, for example CA."
stateCode: String!
}
"Removes the content of a text block in one language. The text block and its other languages stay. - Request"
input RemoveTextBlockTranslationCommandRequestInput {
"The ID of the text block."
textBlockId: ID!
"The language as BCP 47 tag, for example de or de-AT; case is not significant."
languageTag: String!
}
"Removes a user from a group. Errors: USER_GROUP_NOT_FOUND, USER_NOT_FOUND, USER_IS_LAST_ADMINISTRATOR. - Request"
input RemoveUserGroupMemberCommandRequestInput {
"The ID of the user."
userId: ID!
"The ID of the user group. Only an administrator may change the members of the administrator group. Errors: USER_PERMISSION_DENIED."
userGroupId: ID!
}
"Takes a permission from a group. Errors: USER_GROUP_NOT_FOUND, USER_GROUP_IS_ADMINISTRATOR_GROUP. - Request"
input RemoveUserGroupPermissionCommandRequestInput {
"The ID of the user group."
userGroupId: ID!
"The ID of the permission. Errors: PERMISSION_NOT_FOUND, PERMISSION_NOT_GRANTABLE (a grouping node)."
permissionId: ID!
}
"Detaches an item from the variation parent. The item stays as a regular item. Afterwards it needs a category of its own, because only a combination is exempt from that: it keeps the categories it showed as a combination, the ones of the parent, unless 'categoryIds' names others, which replace them. An item that would be left without a category is refused (error code ITEM_REQUIRES_CATEGORY). The last combination cannot be detached; dissolve the variation by turning the parent back with 'PUT items/{itemId}/regular'. - Request"
input RemoveVariationCombinationCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the item that is the combination."
combinationItemId: ID!
"The categories the item has after it is detached. Omitted means it keeps the categories of the parent. If given, at least one."
categoryIds: [ID]
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Renames a group of an entity type. All attributes and function attributes of the group move to the new name in one step. To move a single attribute into another group use 'groupName' of 'UpdateMultilingualAttribute' or 'UpdateFunctionAttribute'. Errors: errorCode is ATTRIBUTE_GROUP_NOT_FOUND (the entity type has no group with this name), ATTRIBUTE_GROUP_NAME_INVALID (the new name is empty, longer than 150 characters or contains '#'), ATTRIBUTE_GROUP_NAME_ALREADY_EXISTS (the entity type already has another group with the new name, regardless of upper and lower case), ATTRIBUTE_GROUP_CONTAINS_SYSTEM_ATTRIBUTE (the group contains a system attribute). - Request"
input RenameAttributeGroupCommandRequestInput {
"The kind of record whose group is renamed. Groups of different entity types are independent. Known values: ITEM, CATEGORY. The set can grow; a client must tolerate values it does not know."
entityType: String!
"The current name of the group. Upper and lower case are ignored."
groupName: String!
"The new name of the group. It must not contain the character '#'."
newGroupName: String!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renames a template. Errors: 400 VALIDATION_FAILED; 404 TEMPLATE_NOT_FOUND; 409 TEMPLATE_NAME_DUPLICATE. GraphQL only (new API rule). - Request"
input RenameOutputTemplateCommandRequestInput {
"The ID of the template."
templateId: ID!
"The new name."
name: String!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renames a template set. GraphQL only (new API rule). Errors: 400 VALIDATION_FAILED (the name is empty or longer than 64 characters); 404 TEMPLATE_SET_NOT_FOUND; 409 TEMPLATE_SET_NAME_DUPLICATE (another set of the document type has the name). - Request"
input RenameOutputTemplateSetCommandRequestInput {
"The ID of the template set."
templateSetId: ID!
"The new name. Unique per document type, at most 64 characters."
name: String!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Takes back 'CompleteSalesOrderWithoutShipping': the open quantities count again. Codes: see 'salesOrderId'. - Request"
input ReopenSalesOrderShippingCommandRequestInput {
"The ID of the sales order. Fails with a GraphQL error whose extensions.code is SalesOrderNotFound or SalesOrderNotCompletedWithoutShipping."
salesOrderId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Replaces the list of allowed values of a value list field. Removing or renaming entries is always possible; existing values of items and categories are changed or cleared accordingly. Values on other records (customers, companies, sales orders, production) are not changed. - Request"
input ReplaceCustomFieldAllowedValuesCommandRequestInput {
"The ID of the value list field."
customFieldId: ID!
"The new list in the order the values are offered. Entries are trimmed, not empty, distinct ignoring letter case and must not contain the character '|'. An entry of the current list that is neither kept nor named in a 'renamedFrom' is removed."
values: [CustomFieldAllowedValueInput]!
"If true, automatic workflows are not triggered by this call."
disableAutomaticWorkflows: Boolean
}
"Gives every sales order and sales quotation that carries this reason the replacement reason, then deletes this reason, in one transaction. Orders that are completed are changed too. Each changed order gets a history entry and can trigger workflows. This is the only way to remove a reason that is in use, and the only operation of this API that changes orders. GraphQL only. - Request"
input ReplaceOnHoldReasonCommandRequestInput {
"The ID of the on-hold reason to remove."
onHoldReasonId: ID!
"The ID of the on-hold reason the affected orders get."
replacementOnHoldReasonId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Sets the value of one setting and returns the entry as it is now. The type of the value must be the type of the setting. Fails with a GraphQL error whose extensions.code is SettingPermissionDenied, SettingNotFound, SettingReadOnly, SettingValueInvalid (also when not exactly one field of the value is set), SettingValueTypeMismatch or SettingScopeNotSupported, and extensions.settingKey names the setting. - Request"
input ReplaceSettingValueCommandRequestInput {
"The key of the setting. Dotted camelCase segments (pattern ^[a-z][a-zA-Z0-9]*(\\.[a-z][a-zA-Z0-9]*)*$), at most 200 characters."
settingKey: String!
"For whom the value applies. Defaults to Global."
scope: SettingsScope
"For the scopes User and Workstation: the user. Defaults to the calling user."
userId: ID
"For the scope Workstation: the name of the workstation. Defaults to the calling workstation."
workstation: String
"The new value. This is the whole body in REST."
value: NewSettingValueInput!
}
"Sets the value of one setting of a warehouse. errorCode is one of: the request is invalid. Properties are missing or not allowed (the error names the offending properties); SETTING_PERMISSION_DENIED (the caller lacks the permission of the setting); SETTING_NOT_FOUND (the setting does not exist); SETTING_READ_ONLY (the setting is read-only); SETTING_VALUE_INVALID, SETTING_VALUE_TYPE_MISMATCH, SETTING_SCOPE_NOT_SUPPORTED (the value breaks the constraints of the setting, has the wrong type, or the setting does not exist for this scope); WAREHOUSE_SETTING_NOT_APPLICABLE or WAREHOUSE_TYPE_DOES_NOT_SUPPORT_SETTINGS (the setting does not apply to the type of the warehouse, or the warehouse has no settings). - Request"
input ReplaceWarehouseSettingValueCommandRequestInput {
"The ID of the warehouse."
warehouseId: ID!
"The key of the setting."
settingKey: String!
"The new value. Its variant has to match the value type of the setting."
value: WarehouseSettingValueInput!
}
"Sets the pause between two runs of the sync; it applies from the next run, a running pause is not shortened. - Request"
input ReplaceWorkerSyncIntervalCommandRequestInput {
"The ID of the sync."
syncId: ID!
"The pause in seconds. Not shorter than the minimum of the sync type."
intervalSeconds: Int!
}
"Sets one option of the sync; the value must have the type of the option and applies from the next run. - Request"
input ReplaceWorkerSyncOptionCommandRequestInput {
"The ID of the sync."
syncId: ID!
"The key of the option."
optionKey: String!
"The new value."
value: OptionValueInput!
}
"Announces a file and returns a short-lived URL to upload its bytes to (step 1 of the upload). - Request"
input RequestFileUploadCommandRequestInput {
"The public ID of the new file, chosen by the client. Not empty and not used by a file that has bytes already."
blobIdentifier: UUID!
"The key of the destination type, see 'QueryFileDestinationTypes'."
destinationTypeKey: String!
"The size of the file in bytes, at most the limit of the destination type."
sizeInBytes: Long!
"The file name, 1 to 255 characters."
fileName: String!
"The content type of the file, for example image/png."
contentType: String!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Makes sure nothing of a subscription is due before a date, for example to pause it or to skip periods. Line items due before the date move to it (to the next date of their cadence on or after it); line items due later stay as they are; line items that end before the date end. Nothing is stored as paused. - Request"
input RescheduleSalesSubscriptionCommandRequestInput {
"The ID of the subscription."
salesSubscriptionId: ID!
"No line item is due before this date. Only the date counts; a time part is ignored."
nextDueDate: DateTime!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Sorts the values of a characteristic alphabetically again, by their name in the default language. Afterwards every value of the characteristic reads a sort order of null. Errors: CHARACTERISTIC_NOT_FOUND (no characteristic has this ID). - Request"
input ResetCharacteristicValueOrderCommandRequestInput {
"The ID of the characteristic."
characteristicId: ID!
}
"Resets the confirmed mark of a price inquiry. Resetting a price inquiry that is not confirmed changes nothing and succeeds. Raises the workflow event 'confirmed', as confirming does. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: PRICE_INQUIRY_NOT_FOUND (the price inquiry was not found). - Request"
input ResetPriceInquiryConfirmationCommandRequestInput {
"The ID of the price inquiry."
priceInquiryId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Resets the confirmation of the purchase order, in every status. The confirmations of the lines stay. Like confirming, it raises the workflow event 'confirmed'. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: PURCHASE_ORDER_NOT_FOUND (the order was not found). - Request"
input ResetPurchaseOrderConfirmationCommandRequestInput {
"The ID of the purchase order."
purchaseOrderId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Removes the value that was set and returns the entry as it is now, with the source Default. Fails with a GraphQL error whose extensions.code is SettingPermissionDenied, SettingNotFound or SettingReadOnly, and extensions.settingKey names the setting. - Request"
input ResetSettingValueCommandRequestInput {
"The key of the setting. Dotted camelCase segments (pattern ^[a-z][a-zA-Z0-9]*(\\.[a-z][a-zA-Z0-9]*)*$), at most 200 characters."
settingKey: String!
"For whom the value applies. Defaults to Global."
scope: SettingsScope
"For the scopes User and Workstation: the user. Defaults to the calling user."
userId: ID
"For the scope Workstation: the name of the workstation. Defaults to the calling workstation."
workstation: String
}
"Removes the value that was set, so the setting returns to its default. Idempotent. errorCode is one of: SETTING_PERMISSION_DENIED (the caller lacks the permission of the setting); SETTING_NOT_FOUND (the setting does not exist); SETTING_READ_ONLY (the setting is read-only); WAREHOUSE_SETTING_NOT_APPLICABLE or WAREHOUSE_TYPE_DOES_NOT_SUPPORT_SETTINGS (the setting does not apply to the type of the warehouse, or the warehouse has no settings). - Request"
input ResetWarehouseSettingValueCommandRequestInput {
"The ID of the warehouse."
warehouseId: ID!
"The key of the setting."
settingKey: String!
}
"Clears the error of the last run: the sync keeps sleeping, no longer reports lastResult Failed and runs nothing. - Request"
input ResetWorkerSyncErrorCommandRequestInput {
"The ID of the sync."
syncId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Deletes the syncs of ALL tenants with their intervals while the worker is stopped; it needs the explicit confirmation. - Request"
input ResetWorkerSyncsCommandRequestInput {
"Must be true. It confirms that the syncs and intervals of all tenants are deleted."
confirmDeletingSyncsOfAllTenants: Boolean!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"A resource category. It determines which properties a resource has (e.g. workbench, machine or employee). Resource categories are predefined and cannot be created, changed or deleted."
input ResourceCategoryFilterInput {
and: [ResourceCategoryFilterInput!]
or: [ResourceCategoryFilterInput!]
"The ID of this resource category."
id: ComparableResourceCategoryKeyOperationFilterInput @cost(weight: "15")
"The name of this resource category."
name: StringOperationFilterInput @cost(weight: "15")
"Whether this resource category is visible to users."
isVisible: ComparableBooleanOperationFilterInput @cost(weight: "15")
"Whether this resource category is enabled for use."
isEnabled: ComparableBooleanOperationFilterInput @cost(weight: "15")
}
"Ein Schlüssel für eine Ressourcenkategorie."
input ResourceCategoryKeySortInput {
"Der durch diesen Schlüssel beschriebene global eindeutige Bezeichner."
value: SortEnumType @cost(weight: "10")
}
"A resource category. It determines which properties a resource has (e.g. workbench, machine or employee). Resource categories are predefined and cannot be created, changed or deleted."
input ResourceCategorySortInput {
"The ID of this resource category."
id: ResourceCategoryKeySortInput @cost(weight: "15")
"The name of this resource category."
name: SortEnumType @cost(weight: "15")
"Whether this resource category is visible to users."
isVisible: SortEnumType @cost(weight: "15")
"Whether this resource category is enabled for use."
isEnabled: SortEnumType @cost(weight: "15")
}
"A resource group. It groups resources of one resource category, independent of their resource type."
input ResourceGroupFilterInput {
and: [ResourceGroupFilterInput!]
or: [ResourceGroupFilterInput!]
"The ID of this resource group."
id: ComparableResourceGroupKeyOperationFilterInput @cost(weight: "15")
"The name of this resource group."
name: StringOperationFilterInput @cost(weight: "50")
"The ID of the resource category of this resource group (see QueryResourceCategories). The group can only contain resources of this category. Changed by ChangeResourceGroupCategory."
categoryId: ComparableResourceCategoryKeyOperationFilterInput @cost(weight: "50")
"The point in time at which this resource group was created."
createdAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "50")
"The point in time at which this resource group was last changed."
changedAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "50")
}
input ResourceGroupKeySortInput {
"Gets the resource group identifier."
kResourceGroup: SortEnumType @cost(weight: "10")
}
"A resource group. It groups resources of one resource category, independent of their resource type."
input ResourceGroupSortInput {
"The ID of this resource group."
id: ResourceGroupKeySortInput @cost(weight: "15")
"The name of this resource group."
name: SortEnumType @cost(weight: "50")
"The ID of the resource category of this resource group (see QueryResourceCategories). The group can only contain resources of this category. Changed by ChangeResourceGroupCategory."
categoryId: ResourceCategoryKeySortInput @cost(weight: "50")
"The point in time at which this resource group was created."
createdAt: SortEnumType @cost(weight: "50")
"The point in time at which this resource group was last changed."
changedAt: SortEnumType @cost(weight: "50")
}
"Der Schlüssel einer Ressource."
input ResourceKeySortInput {
"Der eindeutige Bezeichner einer Ressource."
kResource: SortEnumType @cost(weight: "10")
}
"A resource type. It groups resources of one category with common properties."
input ResourceTypeFilterInput {
and: [ResourceTypeFilterInput!]
or: [ResourceTypeFilterInput!]
"The ID of this resource type."
id: ComparableResourceTypeKeyOperationFilterInput @cost(weight: "15")
"The name of this resource type."
name: StringOperationFilterInput @cost(weight: "50")
"The ID of the resource category this resource type belongs to (see QueryResourceCategories). Only resources of this category can have this resource type. It cannot be changed."
categoryId: ComparableResourceCategoryKeyOperationFilterInput @cost(weight: "50")
"The point in time at which this resource type was created."
createdAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "50")
"The point in time at which this resource type was last changed."
changedAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "50")
}
input ResourceTypeKeySortInput {
kResourceType: SortEnumType @cost(weight: "10")
}
"A resource type. It groups resources of one category with common properties."
input ResourceTypeSortInput {
"The ID of this resource type."
id: ResourceTypeKeySortInput @cost(weight: "15")
"The name of this resource type."
name: SortEnumType @cost(weight: "50")
"The ID of the resource category this resource type belongs to (see QueryResourceCategories). Only resources of this category can have this resource type. It cannot be changed."
categoryId: ResourceCategoryKeySortInput @cost(weight: "50")
"The point in time at which this resource type was created."
createdAt: SortEnumType @cost(weight: "50")
"The point in time at which this resource type was last changed."
changedAt: SortEnumType @cost(weight: "50")
}
"Asks the worker to stop the sync and start it again. - Request"
input RestartWorkerSyncCommandRequestInput {
"The ID of the sync."
syncId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Manual corrections of the suggested quantities. Only the settings that are sent change; sending null clears a setting that can be empty."
input RestockSuggestionAdjustmentSettingsChangesInput {
"When set, a percentage added to every suggested quantity above 0, rounded up; -100 or more. Empty: none."
surchargePercent: Int
"When set, the demand planned by hand for the items counts as soon as its target date is no more than this many days away; 0 or more. Planned demand without a target date or without a warehouse, area or storage location never counts. Empty: demand planned by hand does not count."
manualDemandBufferDays: Int
}
"Manual corrections of the suggested quantities. For a new template or a calculation; an omitted setting takes its default."
input RestockSuggestionAdjustmentSettingsInput {
"When set, a percentage added to every suggested quantity above 0, rounded up; -100 or more. Empty: none. When omitted: empty."
surchargePercent: Int
"When set, the demand planned by hand for the items counts as soon as its target date is no more than this many days away; 0 or more. Planned demand without a target date or without a warehouse, area or storage location never counts. Empty: demand planned by hand does not count. When omitted: empty."
manualDemandBufferDays: Int
}
"What counts as open demand: which open sales orders, and which other requests. When no payment state is chosen at all, no open sales order counts. The payment, on-hold and due-date choices apply to stock transfers counted as demand as well. Only the settings that are sent change; sending null clears a setting that can be empty."
input RestockSuggestionDemandSettingsChangesInput {
"Whether paid open sales orders count. It cannot be cleared."
includePaidSalesOrders: Boolean
"Which unpaid open sales orders count. It cannot be cleared."
unpaidSalesOrders: RestockSuggestionUnpaidSalesOrders
"Whether open sales orders whose payment method delivers before payment count, paid or not. It cannot be cleared."
includeSalesOrdersDeliveredBeforePayment: Boolean
"Whether sales orders on hold count. A sales order held for a reason that excludes it from the purchase list never counts. It cannot be cleared."
includeOnHoldSalesOrders: Boolean
"When set, only sales orders whose delivery is due within this many days after the calculation, or that have no date, count; 0 or more. Empty: every open sales order counts."
salesOrderDueWithinDays: Int
"Whether open availability requests from the online shop count as demand, one unit per request. It cannot be cleared."
includeAvailabilityRequests: Boolean
"Whether the orders of sales channels that are not imported as sales orders yet count as demand. It cannot be cleared."
includeExternalReservations: Boolean
"Which open stock transfers of the item count as demand, as sales orders do. Known values: NONE (none), AMAZON_FULFILLMENT_ONLY (the transfers the ERP treats as transfers to Amazon fulfillment: those without an inbound purchase order, which includes direct transfers between the company's warehouses), EXCEPT_AMAZON_FULFILLMENT (the transfers with an inbound purchase order), ALL (every transfer). A client treats an unknown value as not supported. The server refuses an unknown value. It cannot be cleared."
stockTransfersAsDemand: String
}
"What counts as open demand: which open sales orders, and which other requests. When no payment state is chosen at all, no open sales order counts. The payment, on-hold and due-date choices apply to stock transfers counted as demand as well. For a new template or a calculation; an omitted setting takes its default."
input RestockSuggestionDemandSettingsInput {
"Whether paid open sales orders count. When omitted: true."
includePaidSalesOrders: Boolean
"Which unpaid open sales orders count. When omitted: 'ALL'."
unpaidSalesOrders: RestockSuggestionUnpaidSalesOrders
"Whether open sales orders whose payment method delivers before payment count, paid or not. When omitted: true."
includeSalesOrdersDeliveredBeforePayment: Boolean
"Whether sales orders on hold count. A sales order held for a reason that excludes it from the purchase list never counts. When omitted: true."
includeOnHoldSalesOrders: Boolean
"When set, only sales orders whose delivery is due within this many days after the calculation, or that have no date, count; 0 or more. Empty: every open sales order counts. When omitted: empty."
salesOrderDueWithinDays: Int
"Whether open availability requests from the online shop count as demand, one unit per request. When omitted: false."
includeAvailabilityRequests: Boolean
"Whether the orders of sales channels that are not imported as sales orders yet count as demand. When omitted: false."
includeExternalReservations: Boolean
"Which open stock transfers of the item count as demand, as sales orders do. Known values: NONE (none), AMAZON_FULFILLMENT_ONLY (the transfers the ERP treats as transfers to Amazon fulfillment: those without an inbound purchase order, which includes direct transfers between the company's warehouses), EXCEPT_AMAZON_FULFILLMENT (the transfers with an inbound purchase order), ALL (every transfer). A client treats an unknown value as not supported. The server refuses an unknown value. When omitted: 'NONE'."
stockTransfersAsDemand: String
}
"An entry of a destination area. Polymorphic by 'entryType'."
input RestockSuggestionDestinationAreaEntryFilterInput {
and: [RestockSuggestionDestinationAreaEntryFilterInput!]
or: [RestockSuggestionDestinationAreaEntryFilterInput!]
"The ID of the entry."
id: ComparableBedarfsgrundlagePositionKeyOperationFilterInput @cost(weight: "15")
"The discriminator: the kind of the entry."
entryType: ComparableRestockSuggestionDestinationAreaEntryTypeOperationFilterInput @cost(weight: "50")
}
"An entry of a destination area. Polymorphic by 'entryType'."
input RestockSuggestionDestinationAreaEntrySortInput {
"The priority of the entry among the entries of its area: 1 is the highest, the entries are numbered without gaps."
priority: SortEnumType @cost(weight: "50")
}
"A destination area: the warehouses a calculation covers the demand of, in their priority. The demand of open sales orders is put on the warehouse with the highest priority."
input RestockSuggestionDestinationAreaFilterInput {
and: [RestockSuggestionDestinationAreaFilterInput!]
or: [RestockSuggestionDestinationAreaFilterInput!]
"The ID of the destination area."
id: ComparableBedarfsgrundlageKeyOperationFilterInput @cost(weight: "15")
"The name of the destination area."
name: StringOperationFilterInput @cost(weight: "50")
"Whether the destination area can be used in settings. An inactive one keeps its entries."
isActive: ComparableBooleanOperationFilterInput @cost(weight: "50")
}
"A destination area: the warehouses a calculation covers the demand of, in their priority. The demand of open sales orders is put on the warehouse with the highest priority."
input RestockSuggestionDestinationAreaSortInput {
"The name of the destination area."
name: SortEnumType @cost(weight: "50")
}
"A new entry with a whole warehouse: an active warehouse that is neither a transit warehouse of stock transfers nor a warehouse of pending Amazon fulfillment reservations."
input RestockSuggestionDestinationAreaWarehouseEntryCreationInput {
"A temporary identifier chosen by the client, for example to match the answer to an optimistic update. It is not stored and is returned unchanged."
clientId: String
"The ID of the warehouse."
warehouseId: ID!
}
"Where the goods go: the warehouses whose demand is covered, and the stock limits that apply there. Only the settings that are sent change; sending null clears a setting that can be empty."
input RestockSuggestionDestinationSettingsChangesInput {
"Which warehouses get their demand covered. It cannot be cleared."
destinationSelection: RestockSuggestionDestinationSelection
"The destination area whose warehouses get their demand covered, in their priority; an active one. Required exactly when 'destinationSelection' is 'DESTINATION_AREA'."
destinationAreaId: ID
"The one warehouse that gets its demand covered; an active one. Required exactly when 'destinationSelection' is 'WAREHOUSE'."
warehouseId: ID
"How the demand of several destination warehouses is suggested. Only effective with a destination area of more than one warehouse. It cannot be cleared."
demandAllocation: RestockSuggestionDemandAllocation
"Whether a suggestion stays within the item's maximum stock of the warehouse, counting the stock, the inflow and what the stock settings add; what goes beyond it is suggested for the warehouses of lower priority. It cannot be cleared."
limitToMaximumStock: Boolean
"Whether the item's minimum stock over all warehouses is topped up, spread over the destination warehouses by their priority. It cannot be cleared."
fillGlobalMinimumStock: Boolean
"Whether the item's minimum stock of each destination warehouse is topped up. It cannot be cleared."
fillWarehouseMinimumStock: Boolean
}
"Where the goods go: the warehouses whose demand is covered, and the stock limits that apply there. For a new template or a calculation; an omitted setting takes its default."
input RestockSuggestionDestinationSettingsInput {
"Which warehouses get their demand covered."
destinationSelection: RestockSuggestionDestinationSelection!
"The destination area whose warehouses get their demand covered, in their priority; an active one. Required exactly when 'destinationSelection' is 'DESTINATION_AREA'."
destinationAreaId: ID
"The one warehouse that gets its demand covered; an active one. Required exactly when 'destinationSelection' is 'WAREHOUSE'."
warehouseId: ID
"How the demand of several destination warehouses is suggested. Only effective with a destination area of more than one warehouse. When omitted: 'FIRST_WAREHOUSE'."
demandAllocation: RestockSuggestionDemandAllocation
"Whether a suggestion stays within the item's maximum stock of the warehouse, counting the stock, the inflow and what the stock settings add; what goes beyond it is suggested for the warehouses of lower priority. When omitted: true."
limitToMaximumStock: Boolean
"Whether the item's minimum stock over all warehouses is topped up, spread over the destination warehouses by their priority. When omitted: false."
fillGlobalMinimumStock: Boolean
"Whether the item's minimum stock of each destination warehouse is topped up. When omitted: false."
fillWarehouseMinimumStock: Boolean
}
"A restock suggestion: how much of an item a destination warehouse should get from one source, with the figures it is computed from. Polymorphic by 'restockSuggestionType': from a supplier, from a source warehouse, or without a source. Quantities are in the item's unit; prices are net."
input RestockSuggestionFilterInput {
and: [RestockSuggestionFilterInput!]
or: [RestockSuggestionFilterInput!]
"The discriminator: where the suggestion gets its goods from."
restockSuggestionType: ComparableRestockSuggestionTypeOperationFilterInput @cost(weight: "500")
"The ID of the item."
itemId: ComparableArtikelKeyOperationFilterInput @cost(weight: "500")
"The ID of the destination warehouse the suggestion is for."
warehouseId: ComparableWarenlagerKeyOperationFilterInput @cost(weight: "500")
"The item's SKU."
sku: StringOperationFilterInput @cost(weight: "500")
"The quantity suggested, 0 or more."
suggestedQuantity: ComparableDecimalOperationFilterInput @cost(weight: "500")
}
"The forecast of the demand from the past consumption: the consumption per day of a period, multiplied by the days the forecast covers. The consumption is the quantity of the sales orders created in the period: what was delivered from the destination warehouse plus what is still open. Only the settings that are sent change; sending null clears a setting that can be empty."
input RestockSuggestionForecastSettingsChangesInput {
"Whether and from which period the past consumption is projected onto the coming days. It cannot be cleared."
forecastType: RestockSuggestionForecastType
"How many days before the calculation, today included, the consumption is measured; 1 or more. Required exactly when 'forecastType' is 'LAST_DAYS'."
lastDays: Int
"The first day of the measured period, as a calendar day in the time zone of the ERP. Required exactly when 'forecastType' is 'CUSTOM_PERIOD'."
periodStart: DateTime
"The last day of the measured period, included, as a calendar day in the time zone of the ERP; not before 'periodStart'. Required exactly when 'forecastType' is 'CUSTOM_PERIOD'."
periodEnd: DateTime
"The period relative to the day of the calculation, resolved anew at every calculation as the ERP's period selection does. Required exactly when 'forecastType' is 'RELATIVE_PERIOD'. Known values: THIS_YEAR, LAST_YEAR, YEAR_BEFORE_LAST, LAST_TWO_YEARS, LAST_THREE_YEARS, THIS_QUARTER, LAST_QUARTER, QUARTER_BEFORE_LAST, THIRD_LAST_QUARTER, THIS_AND_LAST_QUARTER, Q1_THIS_YEAR, Q2_THIS_YEAR, Q3_THIS_YEAR, Q4_THIS_YEAR, Q1_LAST_YEAR, Q2_LAST_YEAR, Q3_LAST_YEAR, Q4_LAST_YEAR, Q1_YEAR_BEFORE_LAST, Q2_YEAR_BEFORE_LAST, Q3_YEAR_BEFORE_LAST, Q4_YEAR_BEFORE_LAST, THIS_MONTH, LAST_MONTH, MONTH_BEFORE_LAST, SINCE_START_OF_LAST_MONTH, SINCE_START_OF_MONTH_BEFORE_LAST, THIS_WEEK, LAST_WEEK, WEEK_BEFORE_LAST, SINCE_START_OF_LAST_WEEK, SINCE_START_OF_WEEK_BEFORE_LAST, LAST_SEVEN_DAYS, TODAY, YESTERDAY, DAY_BEFORE_YESTERDAY. A client treats an unknown value as not supported. The server refuses an unknown value."
relativePeriod: String
"How many coming days the forecast covers, 0 or more. It cannot be cleared."
horizonDays: Int
"Whether the consumption per day is computed over the days on which the item was in stock instead of all days of the period. It changes the suggested quantity only with a forecast. It cannot be cleared."
onlyDaysWithStock: Boolean
"Whether the quantities returned in the period, from all warehouses, are subtracted from the consumption. It changes the suggested quantity only with a forecast. It cannot be cleared."
subtractReturns: Boolean
"When set, a sales order whose quantity in the period exceeds this percentage of the item's average quantity per delivery counts as an order peak and is left out of the consumption; 100 or more. Empty: every sales order counts. It changes the suggested quantity only with a forecast."
orderPeakThresholdPercent: Int
}
"The forecast of the demand from the past consumption: the consumption per day of a period, multiplied by the days the forecast covers. The consumption is the quantity of the sales orders created in the period: what was delivered from the destination warehouse plus what is still open. For a new template or a calculation; an omitted setting takes its default."
input RestockSuggestionForecastSettingsInput {
"Whether and from which period the past consumption is projected onto the coming days. When omitted: 'NONE'."
forecastType: RestockSuggestionForecastType
"How many days before the calculation, today included, the consumption is measured; 1 or more. Required exactly when 'forecastType' is 'LAST_DAYS'."
lastDays: Int
"The first day of the measured period, as a calendar day in the time zone of the ERP. Required exactly when 'forecastType' is 'CUSTOM_PERIOD'."
periodStart: DateTime
"The last day of the measured period, included, as a calendar day in the time zone of the ERP; not before 'periodStart'. Required exactly when 'forecastType' is 'CUSTOM_PERIOD'."
periodEnd: DateTime
"The period relative to the day of the calculation, resolved anew at every calculation as the ERP's period selection does. Required exactly when 'forecastType' is 'RELATIVE_PERIOD'. Known values: THIS_YEAR, LAST_YEAR, YEAR_BEFORE_LAST, LAST_TWO_YEARS, LAST_THREE_YEARS, THIS_QUARTER, LAST_QUARTER, QUARTER_BEFORE_LAST, THIRD_LAST_QUARTER, THIS_AND_LAST_QUARTER, Q1_THIS_YEAR, Q2_THIS_YEAR, Q3_THIS_YEAR, Q4_THIS_YEAR, Q1_LAST_YEAR, Q2_LAST_YEAR, Q3_LAST_YEAR, Q4_LAST_YEAR, Q1_YEAR_BEFORE_LAST, Q2_YEAR_BEFORE_LAST, Q3_YEAR_BEFORE_LAST, Q4_YEAR_BEFORE_LAST, THIS_MONTH, LAST_MONTH, MONTH_BEFORE_LAST, SINCE_START_OF_LAST_MONTH, SINCE_START_OF_MONTH_BEFORE_LAST, THIS_WEEK, LAST_WEEK, WEEK_BEFORE_LAST, SINCE_START_OF_LAST_WEEK, SINCE_START_OF_WEEK_BEFORE_LAST, LAST_SEVEN_DAYS, TODAY, YESTERDAY, DAY_BEFORE_YESTERDAY. A client treats an unknown value as not supported. The server refuses an unknown value."
relativePeriod: String
"How many coming days the forecast covers, 0 or more. When omitted: 20."
horizonDays: Int
"Whether the consumption per day is computed over the days on which the item was in stock instead of all days of the period. It changes the suggested quantity only with a forecast. When omitted: false."
onlyDaysWithStock: Boolean
"Whether the quantities returned in the period, from all warehouses, are subtracted from the consumption. It changes the suggested quantity only with a forecast. When omitted: false."
subtractReturns: Boolean
"When set, a sales order whose quantity in the period exceeds this percentage of the item's average quantity per delivery counts as an order peak and is left out of the consumption; 100 or more. Empty: every sales order counts. It changes the suggested quantity only with a forecast. When omitted: empty."
orderPeakThresholdPercent: Int
}
"An item excluded from restock suggestions: it never appears in a calculation. It can still be ordered by hand and put on the purchase list."
input RestockSuggestionItemExclusionFilterInput {
and: [RestockSuggestionItemExclusionFilterInput!]
or: [RestockSuggestionItemExclusionFilterInput!]
"The ID of the item."
itemId: ComparableArtikelKeyOperationFilterInput @cost(weight: "15")
"The item's SKU."
sku: StringOperationFilterInput @cost(weight: "50")
}
"An item excluded from restock suggestions: it never appears in a calculation. It can still be ordered by hand and put on the purchase list."
input RestockSuggestionItemExclusionSortInput {
"The item's SKU."
sku: SortEnumType @cost(weight: "50")
}
"A line to order: the shape of a suggestion from a supplier, written back with the quantity to order."
input RestockSuggestionPurchaseOrderLineInput {
"A temporary identifier chosen by the client, for example to match the answer to an optimistic update. It is not stored and is returned unchanged."
clientId: String
"The ID of the item: an active item that is no variation parent and no bill of materials."
itemId: ID!
"The ID of the supplier, an active one; the company's own production as well."
supplierId: ID!
"The ID of the receiving warehouse, an active one that is no drop shipping target."
warehouseId: ID!
"The quantity to order, more than 0. As in 'CreatePurchaseOrder', the ERP raises it to the supplier's minimum order quantity, rounds it to whole units for an item that is not divisible and up to the supplier's order interval."
quantity: Decimal!
"The net price per unit in the supplier's currency; it may be negative. When omitted, the supplier's price for the item and quantity is used, including its scale prices."
netUnitPrice: Decimal
"Whether to assign the item to the supplier when it is not assigned yet, as 'CreatePurchaseOrder' does. Defaults to false: an item the supplier does not deliver is refused."
assignItemToSupplier: Boolean
}
"Changes of the settings of a template. Only the groups and settings that are sent change. A changed selection or forecast type drops the IDs, days or dates the previous one used; only the settings that are sent are checked."
input RestockSuggestionSettingsChangesInput {
"The sources. Only the settings that are sent change."
source: RestockSuggestionSourceSettingsChangesInput
"The destination. Only the settings that are sent change."
destination: RestockSuggestionDestinationSettingsChangesInput
"The forecast. Only the settings that are sent change."
forecast: RestockSuggestionForecastSettingsChangesInput
"The stock. Only the settings that are sent change."
stock: RestockSuggestionStockSettingsChangesInput
"The open demand. Only the settings that are sent change."
demand: RestockSuggestionDemandSettingsChangesInput
"The corrections. Only the settings that are sent change."
adjustments: RestockSuggestionAdjustmentSettingsChangesInput
}
"The settings of a new template or of a calculation. Only the destination is required; an omitted group or setting takes its default, the value the ERP calculates with when no template is used."
input RestockSuggestionSettingsInput {
"The sources. When omitted, every setting of the group takes its default."
source: RestockSuggestionSourceSettingsInput
"The destination."
destination: RestockSuggestionDestinationSettingsInput!
"The forecast. When omitted, every setting of the group takes its default."
forecast: RestockSuggestionForecastSettingsInput
"The stock. When omitted, every setting of the group takes its default."
stock: RestockSuggestionStockSettingsInput
"The open demand. When omitted, every setting of the group takes its default."
demand: RestockSuggestionDemandSettingsInput
"The corrections. When omitted, every setting of the group takes its default."
adjustments: RestockSuggestionAdjustmentSettingsInput
}
"A restock suggestion: how much of an item a destination warehouse should get from one source, with the figures it is computed from. Polymorphic by 'restockSuggestionType': from a supplier, from a source warehouse, or without a source. Quantities are in the item's unit; prices are net."
input RestockSuggestionSortInput {
"The item's SKU."
sku: SortEnumType @cost(weight: "500")
"The item's name in the default language."
itemName: SortEnumType @cost(weight: "500")
"The quantity suggested, 0 or more."
suggestedQuantity: SortEnumType @cost(weight: "500")
}
"Where the goods come from: the suppliers or warehouses that may cover the demand, and how their quantities are limited. Only the settings that are sent change; sending null clears a setting that can be empty."
input RestockSuggestionSourceSettingsChangesInput {
"Which sources may cover the demand. Known values: ALL_SUPPLIERS (every supplier of the item, active or not, except the company's own production; the supplier created last is used first, the others only get what it cannot cover), CHEAPEST_SUPPLIER (the supplier with the lowest purchase price for the item, without currency conversion, on a tie the default supplier; not the own production), FASTEST_SUPPLIER (the supplier with the shortest delivery time, on a tie the default supplier; not the own production), DEFAULT_SUPPLIER (the item's default supplier, also the own production), START_AREA (the entries of a start area, in their priority), SUPPLIER (one supplier; calculation only). A client treats an unknown value as not supported. The server refuses an unknown value. It cannot be cleared."
sourceSelection: String
"The start area whose entries are the sources, in their priority; an active one. Required exactly when 'sourceSelection' is 'START_AREA'."
startAreaId: ID
"The one supplier whose items are suggested. Required exactly when 'sourceSelection' is 'SUPPLIER'."
supplierId: ID
"Whether items that no supplier delivers are suggested as well, as suggestions without a source. It cannot be cleared."
includeItemsWithoutSupplier: Boolean
"Whether a suggestion from a supplier stays within the supplier stock recorded for the item, also when the supplier's stock is not maintained, which then usually limits it to 0. A suggestion from a source warehouse always stays within what that warehouse can give. It cannot be cleared."
limitToSupplierStock: Boolean
"Whether a suggestion from a supplier is raised to the supplier's minimum order quantity and rounded up to its order interval, without going beyond the maximum stock and the supplier stock. It cannot be cleared."
applyOrderQuantityRules: Boolean
}
"Where the goods come from: the suppliers or warehouses that may cover the demand, and how their quantities are limited. For a new template or a calculation; an omitted setting takes its default."
input RestockSuggestionSourceSettingsInput {
"Which sources may cover the demand. Known values: ALL_SUPPLIERS (every supplier of the item, active or not, except the company's own production; the supplier created last is used first, the others only get what it cannot cover), CHEAPEST_SUPPLIER (the supplier with the lowest purchase price for the item, without currency conversion, on a tie the default supplier; not the own production), FASTEST_SUPPLIER (the supplier with the shortest delivery time, on a tie the default supplier; not the own production), DEFAULT_SUPPLIER (the item's default supplier, also the own production), START_AREA (the entries of a start area, in their priority), SUPPLIER (one supplier; calculation only). A client treats an unknown value as not supported. The server refuses an unknown value. When omitted: 'ALL_SUPPLIERS'."
sourceSelection: String
"The start area whose entries are the sources, in their priority; an active one. Required exactly when 'sourceSelection' is 'START_AREA'."
startAreaId: ID
"The one supplier whose items are suggested. Required exactly when 'sourceSelection' is 'SUPPLIER'."
supplierId: ID
"Whether items that no supplier delivers are suggested as well, as suggestions without a source. When omitted: true."
includeItemsWithoutSupplier: Boolean
"Whether a suggestion from a supplier stays within the supplier stock recorded for the item, also when the supplier's stock is not maintained, which then usually limits it to 0. A suggestion from a source warehouse always stays within what that warehouse can give. When omitted: false."
limitToSupplierStock: Boolean
"Whether a suggestion from a supplier is raised to the supplier's minimum order quantity and rounded up to its order interval, without going beyond the maximum stock and the supplier stock. When omitted: false."
applyOrderQuantityRules: Boolean
}
"An entry of a start area. Polymorphic by 'entryType'."
input RestockSuggestionStartAreaEntryFilterInput {
and: [RestockSuggestionStartAreaEntryFilterInput!]
or: [RestockSuggestionStartAreaEntryFilterInput!]
"The ID of the entry."
id: ComparableBedarfsgrundlagePositionKeyOperationFilterInput @cost(weight: "15")
"The discriminator: the kind of the entry."
entryType: ComparableRestockSuggestionStartAreaEntryTypeOperationFilterInput @cost(weight: "50")
}
"An entry of a start area. Polymorphic by 'entryType'."
input RestockSuggestionStartAreaEntrySortInput {
"The priority of the entry among the entries of its area: 1 is the highest, the entries are numbered without gaps."
priority: SortEnumType @cost(weight: "50")
}
"A start area: the sources a calculation may order or move goods from, in their priority. A source with a lower priority only gets what the sources above it do not cover."
input RestockSuggestionStartAreaFilterInput {
and: [RestockSuggestionStartAreaFilterInput!]
or: [RestockSuggestionStartAreaFilterInput!]
"The ID of the start area."
id: ComparableBedarfsgrundlageKeyOperationFilterInput @cost(weight: "15")
"The name of the start area."
name: StringOperationFilterInput @cost(weight: "50")
"Whether the start area can be used in settings. An inactive one keeps its entries."
isActive: ComparableBooleanOperationFilterInput @cost(weight: "50")
}
"A new entry with the company's own production. It needs an active production in the ERP."
input RestockSuggestionStartAreaProductionEntryCreationInput {
"A temporary identifier chosen by the client, for example to match the answer to an optimistic update. It is not stored and is returned unchanged."
clientId: String
}
"A start area: the sources a calculation may order or move goods from, in their priority. A source with a lower priority only gets what the sources above it do not cover."
input RestockSuggestionStartAreaSortInput {
"The name of the start area."
name: SortEnumType @cost(weight: "50")
}
"A new entry with a supplier, an active one."
input RestockSuggestionStartAreaSupplierEntryCreationInput {
"A temporary identifier chosen by the client, for example to match the answer to an optimistic update. It is not stored and is returned unchanged."
clientId: String
"The ID of the supplier."
supplierId: ID!
}
"A new entry with a source warehouse: an active warehouse that is neither a transit warehouse of stock transfers nor a warehouse of pending Amazon fulfillment reservations."
input RestockSuggestionStartAreaWarehouseEntryCreationInput {
"A temporary identifier chosen by the client, for example to match the answer to an optimistic update. It is not stored and is returned unchanged."
clientId: String
"The ID of the source warehouse."
warehouseId: ID!
}
"What counts as stock of a destination warehouse besides its own stock. Only the settings that are sent change; sending null clears a setting that can be empty."
input RestockSuggestionStockSettingsChangesInput {
"Whether the open quantities of released purchase orders that were not sent yet count as inflow. It cannot be cleared."
includeReleasedPurchaseOrders: Boolean
"Whether the open quantities of sent and partially delivered purchase orders count as inflow. It cannot be cleared."
includeSentPurchaseOrders: Boolean
"For which warehouse an inflow counts. Only effective when purchase orders count as inflow. It cannot be cleared."
inflowAllocation: RestockSuggestionInflowAllocation
"When set, only purchase order lines expected within this many days after the calculation, or without a date, count as inflow; 0 or more. Empty: every open line counts. Only effective when purchase orders count as inflow."
inflowDueWithinDays: Int
"Whether the stock suppliers hold for the item counts, for supplier items whose stock the ERP maintains. It cannot be cleared."
includeSupplierStock: Boolean
"Whether the quantities on the purchase list count as stock of their warehouse; a quantity without a warehouse counts for the warehouse with the highest priority. It cannot be cleared."
includePurchaseListQuantities: Boolean
"Whether the open quantities of stock transfers to the warehouse count as stock. It cannot be cleared."
includeOpenStockTransfers: Boolean
"Whether the stock in transit to the warehouse, in the transit warehouses of stock transfers, counts as stock. It cannot be cleared."
includeStockInTransit: Boolean
"Whether the stock on locked storage locations counts as available. It cannot be cleared."
includeStockOnLockedStorageLocations: Boolean
"Whether the stock on storage locations locked for delivery counts as available. It cannot be cleared."
includeStockOnStorageLocationsLockedForDelivery: Boolean
"Whether the stock on clearance storage locations counts. Only effective for warehouses with storage location management. It cannot be cleared."
includeStockOnClearanceStorageLocations: Boolean
"Whether the stock on return storage locations counts. Only effective for warehouses with storage location management. It cannot be cleared."
includeStockOnReturnStorageLocations: Boolean
}
"What counts as stock of a destination warehouse besides its own stock. For a new template or a calculation; an omitted setting takes its default."
input RestockSuggestionStockSettingsInput {
"Whether the open quantities of released purchase orders that were not sent yet count as inflow. When omitted: true."
includeReleasedPurchaseOrders: Boolean
"Whether the open quantities of sent and partially delivered purchase orders count as inflow. When omitted: true."
includeSentPurchaseOrders: Boolean
"For which warehouse an inflow counts. Only effective when purchase orders count as inflow. When omitted: 'PURCHASE_ORDER_WAREHOUSE'."
inflowAllocation: RestockSuggestionInflowAllocation
"When set, only purchase order lines expected within this many days after the calculation, or without a date, count as inflow; 0 or more. Empty: every open line counts. Only effective when purchase orders count as inflow. When omitted: empty."
inflowDueWithinDays: Int
"Whether the stock suppliers hold for the item counts, for supplier items whose stock the ERP maintains. When omitted: false."
includeSupplierStock: Boolean
"Whether the quantities on the purchase list count as stock of their warehouse; a quantity without a warehouse counts for the warehouse with the highest priority. When omitted: false."
includePurchaseListQuantities: Boolean
"Whether the open quantities of stock transfers to the warehouse count as stock. When omitted: false."
includeOpenStockTransfers: Boolean
"Whether the stock in transit to the warehouse, in the transit warehouses of stock transfers, counts as stock. When omitted: true."
includeStockInTransit: Boolean
"Whether the stock on locked storage locations counts as available. When omitted: false."
includeStockOnLockedStorageLocations: Boolean
"Whether the stock on storage locations locked for delivery counts as available. When omitted: false."
includeStockOnStorageLocationsLockedForDelivery: Boolean
"Whether the stock on clearance storage locations counts. Only effective for warehouses with storage location management. When omitted: false."
includeStockOnClearanceStorageLocations: Boolean
"Whether the stock on return storage locations counts. Only effective for warehouses with storage location management. When omitted: false."
includeStockOnReturnStorageLocations: Boolean
}
"A template in a list."
input RestockSuggestionTemplateListEntryFilterInput {
and: [RestockSuggestionTemplateListEntryFilterInput!]
or: [RestockSuggestionTemplateListEntryFilterInput!]
"The ID of the template."
id: ComparableBestellvorschlagVorlageKeyOperationFilterInput @cost(weight: "15")
"The name of the template."
name: StringOperationFilterInput @cost(weight: "50")
}
"A template in a list."
input RestockSuggestionTemplateListEntrySortInput {
"The name of the template."
name: SortEnumType @cost(weight: "50")
}
"Represents a unique identifier for an exchange item of a return (tRMRetoureAustauschArtikel)."
input RetoureAustauschArtikelKeySortInput {
"Gets the exchange item identifier."
kRMRetoureAustauschArtikel: SortEnumType @cost(weight: "10")
}
input RetoureEtikettKeySortInput {
kRMRetoureEtikett: SortEnumType @cost(weight: "10")
}
input RetoureKeySortInput {
kRmRetoure: SortEnumType @cost(weight: "10")
}
input RetourePosKeySortInput {
kRmRetourePos: SortEnumType @cost(weight: "10")
}
input RetoureStatusKeySortInput {
kRMStatus: SortEnumType @cost(weight: "10")
}
"A new line item for a delivered line of a delivery note of the sales order."
input ReturnDeliveryNoteLineItemInput {
"The ID of the return reason. Required when the return is handled by the fulfillment network."
returnReasonId: ID
"The ID of the condition of the returned goods."
itemConditionId: ID
"The ID of the delivery note line item. It must belong to the sales order of the return."
deliveryNoteLineItemId: ID!
"A comment on the return reason."
returnReasonComment: String
"The returned quantity; greater than 0 and at most the delivered quantity."
quantity: Decimal!
"A comment on the condition of the goods."
itemConditionComment: String
"Whether the line item is credited in the sales invoice correction. Defaults to false."
includeInSalesInvoiceCorrection: Boolean
}
"An item the customer gets in exchange for the return. Exchange items become the line items of the exchange sales order."
input ReturnExchangeItemFilterInput {
and: [ReturnExchangeItemFilterInput!]
or: [ReturnExchangeItemFilterInput!]
"The ID of the exchange item."
id: ComparableRetoureAustauschArtikelKeyOperationFilterInput @cost(weight: "15")
"The ID of the item."
itemId: ComparableArtikelKeyOperationFilterInput @cost(weight: "50")
"The quantity."
quantity: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The net sales price per unit."
salesPriceNet: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The tax rate in percent, from the tax settings of the sales order."
taxRate: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The discount in percent."
discountPercent: ComparableDecimalOperationFilterInput @cost(weight: "50")
}
"An item the customer gets in exchange. Prices default to the prices of the sales order of the return."
input ReturnExchangeItemInput {
"The ID of the item."
itemId: ID!
"The net sales price per unit. Omitted means the price the item has for the sales order of the return."
salesPriceNet: Decimal
"The quantity; greater than 0."
quantity: Decimal!
"A note on the exchange item."
note: String
"The discount in percent. Omitted means the discount the sales order gives the item."
discountPercent: Decimal
}
"An item the customer gets in exchange for the return. Exchange items become the line items of the exchange sales order."
input ReturnExchangeItemSortInput {
"The ID of the exchange item."
id: RetoureAustauschArtikelKeySortInput @cost(weight: "15")
"The ID of the item."
itemId: ArtikelKeySortInput @cost(weight: "50")
"The quantity."
quantity: SortEnumType @cost(weight: "50")
"The net sales price per unit."
salesPriceNet: SortEnumType @cost(weight: "50")
}
"Updates to an exchange item; only the fields that are sent change. The item cannot be changed."
input ReturnExchangeItemUpdateInput {
"The net sales price per unit."
salesPriceNet: Decimal
"The quantity; greater than 0."
quantity: Decimal
"A note on the exchange item; null removes it."
note: String
"The discount in percent."
discountPercent: Decimal
}
"A return of goods by a customer with its header data. Line items, labels and exchange items are read with their own queries."
input ReturnFilterInput {
and: [ReturnFilterInput!]
or: [ReturnFilterInput!]
"The ID of the return."
id: ComparableRetoureKeyOperationFilterInput @cost(weight: "15")
"The ID of the customer. It is the customer of the sales order."
customerId: ComparableKundeKeyOperationFilterInput @cost(weight: "15")
"The ID of the sales order the return belongs to. Null for a return without a sales order."
salesOrderId: ComparableVerkaufAuftragKeyOperationFilterInput @cost(weight: "15")
"When the return was created."
createdAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "15")
"The ID of the state of the return: the state of the line item that is least far along."
stateId: ComparableRetoureStatusKeyOperationFilterInput @cost(weight: "50")
"The ID of the warehouse the goods are returned to."
warehouseId: ComparableWarenlagerKeyOperationFilterInput @cost(weight: "50")
"The return number. It is assigned from the number range of the company."
number: StringOperationFilterInput @cost(weight: "50")
}
"Goods that arrived for one line item. A line item can appear more than once, for example with two batches."
input ReturnGoodsReceiptLineInput {
"The storage location in the warehouse of the return. When omitted, the returns location of the warehouse or its default location."
storageLocationId: ID
"The ID of the line item. If it is not part of the return, errorCode is RETURN_LINE_ITEM_NOT_FOUND."
returnLineItemId: ID!
"Omitted means the condition of the line item, else the default. Another one on an arrived line item: errorCode is RETURN_LINE_ITEM_CONDITION_LOCKED."
itemConditionId: ID
"The best-before date. Required exactly when the item is tracked by it."
shelfLifeExpirationDate: DateTime
"The serial numbers, one per unit. Required when the item is tracked strictly by serial number; only for serial-number items."
serialNumbers: [String]!
"The quantity that arrived; greater than 0 and at most the open quantity of the line item."
quantity: Decimal!
"The batch number. Required exactly when the item is tracked by batch."
batchNumber: String
}
"A new line item for an item without a delivery note line."
input ReturnItemLineItemInput {
"The ID of the return reason. Required when the return is handled by the fulfillment network."
returnReasonId: ID
"The ID of the item."
itemId: ID!
"The ID of the condition of the returned goods."
itemConditionId: ID
"A comment on the return reason."
returnReasonComment: String
"The returned quantity; greater than 0."
quantity: Decimal!
"A comment on the condition of the goods."
itemConditionComment: String
"Whether the line item is credited in the sales invoice correction. Defaults to false."
includeInSalesInvoiceCorrection: Boolean
}
"A return label for a return: the tracking number and whether a label file exists. The file itself is not part of the model."
input ReturnLabelFilterInput {
and: [ReturnLabelFilterInput!]
or: [ReturnLabelFilterInput!]
"The ID of the return label."
id: ComparableRetoureEtikettKeyOperationFilterInput @cost(weight: "15")
"The ID of the shipping method. Null when a custom shipping method name is used."
shippingMethodId: ComparableVersandartKeyOperationFilterInput @cost(weight: "50")
"The tracking number of the return shipment."
trackingNumber: StringOperationFilterInput @cost(weight: "50")
"Whether a label file is stored for the label."
hasLabelFile: ComparableBooleanOperationFilterInput @cost(weight: "50")
"The name of a shipping method that is not set up in Wawi."
customShippingMethodName: StringOperationFilterInput @cost(weight: "50")
}
"A return label for a return: the tracking number and whether a label file exists. The file itself is not part of the model."
input ReturnLabelSortInput {
"The ID of the return label."
id: RetoureEtikettKeySortInput @cost(weight: "15")
"The tracking number of the return shipment."
trackingNumber: SortEnumType @cost(weight: "50")
}
"A line item of a return: what is returned, how much, why and in which state."
input ReturnLineItemFilterInput {
and: [ReturnLineItemFilterInput!]
or: [ReturnLineItemFilterInput!]
"The ID of the line item."
id: ComparableRetourePosKeyOperationFilterInput @cost(weight: "15")
"The ID of the state of the line item."
stateId: ComparableRetoureStatusKeyOperationFilterInput @cost(weight: "200")
"The ID of the return reason. Null when no reason was given."
returnReasonId: ComparableRueckgabegrundKeyOperationFilterInput @cost(weight: "50")
"The ID of the item. Null when the item was deleted."
itemId: ComparableArtikelKeyOperationFilterInput @cost(weight: "50")
"The ID of the condition of the returned goods. Null when none was recorded."
itemConditionId: ComparableZustandKeyOperationFilterInput @cost(weight: "50")
"The ID of the delivery note line item that is returned. Null for a line item without one."
deliveryNoteLineItemId: ComparableLieferscheinPosKeyOperationFilterInput @cost(weight: "15")
"The SKU of the item, as stored on the line item."
sku: StringOperationFilterInput @cost(weight: "50")
"The name of the item, as stored on the line item."
name: StringOperationFilterInput @cost(weight: "50")
"The returned quantity."
quantity: ComparableDecimalOperationFilterInput @cost(weight: "50")
"Whether the line item is credited in the sales invoice correction."
includeInSalesInvoiceCorrection: ComparableBooleanOperationFilterInput @cost(weight: "50")
}
"A line item of a return: what is returned, how much, why and in which state."
input ReturnLineItemSortInput {
"The ID of the line item."
id: RetourePosKeySortInput @cost(weight: "15")
"The SKU of the item, as stored on the line item."
sku: SortEnumType @cost(weight: "50")
"The name of the item, as stored on the line item."
name: SortEnumType @cost(weight: "50")
"The returned quantity."
quantity: SortEnumType @cost(weight: "50")
}
"One change of the state of a return line item. The newest change of a line item is its current state."
input ReturnLineItemStateChangeFilterInput {
and: [ReturnLineItemStateChangeFilterInput!]
or: [ReturnLineItemStateChangeFilterInput!]
"The ID of the line item."
returnLineItemId: ComparableRetourePosKeyOperationFilterInput @cost(weight: "15")
}
"One change of the state of a return line item. The newest change of a line item is its current state."
input ReturnLineItemStateChangeSortInput {
"When the state was set."
createdAt: SortEnumType @cost(weight: "15")
}
"Updates to a line item; only the fields that are sent change. The item and the delivery note line cannot be changed."
input ReturnLineItemUpdateInput {
"The ID of the return reason; null removes it."
returnReasonId: ID
"The ID of the condition of the returned goods; null removes it."
itemConditionId: ID
"A comment on the return reason; null removes it."
returnReasonComment: String
"The returned quantity; greater than 0."
quantity: Decimal
"A comment on the condition of the goods; null removes it."
itemConditionComment: String
"Whether the line item is credited in the sales invoice correction."
includeInSalesInvoiceCorrection: Boolean
}
"An event a user can raise by hand on a return (the manual workflows menu in the Wawi). The workflows that listen to it start; raising it raises the event, not a single workflow."
input ReturnManualWorkflowEventFilterInput {
and: [ReturnManualWorkflowEventFilterInput!]
or: [ReturnManualWorkflowEventFilterInput!]
"How many active workflows listen to the event. Raising an event without any does nothing."
activeWorkflowCount: ComparableInt32OperationFilterInput @cost(weight: "15")
}
"An event a user can raise by hand on a return (the manual workflows menu in the Wawi). The workflows that listen to it start; raising it raises the event, not a single workflow."
input ReturnManualWorkflowEventSortInput {
"The position in the menu of the Wawi."
sortOrder: SortEnumType @cost(weight: "50")
"The display name of the event."
name: SortEnumType @cost(weight: "15")
"The ID of the event."
id: ManualWorkflowEventKeySortInput @cost(weight: "15")
}
"One HTTP header that is sent with the upload request, for example a header the signature of a presigned URL covers."
input ReturnOutputUploadHeaderInput {
"The header name."
name: String!
"The header value."
value: String!
}
"The place a rendered file is uploaded to. The file is sent with a PUT request to the URL. Only https URLs to public addresses are accepted; redirects are not followed. The URL is a secret: it is never logged and never returned."
input ReturnOutputUploadTargetInput {
"The upload URL including its signature (SAS, presigned or signed URL)."
url: String!
"Headers to send with the upload. For Azure Blob Storage the header x-ms-blob-type is set automatically when the host is blob.core.windows.net. For other storages send the headers the signature requires."
headers: [ReturnOutputUploadHeaderInput]!
}
"The address the goods are picked up from. The country is required."
input ReturnPickupAddressInput {
"The academic title."
title: String
"The street and house number."
street: String
"The state or region."
state: String
"The salutation."
salutation: String
"The postal code."
postalCode: String
"The customer number of a parcel station or post office, for example the DHL post number."
postId: String
"The phone number."
phoneNumber: String
"The mobile phone number."
mobileNumber: String
"The last name."
lastName: String
"The first name."
firstName: String
"The fax number."
fax: String
"The email address."
emailAddress: String
"The country as ISO 3166-1 alpha-2 code of two letters; case does not matter."
countryCode: String!
"The company name."
company: String
"The city."
city: String
"An additional company line."
additionalCompanyLine: String
"An additional address line."
additionalAddressLine: String
}
"Updates to the pickup address; only the fields that are sent change. 'countryCode' is required when the return has no address yet."
input ReturnPickupAddressUpdateInput {
"The academic title; null removes it."
title: String
"The street and house number; null removes it."
street: String
"The state or region; null removes it."
state: String
"The salutation; null removes it."
salutation: String
"The postal code; null removes it."
postalCode: String
"The customer number of a parcel station or post office, for example the DHL post number; null removes it."
postId: String
"The phone number; null removes it."
phoneNumber: String
"The mobile phone number; null removes it."
mobileNumber: String
"The last name; null removes it."
lastName: String
"The first name; null removes it."
firstName: String
"The fax number; null removes it."
fax: String
"The email address; null removes it."
emailAddress: String
"The country as ISO 3166-1 alpha-2 code of two letters; case does not matter."
countryCode: String
"The company name; null removes it."
company: String
"The city; null removes it."
city: String
"An additional company line; null removes it."
additionalCompanyLine: String
"An additional address line; null removes it."
additionalAddressLine: String
}
"A return reason in a list: without the restrictions and the assignment to the fulfillment network."
input ReturnReasonListEntryFilterInput {
and: [ReturnReasonListEntryFilterInput!]
or: [ReturnReasonListEntryFilterInput!]
"The ID of the return reason."
id: ComparableRueckgabegrundKeyOperationFilterInput @cost(weight: "15")
"Whether the warehouse offers the return reason."
isVisibleInWms: ComparableBooleanOperationFilterInput @cost(weight: "50")
"Whether this is the built-in return reason 'no reason given'."
isSystem: ComparableBooleanOperationFilterInput @cost(weight: "200")
}
"A return reason in a list: without the restrictions and the assignment to the fulfillment network."
input ReturnReasonListEntrySortInput {
"The position of the return reason in selection lists, starting at 1."
sortOrder: SortEnumType @cost(weight: "50")
"The ID of the return reason."
id: RueckgabegrundKeySortInput @cost(weight: "15")
}
"The product groups and categories where a new return reason can be chosen. Both properties apply together: an item must be in one of the product groups and in one of the categories, when both are given."
input ReturnReasonRestrictionInput {
"The product groups the return reason is restricted to; only items of these product groups can take it. Omitted or empty means no limit by product group."
productGroupIds: [ID]!
"The categories the return reason is restricted to; only items of these categories can take it. Omitted or empty means no limit by category."
categoryIds: [ID]!
}
"The name and description of a return reason in one language, as sent when it is created."
input ReturnReasonTranslationInput {
"The language as BCP 47 tag, for example 'de' or 'de-AT'. Case is not significant. The language must be activated. Each language at most once."
languageTag: String!
"The name in that language, 1 to 50 characters."
name: String!
"The description in that language, at most 255 characters. Omit for none."
description: String
}
"A return of goods by a customer with its header data. Line items, labels and exchange items are read with their own queries."
input ReturnSortInput {
"The ID of the return."
id: RetoureKeySortInput @cost(weight: "15")
"When the return was created."
createdAt: SortEnumType @cost(weight: "15")
}
"A state a return line item can be in. There are three system states, one per stage of the return process, and the states users add below them. Used for the detail and for the list."
input ReturnStateFilterInput {
and: [ReturnStateFilterInput!]
or: [ReturnStateFilterInput!]
"The ID of the return state."
id: ComparableRetoureStatusKeyOperationFilterInput @cost(weight: "15")
"The ID of the system state this state is below. Null for the three system states themselves."
parentId: ComparableRetoureStatusKeyOperationFilterInput @cost(weight: "50")
"The stage of the return process. A state below a system state has the stage of that system state."
type: ComparableReturnStateTypeOperationFilterInput @cost(weight: "50")
"Whether the return state can be set on return line items. System states are always active."
isActive: ComparableBooleanOperationFilterInput @cost(weight: "50")
"Whether the warehouse offers the return state."
isVisibleInWms: ComparableBooleanOperationFilterInput @cost(weight: "50")
"Whether this is one of the three system states. Only their names can be changed."
isSystem: ComparableBooleanOperationFilterInput @cost(weight: "200")
}
"A state a return line item can be in. There are three system states, one per stage of the return process, and the states users add below them. Used for the detail and for the list."
input ReturnStateSortInput {
"The ID of the system state this state is below. Null for the three system states themselves."
parentId: RetoureStatusKeySortInput @cost(weight: "50")
"The position among the states with the same parent, starting at 1. The system states cannot be moved."
sortOrder: SortEnumType @cost(weight: "50")
"The ID of the return state."
id: RetoureStatusKeySortInput @cost(weight: "15")
}
"The name of a return state in one language, as sent when it is created."
input ReturnStateTranslationInput {
"The language as BCP 47 tag, for example 'de' or 'de-AT'. Case is not significant. The language must be activated. Each language at most once."
languageTag: String!
"The name in that language, 1 to 255 characters."
name: String!
}
"The revenue account a sale is posted to in one context: a tax zone, a tax class and a tax treatment, and for an override also the product group, shipping method or type of line item. The revenue account belongs to the tax code that applies in that context."
input RevenueAccountAssignmentFilterInput {
and: [RevenueAccountAssignmentFilterInput!]
or: [RevenueAccountAssignmentFilterInput!]
"The tax class of the context."
taxClassId: ComparableSteuerklasseKeyOperationFilterInput @cost(weight: "200")
"How the sale is taxed in the context."
taxTreatment: ComparableTaxTreatmentOperationFilterInput @cost(weight: "200")
"Whether the assignment comes from the rate or from an override, and from which kind. Known values: RATE, PRODUCT_GROUP, SHIPPING_METHOD, LINE_ITEM_TYPE. New values can be added without a contract change."
scope: StringOperationFilterInput @cost(weight: "200")
"The revenue account of the tax code. Empty when the tax code has none, which is a gap in the setup; filter for it to find such gaps."
revenueAccount: StringOperationFilterInput @cost(weight: "200")
}
"The revenue account a sale is posted to in one context: a tax zone, a tax class and a tax treatment, and for an override also the product group, shipping method or type of line item. The revenue account belongs to the tax code that applies in that context."
input RevenueAccountAssignmentSortInput {
"The tax zone of the context."
taxZoneId: SteuerzoneKeySortInput @cost(weight: "200")
"The tax class of the context."
taxClassId: SteuerklasseKeySortInput @cost(weight: "200")
"How the sale is taxed in the context."
taxTreatment: SortEnumType @cost(weight: "200")
}
"Revokes the approval for payment of an incoming invoice. Recorded payments stay. Revoking on an invoice that is not approved changes nothing. - Request"
input RevokeIncomingInvoiceApprovalCommandRequestInput {
"The ID of the incoming invoice."
incomingInvoiceId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
input RueckgabegrundKeySortInput {
kRmGrund: SortEnumType @cost(weight: "10")
}
input RueckhaltegrundKeySortInput {
kRueckhalteGrund: SortEnumType @cost(weight: "10")
}
"Asks the worker to run an idle, unlocked sync once now, outside its interval; interval and state stay as they were. - Request"
input RunWorkerSyncOnceCommandRequestInput {
"The ID of the sync."
syncId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"A sales channel an item is activated in. It is the same model for the single activation, for setting the whole selection and for creating an item together with its sales channels."
input SalesChannelActivationInput {
"The sales channel the item is activated in. Tenant-local, composite identifier, not a UUID."
salesChannelId: ID!
"Whether the images the item has at that time are activated for the sales channel as well. Omitted means false. The activation of images stays when the sales channel is deactivated later, so that it is restored on a new activation."
includeItemImages: Boolean
}
"""
Represents a unique identifier for a sales channel, encapsulating various platform-specific keys such as shop,
user, or channel identifiers.
"""
input SalesChannelIdSortInput {
"Schlüssel der Firma"
wawiFirmaKey: FirmaKeySortInput @cost(weight: "10")
"Schlüssel des Benutzers"
benutzerKeyXmlImport: BenutzerKeySortInput @cost(weight: "10")
"Schlüssel des Shops"
shopKey: ShopKeySortInput @cost(weight: "10")
"Schlüssel der Plattform"
plattformKey: PlattformKeySortInput @cost(weight: "10")
"Schlüssel des SCX Verkaufskanals"
channelKey: ScxChannelKeySortInput @cost(weight: "10")
"Schlüssel der POS Kasse"
subshopKey: ShopSubshopKeySortInput @cost(weight: "10")
"Schlüssel des Ebayaccounts"
ebayUserKey: EbayUserKeySortInput @cost(weight: "10")
"Schlüssel des Amazon Accounts"
amazonUserKey: AmazonUserKeySortInput @cost(weight: "10")
}
"A surcharge on the price of an item that applies in one sales channel when a variation value is chosen. It takes precedence over the default surcharge of the value."
input SalesChannelSurchargeInput {
"The sales channel the surcharge applies in."
salesChannelId: ID!
"Surcharge in net."
surchargeNet: Decimal!
}
"A document that cancels a sales credit note. Its amounts are negative."
input SalesCreditNoteCancellationFilterInput {
and: [SalesCreditNoteCancellationFilterInput!]
or: [SalesCreditNoteCancellationFilterInput!]
"The ID of the document."
id: ComparableGutschriftKeyOperationFilterInput @cost(weight: "15")
"The ID of the customer."
customerId: ComparableKundeKeyOperationFilterInput @cost(weight: "15")
"The number of the document. Empty for a draft."
number: StringOperationFilterInput @cost(weight: "50")
"When the credit note was cancelled."
cancelledAt: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "200")
"The ID of the company that issued the document."
companyId: ComparableFirmaKeyOperationFilterInput @cost(weight: "50")
"The currency of the document as ISO 4217 code, for example EUR."
currencyCode: StringOperationFilterInput @cost(weight: "50")
}
"A line item of a document that cancels a sales credit note. Its amounts are negative."
input SalesCreditNoteCancellationLineItemFilterInput {
and: [SalesCreditNoteCancellationLineItemFilterInput!]
or: [SalesCreditNoteCancellationLineItemFilterInput!]
"The ID of the line item."
id: ComparableGutschriftPosKeyOperationFilterInput @cost(weight: "15")
"The parent line item when this is a component of a kit."
parentLineItemId: ComparableGutschriftPosKeyOperationFilterInput @cost(weight: "15")
"The ID of the item. Empty for a free line or a deleted item."
itemId: ComparableArtikelKeyOperationFilterInput @cost(weight: "15")
"The position of the line item on the document."
sortOrder: ComparableInt32OperationFilterInput @cost(weight: "50")
"The SKU of the item at the time of the document."
sku: StringOperationFilterInput @cost(weight: "50")
"The name of the line item as printed on the document."
name: StringOperationFilterInput @cost(weight: "50")
"The code of the unit the quantity is given in. The codes come from QueryUnitCodes."
unitCode: StringOperationFilterInput @cost(weight: "50")
"The quantity. It is always positive."
quantity: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The tax rate in percent."
taxRate: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The net price per unit."
salesPriceNet: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The net total of the line item after discount."
totalSalesPriceNet: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The gross total of the line item after discount."
totalSalesPriceGross: ComparableDecimalOperationFilterInput @cost(weight: "50")
"Whether the line item books back a cash discount."
isCashDiscountCounterBooking: ComparableBooleanOperationFilterInput @cost(weight: "50")
}
"A line item of a document that cancels a sales credit note. Its amounts are negative."
input SalesCreditNoteCancellationLineItemSortInput {
"The ID of the line item."
id: GutschriftPosKeySortInput @cost(weight: "15")
"The position of the line item on the document."
sortOrder: SortEnumType @cost(weight: "50")
"The SKU of the item at the time of the document."
sku: SortEnumType @cost(weight: "50")
"The name of the line item as printed on the document."
name: SortEnumType @cost(weight: "50")
"The quantity. It is always positive."
quantity: SortEnumType @cost(weight: "50")
"The net total of the line item after discount."
totalSalesPriceNet: SortEnumType @cost(weight: "50")
"The gross total of the line item after discount."
totalSalesPriceGross: SortEnumType @cost(weight: "50")
"The parent line item when this is a component of a kit."
parentLineItemId: GutschriftPosKeySortInput @cost(weight: "15")
"The ID of the item. Empty for a free line or a deleted item."
itemId: ArtikelKeySortInput @cost(weight: "15")
"The code of the unit the quantity is given in. The codes come from QueryUnitCodes."
unitCode: SortEnumType @cost(weight: "50")
"The tax rate in percent."
taxRate: SortEnumType @cost(weight: "50")
"The net price per unit."
salesPriceNet: SortEnumType @cost(weight: "50")
}
"A document that cancels a sales credit note. Its amounts are negative."
input SalesCreditNoteCancellationSortInput {
"The ID of the document."
id: GutschriftKeySortInput @cost(weight: "15")
"The number of the document. Empty for a draft."
number: SortEnumType @cost(weight: "50")
"When the credit note was cancelled."
cancelledAt: SortEnumType @cost(weight: "200")
}
"A credit note to a customer without a sales invoice, also a draft. Positive amounts are a credit to the customer."
input SalesCreditNoteFilterInput {
and: [SalesCreditNoteFilterInput!]
or: [SalesCreditNoteFilterInput!]
"The ID of the document."
id: ComparableGutschriftKeyOperationFilterInput @cost(weight: "15")
"The ID of the customer."
customerId: ComparableKundeKeyOperationFilterInput @cost(weight: "15")
"The number of the document. Empty for a draft."
number: StringOperationFilterInput @cost(weight: "50")
"When the credit note was created in Wawi."
createdAt: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "50")
"The ID of the company that issued the document."
companyId: ComparableFirmaKeyOperationFilterInput @cost(weight: "50")
"Whether the credit note is a draft or final."
status: ComparableSalesCreditNoteStatusOperationFilterInput @cost(weight: "50")
"Whether the credit note is cancelled."
isCancelled: ComparableBooleanOperationFilterInput @cost(weight: "50")
"The currency of the document as ISO 4217 code, for example EUR."
currencyCode: StringOperationFilterInput @cost(weight: "50")
"Whether the credit note was created outside Wawi, for example by a marketplace."
isExternal: ComparableBooleanOperationFilterInput @cost(weight: "50")
"The net total of all line items."
netTotal: ComparableDecimalOperationFilterInput @cost(weight: "200")
"The gross total of all line items."
grossTotal: ComparableDecimalOperationFilterInput @cost(weight: "200")
}
"A line item of a sales credit note. It has no sales order or sales invoice line behind it."
input SalesCreditNoteLineItemFilterInput {
and: [SalesCreditNoteLineItemFilterInput!]
or: [SalesCreditNoteLineItemFilterInput!]
"The ID of the line item."
id: ComparableGutschriftPosKeyOperationFilterInput @cost(weight: "15")
"The parent line item when this is a component of a kit."
parentLineItemId: ComparableGutschriftPosKeyOperationFilterInput @cost(weight: "15")
"The ID of the item. Empty for a free line or a deleted item."
itemId: ComparableArtikelKeyOperationFilterInput @cost(weight: "15")
"The position of the line item on the document."
sortOrder: ComparableInt32OperationFilterInput @cost(weight: "50")
"The SKU of the item at the time of the document."
sku: StringOperationFilterInput @cost(weight: "50")
"The name of the line item as printed on the document."
name: StringOperationFilterInput @cost(weight: "50")
"The code of the unit the quantity is given in. The codes come from QueryUnitCodes."
unitCode: StringOperationFilterInput @cost(weight: "50")
"The quantity. It is always positive."
quantity: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The tax rate in percent."
taxRate: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The net price per unit."
salesPriceNet: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The net total of the line item after discount."
totalSalesPriceNet: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The gross total of the line item after discount."
totalSalesPriceGross: ComparableDecimalOperationFilterInput @cost(weight: "50")
"Whether the line item books back a cash discount."
isCashDiscountCounterBooking: ComparableBooleanOperationFilterInput @cost(weight: "50")
}
"A line item of a sales credit note. It has no sales order or sales invoice line behind it."
input SalesCreditNoteLineItemSortInput {
"The ID of the line item."
id: GutschriftPosKeySortInput @cost(weight: "15")
"The position of the line item on the document."
sortOrder: SortEnumType @cost(weight: "50")
"The SKU of the item at the time of the document."
sku: SortEnumType @cost(weight: "50")
"The name of the line item as printed on the document."
name: SortEnumType @cost(weight: "50")
"The quantity. It is always positive."
quantity: SortEnumType @cost(weight: "50")
"The net total of the line item after discount."
totalSalesPriceNet: SortEnumType @cost(weight: "50")
"The gross total of the line item after discount."
totalSalesPriceGross: SortEnumType @cost(weight: "50")
"The parent line item when this is a component of a kit."
parentLineItemId: GutschriftPosKeySortInput @cost(weight: "15")
"The ID of the item. Empty for a free line or a deleted item."
itemId: ArtikelKeySortInput @cost(weight: "15")
"The code of the unit the quantity is given in. The codes come from QueryUnitCodes."
unitCode: SortEnumType @cost(weight: "50")
"The tax rate in percent."
taxRate: SortEnumType @cost(weight: "50")
"The net price per unit."
salesPriceNet: SortEnumType @cost(weight: "50")
}
"A credit note to a customer without a sales invoice, also a draft. Positive amounts are a credit to the customer."
input SalesCreditNoteSortInput {
"The ID of the document."
id: GutschriftKeySortInput @cost(weight: "15")
"The number of the document. Empty for a draft."
number: SortEnumType @cost(weight: "50")
"When the credit note was created in Wawi."
createdAt: SortEnumType @cost(weight: "50")
"The gross total of all line items."
grossTotal: SortEnumType @cost(weight: "200")
}
"Changes to an address of a sales invoice; only the fields that are sent change. Null clears a field; the country cannot be cleared."
input SalesInvoiceAddressUpdateInput {
"The academic title."
title: String
"The street and house number."
street: String
"The state or region."
state: String
"The salutation."
salutation: String
"The postal code."
postalCode: String
"The customer number of a parcel station or post office, for example the DHL post number."
postId: String
"The phone number."
phoneNumber: String
"The mobile phone number."
mobileNumber: String
"The last name."
lastName: String
"The first name."
firstName: String
"The fax number."
fax: String
"The email address."
emailAddress: String
"The country as ISO 3166-1 alpha-2 code, for example 'DE'. Case does not matter on input."
countryCode: String
"The company name."
company: String
"The city."
city: String
"An additional company line."
additionalCompanyLine: String
"An additional address line."
additionalAddressLine: String
}
"A document that cancels a sales invoice or a sales invoice correction. Polymorphic: the property 'documentType' selects the variant."
input SalesInvoiceCancellationFilterInput {
and: [SalesInvoiceCancellationFilterInput!]
or: [SalesInvoiceCancellationFilterInput!]
"The ID of the document."
id: ComparableGutschriftKeyOperationFilterInput @cost(weight: "15")
"The ID of the sales invoice the cancelled document belongs to."
salesInvoiceId: ComparableRechnungKeyOperationFilterInput @cost(weight: "15")
"The ID of the customer."
customerId: ComparableKundeKeyOperationFilterInput @cost(weight: "15")
"Which document is cancelled. It selects the variant."
documentType: ComparableSalesInvoiceCancellationDocumentTypeOperationFilterInput @cost(weight: "50")
"The number of the document. Empty for a draft."
number: StringOperationFilterInput @cost(weight: "50")
"When the document was cancelled."
cancelledAt: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "200")
"The ID of the company that issued the document."
companyId: ComparableFirmaKeyOperationFilterInput @cost(weight: "50")
"The currency of the document as ISO 4217 code, for example EUR."
currencyCode: StringOperationFilterInput @cost(weight: "50")
"The number of the sales invoice the cancelled document belongs to."
salesInvoiceNumber: StringOperationFilterInput @cost(weight: "200")
}
"A line item of a cancellation document. Positive when it cancels a sales invoice, negative when it cancels a correction."
input SalesInvoiceCancellationLineItemFilterInput {
and: [SalesInvoiceCancellationLineItemFilterInput!]
or: [SalesInvoiceCancellationLineItemFilterInput!]
"The ID of the line item."
id: ComparableGutschriftPosKeyOperationFilterInput @cost(weight: "15")
"The parent line item when this is a component of a kit."
parentLineItemId: ComparableGutschriftPosKeyOperationFilterInput @cost(weight: "15")
"The ID of the item. Empty for a free line or a deleted item."
itemId: ComparableArtikelKeyOperationFilterInput @cost(weight: "15")
"The ID of the sales order line item this line comes from."
salesOrderLineItemId: ComparableVerkaufAuftragPositionKeyOperationFilterInput @cost(weight: "15")
"The ID of the sales invoice line item this line cancels."
salesInvoiceLineItemId: ComparableRechnungPositionKeyOperationFilterInput @cost(weight: "15")
"The position of the line item on the document."
sortOrder: ComparableInt32OperationFilterInput @cost(weight: "50")
"The SKU of the item at the time of the document."
sku: StringOperationFilterInput @cost(weight: "50")
"The name of the line item as printed on the document."
name: StringOperationFilterInput @cost(weight: "50")
"The code of the unit the quantity is given in. The codes come from QueryUnitCodes."
unitCode: StringOperationFilterInput @cost(weight: "50")
"The quantity. It is always positive."
quantity: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The tax rate in percent."
taxRate: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The net price per unit."
salesPriceNet: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The net total of the line item after discount."
totalSalesPriceNet: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The gross total of the line item after discount."
totalSalesPriceGross: ComparableDecimalOperationFilterInput @cost(weight: "50")
"Whether the line item books back a cash discount."
isCashDiscountCounterBooking: ComparableBooleanOperationFilterInput @cost(weight: "50")
}
"A line item of a cancellation document. Positive when it cancels a sales invoice, negative when it cancels a correction."
input SalesInvoiceCancellationLineItemSortInput {
"The ID of the line item."
id: GutschriftPosKeySortInput @cost(weight: "15")
"The position of the line item on the document."
sortOrder: SortEnumType @cost(weight: "50")
"The SKU of the item at the time of the document."
sku: SortEnumType @cost(weight: "50")
"The name of the line item as printed on the document."
name: SortEnumType @cost(weight: "50")
"The quantity. It is always positive."
quantity: SortEnumType @cost(weight: "50")
"The net total of the line item after discount."
totalSalesPriceNet: SortEnumType @cost(weight: "50")
"The gross total of the line item after discount."
totalSalesPriceGross: SortEnumType @cost(weight: "50")
"The parent line item when this is a component of a kit."
parentLineItemId: GutschriftPosKeySortInput @cost(weight: "15")
"The ID of the item. Empty for a free line or a deleted item."
itemId: ArtikelKeySortInput @cost(weight: "15")
"The ID of the sales order line item this line comes from."
salesOrderLineItemId: VerkaufAuftragPositionKeySortInput @cost(weight: "15")
"The ID of the sales invoice line item this line cancels."
salesInvoiceLineItemId: RechnungPositionKeySortInput @cost(weight: "15")
"The code of the unit the quantity is given in. The codes come from QueryUnitCodes."
unitCode: SortEnumType @cost(weight: "50")
"The net price per unit."
salesPriceNet: SortEnumType @cost(weight: "50")
}
"A reason for cancelling a sales invoice. The model serves list and detail alike."
input SalesInvoiceCancellationReasonFilterInput {
and: [SalesInvoiceCancellationReasonFilterInput!]
or: [SalesInvoiceCancellationReasonFilterInput!]
"The ID of the cancellation reason for sales invoices."
id: ComparableRechnungStornogrundKeyOperationFilterInput @cost(weight: "15")
"The name of the reason."
name: StringOperationFilterInput @cost(weight: "50")
"Whether a comment has to be given when a document is cancelled with this reason."
isCommentRequired: ComparableBooleanOperationFilterInput @cost(weight: "50")
"Whether Wawi created the reason itself during setup. System reasons cannot be changed or deleted, because Wawi relies on them, for example as the fallback when a cancellation comes in without a reason."
isSystem: ComparableBooleanOperationFilterInput @cost(weight: "200")
}
"A reason for cancelling a sales invoice. The model serves list and detail alike."
input SalesInvoiceCancellationReasonSortInput {
"The ID of the cancellation reason for sales invoices."
id: RechnungStornogrundKeySortInput @cost(weight: "15")
"The name of the reason."
name: SortEnumType @cost(weight: "50")
}
"A document that cancels a sales invoice or a sales invoice correction. Polymorphic: the property 'documentType' selects the variant."
input SalesInvoiceCancellationSortInput {
"The ID of the document."
id: GutschriftKeySortInput @cost(weight: "15")
"The number of the document. Empty for a draft."
number: SortEnumType @cost(weight: "50")
"When the document was cancelled."
cancelledAt: SortEnumType @cost(weight: "200")
}
"A line item of a sales invoice with what is invoiced, already credited and still open for a correction."
input SalesInvoiceCorrectableLineItemFilterInput {
and: [SalesInvoiceCorrectableLineItemFilterInput!]
or: [SalesInvoiceCorrectableLineItemFilterInput!]
"The ID of the sales invoice line item. Use it in CreateSalesInvoiceCorrection."
salesInvoiceLineItemId: ComparableRechnungPositionKeyOperationFilterInput @cost(weight: "15")
"The ID of the sales order line item the invoice line comes from."
salesOrderLineItemId: ComparableVerkaufAuftragPositionKeyOperationFilterInput @cost(weight: "15")
"The ID of the item. Empty for a free line or a deleted item."
itemId: ComparableArtikelKeyOperationFilterInput @cost(weight: "15")
"The position of the line item on the sales invoice."
sortOrder: ComparableInt32OperationFilterInput @cost(weight: "50")
"The SKU of the item on the sales invoice."
sku: StringOperationFilterInput @cost(weight: "50")
"The name of the line item on the sales invoice."
name: StringOperationFilterInput @cost(weight: "50")
"The tax rate in percent."
taxRate: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The net price per unit on the sales invoice. A correction line uses it when no price is sent."
salesPriceNet: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The quantity on the sales invoice."
invoicedQuantity: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The net total of the line item on the sales invoice."
invoicedTotalNet: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The gross total of the line item on the sales invoice."
invoicedTotalGross: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The quantity still open for a correction. Never below zero."
remainingQuantity: ComparableDecimalOperationFilterInput @cost(weight: "500")
}
"A line item of a sales invoice with what is invoiced, already credited and still open for a correction."
input SalesInvoiceCorrectableLineItemSortInput {
"The ID of the sales invoice line item. Use it in CreateSalesInvoiceCorrection."
salesInvoiceLineItemId: RechnungPositionKeySortInput @cost(weight: "15")
"The position of the line item on the sales invoice."
sortOrder: SortEnumType @cost(weight: "50")
"The SKU of the item on the sales invoice."
sku: SortEnumType @cost(weight: "50")
"The name of the line item on the sales invoice."
name: SortEnumType @cost(weight: "50")
"The quantity on the sales invoice."
invoicedQuantity: SortEnumType @cost(weight: "50")
"The ID of the sales order line item the invoice line comes from."
salesOrderLineItemId: VerkaufAuftragPositionKeySortInput @cost(weight: "15")
"The ID of the item. Empty for a free line or a deleted item."
itemId: ArtikelKeySortInput @cost(weight: "15")
"The tax rate in percent."
taxRate: SortEnumType @cost(weight: "50")
"The net price per unit on the sales invoice. A correction line uses it when no price is sent."
salesPriceNet: SortEnumType @cost(weight: "50")
"The net total of the line item on the sales invoice."
invoicedTotalNet: SortEnumType @cost(weight: "50")
"The gross total of the line item on the sales invoice."
invoicedTotalGross: SortEnumType @cost(weight: "50")
"The quantity still open for a correction. Never below zero."
remainingQuantity: SortEnumType @cost(weight: "500")
}
"A reason for cancelling a sales invoice correction. The model serves list and detail alike."
input SalesInvoiceCorrectionCancellationReasonFilterInput {
and: [SalesInvoiceCorrectionCancellationReasonFilterInput!]
or: [SalesInvoiceCorrectionCancellationReasonFilterInput!]
"The ID of the cancellation reason for sales invoice corrections."
id: ComparableGutschriftStornogrundKeyOperationFilterInput @cost(weight: "15")
"The name of the reason."
name: StringOperationFilterInput @cost(weight: "50")
"Whether a comment has to be given when a document is cancelled with this reason."
isCommentRequired: ComparableBooleanOperationFilterInput @cost(weight: "50")
"Whether Wawi created the reason itself during setup. System reasons cannot be changed or deleted, because Wawi relies on them, for example as the fallback when a cancellation comes in without a reason."
isSystem: ComparableBooleanOperationFilterInput @cost(weight: "200")
}
"A reason for cancelling a sales invoice correction. The model serves list and detail alike."
input SalesInvoiceCorrectionCancellationReasonSortInput {
"The ID of the cancellation reason for sales invoice corrections."
id: GutschriftStornogrundKeySortInput @cost(weight: "15")
"The name of the reason."
name: SortEnumType @cost(weight: "50")
}
"A sales invoice correction for a sales invoice, also a draft. Positive amounts are a credit to the customer."
input SalesInvoiceCorrectionFilterInput {
and: [SalesInvoiceCorrectionFilterInput!]
or: [SalesInvoiceCorrectionFilterInput!]
"The ID of the document."
id: ComparableGutschriftKeyOperationFilterInput @cost(weight: "15")
"The ID of the sales invoice the correction belongs to."
salesInvoiceId: ComparableRechnungKeyOperationFilterInput @cost(weight: "15")
"The ID of the customer."
customerId: ComparableKundeKeyOperationFilterInput @cost(weight: "15")
"The number of the document. Empty for a draft."
number: StringOperationFilterInput @cost(weight: "50")
"When the correction was created in Wawi."
createdAt: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "50")
"The ID of the company that issued the document."
companyId: ComparableFirmaKeyOperationFilterInput @cost(weight: "50")
"Whether the correction is a draft or final."
status: ComparableSalesInvoiceCorrectionStatusOperationFilterInput @cost(weight: "50")
"Whether the correction is cancelled."
isCancelled: ComparableBooleanOperationFilterInput @cost(weight: "50")
"The currency of the document as ISO 4217 code, for example EUR."
currencyCode: StringOperationFilterInput @cost(weight: "50")
"Whether the correction was created outside Wawi, for example by a marketplace."
isExternal: ComparableBooleanOperationFilterInput @cost(weight: "50")
"The number of the sales invoice the correction belongs to."
salesInvoiceNumber: StringOperationFilterInput @cost(weight: "200")
}
"A line item of a sales invoice correction."
input SalesInvoiceCorrectionLineItemFilterInput {
and: [SalesInvoiceCorrectionLineItemFilterInput!]
or: [SalesInvoiceCorrectionLineItemFilterInput!]
"The ID of the line item."
id: ComparableGutschriftPosKeyOperationFilterInput @cost(weight: "15")
"The parent line item when this is a component of a kit."
parentLineItemId: ComparableGutschriftPosKeyOperationFilterInput @cost(weight: "15")
"The ID of the item. Empty for a free line or a deleted item."
itemId: ComparableArtikelKeyOperationFilterInput @cost(weight: "15")
"The ID of the sales order line item this line comes from."
salesOrderLineItemId: ComparableVerkaufAuftragPositionKeyOperationFilterInput @cost(weight: "15")
"The ID of the sales invoice line item this line corrects."
salesInvoiceLineItemId: ComparableRechnungPositionKeyOperationFilterInput @cost(weight: "15")
"The position of the line item on the document."
sortOrder: ComparableInt32OperationFilterInput @cost(weight: "50")
"The SKU of the item at the time of the document."
sku: StringOperationFilterInput @cost(weight: "50")
"The name of the line item as printed on the document."
name: StringOperationFilterInput @cost(weight: "50")
"The code of the unit the quantity is given in. The codes come from QueryUnitCodes."
unitCode: StringOperationFilterInput @cost(weight: "50")
"The quantity. It is always positive."
quantity: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The tax rate in percent."
taxRate: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The net price per unit."
salesPriceNet: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The net total of the line item after discount."
totalSalesPriceNet: ComparableDecimalOperationFilterInput @cost(weight: "50")
"The gross total of the line item after discount."
totalSalesPriceGross: ComparableDecimalOperationFilterInput @cost(weight: "50")
"Whether the line item books back a cash discount."
isCashDiscountCounterBooking: ComparableBooleanOperationFilterInput @cost(weight: "50")
"Whether the line item lowers the ordered quantity of the sales order."
reducesOrderedQuantity: ComparableBooleanOperationFilterInput @cost(weight: "50")
"Whether the line item lowers the delivered quantity of the sales order."
reducesDeliveredQuantity: ComparableBooleanOperationFilterInput @cost(weight: "50")
}
"A line item of a sales invoice correction."
input SalesInvoiceCorrectionLineItemSortInput {
"The ID of the line item."
id: GutschriftPosKeySortInput @cost(weight: "15")
"The position of the line item on the document."
sortOrder: SortEnumType @cost(weight: "50")
"The SKU of the item at the time of the document."
sku: SortEnumType @cost(weight: "50")
"The name of the line item as printed on the document."
name: SortEnumType @cost(weight: "50")
"The quantity. It is always positive."
quantity: SortEnumType @cost(weight: "50")
"The net total of the line item after discount."
totalSalesPriceNet: SortEnumType @cost(weight: "50")
"The gross total of the line item after discount."
totalSalesPriceGross: SortEnumType @cost(weight: "50")
"The parent line item when this is a component of a kit."
parentLineItemId: GutschriftPosKeySortInput @cost(weight: "15")
"The ID of the item. Empty for a free line or a deleted item."
itemId: ArtikelKeySortInput @cost(weight: "15")
"The code of the unit the quantity is given in. The codes come from QueryUnitCodes."
unitCode: SortEnumType @cost(weight: "50")
"The tax rate in percent."
taxRate: SortEnumType @cost(weight: "50")
"The net price per unit."
salesPriceNet: SortEnumType @cost(weight: "50")
}
"A sales invoice correction for a sales invoice, also a draft. Positive amounts are a credit to the customer."
input SalesInvoiceCorrectionSortInput {
"The ID of the document."
id: GutschriftKeySortInput @cost(weight: "15")
"The number of the document. Empty for a draft."
number: SortEnumType @cost(weight: "50")
"When the correction was created in Wawi."
createdAt: SortEnumType @cost(weight: "50")
}
"A file attached to a sales invoice. Only the metadata and a reference: the content is not part of this API, download it from DownloadUrl. Files are uploaded with the master data file upload."
input SalesInvoiceFileFilterInput {
and: [SalesInvoiceFileFilterInput!]
or: [SalesInvoiceFileFilterInput!]
"The ID of the attachment."
id: ComparableRechnungFileKeyOperationFilterInput @cost(weight: "15")
"The name of the file."
fileName: StringOperationFilterInput @cost(weight: "50")
"The user who attached the file."
createdBy: ComparableBenutzerKeyOperationFilterInput @cost(weight: "50")
"The size of the file in bytes."
size: ComparableInt64OperationFilterInput @cost(weight: "200")
"When the file was attached."
createdAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "200")
"The ID of the file in the blob storage, if it is stored there. 'GetFileById' returns its state."
blobIdentifier: ComparableNullableOfGuidOperationFilterInput @cost(weight: "200")
}
"A file attached to a sales invoice. Only the metadata and a reference: the content is not part of this API, download it from DownloadUrl. Files are uploaded with the master data file upload."
input SalesInvoiceFileSortInput {
"The ID of the attachment."
id: RechnungFileKeySortInput @cost(weight: "15")
"The name of the file."
fileName: SortEnumType @cost(weight: "50")
"The size of the file in bytes."
size: SortEnumType @cost(weight: "200")
"When the file was attached."
createdAt: SortEnumType @cost(weight: "200")
"The user who attached the file."
createdBy: BenutzerKeySortInput @cost(weight: "50")
"The ID of the file in the blob storage, if it is stored there. 'GetFileById' returns its state."
blobIdentifier: SortEnumType @cost(weight: "200")
}
"A file attached to a sales invoice line item. Only the metadata and a reference: the content is not part of this API, download it from DownloadUrl. Files are uploaded with the master data file upload."
input SalesInvoiceLineItemFileFilterInput {
and: [SalesInvoiceLineItemFileFilterInput!]
or: [SalesInvoiceLineItemFileFilterInput!]
"The ID of the attachment."
id: ComparableRechnungPositionFileKeyOperationFilterInput @cost(weight: "15")
"The name of the file."
fileName: StringOperationFilterInput @cost(weight: "50")
"The user who attached the file."
createdBy: ComparableBenutzerKeyOperationFilterInput @cost(weight: "50")
"The size of the file in bytes."
size: ComparableInt64OperationFilterInput @cost(weight: "200")
"When the file was attached."
createdAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "200")
"The ID of the file in the blob storage, if it is stored there. 'GetFileById' returns its state."
blobIdentifier: ComparableNullableOfGuidOperationFilterInput @cost(weight: "200")
}
"A file attached to a sales invoice line item. Only the metadata and a reference: the content is not part of this API, download it from DownloadUrl. Files are uploaded with the master data file upload."
input SalesInvoiceLineItemFileSortInput {
"The ID of the attachment."
id: RechnungPositionFileKeySortInput @cost(weight: "15")
"The name of the file."
fileName: SortEnumType @cost(weight: "50")
"The size of the file in bytes."
size: SortEnumType @cost(weight: "200")
"When the file was attached."
createdAt: SortEnumType @cost(weight: "200")
"The user who attached the file."
createdBy: BenutzerKeySortInput @cost(weight: "50")
"The ID of the file in the blob storage, if it is stored there. 'GetFileById' returns its state."
blobIdentifier: SortEnumType @cost(weight: "200")
}
"A line item of a sales invoice. Polymorphic: the property 'type' selects the variant."
input SalesInvoiceLineItemFilterInput {
and: [SalesInvoiceLineItemFilterInput!]
or: [SalesInvoiceLineItemFilterInput!]
"The ID of the line item."
id: ComparableRechnungPositionKeyOperationFilterInput @cost(weight: "15")
}
"A line item of a sales invoice. Polymorphic: the property 'type' selects the variant."
input SalesInvoiceLineItemSortInput {
"The position of the line item on the invoice."
sortOrder: SortEnumType @cost(weight: "15")
}
"Changes to a line item of a draft; only the fields that are sent change. Quantity, price, discount and tax rate only change on a line item without an order link. A line item of type OTHER cannot be changed."
input SalesInvoiceLineItemUpdateInput {
"The name of the line item; at most 255 characters."
name: String
"A note on the line item. Null clears it."
note: String
"The quantity; not negative."
quantity: Decimal
"The net price per unit."
salesPriceNet: Decimal
"The discount in percent."
discountPercent: Decimal
"The tax rate in percent."
taxRate: Decimal
}
"An entry of the invoice overview: a sales invoice or the cancellation document of a sales invoice. 'documentType' tells which. The fields that exist only for invoices are absent for a cancellation document. Amounts are never negated: invoices and cancellation documents are both positive. Payment state and amounts are read with \"GetSalesInvoicePaymentBalance\"."
input SalesInvoiceListEntryFilterInput {
and: [SalesInvoiceListEntryFilterInput!]
or: [SalesInvoiceListEntryFilterInput!]
"The ID of the invoice. Only for an invoice."
id: ComparableRechnungKeyOperationFilterInput @cost(weight: "15")
"The ID of the customer."
customerId: ComparableKundeKeyOperationFilterInput @cost(weight: "15")
"The invoice date, or the date of the cancellation document."
invoiceDate: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "15")
"The number of the invoice or of the cancellation document. Absent for a draft."
number: StringOperationFilterInput @cost(weight: "15")
"Whether the entry is an invoice (INVOICE) or a cancellation document (CANCELLATION)."
documentType: ComparableSalesInvoiceDocumentTypeOperationFilterInput @cost(weight: "50")
"The user who created the document."
createdBy: ComparableBenutzerKeyOperationFilterInput @cost(weight: "50")
"The currency of the document as ISO 4217 code."
currencyCode: StringOperationFilterInput @cost(weight: "50")
"The VAT ID on the invoice. Only for an invoice."
vatId: StringOperationFilterInput @cost(weight: "50")
"The ID of the payment method. Only for an invoice."
paymentMethodId: ComparableZahlungsartKeyOperationFilterInput @cost(weight: "50")
"The date from which the payment term runs. Only for an invoice."
valueDate: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "50")
"The ID of the shipping method. Only for an invoice."
shippingMethodId: ComparableVersandartKeyOperationFilterInput @cost(weight: "50")
"The language of the document as BCP 47 language tag, for example de or de-AT: language subtag in lower case, region subtag in upper case. Wawi currently holds only the two-letter language subtag."
languageTag: StringOperationFilterInput @cost(weight: "50")
"The customer number as recorded on the document."
customerNumber: StringOperationFilterInput @cost(weight: "50")
"The start of the delivery or service period. Only for an invoice."
serviceDateFrom: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "50")
"The end of the delivery or service period. Only for an invoice."
serviceDateTo: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "50")
"Whether the invoice is archived. Only for an invoice."
isArchived: ComparableBooleanOperationFilterInput @cost(weight: "50")
"Whether dunning is blocked. Only for an invoice."
isDunningBlocked: ComparableBooleanOperationFilterInput @cost(weight: "50")
"The accounts receivable number. Only for an invoice."
accountsReceivableNumber: ComparableNullableOfInt32OperationFilterInput @cost(weight: "50")
"When the invoice was created. Only for an invoice."
createdAt: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "50")
"Where the invoice stands. Only for an invoice."
status: ComparableNullableOfSalesInvoiceStatusOperationFilterInput @cost(weight: "200")
"The company that issued the document."
companyId: ComparableFirmaKeyOperationFilterInput @cost(weight: "200")
"The sales channel the document belongs to. Tenant-local, composite identifier, not a UUID. Valid values are listed by the sales channel endpoint (GET)."
salesChannelId: ComparableSalesChannelIdOperationFilterInput @cost(weight: "200")
"Whether the invoice was created outside the ERP. Only for an invoice."
isExternal: ComparableBooleanOperationFilterInput @cost(weight: "200")
"How the invoice is taxed, with the values of the tax treatment of the taxes API: TAXABLE, INTRA_COMMUNITY_DELIVERY, REVERSE_CHARGE or EXEMPT. New values can be added; treat an unknown value as unknown. Only for an invoice."
taxTreatment: StringOperationFilterInput @cost(weight: "200")
"When the document was last printed."
printedAt: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "200")
"When the document was last sent by mail."
mailedAt: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "200")
"Whether a correction of the invoice exists that is not cancelled. Only for an invoice."
hasCorrection: ComparableBooleanOperationFilterInput @cost(weight: "200")
"The net total; never negated."
netTotal: ComparableDecimalOperationFilterInput @cost(weight: "200")
"The gross total; never negated."
grossTotal: ComparableDecimalOperationFilterInput @cost(weight: "200")
"The name of the user who created the document."
createdByName: StringOperationFilterInput @cost(weight: "200")
"The date payment is due. Only for an invoice."
paymentDueDate: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "200")
"The current dunning level. Only for an invoice."
dunningLevel: ComparableNullableOfInt32OperationFilterInput @cost(weight: "200")
"When the invoice was last dunned. Only for an invoice."
dunnedAt: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "200")
"When it was cancelled."
cancelledAt: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "200")
"The ID of the cancellation reason, the same ID the cancel input takes; the reason is read by this ID from the cancellation reasons of sales invoices. Only when the invoice is cancelled; Wawi stores 0 when no reason was given, returned as null. The reason may have been deleted since (the cancellation keeps the ID), then the ID no longer resolves."
cancellationReasonId: ComparableRechnungStornogrundKeyOperationFilterInput @cost(weight: "200")
"The name of the cancellation reason."
cancellationReason: StringOperationFilterInput @cost(weight: "200")
"An internal note on the document."
note: StringOperationFilterInput @cost(weight: "200")
"A comment of the customer. Only for an invoice."
customerComment: StringOperationFilterInput @cost(weight: "200")
"The company name. Of the billing address, flattened for filtering and sorting."
billingAddressCompany: StringOperationFilterInput @cost(weight: "200")
"The first name. Of the billing address, flattened for filtering and sorting."
billingAddressFirstName: StringOperationFilterInput @cost(weight: "200")
"The last name. Of the billing address, flattened for filtering and sorting."
billingAddressLastName: StringOperationFilterInput @cost(weight: "200")
"The street and house number. Of the billing address, flattened for filtering and sorting."
billingAddressStreet: StringOperationFilterInput @cost(weight: "200")
"The postal code. Of the billing address, flattened for filtering and sorting."
billingAddressPostalCode: StringOperationFilterInput @cost(weight: "200")
"The city. Of the billing address, flattened for filtering and sorting."
billingAddressCity: StringOperationFilterInput @cost(weight: "200")
"The country as ISO 3166-1 alpha-2 code. Of the billing address, flattened for filtering and sorting."
billingAddressCountryCode: StringOperationFilterInput @cost(weight: "200")
"The company name. Of the shipping address, flattened for filtering and sorting."
shipmentAddressCompany: StringOperationFilterInput @cost(weight: "200")
"The first name. Of the shipping address, flattened for filtering and sorting."
shipmentAddressFirstName: StringOperationFilterInput @cost(weight: "200")
"The last name. Of the shipping address, flattened for filtering and sorting."
shipmentAddressLastName: StringOperationFilterInput @cost(weight: "200")
"The street and house number. Of the shipping address, flattened for filtering and sorting."
shipmentAddressStreet: StringOperationFilterInput @cost(weight: "200")
"The postal code. Of the shipping address, flattened for filtering and sorting."
shipmentAddressPostalCode: StringOperationFilterInput @cost(weight: "200")
"The city. Of the shipping address, flattened for filtering and sorting."
shipmentAddressCity: StringOperationFilterInput @cost(weight: "200")
"The country as ISO 3166-1 alpha-2 code. Of the shipping address, flattened for filtering and sorting."
shipmentAddressCountryCode: StringOperationFilterInput @cost(weight: "200")
"The order number of the external system. Only for an invoice."
externalSalesOrderNumber: StringOperationFilterInput @cost(weight: "500")
"The date of the last shipment. Only for an invoice."
lastShippingDate: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "500")
}
"An entry of the invoice overview: a sales invoice or the cancellation document of a sales invoice. 'documentType' tells which. The fields that exist only for invoices are absent for a cancellation document. Amounts are never negated: invoices and cancellation documents are both positive. Payment state and amounts are read with \"GetSalesInvoicePaymentBalance\"."
input SalesInvoiceListEntrySortInput {
"The ID of the invoice. Only for an invoice."
id: RechnungKeySortInput @cost(weight: "15")
"The number of the invoice or of the cancellation document. Absent for a draft."
number: SortEnumType @cost(weight: "15")
"The ID of the customer."
customerId: KundeKeySortInput @cost(weight: "15")
"The invoice date, or the date of the cancellation document."
invoiceDate: SortEnumType @cost(weight: "15")
"The date from which the payment term runs. Only for an invoice."
valueDate: SortEnumType @cost(weight: "50")
"When the invoice was created. Only for an invoice."
createdAt: SortEnumType @cost(weight: "50")
"The customer number as recorded on the document."
customerNumber: SortEnumType @cost(weight: "50")
"The start of the delivery or service period. Only for an invoice."
serviceDateFrom: SortEnumType @cost(weight: "50")
"The end of the delivery or service period. Only for an invoice."
serviceDateTo: SortEnumType @cost(weight: "50")
"The net total; never negated."
netTotal: SortEnumType @cost(weight: "200")
"The gross total; never negated."
grossTotal: SortEnumType @cost(weight: "200")
"The date payment is due. Only for an invoice."
paymentDueDate: SortEnumType @cost(weight: "200")
"When the document was last printed."
printedAt: SortEnumType @cost(weight: "200")
"When the document was last sent by mail."
mailedAt: SortEnumType @cost(weight: "200")
"When it was cancelled."
cancelledAt: SortEnumType @cost(weight: "200")
}
"An event a user can raise by hand on a sales invoice (the manual workflows menu in the Wawi). The workflows that listen to it start; raising it raises the event, not a single workflow."
input SalesInvoiceManualWorkflowEventFilterInput {
and: [SalesInvoiceManualWorkflowEventFilterInput!]
or: [SalesInvoiceManualWorkflowEventFilterInput!]
"How many active workflows listen to the event. Raising an event without any does nothing."
activeWorkflowCount: ComparableInt32OperationFilterInput @cost(weight: "15")
}
"An event a user can raise by hand on a sales invoice (the manual workflows menu in the Wawi). The workflows that listen to it start; raising it raises the event, not a single workflow."
input SalesInvoiceManualWorkflowEventSortInput {
"The position in the menu of the Wawi."
sortOrder: SortEnumType @cost(weight: "50")
"The display name of the event."
name: SortEnumType @cost(weight: "15")
"The ID of the event."
id: ManualWorkflowEventKeySortInput @cost(weight: "15")
}
"Changes to the payment terms of a sales invoice; only the fields that are sent change."
input SalesInvoicePaymentTermsUpdateInput {
"The days until payment is due."
paymentDueDays: Int
"The cash discount in percent."
cashDiscountPercent: Decimal
"The days within which the cash discount applies."
cashDiscountDays: Int
}
"Changes to the header of a draft; only the fields that are sent change, also inside the addresses and the payment terms."
input SalesInvoiceUpdateInput {
"The invoice date."
invoiceDate: DateTime
"The date from which the payment term runs; not before the invoice date."
valueDate: DateTime
"The start of the delivery or service period. Null clears it."
serviceDateFrom: DateTime
"The end of the delivery or service period; not before the start. Null clears it."
serviceDateTo: DateTime
"Changes to the billing address."
billingAddress: SalesInvoiceAddressUpdateInput
"Changes to the address the goods are shipped to."
shipmentAddress: SalesInvoiceAddressUpdateInput
"The ID of the payment method."
paymentMethodId: ID
"Changes to the payment terms."
paymentTerms: SalesInvoicePaymentTermsUpdateInput
"An internal note. Null clears it."
note: String
"A comment of the customer. Null clears it."
customerComment: String
"A text printed on the invoice. Null clears it."
printText: String
}
"The delivery state of one line item of a sales order."
input SalesLineItemDeliverabilityFilterInput {
and: [SalesLineItemDeliverabilityFilterInput!]
or: [SalesLineItemDeliverabilityFilterInput!]
"The ID of the line item."
salesLineItemId: ComparableVerkaufAuftragPositionKeyOperationFilterInput @cost(weight: "15")
"How much of the open quantity can be delivered from own stock and counted supplier stock."
status: ComparableSalesLineItemDeliverabilityStatusOperationFilterInput @cost(weight: "500")
"How much of the open quantity can be delivered from own stock only."
ownStockStatus: ComparableSalesLineItemDeliverabilityStatusOperationFilterInput @cost(weight: "500")
"Whether a supplier of the item offers drop shipping for this line."
isDropShippingAvailable: ComparableBooleanOperationFilterInput @cost(weight: "200")
}
"The delivery state of one line item of a sales order."
input SalesLineItemDeliverabilitySortInput {
"The ID of the line item."
salesLineItemId: VerkaufAuftragPositionKeySortInput @cost(weight: "15")
"The quantity that is not delivered yet."
openQuantity: SortEnumType @cost(weight: "200")
}
"A postal address for a sales document. The country is required."
input SalesOrderAddressInput {
"The academic title."
title: String
"The street and house number."
street: String
"The state or region."
state: String
"The salutation."
salutation: String
"The postal code."
postalCode: String
"The customer number of a parcel station or post office, for example the DHL post number."
postId: String
"The phone number."
phoneNumber: String
"The mobile phone number."
mobileNumber: String
"The last name."
lastName: String
"The first name."
firstName: String
"The fax number."
fax: String
"The email address."
emailAddress: String
"The country as ISO 3166-1 alpha-2 code, for example 'DE'."
countryCode: String!
"The company name."
company: String
"The city."
city: String
"An additional company line."
additionalCompanyLine: String
"An additional address line."
additionalAddressLine: String
}
"A yes or no."
input SalesOrderBooleanFieldValueInput {
"Whether it is yes."
flag: Boolean!
}
"A reason for cancelling a sales order. The model serves list and detail alike. It also carries the mapping of the reason to the cancellation reasons of the sales platforms."
input SalesOrderCancellationReasonFilterInput {
and: [SalesOrderCancellationReasonFilterInput!]
or: [SalesOrderCancellationReasonFilterInput!]
"The ID of the cancellation reason for sales orders."
id: ComparableAuftragStornogrundKeyOperationFilterInput @cost(weight: "15")
"The name of the reason."
name: StringOperationFilterInput @cost(weight: "50")
"Whether a comment has to be given when a document is cancelled with this reason."
isCommentRequired: ComparableBooleanOperationFilterInput @cost(weight: "50")
"Whether Wawi created the reason itself during setup. System reasons cannot be changed or deleted, because Wawi relies on them, for example as the fallback when a cancellation comes in without a reason."
isSystem: ComparableBooleanOperationFilterInput @cost(weight: "200")
}
"A sales platform that cancellation reasons for sales orders can be mapped to, with the values it offers."
input SalesOrderCancellationReasonMarketplaceFilterInput {
and: [SalesOrderCancellationReasonMarketplaceFilterInput!]
or: [SalesOrderCancellationReasonMarketplaceFilterInput!]
"The key of the platform."
marketplace: StringOperationFilterInput @cost(weight: "15")
}
"A sales platform that cancellation reasons for sales orders can be mapped to, with the values it offers."
input SalesOrderCancellationReasonMarketplaceSortInput {
"The key of the platform."
marketplace: SortEnumType @cost(weight: "15")
}
"A reason for cancelling a sales order. The model serves list and detail alike. It also carries the mapping of the reason to the cancellation reasons of the sales platforms."
input SalesOrderCancellationReasonSortInput {
"The ID of the cancellation reason for sales orders."
id: AuftragStornogrundKeySortInput @cost(weight: "15")
"The name of the reason."
name: SortEnumType @cost(weight: "50")
}
"A new charge such as shipping, a payment fee or gift wrap."
input SalesOrderChargeLineItemInput {
"The tax class. Defaults to the default tax class; fails with a GraphQL error whose extensions.code is TaxClassNotFound."
taxClassId: ID
"The item the charge comes from, if any. Fails with a GraphQL error whose extensions.code is ItemNotFound or SalesLineItemItemInactive."
itemId: ID
"The position of the line item. Defaults to the end."
sortOrder: Int
"The net price per unit."
salesPriceNet: Decimal!
"The quantity. Defaults to 1."
quantity: Decimal
"A note on the line item."
note: String
"The name printed on the document."
name: String!
"The type of the charge. Known values: SHIPPING, SHIPPING_SURCHARGE, SHIPPING_SURCHARGE_ITEM, PAYMENT_FEE, CASH_ON_DELIVERY_FEE, GIFT_WRAP, INTEREST, HANDLING_FEE, TRUSTED_SHOPS, RETURN_DELIVERY, FREE_GIFT. The type of a charge line item."
chargeType: String!
}
"Updates to a charge line item; only the fields that are sent change. The charge type and the item cannot be changed."
input SalesOrderChargeLineItemUpdateInput {
"The tax class. Null or an unknown ID fails with a GraphQL error whose extensions.code is TaxClassNotFound."
taxClassId: ID
"The position of the line item. Null fails with a GraphQL error whose extensions.code is LineItemSortOrderRequired."
sortOrder: Int
"The net price per unit. Null fails with a GraphQL error whose extensions.code is LineItemSalesPriceNetRequired."
salesPriceNet: Decimal
"The quantity; greater than 0. Null or 0 or less fails with a GraphQL error whose extensions.code is LineItemQuantityNotPositive."
quantity: Decimal
"A note on the line item. Null clears it."
note: String
"The name printed on the document. Null fails with a GraphQL error whose extensions.code is LineItemNameRequired."
name: String
}
"The value of a custom field (German 'Eigenes Feld') of a sales order. It has no language."
input SalesOrderCustomFieldFilterInput {
and: [SalesOrderCustomFieldFilterInput!]
or: [SalesOrderCustomFieldFilterInput!]
"The ID of the custom field."
customFieldId: ComparableEigenesFeldKeyOperationFilterInput @cost(weight: "15")
}
"The value of a custom field (German 'Eigenes Feld') of a sales order. It has no language."
input SalesOrderCustomFieldSortInput {
"The ID of the custom field."
customFieldId: EigenesFeldKeySortInput @cost(weight: "15")
}
"A new free line item without an item of the catalog."
input SalesOrderCustomLineItemInput {
"The tax class. Defaults to the default tax class; fails with a GraphQL error whose extensions.code is TaxClassNotFound."
taxClassId: ID
"The position of the line item. Defaults to the end."
sortOrder: Int
"A free SKU of the line item."
sku: String
"The unit the quantity is sold in, for example 'pcs'."
salesUnit: String
"The net price per unit."
salesPriceNet: Decimal!
"The quantity; greater than 0. Fails with a GraphQL error whose extensions.code is LineItemQuantityNotPositive."
quantity: Decimal!
"A note on the line item."
note: String
"The name printed on the document."
name: String!
"The discount in percent, at most 100. Fails with a GraphQL error whose extensions.code is LineItemDiscountPercentAboveMaximum."
discountPercent: Decimal
}
"Updates to a free line item; only the fields that are sent change."
input SalesOrderCustomLineItemUpdateInput {
"The tax class. Null or an unknown ID fails with a GraphQL error whose extensions.code is TaxClassNotFound."
taxClassId: ID
"The position of the line item. Null fails with a GraphQL error whose extensions.code is LineItemSortOrderRequired."
sortOrder: Int
"A free SKU of the line item. Null clears it."
sku: String
"The unit the quantity is sold in. Null clears it."
salesUnit: String
"The net price per unit. Null fails with a GraphQL error whose extensions.code is LineItemSalesPriceNetRequired."
salesPriceNet: Decimal
"The quantity; greater than 0. Null or 0 or less fails with a GraphQL error whose extensions.code is LineItemQuantityNotPositive."
quantity: Decimal
"A note on the line item. Null clears it."
note: String
"The name printed on the document. Null fails with a GraphQL error whose extensions.code is LineItemNameRequired."
name: String
"The discount in percent, at most 100. Null clears it (0 %); above 100 fails with LineItemDiscountPercentAboveMaximum."
discountPercent: Decimal
}
"A date with time."
input SalesOrderDateFieldValueInput {
"The date. Only the calendar date counts, the time of day is ignored."
date: DateTime!
}
"A decimal number."
input SalesOrderDecimalFieldValueInput {
"The number."
number: Decimal!
}
"A line item and the quantity to deliver of it."
input SalesOrderDeliveryLineItemInput {
"The ID of the line item of the sales order."
salesLineItemId: ID!
"The quantity to deliver. It must be above 0 and not above the open quantity."
quantity: Decimal!
}
"A new discount such as a coupon."
input SalesOrderDiscountLineItemInput {
"The position of the line item. Defaults to the end."
sortOrder: Int
"A note on the line item."
note: String
"The name printed on the document."
name: String!
"The type of the discount. Known values: COUPON, NEW_CUSTOMER_COUPON, LEGACY_VOUCHER. The type of a discount line item."
discountType: String!
"The amount of the discount; greater than 0. Fails with a GraphQL error whose extensions.code is LineItemAmountNotPositive."
amount: Decimal!
}
"Updates to a discount line item; only the fields that are sent change. The discount type cannot be changed."
input SalesOrderDiscountLineItemUpdateInput {
"The position of the line item. Null fails with a GraphQL error whose extensions.code is LineItemSortOrderRequired."
sortOrder: Int
"A note on the line item. Null clears it."
note: String
"The name printed on the document. Null fails with a GraphQL error whose extensions.code is LineItemNameRequired."
name: String
"The amount of the discount; greater than 0. Null or 0 or less fails with a GraphQL error whose extensions.code is LineItemAmountNotPositive."
amount: Decimal
}
"A supplier purchase order that ships line items of a sales order directly to the customer."
input SalesOrderDropShippingPurchaseOrderFilterInput {
and: [SalesOrderDropShippingPurchaseOrderFilterInput!]
or: [SalesOrderDropShippingPurchaseOrderFilterInput!]
"The ID of the supplier purchase order."
id: ComparableLieferantenBestellungKeyOperationFilterInput @cost(weight: "15")
"The ID of the supplier who ships."
supplierId: ComparableLieferantKeyOperationFilterInput @cost(weight: "50")
"The state of the drop shipping."
status: ComparableSalesOrderDropShippingStatusOperationFilterInput @cost(weight: "50")
}
"A supplier purchase order that ships line items of a sales order directly to the customer."
input SalesOrderDropShippingPurchaseOrderSortInput {
"The ID of the supplier purchase order."
id: LieferantenBestellungKeySortInput @cost(weight: "15")
}
"The value of a custom field. Polymorphic: the property 'type' selects the variant, which has to match the data type of the field."
input SalesOrderFieldValueInput @oneOf {
"A text value."
salesOrderTextFieldValue: SalesOrderTextFieldValueInput
"A whole number."
salesOrderIntegerFieldValue: SalesOrderIntegerFieldValueInput
"A decimal number."
salesOrderDecimalFieldValue: SalesOrderDecimalFieldValueInput
"A yes or no."
salesOrderBooleanFieldValue: SalesOrderBooleanFieldValueInput
"A date with time."
salesOrderDateFieldValue: SalesOrderDateFieldValueInput
}
"A file attached to a sales order. Only the metadata and a reference: the content is not part of this API, download it from DownloadUrl. Files are uploaded with the master data file upload."
input SalesOrderFileFilterInput {
and: [SalesOrderFileFilterInput!]
or: [SalesOrderFileFilterInput!]
"The ID of the attachment."
id: ComparableVerkaufAuftragFileKeyOperationFilterInput @cost(weight: "15")
"The user who attached the file."
createdBy: ComparableBenutzerKeyOperationFilterInput @cost(weight: "50")
"The name of the file."
fileName: StringOperationFilterInput @cost(weight: "50")
"The size of the file in bytes."
size: ComparableInt64OperationFilterInput @cost(weight: "200")
"When the file was attached."
createdAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "200")
"The ID of the file in the blob storage, if it is stored there. 'GetFileById' returns its state."
blobIdentifier: ComparableNullableOfGuidOperationFilterInput @cost(weight: "200")
}
"A file attached to a sales order. Only the metadata and a reference: the content is not part of this API, download it from DownloadUrl. Files are uploaded with the master data file upload."
input SalesOrderFileSortInput {
"The ID of the attachment."
id: VerkaufAuftragFileKeySortInput @cost(weight: "15")
"The name of the file."
fileName: SortEnumType @cost(weight: "50")
"The size of the file in bytes."
size: SortEnumType @cost(weight: "200")
"When the file was attached."
createdAt: SortEnumType @cost(weight: "200")
"The user who attached the file."
createdBy: BenutzerKeySortInput @cost(weight: "50")
"The ID of the file in the blob storage, if it is stored there. 'GetFileById' returns its state."
blobIdentifier: SortEnumType @cost(weight: "200")
}
"A whole number."
input SalesOrderIntegerFieldValueInput {
"The number."
number: Int!
}
"A new line item for an item of the catalog. The item must be active."
input SalesOrderItemLineItemInput {
"The ID of the item. Fails with ItemNotFound, SalesLineItemItemInactive or SalesLineItemItemIsVariationParent."
itemId: ID!
"The variation values of the item. Fails with VariationNotFound, VariationValueNotFound or VariationValueRequired."
variations: [SalesOrderLineItemVariationInput]!
"The position of the line item. Defaults to the end."
sortOrder: Int
"The unit the quantity is sold in. Defaults to the unit of the item."
salesUnit: String
"The net price per unit. Defaults to the price of the item for the customer."
salesPriceNet: Decimal
"The quantity; greater than 0. Fails with a GraphQL error whose extensions.code is LineItemQuantityNotPositive."
quantity: Decimal!
"A note on the line item."
note: String
"The name printed on the document. Defaults to the name of the item."
name: String
"The discount in percent, at most 100. Fails with a GraphQL error whose extensions.code is LineItemDiscountPercentAboveMaximum."
discountPercent: Decimal
}
"Updates to an item line item; only the fields that are sent change. The item and its variations cannot be changed."
input SalesOrderItemLineItemUpdateInput {
"The tax class. Null or an unknown ID fails with a GraphQL error whose extensions.code is TaxClassNotFound."
taxClassId: ID
"The position of the line item. Null fails with a GraphQL error whose extensions.code is LineItemSortOrderRequired."
sortOrder: Int
"The unit the quantity is sold in. Null clears it."
salesUnit: String
"The net price per unit. Null fails with a GraphQL error whose extensions.code is LineItemSalesPriceNetRequired."
salesPriceNet: Decimal
"The quantity; greater than 0. Null or 0 or less fails with a GraphQL error whose extensions.code is LineItemQuantityNotPositive."
quantity: Decimal
"A note on the line item. Null clears it."
note: String
"The name printed on the document. Null fails with a GraphQL error whose extensions.code is LineItemNameRequired."
name: String
"The discount in percent, at most 100. Null clears it (0 %); above 100 fails with LineItemDiscountPercentAboveMaximum."
discountPercent: Decimal
}
"The value of a custom field (German 'Eigenes Feld') of a sales order line item. It has no language."
input SalesOrderLineItemCustomFieldFilterInput {
and: [SalesOrderLineItemCustomFieldFilterInput!]
or: [SalesOrderLineItemCustomFieldFilterInput!]
"The ID of the custom field."
customFieldId: ComparableEigenesFeldKeyOperationFilterInput @cost(weight: "15")
}
"The value of a custom field (German 'Eigenes Feld') of a sales order line item. It has no language."
input SalesOrderLineItemCustomFieldSortInput {
"The ID of the custom field."
customFieldId: EigenesFeldKeySortInput @cost(weight: "15")
}
"A file attached to a sales order line item. Only the metadata and a reference: the content is not part of this API, download it from DownloadUrl. Files are uploaded with the master data file upload."
input SalesOrderLineItemFileFilterInput {
and: [SalesOrderLineItemFileFilterInput!]
or: [SalesOrderLineItemFileFilterInput!]
"The ID of the attachment."
id: ComparableVerkaufAuftragPositionFileKeyOperationFilterInput @cost(weight: "15")
"The user who attached the file."
createdBy: ComparableBenutzerKeyOperationFilterInput @cost(weight: "50")
"The name of the file."
fileName: StringOperationFilterInput @cost(weight: "50")
"The size of the file in bytes."
size: ComparableInt64OperationFilterInput @cost(weight: "200")
"When the file was attached."
createdAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "200")
"The ID of the file in the blob storage, if it is stored there. 'GetFileById' returns its state."
blobIdentifier: ComparableNullableOfGuidOperationFilterInput @cost(weight: "200")
}
"A file attached to a sales order line item. Only the metadata and a reference: the content is not part of this API, download it from DownloadUrl. Files are uploaded with the master data file upload."
input SalesOrderLineItemFileSortInput {
"The ID of the attachment."
id: VerkaufAuftragPositionFileKeySortInput @cost(weight: "15")
"The name of the file."
fileName: SortEnumType @cost(weight: "50")
"The size of the file in bytes."
size: SortEnumType @cost(weight: "200")
"When the file was attached."
createdAt: SortEnumType @cost(weight: "200")
"The user who attached the file."
createdBy: BenutzerKeySortInput @cost(weight: "50")
"The ID of the file in the blob storage, if it is stored there. 'GetFileById' returns its state."
blobIdentifier: SortEnumType @cost(weight: "200")
}
"A variation value for a new item line item: a value of the variation or a free text."
input SalesOrderLineItemVariationInput {
"The ID of the chosen value. Leave empty for a free text variation."
variationValueId: ID
"The ID of the variation."
variationId: ID!
"The free text. Required when the variation asks for a free text."
value: String
}
"A sales order as a light list entry."
input SalesOrderListEntryFilterInput {
and: [SalesOrderListEntryFilterInput!]
or: [SalesOrderListEntryFilterInput!]
"The ID of the sales order."
id: ComparableVerkaufAuftragKeyOperationFilterInput @cost(weight: "15")
"The number of the sales order."
number: StringOperationFilterInput @cost(weight: "15")
"The number of the sales order on the sales channel."
externalNumber: StringOperationFilterInput @cost(weight: "15")
"The ID of the customer."
customerId: ComparableKundeKeyOperationFilterInput @cost(weight: "15")
"The order number of the customer."
customerOrderNumber: StringOperationFilterInput @cost(weight: "50")
"The customer number at the time of the sales order."
customerNumber: StringOperationFilterInput @cost(weight: "50")
"The date of the sales order."
orderDate: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "50")
"When the sales order was created in Wawi."
createdAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "50")
"The currency as ISO 4217 code."
currencyCode: StringOperationFilterInput @cost(weight: "50")
"The ID of the payment method."
paymentMethodId: ComparableZahlungsartKeyOperationFilterInput @cost(weight: "50")
"The ID of the shipping method."
shippingMethodId: ComparableVersandartKeyOperationFilterInput @cost(weight: "50")
"The ID of the process status."
processStatusId: ComparableVorgangsstatusKeyOperationFilterInput @cost(weight: "50")
"The ID of the reason why the sales order is on hold."
onHoldReasonId: ComparableRueckhaltegrundKeyOperationFilterInput @cost(weight: "50")
"Whether the sales order was cancelled."
isCancelled: ComparableBooleanOperationFilterInput @cost(weight: "50")
"Whether the sales order is pending, for example while a payment is checked."
isPending: ComparableBooleanOperationFilterInput @cost(weight: "50")
"The ID of the company that sells."
companyId: ComparableFirmaKeyOperationFilterInput @cost(weight: "200")
"The ID of the sales channel the sales order came from."
salesChannelId: ComparableSalesChannelIdOperationFilterInput @cost(weight: "200")
"The overall status as the order list shows it."
status: ComparableSalesOrderStatusOperationFilterInput @cost(weight: "200")
"How far the sales order has been delivered."
deliveryStatus: ComparableSalesOrderDeliveryStatusOperationFilterInput @cost(weight: "200")
"How far the sales order has been paid."
paymentStatus: ComparableSalesOrderPaymentStatusOperationFilterInput @cost(weight: "200")
"How far the sales order has been invoiced."
salesInvoiceStatus: ComparableSalesOrderSalesInvoiceStatusOperationFilterInput @cost(weight: "200")
"The net total of all line items."
netTotal: ComparableDecimalOperationFilterInput @cost(weight: "200")
"The gross total of all line items."
grossTotal: ComparableDecimalOperationFilterInput @cost(weight: "200")
}
"A sales order as a light list entry."
input SalesOrderListEntrySortInput {
"The ID of the sales order."
id: VerkaufAuftragKeySortInput @cost(weight: "15")
"The number of the sales order."
number: SortEnumType @cost(weight: "15")
"The ID of the customer."
customerId: KundeKeySortInput @cost(weight: "15")
"The date of the sales order."
orderDate: SortEnumType @cost(weight: "50")
"When the sales order was created in Wawi."
createdAt: SortEnumType @cost(weight: "50")
"The gross total of all line items."
grossTotal: SortEnumType @cost(weight: "200")
}
"An event a user can raise by hand on a sales order (the manual workflows menu in the Wawi). The workflows that listen to it start; raising it raises the event, not a single workflow."
input SalesOrderManualWorkflowEventFilterInput {
and: [SalesOrderManualWorkflowEventFilterInput!]
or: [SalesOrderManualWorkflowEventFilterInput!]
"How many active workflows listen to the event. Raising an event without any does nothing."
activeWorkflowCount: ComparableInt32OperationFilterInput @cost(weight: "15")
}
"An event a user can raise by hand on a sales order (the manual workflows menu in the Wawi). The workflows that listen to it start; raising it raises the event, not a single workflow."
input SalesOrderManualWorkflowEventSortInput {
"The position in the menu of the Wawi."
sortOrder: SortEnumType @cost(weight: "50")
"The display name of the event."
name: SortEnumType @cost(weight: "15")
"The ID of the event."
id: ManualWorkflowEventKeySortInput @cost(weight: "15")
}
"A note on a sales order, kept in the history of the customer."
input SalesOrderNoteFilterInput {
and: [SalesOrderNoteFilterInput!]
or: [SalesOrderNoteFilterInput!]
"The ID of the note."
id: ComparableNotizKeyOperationFilterInput @cost(weight: "15")
"The user who wrote the note."
createdBy: ComparableBenutzerKeyOperationFilterInput @cost(weight: "50")
"How the content of the note reached the company."
type: ComparableSalesOrderNoteTypeOperationFilterInput @cost(weight: "50")
"When the note was written."
createdAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "50")
}
"A note on a sales order, kept in the history of the customer."
input SalesOrderNoteSortInput {
"The ID of the note."
id: NotizKeySortInput @cost(weight: "15")
"When the note was written."
createdAt: SortEnumType @cost(weight: "50")
"The user who wrote the note."
createdBy: BenutzerKeySortInput @cost(weight: "50")
"How the content of the note reached the company."
type: SortEnumType @cost(weight: "50")
}
"The payment terms of a sales order. Fields that are not sent are taken from the customer."
input SalesOrderPaymentTermsInput {
"The days until payment is due."
paymentDueDays: Int
"The cash discount in percent."
cashDiscountPercent: Decimal
"The days within which the cash discount applies."
cashDiscountDays: Int
}
"How and when a sales order is to be shipped."
input SalesOrderShippingDetailsInput {
"The priority when sales orders are delivered."
shippingPriority: Int
"The planned shipping date."
shippingDate: DateTime
"The sales order is not shipped before this date."
shipFromDate: DateTime
"The maximum delivery time in days."
maxDeliveryDays: Int
"Extra weight in kilograms added to the weight of the items."
extraWeight: Decimal
"The delivery date the customer was told."
estimatedDeliveryDate: DateTime
}
"A text value."
input SalesOrderTextFieldValueInput {
"The text."
text: String!
}
"A new voucher that is sold."
input SalesOrderVoucherLineItemInput {
"The type of the voucher."
voucherType: SalesVoucherType!
"The position of the line item. Defaults to the end."
sortOrder: Int
"The number of vouchers. Defaults to 1."
quantity: Decimal
"A note on the line item."
note: String
"The name printed on the document."
name: String!
"The value of one voucher."
amount: Decimal!
}
"Updates to a voucher line item; only the fields that are sent change. The voucher type cannot be changed."
input SalesOrderVoucherLineItemUpdateInput {
"The position of the line item. Null fails with a GraphQL error whose extensions.code is LineItemSortOrderRequired."
sortOrder: Int
"The number of vouchers; greater than 0. Null or 0 or less fails with a GraphQL error whose extensions.code is LineItemQuantityNotPositive."
quantity: Decimal
"A note on the line item. Null clears it."
note: String
"The name printed on the document. Null fails with a GraphQL error whose extensions.code is LineItemNameRequired."
name: String
"The value of one voucher. Null fails with a GraphQL error whose extensions.code is LineItemAmountRequired."
amount: Decimal
}
"One HTTP header that is sent with the upload request, for example a header the signature of a presigned URL covers."
input SalesOutputUploadHeaderInput {
"The header name."
name: String!
"The header value."
value: String!
}
"The place a rendered file is uploaded to. The file is sent with a PUT request to the URL. Only https URLs to public addresses are accepted; redirects are not followed. The URL is a secret: it is never logged and never returned."
input SalesOutputUploadTargetInput {
"The upload URL including its signature (SAS, presigned or signed URL)."
url: String!
"Headers to send with the upload. For Azure Blob Storage the header x-ms-blob-type is set automatically when the host is blob.core.windows.net. For other storages send the headers the signature requires."
headers: [SalesOutputUploadHeaderInput]!
}
"A postal address for a sales document. The country is required."
input SalesQuotationAddressInput {
"The academic title."
title: String
"The street and house number."
street: String
"The state or region."
state: String
"The salutation."
salutation: String
"The postal code."
postalCode: String
"The customer number of a parcel station or post office, for example the DHL post number."
postId: String
"The phone number."
phoneNumber: String
"The mobile phone number."
mobileNumber: String
"The last name."
lastName: String
"The first name."
firstName: String
"The fax number."
fax: String
"The email address."
emailAddress: String
"The country as ISO 3166-1 alpha-2 code, for example 'DE'."
countryCode: String!
"The company name."
company: String
"The city."
city: String
"An additional company line."
additionalCompanyLine: String
"An additional address line."
additionalAddressLine: String
}
"A new charge such as shipping, a payment fee or gift wrap."
input SalesQuotationChargeLineItemInput {
"The tax class. Defaults to the default tax class; fails with a GraphQL error whose extensions.code is TaxClassNotFound."
taxClassId: ID
"The item the charge comes from, if any. Fails with a GraphQL error whose extensions.code is ItemNotFound or SalesLineItemItemInactive."
itemId: ID
"The position of the line item. Defaults to the end."
sortOrder: Int
"The net price per unit."
salesPriceNet: Decimal!
"The quantity. Defaults to 1."
quantity: Decimal
"A note on the line item."
note: String
"The name printed on the document."
name: String!
"The type of the charge. Known values: SHIPPING, SHIPPING_SURCHARGE, SHIPPING_SURCHARGE_ITEM, PAYMENT_FEE, CASH_ON_DELIVERY_FEE, GIFT_WRAP, INTEREST, HANDLING_FEE, TRUSTED_SHOPS, RETURN_DELIVERY, FREE_GIFT. The type of a charge line item."
chargeType: String!
}
"Updates to a charge line item; only the fields that are sent change. The charge type and the item cannot be changed."
input SalesQuotationChargeLineItemUpdateInput {
"The tax class. Null or an unknown ID fails with a GraphQL error whose extensions.code is TaxClassNotFound."
taxClassId: ID
"The position of the line item. Null fails with a GraphQL error whose extensions.code is LineItemSortOrderRequired."
sortOrder: Int
"The net price per unit. Null fails with a GraphQL error whose extensions.code is LineItemSalesPriceNetRequired."
salesPriceNet: Decimal
"The quantity; greater than 0. Null or 0 or less fails with a GraphQL error whose extensions.code is LineItemQuantityNotPositive."
quantity: Decimal
"A note on the line item. Null clears it."
note: String
"The name printed on the document. Null fails with a GraphQL error whose extensions.code is LineItemNameRequired."
name: String
}
"A new free line item without an item of the catalog."
input SalesQuotationCustomLineItemInput {
"The tax class. Defaults to the default tax class; fails with a GraphQL error whose extensions.code is TaxClassNotFound."
taxClassId: ID
"The position of the line item. Defaults to the end."
sortOrder: Int
"A free SKU of the line item."
sku: String
"The unit the quantity is sold in, for example 'pcs'."
salesUnit: String
"The net price per unit."
salesPriceNet: Decimal!
"The quantity; greater than 0. Fails with a GraphQL error whose extensions.code is LineItemQuantityNotPositive."
quantity: Decimal!
"A note on the line item."
note: String
"The name printed on the document."
name: String!
"The discount in percent, at most 100. Fails with a GraphQL error whose extensions.code is LineItemDiscountPercentAboveMaximum."
discountPercent: Decimal
}
"Updates to a free line item; only the fields that are sent change."
input SalesQuotationCustomLineItemUpdateInput {
"The tax class. Null or an unknown ID fails with a GraphQL error whose extensions.code is TaxClassNotFound."
taxClassId: ID
"The position of the line item. Null fails with a GraphQL error whose extensions.code is LineItemSortOrderRequired."
sortOrder: Int
"A free SKU of the line item. Null clears it."
sku: String
"The unit the quantity is sold in."
salesUnit: String
"The net price per unit. Null fails with a GraphQL error whose extensions.code is LineItemSalesPriceNetRequired."
salesPriceNet: Decimal
"The quantity; greater than 0. Null or 0 or less fails with a GraphQL error whose extensions.code is LineItemQuantityNotPositive."
quantity: Decimal
"A note on the line item. Null clears it."
note: String
"The name printed on the document. Null fails with a GraphQL error whose extensions.code is LineItemNameRequired."
name: String
"The discount in percent, at most 100. Null clears it (0 %); above 100 fails with LineItemDiscountPercentAboveMaximum."
discountPercent: Decimal
}
"A new discount such as a coupon."
input SalesQuotationDiscountLineItemInput {
"The position of the line item. Defaults to the end."
sortOrder: Int
"A note on the line item."
note: String
"The name printed on the document."
name: String!
"The type of the discount. Known values: COUPON, NEW_CUSTOMER_COUPON, LEGACY_VOUCHER. The type of a discount line item."
discountType: String!
"The amount of the discount; greater than 0. Fails with a GraphQL error whose extensions.code is LineItemAmountNotPositive."
amount: Decimal!
}
"Updates to a discount line item; only the fields that are sent change. The discount type cannot be changed."
input SalesQuotationDiscountLineItemUpdateInput {
"The position of the line item. Null fails with a GraphQL error whose extensions.code is LineItemSortOrderRequired."
sortOrder: Int
"A note on the line item. Null clears it."
note: String
"The name printed on the document. Null fails with a GraphQL error whose extensions.code is LineItemNameRequired."
name: String
"The amount of the discount; greater than 0. Null or 0 or less fails with a GraphQL error whose extensions.code is LineItemAmountNotPositive."
amount: Decimal
}
"A file attached to a sales quotation. Only the metadata and a reference: the content is not part of this API, download it from DownloadUrl. Files are uploaded with the master data file upload."
input SalesQuotationFileFilterInput {
and: [SalesQuotationFileFilterInput!]
or: [SalesQuotationFileFilterInput!]
"The ID of the attachment."
id: ComparableVerkaufAuftragFileKeyOperationFilterInput @cost(weight: "15")
"The user who attached the file."
createdBy: ComparableBenutzerKeyOperationFilterInput @cost(weight: "50")
"The name of the file."
fileName: StringOperationFilterInput @cost(weight: "50")
"The size of the file in bytes."
size: ComparableInt64OperationFilterInput @cost(weight: "200")
"When the file was attached."
createdAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "200")
"The ID of the file in the blob storage, if it is stored there."
blobIdentifier: ComparableNullableOfGuidOperationFilterInput @cost(weight: "200")
}
"A file attached to a sales quotation. Only the metadata and a reference: the content is not part of this API, download it from DownloadUrl. Files are uploaded with the master data file upload."
input SalesQuotationFileSortInput {
"The ID of the attachment."
id: VerkaufAuftragFileKeySortInput @cost(weight: "15")
"The name of the file."
fileName: SortEnumType @cost(weight: "50")
"The size of the file in bytes."
size: SortEnumType @cost(weight: "200")
"When the file was attached."
createdAt: SortEnumType @cost(weight: "200")
}
"A new line item for an item of the catalog. The item must be active."
input SalesQuotationItemLineItemInput {
"The ID of the item. Fails with ItemNotFound, SalesLineItemItemInactive, ItemIsBillOfMaterials or SalesLineItemItemIsVariationParent."
itemId: ID!
"The variation values of the item. Fails with VariationNotFound, VariationValueNotFound or VariationValueRequired."
variations: [SalesQuotationLineItemVariationInput]!
"The position of the line item. Defaults to the end."
sortOrder: Int
"The unit the quantity is sold in. Defaults to the unit of the item."
salesUnit: String
"The net price per unit. Defaults to the price of the item for the customer."
salesPriceNet: Decimal
"The quantity; greater than 0. Fails with a GraphQL error whose extensions.code is LineItemQuantityNotPositive."
quantity: Decimal!
"A note on the line item."
note: String
"The name printed on the document. Defaults to the name of the item."
name: String
"The discount in percent, at most 100. Fails with a GraphQL error whose extensions.code is LineItemDiscountPercentAboveMaximum."
discountPercent: Decimal
}
"Updates to an item line item; only the fields that are sent change. The item and its variations cannot be changed."
input SalesQuotationItemLineItemUpdateInput {
"The tax class. Null or an unknown ID fails with a GraphQL error whose extensions.code is TaxClassNotFound."
taxClassId: ID
"The position of the line item. Null fails with a GraphQL error whose extensions.code is LineItemSortOrderRequired."
sortOrder: Int
"The unit the quantity is sold in."
salesUnit: String
"The net price per unit. Null fails with a GraphQL error whose extensions.code is LineItemSalesPriceNetRequired."
salesPriceNet: Decimal
"The quantity; greater than 0. Null or 0 or less fails with a GraphQL error whose extensions.code is LineItemQuantityNotPositive."
quantity: Decimal
"A note on the line item. Null clears it."
note: String
"The name printed on the document. Null fails with a GraphQL error whose extensions.code is LineItemNameRequired."
name: String
"The discount in percent, at most 100. Null clears it (0 %); above 100 fails with LineItemDiscountPercentAboveMaximum."
discountPercent: Decimal
}
"A variation value for a new item line item: a value of the variation or a free text."
input SalesQuotationLineItemVariationInput {
"The ID of the chosen value. Leave empty for a free text variation."
variationValueId: ID
"The ID of the variation."
variationId: ID!
"The free text. Required when the variation asks for a free text."
value: String
}
"A sales quotation as a light list item."
input SalesQuotationListEntryFilterInput {
and: [SalesQuotationListEntryFilterInput!]
or: [SalesQuotationListEntryFilterInput!]
"The ID of the sales quotation."
id: ComparableVerkaufAuftragKeyOperationFilterInput @cost(weight: "15")
"The quotation number."
number: StringOperationFilterInput @cost(weight: "15")
"A number from another system."
externalNumber: StringOperationFilterInput @cost(weight: "15")
"The ID of the customer."
customerId: ComparableKundeKeyOperationFilterInput @cost(weight: "15")
"The date of the quotation."
quotationDate: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "15")
"The ID of the user responsible for the quotation."
responsibleUserId: ComparableBenutzerKeyOperationFilterInput @cost(weight: "50")
"The ID of the process status."
processStatusId: ComparableVorgangsstatusKeyOperationFilterInput @cost(weight: "50")
"Whether the quotation is still being written by another process. A pending quotation cannot be changed."
isPending: ComparableBooleanOperationFilterInput @cost(weight: "50")
"The currency as ISO 4217 code."
currencyCode: StringOperationFilterInput @cost(weight: "50")
"The customer number at the time the quotation was created."
customerNumber: StringOperationFilterInput @cost(weight: "50")
"When the quotation was created in Wawi."
createdAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "50")
"The ID of the company that sells."
companyId: ComparableFirmaKeyOperationFilterInput @cost(weight: "200")
"The ID of the sales channel the quotation belongs to."
salesChannelId: ComparableSalesChannelIdOperationFilterInput @cost(weight: "200")
"The net total of all line items."
netTotal: ComparableDecimalOperationFilterInput @cost(weight: "200")
"The gross total of all line items."
grossTotal: ComparableDecimalOperationFilterInput @cost(weight: "200")
"When the quotation was printed last. Empty when it was never printed."
printedAt: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "200")
"When the quotation was sent by email last. Empty when it was never sent."
mailedAt: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "200")
"The state of the quotation."
status: ComparableSalesQuotationStatusOperationFilterInput @cost(weight: "500")
}
"A sales quotation as a light list item."
input SalesQuotationListEntrySortInput {
"The ID of the sales quotation."
id: VerkaufAuftragKeySortInput @cost(weight: "15")
"The quotation number."
number: SortEnumType @cost(weight: "15")
"The date of the quotation."
quotationDate: SortEnumType @cost(weight: "15")
"The ID of the customer."
customerId: KundeKeySortInput @cost(weight: "15")
"When the quotation was created in Wawi."
createdAt: SortEnumType @cost(weight: "50")
"The net total of all line items."
netTotal: SortEnumType @cost(weight: "200")
"The gross total of all line items."
grossTotal: SortEnumType @cost(weight: "200")
}
"An event a user can raise by hand on a sales quotation. Raising it starts every workflow that listens to it."
input SalesQuotationManualWorkflowEventFilterInput {
and: [SalesQuotationManualWorkflowEventFilterInput!]
or: [SalesQuotationManualWorkflowEventFilterInput!]
"How many active workflows listen to the event. Raising an event without any does nothing."
activeWorkflowCount: ComparableInt32OperationFilterInput @cost(weight: "15")
}
"An event a user can raise by hand on a sales quotation. Raising it starts every workflow that listens to it."
input SalesQuotationManualWorkflowEventSortInput {
"The position in the menu of the Wawi."
sortOrder: SortEnumType @cost(weight: "50")
"The display name of the event."
name: SortEnumType @cost(weight: "15")
"The ID of the event."
id: ManualWorkflowEventKeySortInput @cost(weight: "15")
}
"A note on a sales quotation, kept in the history of the customer."
input SalesQuotationNoteFilterInput {
and: [SalesQuotationNoteFilterInput!]
or: [SalesQuotationNoteFilterInput!]
"The ID of the note."
id: ComparableNotizKeyOperationFilterInput @cost(weight: "15")
"The user who wrote the note."
createdBy: ComparableBenutzerKeyOperationFilterInput @cost(weight: "50")
"How the content of the note reached the company."
type: ComparableSalesQuotationNoteTypeOperationFilterInput @cost(weight: "50")
"When the note was written."
createdAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "50")
}
"A note on a sales quotation, kept in the history of the customer."
input SalesQuotationNoteSortInput {
"The ID of the note."
id: NotizKeySortInput @cost(weight: "15")
"When the note was written."
createdAt: SortEnumType @cost(weight: "50")
}
"The payment terms of a sales quotation. Fields that are not sent are taken from the customer on create and keep their value on update."
input SalesQuotationPaymentTermsInput {
"The days until payment is due."
paymentDueDays: Int
"The cash discount in percent."
cashDiscountPercent: Decimal
"The days within which the cash discount applies."
cashDiscountDays: Int
}
"A new voucher that is sold."
input SalesQuotationVoucherLineItemInput {
"The type of the voucher."
voucherType: SalesVoucherType!
"The position of the line item. Defaults to the end."
sortOrder: Int
"The number of vouchers. Defaults to 1."
quantity: Decimal
"A note on the line item."
note: String
"The name printed on the document."
name: String!
"The value of one voucher."
amount: Decimal!
}
"Updates to a voucher line item; only the fields that are sent change. The voucher type cannot be changed."
input SalesQuotationVoucherLineItemUpdateInput {
"The position of the line item. Null fails with a GraphQL error whose extensions.code is LineItemSortOrderRequired."
sortOrder: Int
"The quantity; greater than 0. Null or 0 or less fails with a GraphQL error whose extensions.code is LineItemQuantityNotPositive."
quantity: Decimal
"A note on the line item. Null clears it."
note: String
"The name printed on the document. Null fails with a GraphQL error whose extensions.code is LineItemNameRequired."
name: String
"The value of one voucher. Null fails with a GraphQL error whose extensions.code is LineItemAmountRequired."
amount: Decimal
}
"Changes to an address of a subscription. Only the properties that are sent change; an empty text removes a value. A property that is not sent keeps its value."
input SalesSubscriptionAddressChangesInput {
"The salutation. An empty text removes the value."
salutation: String
"The academic title. An empty text removes the value."
title: String
"The first name. An empty text removes the value."
firstName: String
"The last name. An empty text removes the value."
lastName: String
"The company name. An empty text removes the value."
company: String
"An additional company line. An empty text removes the value."
additionalCompanyLine: String
"The street and house number. An empty text removes the value."
street: String
"An additional address line. An empty text removes the value."
additionalAddressLine: String
"The postal code. An empty text removes the value."
postalCode: String
"The city. An empty text removes the value."
city: String
"The state or region. An empty text removes the value."
state: String
"The country as ISO 3166-1 alpha-2 code, for example 'DE'. It cannot be removed."
countryCode: String
"The email address. An empty text removes the value."
emailAddress: String
"The phone number. An empty text removes the value."
phoneNumber: String
"The mobile phone number. An empty text removes the value."
mobileNumber: String
"The VAT identification number. An empty text removes the value."
vatId: String
"The post number for parcel lockers. An empty text removes the value."
postId: String
"The fax number. An empty text removes the value."
fax: String
"The Global Location Number. An empty text removes the value."
gln: String
"Whether customs documents are required for shipments to this address. Omitted means no."
customsDocumentsRequired: Boolean
}
"An address of a subscription given when the subscription is created. Omitted properties stay empty."
input SalesSubscriptionAddressInput {
"The salutation."
salutation: String
"The academic title."
title: String
"The first name."
firstName: String
"The last name."
lastName: String
"The company name."
company: String
"An additional company line."
additionalCompanyLine: String
"The street and house number."
street: String
"An additional address line."
additionalAddressLine: String
"The postal code."
postalCode: String
"The city."
city: String
"The state or region."
state: String
"The country as ISO 3166-1 alpha-2 code, for example 'DE'."
countryCode: String
"The email address."
emailAddress: String
"The phone number."
phoneNumber: String
"The mobile phone number."
mobileNumber: String
"The VAT identification number."
vatId: String
"The post number for parcel lockers."
postId: String
"The fax number."
fax: String
"The Global Location Number."
gln: String
"Whether customs documents are required for shipments to this address. Omitted means no."
customsDocumentsRequired: Boolean
}
"A cash discount given when payment terms are written."
input SalesSubscriptionCashDiscountInput {
"The discount in percent, greater than 0 and at most 100."
percent: Decimal!
"Days within which the discount applies, 1 to 999."
days: Int!
}
"A line item for a charge such as shipping or a fee in a new subscription."
input SalesSubscriptionChargeLineItemInput {
"The type of the charge. Known values: SHIPPING, SHIPPING_SURCHARGE, SHIPPING_SURCHARGE_ITEM, PAYMENT_FEE, CASH_ON_DELIVERY_FEE, GIFT_WRAP, INTEREST, HANDLING_FEE, TRUSTED_SHOPS, RETURN_DELIVERY, FREE_GIFT. The type of a charge line item."
chargeType: String!
"Required for 'FreeGift' and 'ShippingSurchargeItem', not allowed for the other types: the ID of the item."
itemId: ID
"The name printed on the sales order; not empty."
name: String!
"The net amount of the charge."
salesPriceNet: Decimal!
"The quantity; greater than 0. Defaults to 1."
quantity: Decimal
"The ID of the tax class. Defaults to the default tax class."
taxClassId: ID
"A note on the line item."
note: String
"The position of the line item. Defaults to the end."
sortOrder: Int
}
"A line item for a free line without an item in a new subscription."
input SalesSubscriptionCustomLineItemInput {
"The name printed on the sales order; not empty."
name: String!
"The quantity billed per period; greater than 0."
quantity: Decimal!
"The net price per unit."
salesPriceNet: Decimal!
"The ID of the tax class. Defaults to the default tax class."
taxClassId: ID
"The discount in percent, 0 to 100."
discountPercent: Decimal
"A note on the line item."
note: String
"The position of the line item. Defaults to the end."
sortOrder: Int
"When the line item is billed."
schedule: SalesSubscriptionScheduleInput!
}
"A line item for a discount such as a coupon in a new subscription."
input SalesSubscriptionDiscountLineItemInput {
"The type of the discount. Known values: COUPON, NEW_CUSTOMER_COUPON, LEGACY_VOUCHER. The type of a discount line item."
discountType: String!
"The name printed on the sales order; not empty."
name: String!
"The net amount by which each follow-up sales order is reduced; greater than 0."
amount: Decimal!
"A note on the line item."
note: String
"The position of the line item. Defaults to the end."
sortOrder: Int
}
"A file attached to a sales subscription. Only the metadata and a reference: the content is not part of this API, download it from DownloadUrl. Files are uploaded with the master data file upload."
input SalesSubscriptionFileFilterInput {
and: [SalesSubscriptionFileFilterInput!]
or: [SalesSubscriptionFileFilterInput!]
"The ID of the attachment."
id: ComparableVerkaufAuftragFileKeyOperationFilterInput @cost(weight: "15")
"The user who attached the file."
createdBy: ComparableBenutzerKeyOperationFilterInput @cost(weight: "50")
"The name of the file."
fileName: StringOperationFilterInput @cost(weight: "50")
"The size of the file in bytes."
size: ComparableInt64OperationFilterInput @cost(weight: "200")
"When the file was attached."
createdAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "200")
"The ID of the file in the blob storage, if it is stored there. 'GetFileById' returns its state."
blobIdentifier: ComparableNullableOfGuidOperationFilterInput @cost(weight: "200")
}
"A file attached to a sales subscription. Only the metadata and a reference: the content is not part of this API, download it from DownloadUrl. Files are uploaded with the master data file upload."
input SalesSubscriptionFileSortInput {
"The ID of the attachment."
id: VerkaufAuftragFileKeySortInput @cost(weight: "15")
"The name of the file."
fileName: SortEnumType @cost(weight: "50")
"The size of the file in bytes."
size: SortEnumType @cost(weight: "200")
"When the file was attached."
createdAt: SortEnumType @cost(weight: "200")
}
"A line item for an item of the catalog in a new subscription."
input SalesSubscriptionItemLineItemInput {
"The ID of the item. The item must exist and must not be a component of another item."
itemId: ID!
"The quantity billed per period; greater than 0."
quantity: Decimal!
"The net price per unit. Defaults to the price of the item for the customer."
salesPriceNet: Decimal
"The discount in percent, 0 to 100."
discountPercent: Decimal
"The name printed on the sales order. Defaults to the name of the item."
name: String
"A note on the line item."
note: String
"The position of the line item. Defaults to the end."
sortOrder: Int
"When the line item is billed."
schedule: SalesSubscriptionScheduleInput!
}
"A line item of a subscription. Polymorphic: the property 'kind' selects the variant. Recurring kinds (item, custom, voucher) carry a schedule; charges and discounts are part of every follow-up sales order."
input SalesSubscriptionLineItemFilterInput {
and: [SalesSubscriptionLineItemFilterInput!]
or: [SalesSubscriptionLineItemFilterInput!]
"Discriminator of the line-item kind."
kind: ComparableSalesSubscriptionLineItemKindOperationFilterInput
}
"A line item of a subscription. Polymorphic: the property 'kind' selects the variant. Recurring kinds (item, custom, voucher) carry a schedule; charges and discounts are part of every follow-up sales order."
input SalesSubscriptionLineItemSortInput {
"The position of the line item in the subscription."
sortOrder: SortEnumType @cost(weight: "10")
}
"A subscription in a list."
input SalesSubscriptionListEntryFilterInput {
and: [SalesSubscriptionListEntryFilterInput!]
or: [SalesSubscriptionListEntryFilterInput!]
"The ID of the customer."
customerId: ComparableKundeKeyOperationFilterInput
"The ID of the company that sells."
companyId: ComparableFirmaKeyOperationFilterInput
"The subscription number."
number: StringOperationFilterInput
"The state of the subscription, derived from its recurring line items."
status: ComparableSalesSubscriptionStatusOperationFilterInput
"Whether at least one line item is due today, counting its lead time. Then a follow-up sales order can be created."
isDue: ComparableBooleanOperationFilterInput
"The earliest next due date of the line items. Empty when the subscription has ended."
nextDueDate: ComparableNullableOfDateTimeOffsetOperationFilterInput
"When the subscription was created."
createdAt: ComparableDateTimeOffsetOperationFilterInput
}
"A subscription in a list."
input SalesSubscriptionListEntrySortInput {
"When the subscription was created."
createdAt: SortEnumType @cost(weight: "10")
"The subscription number."
number: SortEnumType @cost(weight: "10")
"The earliest next due date of the line items. Empty when the subscription has ended."
nextDueDate: SortEnumType @cost(weight: "10")
}
"Changes to the payment terms of a subscription. Only the properties that are sent change."
input SalesSubscriptionPaymentTermsChangesInput {
"Days until payment is due. Null removes the value."
paymentDueDays: Int
"The cash discount for early payment. It is replaced as a whole; null removes it."
cashDiscount: SalesSubscriptionCashDiscountInput
}
"Payment terms of a subscription given when the subscription is created."
input SalesSubscriptionPaymentTermsInput {
"Days until payment is due."
paymentDueDays: Int
"The cash discount for early payment. Omitted means none."
cashDiscount: SalesSubscriptionCashDiscountInput
}
"A follow-up sales order created from the subscription."
input SalesSubscriptionSalesOrderFilterInput {
and: [SalesSubscriptionSalesOrderFilterInput!]
or: [SalesSubscriptionSalesOrderFilterInput!]
"The date of the sales order."
salesOrderDate: ComparableDateTimeOffsetOperationFilterInput
}
"A follow-up sales order created from the subscription."
input SalesSubscriptionSalesOrderSortInput {
"The date of the sales order."
salesOrderDate: SortEnumType @cost(weight: "10")
}
"The schedule of a new recurring line item."
input SalesSubscriptionScheduleInput {
"How often the line item becomes due."
cadence: SalesSubscriptionCadence!
"Required for the custom cadence, not allowed for the others: the number of units between two due dates, 1 to 999."
every: Int
"Required for the custom cadence, not allowed for the others: the unit of 'every'."
unit: SalesSubscriptionIntervalUnit
"The first day the schedule applies. Only the date counts; a time part is ignored."
startDate: DateTime!
"The last day a period can be due; not before the start date. Only the date counts; a time part is ignored."
endDate: DateTime
"How many days before the due date the follow-up sales order is created, 0 to 9999. Defaults to 1."
leadTimeDays: Int
"The first period to bill. If it is not on the cadence, the next cadence date after it is used. Defaults to the first cadence date on or after the start date, even if that is in the past; then the past periods are billed one after the other. Only the date counts; a time part is ignored."
nextDueDate: DateTime
}
"A line item for a voucher in a new subscription."
input SalesSubscriptionVoucherLineItemInput {
"The type of the voucher."
voucherType: SalesSubscriptionVoucherType!
"The name printed on the sales order; not empty."
name: String!
"The value of one voucher; greater than 0."
amount: Decimal!
"The number of vouchers per period; greater than 0. Defaults to 1."
quantity: Decimal
"A note on the line item."
note: String
"The position of the line item. Defaults to the end."
sortOrder: Int
"When the line item is billed."
schedule: SalesSubscriptionScheduleInput!
}
"A sales unit as a list entry, with its name in one language."
input SalesUnitListEntryFilterInput {
and: [SalesUnitListEntryFilterInput!]
or: [SalesUnitListEntryFilterInput!]
"The ID of the sales unit."
id: ComparableEinheitKeyOperationFilterInput @cost(weight: "15")
"The name in the requested language; the name in the default language when there is none in it."
name: StringOperationFilterInput @cost(weight: "200")
"The UN/CEFACT unit code shown on e-invoices for items with this sales unit, for example 'XBX'. Empty when none is set."
unitCode: StringOperationFilterInput @cost(weight: "50")
}
"A sales unit as a list entry, with its name in one language."
input SalesUnitListEntrySortInput {
"The ID of the sales unit."
id: EinheitKeySortInput @cost(weight: "15")
"The name in the requested language; the name in the default language when there is none in it."
name: SortEnumType @cost(weight: "200")
}
"The name of a sales unit in one language, when written."
input SalesUnitTranslationInput {
"The language as BCP 47 tag, for example 'de' or 'de-AT'. Case is not significant. The language must be activated."
languageTag: String!
"The name, 1 to 10 characters. Names are unique per language, hidden sales units included."
name: String!
}
"Represents a key for a SCX channel."
input ScxChannelKeySortInput {
"Gets the database identifier for the SCX channel."
channelId: SortEnumType @cost(weight: "10")
}
"A simple selection variation of an item: the customer chooses one of several values, each of which can change price, weight, item number and GTIN. It is not a variation axis: it does not create combinations and has no item of its own per value. An item that becomes a variation parent turns its selection variations into axes."
input SelectionVariationFilterInput {
and: [SelectionVariationFilterInput!]
or: [SelectionVariationFilterInput!]
"The ID of the selection variation."
id: ComparableVariationKeyOperationFilterInput
}
"A simple selection variation of an item: the customer chooses one of several values, each of which can change price, weight, item number and GTIN. It is not a variation axis: it does not create combinations and has no item of its own per value. An item that becomes a variation parent turns its selection variations into axes."
input SelectionVariationSortInput {
"The ID of the selection variation."
id: VariationKeySortInput @cost(weight: "10")
"Zero-based position among the variations of the item."
position: SortEnumType @cost(weight: "10")
}
"Sends a test e-mail with the stored mail settings of the company to the given address and returns how it went. A failed send is not an error of the request: the call answers 200 with succeeded false and the message of the mail server in errorMessage. The test is only meaningful with a recipient whose domain differs from the mail server. The settings must exist; they are not changed. - Request"
input SendCompanyTestEmailCommandRequestInput {
"The ID of the company."
companyId: ID!
"The address that receives the test e-mail, a valid mail address of at most 255 characters."
recipientAddress: String!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Sends a pending or failed refund to the payment provider or the bank. The response tells whether it was accepted ('Sent') or refused ('Failed', with the message of the provider); a refusal is a result, not an error of the call, and the refund can be changed and sent again. Payment accounts that need an interactive confirmation, for example a TAN for online banking, cannot send from here. Errors: REFUND_NOT_FOUND (the refund was not found); REFUND_ALREADY_SENT (the refund was sent or confirmed already); REFUND_SENDING_IN_PROGRESS (another payment reconciliation process (sending refunds or fetching transactions) is running right now; try again later); PAYMENT_ACCOUNT_REQUIRES_INTERACTION (the payment account needs an interactive confirmation to send). - Request"
input SendRefundCommandRequestInput {
"The ID of the refund."
refundId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"One session of an application: who runs it, where, and whether it still reports. It contains personal data."
input SessionInfoFilterInput {
and: [SessionInfoFilterInput!]
or: [SessionInfoFilterInput!]
"The stable key of the application."
applicationId: StringOperationFilterInput @cost(weight: "15")
"The user who is logged in. Absent for a service without a user."
userId: ComparableBenutzerKeyOperationFilterInput @cost(weight: "15")
"Whether the session reported within the timeout."
isAlive: ComparableBooleanOperationFilterInput @cost(weight: "200")
}
"One session of an application: who runs it, where, and whether it still reports. It contains personal data."
input SessionInfoSortInput {
"The stable key of the application."
applicationId: SortEnumType @cost(weight: "15")
"The user who is logged in. Absent for a service without a user."
userId: BenutzerKeySortInput @cost(weight: "15")
"When the session started."
loggedInAt: SortEnumType @cost(weight: "50")
"The latest sign of life."
lastHeartbeatAt: SortEnumType @cost(weight: "50")
}
"Sets the name of a multilingual attribute in one language and creates it if the attribute has no name in this language yet. Other languages stay as they are. System attributes cannot be changed. Errors: errorCode is ATTRIBUTE_NOT_FOUND (no attribute has this ID); ATTRIBUTE_KIND_MISMATCH (the attribute is a function attribute; it has one name, see 'UpdateFunctionAttribute'); ATTRIBUTE_IS_SYSTEM_ATTRIBUTE (the attribute is supplied by the system); ATTRIBUTE_NAME_REQUIRED (the name is empty), ATTRIBUTE_NAME_INVALID (the name contains '#'), ATTRIBUTE_LANGUAGE_NOT_FOUND (the language is unknown or not active); ATTRIBUTE_NAME_ALREADY_EXISTS (another attribute or function attribute of the entity type has this name in the default language, regardless of upper and lower case). - Request"
input SetAttributeNameCommandRequestInput {
"The ID of the multilingual attribute."
attributeId: ID!
"The language as BCP 47 tag, for example 'de' or 'de-AT'. Case does not matter on input; the output uses the canonical form (language lower case, region upper case)."
languageTag: String!
"The name in this language. It must not contain the character '#'."
name: String!
}
"Sets the order of the direct subcategories of one parent, or of the top level. The list has to name all subcategories of the parent exactly once; they get the sort numbers 1 to n in that order. - Request"
input SetCategoryChildOrderCommandRequestInput {
"The parent whose subcategories are ordered. Omitted means the top level."
parentId: ID
"The direct subcategories of the parent in the new order."
categoryIds: [ID]!
}
"Sets the value of a custom field (German 'Eigenes Feld') of a category and replaces the value that was there. The value follows the rules of the custom field definitions API (field IDs, data types and allowed values come from '/custom-fields'): it has the shape of the data type of the field (text for text, url, email, phone, countryIso, shortText and valueList; integer for integer; decimal for decimal and price, a price is not negative; boolean for checkbox; date for date, a valid calendar date from 1753-01-01 to 9999-12-31, the time of day is ignored; decimal and price have at most 12 integer and 13 fractional digits). A value of the wrong shape is refused with CATEGORY_CUSTOM_FIELD_VALUE_TYPE_MISMATCH, a value of the right shape with the wrong format with a validation error (url: absolute http or https address; email: valid address; countryIso: two capital letters; valueList: one of the allowed values; text: not empty). Required fields are a hint only: a required field can be left empty or cleared. Hidden fields stay readable and writable. There is one value per field and category, without language and sales channel. - Request"
input SetCategoryCustomFieldValueCommandRequestInput {
"The ID of the category."
categoryId: ID!
"The ID of the custom field. It has to be a custom field for categories."
customFieldId: ID!
"The value."
value: CategoryFieldValueInput!
}
"Sets the texts of a category in one language, for the default or for one sales channel, and replaces what was there. The default texts of the default language need a name. Texts of a sales channel can only be set for sales channels that support them. The texts are replaced as a whole: a field that is omitted or null is cleared, except the name of the default text of the default language, which is required. - Request"
input SetCategoryDescriptionCommandRequestInput {
"The ID of the category."
categoryId: ID!
"The language of the texts as BCP 47 tag, for example 'de' or 'de-AT'. Case does not matter on input; the output uses the canonical form (language lower case, region upper case)."
languageTag: String!
"The sales channel of the texts, a tenant-local composite identifier such as 1-1-1. Omitted means the default texts."
salesChannelId: ID
"The name of the category, at most 255 characters. Required for the default texts of the default language."
name: String
"Description of the category, may contain HTML, at most 1000 characters."
description: String
"Title for search engines, at most 255 characters."
seoTitle: String
"Description for search engines, at most 500 characters."
metaDescription: String
"Keywords for search engines, at most 255 characters."
metaKeywords: String
"Path segment of the category URL in the shop, at most 255 characters."
urlPath: String
}
"Gives a customer group in a sales channel a discount on the items of the category and replaces what was there. Idempotent. The sales channel does not have to have the category activated. - Request"
input SetCategoryDiscountCommandRequestInput {
"The ID of the category."
categoryId: ID!
"The sales channel. Tenant-local, composite identifier, not a UUID, for example 1-1-1. Malformed values are answered with 400 (errorCode is FORMAT_NOT_PARSABLE)."
salesChannelId: ID!
"The ID of the customer group."
customerGroupId: ID!
"The discount in percent, from 0 to 100. 0 is the same as removing the discount."
percentage: Decimal!
}
"Sets the customer groups a category is hidden for in one sales channel as a whole: it is hidden for every listed customer group and shown to every other one. Not possible for the Wawi sales channel. - Request"
input SetCategoryHiddenCustomerGroupsCommandRequestInput {
"The ID of the category."
categoryId: ID!
"The sales channel. Tenant-local, composite identifier, not a UUID, for example 1-1-1. Malformed values are answered with 400 (errorCode is FORMAT_NOT_PARSABLE)."
salesChannelId: ID!
"The customer groups the category is hidden for afterwards. An empty list shows it to all."
customerGroupIds: [ID]!
}
"Sets the order of the images of one sales channel. The first image becomes the main image. The list has to name all images of the sales channel exactly once. Uploading an image stays with the image API (or 'AddCategoryImageFromUrl'); which sales channels an image is visible in is set with 'SetCategoryImageSalesChannels'. Only images that have an address in the blob storage are part of the order; an image without one (legacy data) is not listed by 'QueryCategoryImagesByCategoryId' and not expected in the list. - Request"
input SetCategoryImageOrderCommandRequestInput {
"The ID of the category."
categoryId: ID!
"The sales channel, a tenant-local composite identifier such as 1-1-1. Omitted means the default images of the category."
salesChannelId: ID
"The images of the scope in the new order. The first is the main image."
blobIdentifiers: [UUID]!
}
"Sets the sales channels an image of a category is visible in as a whole: it is visible in every listed sales channel, put at the end of its order there, and removed from every other. At least one sales channel has to be listed; use the image API to remove the image. The image files are handled by the image API (blob storage and image API); this operation only changes how the image is assigned to the category. - Request"
input SetCategoryImageSalesChannelsCommandRequestInput {
"The ID of the category."
categoryId: ID!
"The ID of the image in the blob storage."
blobIdentifier: UUID!
"The sales channels the image is visible in, at least one. The Wawi sales channel is the default images."
salesChannelIds: [ID]!
}
"Sets the sales channels a category is activated in as a whole: it is activated, with its subcategories, in every listed sales channel and deactivated in every other channel that supports the activation of categories. Channels that cannot be activated for categories keep their state. All of it happens in one transaction. By default the change applies to all subcategories and to all items of the categories; switch 'includeSubcategories' and 'includeItems' off to change only the category itself. - Request"
input SetCategorySalesChannelsCommandRequestInput {
"The ID of the category."
categoryId: ID!
"The sales channels the category is activated in afterwards. An empty list deactivates the category everywhere."
salesChannels: [CategorySalesChannelActivationInput]!
"Whether the change applies to all subcategories as well. Omitted means true."
includeSubcategories: Boolean
"Whether the items are activated in the listed sales channels and deactivated in the others as well, with the rules of 'ActivateCategoryInSalesChannel' and 'DeactivateCategoryInSalesChannel'. Omitted means true."
includeItems: Boolean
}
"Puts the characteristics in a custom order: they get the numbers 1 to n in the order of the list. The list has to name every characteristic exactly once. Go back to alphabetical order with 'ResetCharacteristicOrder'. Errors: CHARACTERISTIC_NOT_FOUND (a characteristic does not exist); CHARACTERISTIC_ORDER_INCOMPLETE (the list does not name every characteristic exactly once). - Request"
input SetCharacteristicOrderCommandRequestInput {
"All characteristics in the new order."
characteristicIds: [ID]!
}
"Puts the values of a characteristic in a custom order: they get the numbers 1 to n in the order of the list. The list has to name every value of the characteristic exactly once. Go back to alphabetical order with 'ResetCharacteristicValueOrder'. Errors: CHARACTERISTIC_NOT_FOUND (no characteristic has this ID); CHARACTERISTIC_VALUE_NOT_FOUND (a value does not belong to the characteristic); CHARACTERISTIC_VALUE_ORDER_INCOMPLETE (the list does not name every value of the characteristic exactly once). - Request"
input SetCharacteristicValueOrderCommandRequestInput {
"The ID of the characteristic."
characteristicId: ID!
"All values of the characteristic in the new order."
characteristicValueIds: [ID]!
}
"Sets the value of a custom field (German 'Eigenes Feld') of a company and replaces the value that was there. The value follows the rules of the custom field definitions API (field IDs, data types and allowed values come from '/custom-fields'): it has the shape of the data type of the field (text for text, url, email, phone, countryIso, shortText and valueList; integer for integer; decimal for decimal and price, a price is not negative; boolean for checkbox; date for date, a valid calendar date from 1753-01-01 to 9999-12-31, the time of day is ignored; decimal and price have at most 12 integer and 13 fractional digits). A value of the wrong shape is refused with CUSTOM_FIELD_VALUE_TYPE_MISMATCH, a value of the right shape with the wrong format with CUSTOM_FIELD_VALUE_INVALID (url: absolute http or https address; email: valid address; countryIso: two capital letters; valueList: one of the allowed values; text: not empty). Required fields are a hint only: a required field can be left empty or cleared. Hidden fields stay readable and writable. There is one value per field and company, without language. Error codes: COMPANY_NOT_FOUND, CUSTOM_FIELD_NOT_FOUND, CUSTOM_FIELD_NOT_FOR_COMPANIES, CUSTOM_FIELD_VALUE_TYPE_MISMATCH, CUSTOM_FIELD_VALUE_INVALID, COMPANY_INACTIVE. - Request"
input SetCompanyCustomFieldCommandRequestInput {
"The ID of the company."
companyId: ID!
"The ID of the custom field. It has to be a custom field for companies."
customFieldId: ID!
"The value. Its type has to match the data type of the field."
value: CompanyFieldValueInput!
}
"Sets the password for the sign-in at the mail server. The password cannot be read back. An empty password removes it. The mail settings must exist; settings that use an OAuth sign-in have no password. - Request"
input SetCompanyEmailPasswordCommandRequestInput {
"The ID of the company."
companyId: ID!
"The password, at most 255 characters, empty to remove it."
password: String!
}
"Sets how a company sends e-mail with a user name and password sign-in, or replaces the settings it has. The password is set with its own call and stays as it is. Settings that use an OAuth sign-in are refused: disconnect the sign-in first. Changing the server, the port, the encryption or the user name deletes the stored password; set it again with the password call. A value that is left out is cleared: the call replaces the settings as a whole, except for the password. - Request"
input SetCompanyEmailSettingsCommandRequestInput {
"The ID of the company."
companyId: ID!
"Host name of the outgoing mail server, at most 255 characters."
server: String!
"Port of the mail server, 1 to 65535."
port: Int!
"How the connection is secured: None, StartTls or Ssl."
encryption: CompanyEmailEncryption!
"Whether the certificate of the mail server is not checked. Left out means false: the certificate is checked. Switching the check off weakens the connection; use it only for a server with a certificate that cannot be verified."
isCertificateCheckDisabled: Boolean
"The sender address of outgoing mail, a valid mail address of at most 255 characters."
senderAddress: String!
"The user name for the sign-in, at most 255 characters. Without it the server is used without a sign-in."
username: String
"An address that receives a blind copy of every outgoing mail, at most 255 characters."
bccAddress: String
}
"Sets whether the data of a kind of process is made anonymous after its retention period. It can be changed at any time, also after the period is locked. - Request"
input SetCompanyRetentionObfuscationCommandRequestInput {
"The ID of the company."
companyId: ID!
"The identifier of the kind of process. The set of identifiers is fixed by the application and listed by the query for retention periods; it is empty while the retention function is not active."
processId: String!
"Whether the data is made anonymous after the period."
obfuscateAfterExpiry: Boolean!
}
"Sets the VAT ID of a company for a country and whether the country counts as a shipping country, or replaces the ones it has. Setting the same values again changes nothing. The country of the company is always a shipping country. - Request"
input SetCompanyVatIdCommandRequestInput {
"The ID of the company."
companyId: ID!
"The ISO 3166-1 alpha-2 code of the country."
countryCode: String!
"The VAT ID, 1 to 25 characters."
vatId: String!
"Whether orders shipped to the country are handled with this VAT ID."
isShippingCountry: Boolean!
}
"Sets the configuration groups of a configurable item as a whole and in the given order. At least one. - Request"
input SetConfigurationGroupsCommandRequestInput {
"The ID of the item."
itemId: ID!
"The groups of the item afterwards in their order. At least one."
configurationGroupIds: [ID]!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Sets the name and the description of a cross-selling group in one language and replaces what was there; a description that is left out is cleared. For the default language this is the name and the description of the group itself. Errors: errorCode is CROSS_SELLING_GROUP_NOT_FOUND (no group has this ID); CROSS_SELLING_GROUP_LANGUAGE_NOT_ACTIVE (the language is not one Wawi is set up for); CROSS_SELLING_GROUP_NAME_REQUIRED, CROSS_SELLING_GROUP_NAME_TOO_LONG, CROSS_SELLING_GROUP_DESCRIPTION_TOO_LONG (as for CreateCrossSellingGroup); CROSS_SELLING_GROUP_NAME_ALREADY_EXISTS (only checked for the default language). - Request"
input SetCrossSellingGroupTranslationCommandRequestInput {
"The ID of the cross-selling group."
crossSellingGroupId: ID!
"The language as BCP 47 tag, for example 'de' or 'de-AT'. Case does not matter on input. It must be a language Wawi is set up for (errorCode is CROSS_SELLING_GROUP_LANGUAGE_NOT_ACTIVE)."
languageTag: String!
"The name in this language, 1 to 255 characters. Leading and trailing spaces are removed. For the default language it must also be unique among the cross-selling groups, ignoring upper and lower case."
name: String!
"The description in this language. The call replaces the translation as a whole: a description that is left out or null is removed. At most 255 characters."
description: String
}
"Sets the exchange rate of a currency by hand and stamps the time. The default currency always has the rate 1 and refuses. A currency that the reference rate source of the daily refresh knows gets its rate overwritten by the next refresh; set the rate by hand for currencies the source does not know. Open sales orders are converted with the new rate from now on, issued documents keep the rate they were issued with. - Request"
input SetCurrencyExchangeRateCommandRequestInput {
"The currency code. A standard currency uses its ISO 4217 alpha-3 code in capitals ('EUR'); a currency defined by the tenant uses a code with the prefix 'x-' in lower case ('x-loyalty'). Requests are matched ignoring case, responses always carry the canonical spelling."
currencyCode: String!
"Units of this currency per unit of the default currency, at least 0.001."
exchangeRate: Decimal!
}
"Sets the discount of a customer on the items of an item category and replaces what was there. It does not apply to sub-categories; set them one by one. - Request"
input SetCustomerCategoryDiscountCommandRequestInput {
"The ID of the customer."
customerId: ID!
"The ID of the item category."
categoryId: ID!
"The discount in percent, greater than 0 and at most 100."
discountPercent: Decimal!
"Suppresses the automatic workflow triggers of this call (the customer event 'changed'). Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Blocks dunning for a customer: none of the customer's invoices is dunned until the block is removed. Notices that were already issued stay. Setting a block that is already set changes nothing. Like every change of the customer, it updates the change time of the customer. - Request"
input SetCustomerDunningBlockCommandRequestInput {
"The ID of the customer."
customerId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Sets the name of a customer group in one language and replaces what was there. - Request"
input SetCustomerGroupNameCommandRequestInput {
"The ID of the customer group."
customerGroupId: ID!
"The language as BCP 47 language tag, for example de or de-AT: language subtag in lower case, region subtag in upper case. Case does not matter on input. Wawi currently holds only the two-letter language subtag. It must be a language used in Wawi."
languageTag: String!
"The name, 1 to 255 characters."
name: String!
"Suppresses the automatic workflow triggers of this call. Customer groups raise no workflow event today; the parameter keeps calls stable when one is added. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Sets the additional cost of one type for the whole incoming invoice and distributes it over the line items (cash discounts excluded) with the distribution method of the invoice or the one given in \"distributionMethod\". Replaces all parts of this type allocated before. Sending the same request again distributes again, for example after line items changed. - Request"
input SetIncomingInvoiceAdditionalCostCommandRequestInput {
"The ID of the incoming invoice."
incomingInvoiceId: ID!
"The ID of the additional cost type."
additionalCostTypeId: ID!
"How to distribute this time. Defaults to the distribution method of the invoice."
distributionMethod: AdditionalCostDistributionMethod
"Net amount of the cost in its currency. At most 12 digits before the decimal point; larger values are refused (400)."
netAmount: Decimal!
"Tax rate of the cost in percent, 0 to 100."
taxRate: Decimal!
"The currency of the cost. Defaults to the invoice currency. ISO 4217 code, three letters. Accepted in any letter case, returned in upper case."
currencyCode: String
"Units of the cost currency per unit of the home currency. Defaults to the current rate of that currency. Greater than 0 and at most 12 digits before the decimal point; other values are refused (400)."
exchangeRate: Decimal
}
"Sets the part of an additional cost allocated to one line item, for example to correct the distribution by hand. The currency and tax rate are those of the cost on the invoice; a cost type not yet on the invoice gets the invoice currency and the tax rate sent here. - Request"
input SetIncomingInvoiceLineItemAdditionalCostCommandRequestInput {
"The ID of the incoming invoice."
incomingInvoiceId: ID!
"The ID of the line item."
lineItemId: ID!
"The ID of the additional cost type."
additionalCostTypeId: ID!
"Net amount allocated to this line item, in the currency of the cost. At most 12 digits before the decimal point; larger values are refused (400)."
netAmount: Decimal!
"Required when the cost type is not yet on the invoice, refused (400) when it is: the tax rate of the new cost in percent, 0 to 100."
taxRate: Decimal
}
"Sets one value of an attribute: the cell for the given sales channel and language. Creates it or replaces it. The variant of the value has to match the field type of the attribute. A value that is not valid is rejected and never dropped silently. - Request"
input SetItemAttributeValueCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the attribute definition."
attributeId: ID!
"The sales channel of the value, a tenant-local composite identifier such as 1-1-1. Omitted means the Wawi default."
salesChannelId: ID
"The language of the value as BCP 47 language tag, for example 'de' or 'de-AT'. Language subtag in lower case, region subtag in upper case; the input is not case-sensitive. Omitted means the value without language."
languageTag: String
"The value."
value: ItemFieldValueInput!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Sets the categories of an item as a whole: the item is assigned to every listed category and removed from every other. At least one has to be listed, because every item that is not a combination of a variation parent has a category. For a variation parent the children follow. The categories of a combination cannot be set: it has those of its parent (error code ITEM_CATEGORIES_MANAGED_BY_VARIATION_PARENT). - Request"
input SetItemCategoriesCommandRequestInput {
"The ID of the item."
itemId: ID!
"The categories the item is assigned to afterwards, at least one."
categoryIds: [ID]!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Sets the characteristic values of an item as a whole. An empty list removes all of them. - Request"
input SetItemCharacteristicsCommandRequestInput {
"The ID of the item."
itemId: ID!
"The characteristic values the item has afterwards. May be empty."
characteristicValueIds: [ID]!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Maps an item condition to a value of a sales platform, or replaces the mapping it has for that platform; idempotent. The platform 'fulfillment-network' is only for conditions with own items, and each of its values is mapped to at most one condition. Errors: errorCode is ITEM_CONDITION_NOT_FOUND, ITEM_CONDITION_MARKETPLACE_NOT_FOUND (404); ITEM_CONDITION_MARKETPLACE_CODE_INVALID (400); ITEM_CONDITION_MARKETPLACE_NOT_ALLOWED, ITEM_CONDITION_MARKETPLACE_CODE_ALREADY_MAPPED (409). - Request"
input SetItemConditionMarketplaceCodeCommandRequestInput {
"The ID of the item condition."
itemConditionId: ID!
"The key of the sales platform, as 'QueryItemConditionMarketplaces' returns it."
marketplace: String!
"The code of the platform's value, as 'QueryItemConditionMarketplaces' returns it."
code: String!
}
"Replaces the restriction of an item condition: the product groups and categories where it can be chosen. A property that is omitted or null means no limit by that criterion, so a request without properties removes the restriction. It applies in the returns and when the condition of an item is changed in the warehouse. Errors: errorCode is ITEM_CONDITION_NOT_FOUND (404); PRODUCT_GROUP_NOT_FOUND, CATEGORY_NOT_FOUND (422). - Request"
input SetItemConditionRestrictionCommandRequestInput {
"The ID of the item condition."
itemConditionId: ID!
"Only items of these product groups can take the condition. Null or omitted means no limit by product group; an empty list means no item."
productGroupIds: [ID]!
"Only items directly in one of these categories can take the condition; subcategories do not count. Null or omitted means no limit by category; an empty list means no item."
categoryIds: [ID]!
}
"Sets the name of an item condition in one language: creates it or replaces the existing one; idempotent. Errors: errorCode is ITEM_CONDITION_NOT_FOUND (404); ITEM_CONDITION_NAME_EMPTY, ITEM_CONDITION_NAME_TOO_LONG (400); LANGUAGE_NOT_ACTIVE (422). - Request"
input SetItemConditionTranslationCommandRequestInput {
"The ID of the item condition."
itemConditionId: ID!
"The language as BCP 47 tag, for example 'de' or 'de-AT'. Case is not significant. It must be an active language."
languageTag: String!
"The name in that language, 1 to 50 characters."
name: String!
}
"Sets the value of a custom field of an item. The custom field has to apply to the item, which depends on its product group. The variant of the value has to match the field type of the custom field. - Request"
input SetItemCustomFieldValueCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the custom field."
customFieldId: ID!
"The value."
value: ItemFieldValueInput!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Sets the name of a delivery status in one language: creates it or replaces the existing one; idempotent. Changing a name marks the items that carry the delivery status for retransmission to the sales channels. Errors: errorCode is ITEM_DELIVERY_STATUS_NOT_FOUND (404); ITEM_DELIVERY_STATUS_NAME_EMPTY, ITEM_DELIVERY_STATUS_NAME_TOO_LONG (400); LANGUAGE_NOT_ACTIVE (422). - Request"
input SetItemDeliveryStatusTranslationCommandRequestInput {
"The ID of the delivery status."
itemDeliveryStatusId: ID!
"The language as BCP 47 tag, for example 'de' or 'de-AT'. Case is not significant. It must be an active language."
languageTag: String!
"The name in that language, 1 to 255 characters."
name: String!
}
"Sets the order of the images of one scope. The first image becomes the main image. The list has to name all images of the scope exactly once. Uploading an image and assigning it to an item stays with the blob endpoints; this changes only the order. - Request"
input SetItemImageOrderCommandRequestInput {
"The ID of the item."
itemId: ID!
"The sales channel, a tenant-local composite identifier such as 1-1-1. Omitted means the default images of the item."
salesChannelId: ID
"The images of the scope in the new order. The first is the main image."
blobIdentifiers: [UUID]!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Sets the sales channels an item is activated in as a whole: the item is activated in every listed sales channel and deactivated in every other. All of it happens in one transaction and triggers the workflows once. Use the single activation to change one sales channel without touching the others. Some kinds of sales channel refuse some items (source: Confluence page 'Wann darf ein Artikel fuer welche Shops aktiviert werden?' of 2021, to be verified): a stock-per-variation item, a selection variation without a parent, a subset item, a configurable item, and for marketplace channels an item without a marketplace category. The refusal is 409 ITEM_NOT_ALLOWED_FOR_SALES_CHANNEL with all reasons in blockers[]. - Request"
input SetItemSalesChannelsCommandRequestInput {
"The ID of the item."
itemId: ID!
"The sales channels the item is activated in afterwards. An empty list deactivates the item everywhere."
salesChannels: [SalesChannelActivationInput]!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Sets the tax codes that replace those of the rate for a type of line item, or replaces the ones it has. Tax codes that are omitted are taken from the rate. - Request"
input SetLineItemTypeTaxCodeOverrideCommandRequestInput {
"The ID of the tax zone."
taxZoneId: ID!
"The ID of the tax class whose rate in the tax zone is meant."
taxClassId: ID!
"The type of line item, the key of the type, for example SHIPPING. Known values: CUSTOM, SHIPPING, COUPON, PAYMENT, SHIPPING_SURCHARGE, NEW_CUSTOMER_COUPON, CASH_ON_DELIVERY, SHIPPING_SURCHARGE_ITEM, PACKING, GIFT_FOR_FREE, TRUSTED_SHOPS, INTEREST_PREMIUM, PROCESSING_FEE, CARTON, RETURN_DELIVERY, MULTI_PURPOSE_VOUCHER, MULTI_PURPOSE_VOUCHER_DIGITAL, SINGLE_PURPOSE_VOUCHER, SINGLE_PURPOSE_VOUCHER_DIGITAL, SINGLE_PURPOSE_VOUCHER_REDEMPTION."
lineItemType: String!
"The tax code for taxable sales. Omitted means the tax code of the rate applies."
taxableTaxCodeId: ID
"The tax code for tax-free intra-community deliveries to business customers in another EU country. Omitted means the tax code of the rate applies."
intraCommunityDeliveryTaxCodeId: ID
"The tax code for sales under the reverse-charge procedure. Omitted means the tax code of the rate applies."
reverseChargeTaxCodeId: ID
"The tax code for tax-exempt sales: exports from the EU and sales made exempt on purpose. Omitted means the tax code of the rate applies."
exemptTaxCodeId: ID
}
"Sets the texts of a manufacturer in one language and creates them if the language has none yet. The texts of one language are one object: a property that is omitted or null is removed. Other languages stay as they are. Errors: errorCode is MANUFACTURER_NOT_FOUND (no manufacturer has this ID), MANUFACTURER_LANGUAGE_NOT_FOUND (the language is unknown or not active). - Request"
input SetManufacturerDescriptionCommandRequestInput {
"The ID of the manufacturer whose texts are written."
manufacturerId: ID!
"The language of the texts as BCP 47 tag, for example 'de' or 'de-AT'. Case does not matter on input; the output uses the canonical form (language lower case, region upper case)."
languageTag: String!
"The meta title of the manufacturer page in an online shop; omitted or null removes it."
metaTitle: String
"The meta keywords of the manufacturer page in an online shop; omitted or null removes them."
metaKeywords: String
"The meta description of the manufacturer page in an online shop; omitted or null removes it."
metaDescription: String
"The description of the manufacturer; omitted or null removes it."
description: String
"The search-engine-friendly URL segment of the manufacturer page in an online shop; omitted or null removes it."
seo: String
}
"Sets the image of a manufacturer in one sales channel. An existing image in this sales channel is replaced; other sales channels stay as they are. Errors: errorCode is MANUFACTURER_NOT_FOUND (no manufacturer has this ID), SALES_CHANNEL_NOT_FOUND (the sales channel does not exist), MANUFACTURER_IMAGE_FILE_NOT_FOUND (the uploaded file does not exist). - Request"
input SetManufacturerImageCommandRequestInput {
"The ID of the manufacturer whose image is set."
manufacturerId: ID!
"The sales channel the image is assigned to. Tenant-local, composite identifier, not a UUID. Only specific sales channels are allowed for this operation and are specified in the sales channel endpoint (GET)."
salesChannelId: ID!
"The ID of a file uploaded beforehand with the file upload endpoints."
blobIdentifier: UUID!
}
"Sets the name of a measurement unit in one language, or replaces the one it has. The other languages stay as they are. The name in the default language of a system measurement unit cannot be changed. - Request"
input SetMeasurementUnitTranslationCommandRequestInput {
"The ID of the measurement unit."
measurementUnitId: ID!
"The language as BCP 47 tag, for example 'de' or 'de-AT'. Case is not significant. The language must be activated."
languageTag: String!
"The name, 1 to 255 characters. Names are unique per language."
name: String!
}
"Sets the value of one assignment criterion of a template and leaves the other assignments as they are. Setting the value it has already changes nothing and succeeds. Errors: 404 TEMPLATE_NOT_FOUND; 422 OUTPUT_ASSIGNMENT_CRITERION_NOT_AVAILABLE, OUTPUT_ASSIGNMENT_VALUE_NOT_FOUND. GraphQL only (new API rule). - Request"
input SetOutputTemplateAssignmentCommandRequestInput {
"The ID of the template."
templateId: ID!
"The key of the criterion in lowercase with hyphens, for example customer-group. The form of the known values (CUSTOMER_GROUP) is accepted as well."
criterion: String!
"The value, one of those the value source of the criterion lists."
value: String!
}
"Sets the places of one postal code in a country, or replaces the ones it has. The postal code is created when it is not in the directory yet. Places of other postal codes and other countries are not touched. Setting the same places again changes nothing. The call replaces the whole list of places: two clients that each add a place can overwrite each other, so read the places and write them back in one go. Error codes: POSTAL_CODE_INVALID (400, empty or longer than 10 characters), POSTAL_CODE_CITY_INVALID (400, a place is empty or longer than 50 characters, or no place is given), COUNTRY_NOT_FOUND (404). - Request"
input SetPostalCodeCitiesCommandRequestInput {
"The country, as ISO 3166-1 alpha-2 code of two letters; case does not matter."
countryCode: String!
"The postal code, at most 10 characters."
postalCode: String!
"All places of the postal code, each 1 to 50 characters. At least one place is required; to remove the postal code use 'RemovePostalCode'. Places that differ only in case or in surrounding spaces count as one."
cities: [String]!
}
"Sets the tax codes that replace those of the rate for the items of a product group, or replaces the ones it has. Tax codes that are omitted are taken from the rate. - Request"
input SetProductGroupTaxCodeOverrideCommandRequestInput {
"The ID of the tax zone."
taxZoneId: ID!
"The ID of the tax class whose rate in the tax zone is meant."
taxClassId: ID!
"The ID of the product group."
productGroupId: ID!
"The tax code for taxable sales. Omitted means the tax code of the rate applies."
taxableTaxCodeId: ID
"The tax code for tax-free intra-community deliveries to business customers in another EU country. Omitted means the tax code of the rate applies."
intraCommunityDeliveryTaxCodeId: ID
"The tax code for sales under the reverse-charge procedure. Omitted means the tax code of the rate applies."
reverseChargeTaxCodeId: ID
"The tax code for tax-exempt sales: exports from the EU and sales made exempt on purpose. Omitted means the tax code of the rate applies."
exemptTaxCodeId: ID
}
"Selects an item condition for a production item, so that produced units of the production item can end up in this item condition. Selecting an item condition that is already selected, including the default item condition, changes nothing and succeeds. Errors: ProductionItemNotFound (the production item was not found); ItemConditionNotFound (the item condition was not found). - Request"
input SetProductionItemConditionCommandRequestInput {
"The ID of the production item for which the item condition is selected."
productionItemId: ID!
"The ID of the item condition to select."
itemConditionId: ID!
}
"Sets what the supplier confirmed for a line item, in every status, and replaces what was confirmed before; the line counts as confirmed, and values that are omitted are not confirmed separately. A confirmed quantity becomes the basis of the open quantity; a confirmed price values the goods receipts. Raises the workflow event 'changed'. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: an invalid request, for example a quantity below 0; PURCHASE_ORDER_NOT_FOUND or PURCHASE_ORDER_LINE_ITEM_NOT_FOUND (the order or the line was not found). - Request"
input SetPurchaseOrderLineItemConfirmationCommandRequestInput {
"The ID of the purchase order."
purchaseOrderId: ID!
"The ID of the line item."
lineItemId: ID!
"The confirmed quantity, 0 or more."
quantity: Decimal
"The confirmed delivery date."
deliveryDate: DateTime
"The confirmed net price per unit in the order currency."
netUnitPrice: Decimal
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Excludes an item from restock suggestions, as the item's setting \"no restock suggestion\" does; excluding an excluded item changes nothing and succeeds. The item is marked for the next synchronisation with the sales channels. Raises no workflow event. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: ITEM_NOT_FOUND (the item was not found). - Request"
input SetRestockSuggestionItemExclusionCommandRequestInput {
"The ID of the item."
itemId: ID!
}
"Replaces the restriction of a return reason: the product groups and categories where it can be chosen. Both properties apply together: an item must be in one of the product groups and in one of the categories, when both are given. A property that is omitted or empty removes that limit; omitting both removes the restriction. Errors: RETURN_REASON_NOT_FOUND (404); PRODUCT_GROUP_NOT_FOUND, CATEGORY_NOT_FOUND (422). GraphQL only. - Request"
input SetReturnReasonRestrictionCommandRequestInput {
"The ID of the return reason."
returnReasonId: ID!
"The product groups the return reason is restricted to; only items of these product groups can take it. Omitted or empty means no limit by product group."
productGroupIds: [ID]
"The categories the return reason is restricted to; only items of these categories can take it. Omitted or empty means no limit by category."
categoryIds: [ID]
}
"Sets the name and the description of a return reason in one language: creates them or replaces the existing ones; idempotent. The name of the built-in return reason in the default language cannot be changed. Errors: RETURN_REASON_NOT_FOUND (404); RETURN_REASON_NAME_EMPTY, RETURN_REASON_NAME_TOO_LONG, RETURN_REASON_DESCRIPTION_TOO_LONG (400); RETURN_REASON_SYSTEM_TRANSLATION_NOT_EDITABLE (409); LANGUAGE_NOT_ACTIVE (422). GraphQL only. - Request"
input SetReturnReasonTranslationCommandRequestInput {
"The ID of the return reason."
returnReasonId: ID!
"The language as BCP 47 tag, for example 'de' or 'de-AT'. Case is not significant. The language must be activated."
languageTag: String!
"The name in that language, 1 to 50 characters."
name: String!
"The description in that language, at most 255 characters. Omitted means none; the existing description is replaced."
description: String
}
"Sets the name of a return state in one language: creates it or replaces the existing one; idempotent. System states can be renamed. Errors: RETURN_STATE_NOT_FOUND (404); RETURN_STATE_NAME_EMPTY, RETURN_STATE_NAME_TOO_LONG (400); LANGUAGE_NOT_ACTIVE (422). GraphQL only. - Request"
input SetReturnStateTranslationCommandRequestInput {
"The ID of the return state."
returnStateId: ID!
"The language as BCP 47 tag, for example 'de' or 'de-AT'. Case is not significant. The language must be activated."
languageTag: String!
"The name in that language, 1 to 255 characters."
name: String!
}
"Blocks dunning for a sales invoice: it is not dunned, neither by a run nor on its own, until the block is removed. Notices that were already issued stay. Setting a block that is already set changes nothing. - Request"
input SetSalesInvoiceDunningBlockCommandRequestInput {
"The ID of the sales invoice."
salesInvoiceId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Maps a cancellation reason for sales orders to a value of a sales platform, or replaces the mapping it has for that platform; idempotent. GraphQL only. - Request"
input SetSalesOrderCancellationReasonMarketplaceCodeCommandRequestInput {
"The ID of the cancellation reason for sales orders."
cancellationReasonId: ID!
"The key of the sales platform, as 'QuerySalesOrderCancellationReasonMarketplaces' returns it."
marketplace: String!
"The code of the platform's value, 1 to 50 characters. For a platform with a list of values one of the codes that 'QuerySalesOrderCancellationReasonMarketplaces' returns."
code: String!
}
"Sets the name of a sales unit in one language, or replaces the one it has. The other languages stay as they are. Hidden sales units cannot be changed. - Request"
input SetSalesUnitTranslationCommandRequestInput {
"The ID of the sales unit."
salesUnitId: ID!
"The language as BCP 47 tag, for example 'de' or 'de-AT'. Case is not significant. The language must be activated."
languageTag: String!
"The name, 1 to 10 characters. Names are unique per language, hidden sales units included."
name: String!
}
"Assigns a shipping method with the export mode ShippingApp to another method of the Shipping app and replaces the former assignment. The assignment cannot be removed. The same method of the Shipping app can be assigned to several shipping methods. errorCode is one of: SHIPPING_METHOD_NOT_FOUND, SHIPPING_METHOD_NOT_SHIPPING_APP, SHIPPING_APP_METHOD_NOT_FOUND, SHIPPING_APP_UNAVAILABLE. - Request"
input SetShippingAppAssignmentCommandRequestInput {
"The ID of the shipping method."
shippingMethodId: ID!
"The ID of the method in the Shipping app. The value is only compared with the methods the Shipping app offers; it is never used as part of an address."
shippingAppMethodId: String!
}
"Sets where the tax codes of the shipping line item of a shipping method come from, or replaces the settings it has: a given tax code, or the one of the line item with the highest value or the highest rate of the document. Tax codes that are omitted are taken from the rate. - Request"
input SetShippingMethodTaxCodeOverrideCommandRequestInput {
"The ID of the tax zone."
taxZoneId: ID!
"The ID of the tax class whose rate in the tax zone is meant."
taxClassId: ID!
"The ID of the shipping method."
shippingMethodId: ID!
"Where the tax code for taxable sales comes from. Omitted means the tax code of the rate applies."
taxableTaxCode: ShippingTaxCodeChoiceInput
"Where the tax code for tax-free intra-community deliveries to business customers in another EU country comes from. Omitted means the tax code of the rate applies."
intraCommunityDeliveryTaxCode: ShippingTaxCodeChoiceInput
"Where the tax code for sales under the reverse-charge procedure comes from. Omitted means the tax code of the rate applies."
reverseChargeTaxCode: ShippingTaxCodeChoiceInput
"Where the tax code for tax-exempt sales comes from. Omitted means the tax code of the rate applies."
exemptTaxCode: ShippingTaxCodeChoiceInput
}
"Leaves the stock on a storage location out of the available stock, or counts it as available again. Idempotent. errorCode is one of: WAREHOUSE_NOT_FOUND or STORAGE_LOCATION_NOT_FOUND (the warehouse or the storage location was not found); WAREHOUSE_TYPE_DOES_NOT_SUPPORT_STORAGE_LOCATIONS (the warehouse has no storage locations: only warehouses with storage location management have them); STORAGE_LOCATION_INVENTORY_LOCKED, STORAGE_LOCATION_IS_SYSTEM_LOCATION, or STORAGE_LOCATION_UNLOCK_NOT_ALLOWED when the lock of a quarantine or transfer location is released (the lock cannot be changed). - Request"
input SetStorageLocationAvailableStockLockCommandRequestInput {
"The ID of the warehouse."
warehouseId: ID!
"The ID of the storage location."
storageLocationId: ID!
"Whether the stock on the location is left out of the available stock."
isLocked: Boolean!
}
"Sets the rate of a tax class in a tax zone with its tax codes, or replaces the ones it has. Every later calculation uses the new rate, including the recalculation of open sales orders; there is no validity date. - Request"
input SetTaxRateCommandRequestInput {
"The ID of the tax zone."
taxZoneId: ID!
"The ID of the tax class whose rate in the tax zone is meant."
taxClassId: ID!
"The tax rate in percent, from 0 to 100 with at most two decimals."
ratePercent: Decimal!
"The tax code for taxable sales. Omitted means none."
taxableTaxCodeId: ID
"The tax code for tax-free intra-community deliveries to business customers in another EU country. Omitted means none."
intraCommunityDeliveryTaxCodeId: ID
"The tax code for sales under the reverse-charge procedure. Omitted means none."
reverseChargeTaxCodeId: ID
"The tax code for tax-exempt sales: exports from the EU and sales made exempt on purpose. Omitted means none."
exemptTaxCodeId: ID
}
"Sets the content of a text block in one language and replaces the content it had there. Idempotent. - Request"
input SetTextBlockTranslationCommandRequestInput {
"The ID of the text block."
textBlockId: ID!
"The language as BCP 47 tag, for example de or de-AT; case is not significant. It must be an active language."
languageTag: String!
"The content: HTML that may contain DotLiquid placeholders of the usage of the text block. It must not be empty; to remove a language use 'RemoveTextBlockTranslation'."
content: String!
}
"A node of the settings tree: a group, a text, an input, a button or a custom part. Nodes form a tree through ParentId. How the tree is laid out is up to the frontend."
input SettingsNodeFilterInput {
and: [SettingsNodeFilterInput!]
or: [SettingsNodeFilterInput!]
"The stable ID of the node. For an input it equals the setting key, for example sales.invoice.dueDays."
id: StringOperationFilterInput
"The depth in the tree. A top-level node has level 1."
level: ComparableInt32OperationFilterInput
}
"A node of the settings tree: a group, a text, an input, a button or a custom part. Nodes form a tree through ParentId. How the tree is laid out is up to the frontend."
input SettingsNodeSortInput {
"The depth in the tree. A top-level node has level 1."
level: SortEnumType @cost(weight: "10")
"The position among the nodes of the same parent. Lower comes first."
sortOrder: SortEnumType @cost(weight: "10")
"The stable ID of the node. For an input it equals the setting key, for example sales.invoice.dueDays."
id: SortEnumType @cost(weight: "10")
}
"One change inside ApplySettingValueChanges: either a new value or a reset. Exactly one of value and reset=true must be given; neither or both is rejected with SettingValueInvalid. A missing value never resets."
input SettingValueChangeInput {
"The key of the setting."
settingKey: String!
"The new value. Leave out when reset is true."
value: NewSettingValueInput
"True to remove the value that was set, so the setting falls back to its default. Then value must be left out."
reset: Boolean
}
"The value of one setting."
input SettingValueEntryFilterInput {
and: [SettingValueEntryFilterInput!]
or: [SettingValueEntryFilterInput!]
"The key of the setting."
settingKey: StringOperationFilterInput
"Whether the value is the default or was set."
source: ComparableValueSourceOperationFilterInput
"When the value was last changed. Absent for a default."
changedAt: ComparableNullableOfDateTimeOffsetOperationFilterInput
}
"The value of one setting."
input SettingValueEntrySortInput {
"The key of the setting."
settingKey: SortEnumType @cost(weight: "10")
"When the value was last changed. Absent for a default."
changedAt: SortEnumType @cost(weight: "10")
}
"Sets that goods receipt creates an item that does not exist yet, in the given category, and replaces what was there. errorCode is one of: the request is invalid; WAREHOUSE_NOT_FOUND (the warehouse was not found); CATEGORY_NOT_FOUND (the category was not found); WAREHOUSE_TYPE_DOES_NOT_SUPPORT_GOODS_RECEIPT_OPTIONS (the warehouse type books no stock itself). - Request"
input SetWarehouseNewItemOnReceiptCommandRequestInput {
"The ID of the warehouse."
warehouseId: ID!
"The category the new items are put into."
categoryId: ID!
}
"Marks every package of a delivery note that has no shipping date as shipped. When the last open package of the delivery note is shipped, the delivery note counts as shipped and its shipping is completed: the shipment is reported to the sales channel of the order, the shipping confirmation mail is sent if the shipping method and the settings ask for it and it was not sent yet, open drop-shipping and fulfillment orders of the delivery note are closed, and the workflow event 'delivery note shipped' fires. A refused action reports 'errorCode' (the main reason) and 'blockers' (all reasons, each with 'code' and 'message'). errorCode is one of: DELIVERY_NOTE_NOT_FOUND (the delivery note was not found); DELIVERY_NOTE_ALREADY_SHIPPED (every package already has a shipping date); SHIPPING_DATE_OUT_OF_RANGE (the shipping date is outside the supported range); DELIVERY_NOTE_HANDLED_BY_FULFILLMENT_NETWORK (the delivery note is handled by the JTL Fulfillment Network and cannot be changed here). - Request"
input ShipDeliveryNoteCommandRequestInput {
"The ID of the delivery note."
deliveryNoteId: ID!
"The shipping date. Defaults to now."
shippedAt: DateTime
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Schlüssel eines Versanddienstleister-Kontos."
input ShipperAccountKeySortInput {
"Der eindeutige Bezeichner des Versanddienstleister-Kontos."
kShipperAccount: SortEnumType @cost(weight: "10")
}
"A shipping account: the access of the Wawi to a shipping provider for one purpose. Only what identifies and classifies the account is part of the API. User name, password, tokens, customer and billing numbers, bank data and the sender address are never part of the API; 'credentialsStatus' only says whether they are set."
input ShippingAccountFilterInput {
and: [ShippingAccountFilterInput!]
or: [ShippingAccountFilterInput!]
"The ID of the shipping account."
id: ComparableShipperAccountKeyOperationFilterInput @cost(weight: "15")
"The shipping provider the account belongs to."
providerId: ComparableShippingServiceProviderKeyOperationFilterInput @cost(weight: "50")
"What the account is used for, as the key of a capability: LABEL_CREATION, RETURN_LABELS or TRACKING_ACCOUNT. Which of them a provider supports is in 'ShippingProvider.capabilities'."
capabilityId: StringOperationFilterInput @cost(weight: "200")
"The company the account is for. Empty for an account that applies to all companies; set exactly when 'parentAccountId' is set."
companyId: ComparableFirmaKeyOperationFilterInput @cost(weight: "50")
"The account this one refines for a single company. Empty for the account that applies to all companies."
parentAccountId: ComparableShipperAccountKeyOperationFilterInput @cost(weight: "50")
"Whether it is a test account of the provider. A test account cannot be changed and not deleted."
isTestAccount: ComparableBooleanOperationFilterInput @cost(weight: "50")
"Whether the credentials of the account are set, as a stable key in UPPER_SNAKE. Known keys: NOT_CONFIGURED (no credentials are stored, or they are incomplete), CONFIGURED (credentials are stored), TOKEN_EXPIRED (the account signs in with a token that is no longer valid; it has to be authorised again in the Wawi). New keys can be added; a client treats a key it does not know as not usable. The credentials themselves are never part of the API."
credentialsStatus: StringOperationFilterInput @cost(weight: "200")
}
"A shipping account: the access of the Wawi to a shipping provider for one purpose. Only what identifies and classifies the account is part of the API. User name, password, tokens, customer and billing numbers, bank data and the sender address are never part of the API; 'credentialsStatus' only says whether they are set."
input ShippingAccountSortInput {
"The ID of the shipping account."
id: ShipperAccountKeySortInput @cost(weight: "15")
"The name the account has in the Wawi."
displayName: SortEnumType @cost(weight: "50")
}
"A method of the Shipping app a shipping method can be assigned to."
input ShippingAppMethodFilterInput {
and: [ShippingAppMethodFilterInput!]
or: [ShippingAppMethodFilterInput!]
"The ID of the method in the Shipping app."
id: StringOperationFilterInput
"The name of the method in the Shipping app."
name: StringOperationFilterInput
}
"A method of the Shipping app a shipping method can be assigned to."
input ShippingAppMethodSortInput {
"The ID of the method in the Shipping app."
id: SortEnumType @cost(weight: "10")
"The name of the method in the Shipping app."
name: SortEnumType @cost(weight: "10")
}
"A shipping class. Items carry one; shipping configurations and pick list templates can be limited to classes. Used for the detail and for the list."
input ShippingClassFilterInput {
and: [ShippingClassFilterInput!]
or: [ShippingClassFilterInput!]
"The ID of the shipping class."
id: ComparableVersandklasseKeyOperationFilterInput
"The name of the shipping class. It is unique, regardless of upper and lower case."
name: StringOperationFilterInput
}
"A shipping class. Items carry one; shipping configurations and pick list templates can be limited to classes. Used for the detail and for the list."
input ShippingClassSortInput {
"The ID of the shipping class."
id: VersandklasseKeySortInput @cost(weight: "10")
"The name of the shipping class. It is unique, regardless of upper and lower case."
name: SortEnumType @cost(weight: "10")
}
"A shipping method in the list."
input ShippingMethodListEntryFilterInput {
and: [ShippingMethodListEntryFilterInput!]
or: [ShippingMethodListEntryFilterInput!]
"The ID of the shipping method."
id: ComparableVersandartKeyOperationFilterInput
"The name in the default language."
name: StringOperationFilterInput
"Whether the shipping method can be chosen for new orders."
isActive: ComparableBooleanOperationFilterInput
"Who created the shipping method."
origin: ComparableShippingMethodOriginOperationFilterInput
"How shipping data is handed over to the carrier. Stable key in UPPER_SNAKE. Known values: NONE, TEMPLATE, JTL_SHIPPING, SELLER_FULFILLED_PRIME, SHIPPING_PLATFORM, FFN_PRIME, SHIPPING_APP. New values can be added; a client that does not know a value ignores or tolerates it."
exportMode: StringOperationFilterInput
"Whether the shipping method is assigned to a method of the Shipping app."
hasShippingAppAssignment: ComparableBooleanOperationFilterInput
}
"A shipping method in the list."
input ShippingMethodListEntrySortInput {
"The ID of the shipping method."
id: VersandartKeySortInput @cost(weight: "10")
"The name in the default language."
name: SortEnumType @cost(weight: "10")
"Whether the shipping method can be chosen for new orders."
isActive: SortEnumType @cost(weight: "10")
}
"What marketplaces are told about a shipping method, for writing."
input ShippingMethodMarketplacesInput {
"The carrier name sent to Amazon with the shipping confirmation. Empty removes it."
amazonCarrierCode: String
"The carrier sent to eBay with the shipping confirmation. Empty removes it."
ebayCarrierCode: String
"Sent to the marketplace instead of the name of the shipping method. Empty removes it."
shippingServiceName: String
}
"Tax codes that replace those of a rate for the shipping line item of one shipping method."
input ShippingMethodTaxCodeOverrideFilterInput {
and: [ShippingMethodTaxCodeOverrideFilterInput!]
or: [ShippingMethodTaxCodeOverrideFilterInput!]
"The shipping method."
shippingMethodId: ComparableVersandartKeyOperationFilterInput
}
"Tax codes that replace those of a rate for the shipping line item of one shipping method."
input ShippingMethodTaxCodeOverrideSortInput {
"The shipping method."
shippingMethodId: VersandartKeySortInput @cost(weight: "10")
}
"The name of a shipping method in one language."
input ShippingMethodTranslationFilterInput {
and: [ShippingMethodTranslationFilterInput!]
or: [ShippingMethodTranslationFilterInput!]
"The language as BCP 47 language tag, for example de or de-AT: language subtag in lower case, region subtag in upper case. Case does not matter on input. Wawi currently holds only the two-letter language subtag."
languageTag: StringOperationFilterInput @cost(weight: "200")
"Whether this is the default language."
isDefaultLanguage: ComparableBooleanOperationFilterInput @cost(weight: "200")
"The name in this language."
name: StringOperationFilterInput @cost(weight: "50")
}
"The name of a shipping method in one language."
input ShippingMethodTranslationSortInput {
"The language as BCP 47 language tag, for example de or de-AT: language subtag in lower case, region subtag in upper case. Case does not matter on input. Wawi currently holds only the two-letter language subtag."
languageTag: SortEnumType @cost(weight: "200")
"The name in this language."
name: SortEnumType @cost(weight: "50")
}
"One capability of shipping providers. A capability is identified by a stable key; the list grows with the application."
input ShippingProviderCapabilityFilterInput {
and: [ShippingProviderCapabilityFilterInput!]
or: [ShippingProviderCapabilityFilterInput!]
"The stable key of the capability: LABEL_CREATION, RETURN_LABELS, TRACKING_ACCOUNT or SHIPMENT_TRACKING. A client that does not know a key shows the name."
capabilityId: StringOperationFilterInput @cost(weight: "15")
}
"One capability of shipping providers. A capability is identified by a stable key; the list grows with the application."
input ShippingProviderCapabilitySortInput {
"The stable key of the capability: LABEL_CREATION, RETURN_LABELS, TRACKING_ACCOUNT or SHIPMENT_TRACKING. A client that does not know a key shows the name."
capabilityId: SortEnumType @cost(weight: "15")
"The name of the capability, in the language of the caller."
name: SortEnumType @cost(weight: "50")
}
"A shipping provider that the Wawi can create labels with (the label connection of the Wawi, not a shipping method and not a method of the Shipping app). The list is part of the application and read only; a provider is only an entry here, its credentials live in shipping accounts."
input ShippingProviderFilterInput {
and: [ShippingProviderFilterInput!]
or: [ShippingProviderFilterInput!]
"The ID of the shipping provider. Fixed by the application and the same in every client."
id: ComparableShippingServiceProviderKeyOperationFilterInput @cost(weight: "15")
"The name of the shipping provider, for example 'DHL Versenden 4.0'. A product name, not translated."
name: StringOperationFilterInput @cost(weight: "50")
"Whether the connection is still in a beta phase."
isBeta: ComparableBooleanOperationFilterInput @cost(weight: "50")
"Whether the application still offers the provider for new settings. A provider that is not selectable stays in the list because shipping methods and accounts can still refer to it."
isSelectable: ComparableBooleanOperationFilterInput @cost(weight: "50")
"Whether at least one shipping account of the provider for creating labels has credentials. Computed; says nothing about the validity of the credentials."
isConfigured: ComparableBooleanOperationFilterInput @cost(weight: "200")
}
"A shipping provider that the Wawi can create labels with (the label connection of the Wawi, not a shipping method and not a method of the Shipping app). The list is part of the application and read only; a provider is only an entry here, its credentials live in shipping accounts."
input ShippingProviderSortInput {
"The ID of the shipping provider. Fixed by the application and the same in every client."
id: ShippingServiceProviderKeySortInput @cost(weight: "15")
"The name of the shipping provider, for example 'DHL Versenden 4.0'. A product name, not translated."
name: SortEnumType @cost(weight: "50")
"Position in the order the application shows the providers in. Smaller comes first."
displayOrder: SortEnumType @cost(weight: "50")
}
"A shipping run: many sales orders delivered in one go."
input ShippingRunFilterInput {
and: [ShippingRunFilterInput!]
or: [ShippingRunFilterInput!]
"The ID of the shipping run."
id: ComparableGuidOperationFilterInput @cost(weight: "15")
"Where the run stands."
status: ComparableShippingRunStatusOperationFilterInput @cost(weight: "50")
"When the run was accepted."
requestedAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "50")
"The user who started the run."
requestedBy: ComparableBenutzerKeyOperationFilterInput @cost(weight: "50")
}
"What a shipping run did with one sales order."
input ShippingRunOrderFilterInput {
and: [ShippingRunOrderFilterInput!]
or: [ShippingRunOrderFilterInput!]
"The sales order."
salesOrderId: ComparableVerkaufAuftragKeyOperationFilterInput @cost(weight: "15")
"What the run did with the sales order."
outcome: ComparableShippingRunOrderOutcomeOperationFilterInput @cost(weight: "50")
"Zero-based position of the sales order in the request."
position: ComparableInt32OperationFilterInput @cost(weight: "15")
}
"What a shipping run did with one sales order."
input ShippingRunOrderSortInput {
"Zero-based position of the sales order in the request."
position: SortEnumType @cost(weight: "15")
}
"A shipping run: many sales orders delivered in one go."
input ShippingRunSortInput {
"When the run was accepted."
requestedAt: SortEnumType @cost(weight: "50")
}
"Schlüssel eines Versanddienstleisters."
input ShippingServiceProviderKeySortInput {
"Der eindeutige Bezeichner des Versanddienstleisters."
kShippingServiceProvider: SortEnumType @cost(weight: "10")
}
"Where the tax code of a shipping line item comes from, when written."
input ShippingTaxCodeChoiceInput {
"Where the tax code comes from. Known values: TAX_CODE, LINE_WITH_HIGHEST_VALUE, LINE_WITH_HIGHEST_RATE. New values can be added without a contract change."
source: String!
"The tax code. Required when the source is TaxCode, not allowed otherwise."
taxCodeId: ID
}
input ShopKeySortInput {
kShop: SortEnumType @cost(weight: "10")
}
"Represents a key for identifying a shop subshop in the system."
input ShopSubshopKeySortInput {
"Gets the unique identifier for the ShopSubshop entity."
kShopSubshop: SortEnumType @cost(weight: "10")
}
"Shows a category again for a customer group in a sales channel. Idempotent. - Request"
input ShowCategoryForCustomerGroupCommandRequestInput {
"The ID of the category."
categoryId: ID!
"The sales channel. Tenant-local, composite identifier, not a UUID, for example 1-1-1. Malformed values are answered with 400 (errorCode is FORMAT_NOT_PARSABLE)."
salesChannelId: ID!
"The ID of the customer group."
customerGroupId: ID!
}
"Makes an image of a category visible in a sales channel, at the end of the order of that sales channel. Idempotent. The image files are handled by the image API (blob storage and image API); this operation only changes how the image is assigned to the category. - Request"
input ShowCategoryImageInSalesChannelCommandRequestInput {
"The ID of the category."
categoryId: ID!
"The ID of the image in the blob storage."
blobIdentifier: UUID!
"The sales channel. Tenant-local, composite identifier, not a UUID, for example 1-1-1. Malformed values are answered with 400 (errorCode is FORMAT_NOT_PARSABLE). The Wawi sales channel carries the default images."
salesChannelId: ID!
}
"Shows a hidden payment account again. Showing an account that is not hidden does nothing and answers 204. Errors: PAYMENT_ACCOUNT_NOT_FOUND (the payment account was not found). - Request"
input ShowPaymentAccountCommandRequestInput {
"The ID of the payment account."
paymentAccountId: ID!
"Whether to suppress the automatic workflows this call would start. Events for other systems are still published. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"The special price of an item for one customer group in one sales channel."
input SpecialPriceEntryInput {
"The sales channel the special price applies in."
salesChannelId: ID!
"The customer group the special price applies to."
customerGroupId: ID!
"The net special price."
netPrice: Decimal!
}
"Limits the special price to the time the item has enough stock. The object is present when the special price is limited by stock."
input SpecialPriceStockRestrictionInput {
"The special price applies while the stock is at least this quantity."
minimumStockQuantity: Decimal!
}
"The period in which a special price applies. The object is present when the special price is limited by date."
input SpecialPriceValidityInput {
"The start of the period."
from: DateTime!
"The end of the period. Absent when the period has no end."
until: DateTime
}
"Splits a line item: the given quantity moves to a new line item with the same data. - Request"
input SplitReturnLineItemCommandRequestInput {
"The ID of the return. If it does not exist, errorCode is RETURN_NOT_FOUND."
returnId: ID!
"The ID of the line item. If it does not exist, errorCode is RETURN_LINE_ITEM_NOT_FOUND."
returnLineItemId: ID!
"The quantity that moves to the new line item; greater than 0 and less than the quantity of the line item."
quantity: Decimal!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Moves line items or quantities into a new sales order. Fails with a GraphQL error whose extensions.code is SalesOrderCannotBeSplit. - Request"
input SplitSalesOrderCommandRequestInput {
"The ID of the sales order. An unknown ID fails with SalesOrderNotFound."
salesOrderId: ID!
"The lines to move; omitted moves every splittable remainder. Moving all lines at once fails with AllLineItemsSelected."
lineItems: [SplitSalesOrderLineItemInput]
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Whether the new sales order also gets the shipping cost line. Defaults to false when omitted."
copyShippingLineItem: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"One line item and the quantity that moves to the new sales order."
input SplitSalesOrderLineItemInput {
"The ID of the line item. Fails with SalesOrderLineItemNotFound, or SplitLineItemNotSplittable for a line that cannot move."
lineItemId: ID!
"The quantity to move. Above zero (SplitQuantityNotPositive) and at most the splittable quantity (SplitQuantityExceedsSplittable)."
quantity: Decimal!
}
"One SSCC label selection: the object and how many labels to output."
input SsccLabelEntryInput {
"The ID of the object."
packageId: ID!
"The number of labels of this object. At least 1; a lower value is refused with OUTPUT_LABEL_ENTRY_INVALID."
quantity: Int!
}
"An ISO 4217 code a currency can be created with, and whether the tenant already has it. A code that is not in this list can only be used as a tenant-defined code with the prefix 'x-'."
input StandardCurrencyCodeFilterInput {
and: [StandardCurrencyCodeFilterInput!]
or: [StandardCurrencyCodeFilterInput!]
"The ISO 4217 alpha-3 code in capitals."
code: StringOperationFilterInput @cost(weight: "15")
"Whether the tenant already has a currency with this code."
isConfigured: ComparableBooleanOperationFilterInput @cost(weight: "200")
}
"An ISO 4217 code a currency can be created with, and whether the tenant already has it. A code that is not in this list can only be used as a tenant-defined code with the prefix 'x-'."
input StandardCurrencyCodeSortInput {
"The ISO 4217 alpha-3 code in capitals."
code: SortEnumType @cost(weight: "15")
"A display name of the currency, for orientation only."
name: SortEnumType @cost(weight: "50")
}
"Changes a condition that is posted to the standard condition."
input StandardItemConditionChangesInput {
"The new colour as hex value with a leading '#'. Null removes it."
color: String
"The new position in lists; smaller comes first. Other conditions keep their position."
sortOrder: Int
}
"Creates a condition that is posted to the item in the standard condition."
input StandardItemConditionCreationInput {
"The names, one per language, at least one. It must contain the standard language of the Wawi."
translations: [ItemConditionTranslationInput]!
"The colour as hex value with a leading '#', for example #0ead00. Omitted or null: white (#ffffff)."
color: String
"The position in lists. Omitted: behind the last condition."
sortOrder: Int
"Where the condition can be chosen. Omitted or null: no restriction."
restriction: ItemConditionRestrictionInput
}
"The standard prices to write in one currency. The last purchase price cannot be written."
input StandardPricesInput {
"The currency of the prices as ISO 4217 code. Prices are written in the default currency of the tenant only. Omitted means the default currency; any other currency is refused with 409 (error code CURRENCY_NOT_SUPPORTED)."
currencyCode: String
"Net sales price of the item."
salesPriceNet: Decimal
"Manufacturer's suggested retail price."
suggestedRetailPrice: Decimal
"Whether automatic discounts are not applied to the item."
ignoreDiscounts: Boolean
}
"Changes a standard warehouse. Only the properties that are sent change. The type cannot be changed. The address is replaced as a whole when it is sent."
input StandardWarehouseChangesInput {
"The new name. It must be unique among the active warehouses."
name: String
"The new short name."
shortName: String
"The new description."
description: String
"The new priority when orders are delivered."
deliveryPriority: Int
"The new company."
companyId: ID
"The new digit for the shipping unit numbers (NVE)."
nveExtensionDigit: String
"Whether the stock is left out of the available stock."
isLockedForAvailableStock: Boolean
"Whether the warehouse is locked for delivery."
isLockedForDelivery: Boolean
"The new address. It replaces the old address as a whole."
address: WarehouseAddressInput
}
"Creates a standard warehouse, the plain warehouse without storage location management, in one call. It gets one implicit storage location and its settings with defaults. The request carries exactly the fields of this type. There is no storage location to maintain."
input StandardWarehouseCreationInput {
"The name of the warehouse, at most 250 characters. It must be unique among the active warehouses."
name: String!
"The short name of the warehouse."
shortName: String!
"A free description of the warehouse."
description: String
"The priority when orders are delivered. When omitted, the warehouse is put behind all others."
deliveryPriority: Int
"The ID of the company the warehouse belongs to. When omitted, the company of the user is used."
companyId: ID
"The digit from 0 to 9 for the shipping unit numbers (NVE)."
nveExtensionDigit: String
"Whether the stock is left out of the available stock. Defaults to false."
isLockedForAvailableStock: Boolean
"Whether the warehouse is locked for delivery. Defaults to false."
isLockedForDelivery: Boolean
"The postal address with the contact person."
address: WarehouseAddressInput!
"Create items that do not exist yet on goods receipt, in the given category. Omitted means never."
newItemOnReceipt: NewItemOnReceiptInput
}
"Starts the OAuth sign-in of a mailbox and returns the address the client has to open in the browser. The client only runs the sign-in there and catches the redirect to the redirect address of the configuration. Wawi runs the protocol itself (state, code verifier, token exchange with the client secret), so the client never needs these. The returned state ties the two steps together; the sign-in expires after the time given. - Request"
input StartCompanyEmailOAuthCommandRequestInput {
"The ID of the company."
companyId: ID!
"The key of the OAuth configuration from the provider list."
providerKey: String!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Starts a fetch of the transactions of a payment account from its bank or payment provider. The run works asynchronously; read its state with 'GetPaymentAccountImportRun'. New transactions are saved, known ones are updated, import filters and workflows apply; afterwards the automatic assignment runs when it is switched on in the settings. When the bank asks for a confirmation or the credentials are invalid, the run fails and the ERP locks the automatic import of the account. Errors: PAYMENT_ACCOUNT_NOT_FOUND (the payment account was not found); PAYMENT_ACCOUNT_HIDDEN (the payment account is hidden; show it with 'ShowPaymentAccount' first); PAYMENT_ACCOUNT_IS_EXTERNAL (the account is an external account; its transactions are delivered with 'ImportPaymentTransaction'); PAYMENT_ACCOUNT_REQUIRES_INTERACTION (the account needs an interactive confirmation (for example a TAN) or a file to be fetched); PAYMENT_PROVIDER_NOT_LICENSED (the licence does not cover the payment provider of the account); LICENSE_CHECK_UNAVAILABLE (the licence could not be checked right now; try again later); PAYMENT_RECONCILIATION_IN_PROGRESS (another fetch of transactions is running right now; try again later); IMPORT_RUN_PERIOD_INVALID ('from' is after 'to'). - Request"
input StartPaymentAccountImportCommandRequestInput {
"The ID of the payment account."
paymentAccountId: ID!
"The start of the period to fetch. Omitted means the default of the provider."
from: DateTime
"The end of the period to fetch. Omitted means up to now."
to: DateTime
"Whether to suppress the workflows of the import: the event that runs while a transaction is read in (its workflows can refuse or hide the transaction, so with this flag such rules do not apply) and the event after it is saved. Events for other systems are still published. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Asks the worker to start a suspended, deactivated or locked sync; a locked one runs only once its account is unlocked. - Request"
input StartWorkerSyncCommandRequestInput {
"The ID of the sync."
syncId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
input SteuerklasseKeySortInput {
kSteuerklasse: SortEnumType @cost(weight: "10")
}
input SteuerschluesselKeySortInput {
kSteuerschluessel: SortEnumType @cost(weight: "10")
}
input SteuerzoneKeySortInput {
kSteuerzone: SortEnumType @cost(weight: "10")
}
"Settings every stock-managed item has, whatever the way its stock is quantified or traced."
input StockManagementInput {
"Allows selling more than is physically in stock."
allowNegativeStock: Boolean!
"Safety stock that is held back and not offered for sale."
buffer: Int!
"Minimum stock level across all warehouses. Falling below it flags the item for reordering."
globalMinimumStockLevel: Decimal!
}
"The reason of a stock posting, for example goods receipt, goods issue, correction or return. Every stock movement carries one. The list is part of the application: the types are fixed, none can be created, changed or deleted over the API. The direction of a posting is not part of the type but of the posting; 'directions' says in which directions the application uses the type."
input StockPostingTypeFilterInput {
and: [StockPostingTypeFilterInput!]
or: [StockPostingTypeFilterInput!]
"The ID of the posting type. Fixed by the application and the same in every client."
id: ComparableBuchungsArtKeyOperationFilterInput @cost(weight: "15")
"The name of the posting type. Not translated: it is the name stored with the type."
name: StringOperationFilterInput @cost(weight: "50")
"Whether the application knows the type and can handle it. Computed; every type that ships with the ERP is a system type, and a system type cannot be changed or deleted."
isSystem: ComparableBooleanOperationFilterInput @cost(weight: "200")
}
"The reason of a stock posting, for example goods receipt, goods issue, correction or return. Every stock movement carries one. The list is part of the application: the types are fixed, none can be created, changed or deleted over the API. The direction of a posting is not part of the type but of the posting; 'directions' says in which directions the application uses the type."
input StockPostingTypeSortInput {
"The ID of the posting type. Fixed by the application and the same in every client."
id: BuchungsArtKeySortInput @cost(weight: "15")
"The name of the posting type. Not translated: it is the name stored with the type."
name: SortEnumType @cost(weight: "50")
}
"How the units of an item are traced: not at all, by batch / shelf life expiration date (Lot) or by serial number (Serial). 'lotTracking' is only present for Lot and 'serialNumberTracking' only for Serial; a value for the other kind is refused with 400. (One model with a kind and optional fields, because the generator cannot map a polymorphic type inside a variant of another polymorphic type.)"
input StockTrackingInput {
"How the units are traced."
kind: StockTrackingKind!
"What the stock postings carry to trace the lots. Present only for Lot, required there."
lotTracking: LotTrackingType
"At which point of the goods flow serial numbers are captured. Present only for Serial, required there."
serialNumberTracking: SerialNumberTrackingType
}
"Transfer of items from one standard warehouse to another. On shipping, the items leave the source warehouse and are held in a transit warehouse until the target warehouse receives them, so the available stock stays unchanged during the transfer."
input StockTransferFilterInput {
and: [StockTransferFilterInput!]
or: [StockTransferFilterInput!]
"Current state of the stock transfer: open, in transit or completed."
status: ComparableStockTransferStatusOperationFilterInput @cost(weight: "50")
"Warehouse the items are transferred from."
sourceWarehouseId: ComparableWarenlagerKeyOperationFilterInput @cost(weight: "50")
"Warehouse the items are transferred to."
targetWarehouseId: ComparableWarenlagerKeyOperationFilterInput @cost(weight: "50")
"Date on which the items are expected to arrive in the target warehouse."
expectedDeliveryDate: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "200")
"Date and time the stock transfer was created."
createdAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "200")
}
"Detailed inventory management information of received stock. Each property applies only to items with the corresponding detailed inventory management."
input StockTransferInventoryManagementInformationInput {
"Shelf life expiration date (best-before date) of the received stock."
shelfLifeExpirationDate: DateTime
"Batch number of the received stock."
batchNumber: String
"Serial numbers of the received stock. The number of serial numbers must match the received quantity."
serialNumbers: [String]!
}
"Item and quantity to transfer, with the quantities reached in each phase of the transfer. The shipped quantity equals the sum of the quantities in transit, received and written off."
input StockTransferLineItemFilterInput {
and: [StockTransferLineItemFilterInput!]
or: [StockTransferLineItemFilterInput!]
"Item that is transferred."
itemId: ComparableArtikelKeyOperationFilterInput @cost(weight: "15")
}
"Item and quantity to transfer, with the quantities reached in each phase of the transfer. The shipped quantity equals the sum of the quantities in transit, received and written off."
input StockTransferLineItemSortInput {
"Unique identifier of the line item."
id: VerkaufAuftragPositionKeySortInput @cost(weight: "15")
"Item that is transferred."
itemId: ArtikelKeySortInput @cost(weight: "15")
"Quantity of the item to transfer."
quantity: SortEnumType @cost(weight: "50")
}
"Transfer of items from one standard warehouse to another. On shipping, the items leave the source warehouse and are held in a transit warehouse until the target warehouse receives them, so the available stock stays unchanged during the transfer."
input StockTransferSortInput {
"Date and time the stock transfer was created."
createdAt: SortEnumType @cost(weight: "200")
"Date on which the items are expected to arrive in the target warehouse."
expectedDeliveryDate: SortEnumType @cost(weight: "200")
"Current state of the stock transfer: open, in transit or completed."
status: SortEnumType @cost(weight: "50")
}
"Asks the worker to stop the sync; it stays deactivated, also after a restart of the worker, until a user starts it. - Request"
input StopWorkerSyncCommandRequestInput {
"The ID of the sync."
syncId: ID!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"One row of a change set: create, update or delete a storage location. Polymorphic: the property 'operation' selects the variant."
input StorageLocationChangeInput @oneOf {
"Creates a storage location. It has the fields of the single creation."
createStorageLocationChange: CreateStorageLocationChangeInput
"Changes a storage location. A field that is omitted stays as it is."
updateStorageLocationChange: UpdateStorageLocationChangeInput
"Deactivates a storage location. The blockers of the single deactivation apply."
deactivateStorageLocationChange: DeactivateStorageLocationChangeInput
}
"Size and load capacity of a storage location when written. A property that is not sent, or is null, means there is no value or limit for it; the maintained set is stored as sent and replaces the old one as a whole."
input StorageLocationDimensionsInput {
"Width."
width: Decimal
"Length."
length: Decimal
"Height."
height: Decimal
"The highest weight the location carries."
maxWeight: Decimal
}
"One storage location label selection: the object and how many labels to output."
input StorageLocationLabelEntryInput {
"The ID of the object."
storageLocationId: ID!
"The number of labels of this object. At least 1; a lower value is refused with OUTPUT_LABEL_ENTRY_INVALID."
quantity: Int!
}
"One dimension of the location layout, for example the shelf, the compartment or the level."
input StorageLocationLayoutDimensionInput {
"The name of the dimension, at most 255 characters."
name: String!
"The separator written between this dimension and the next in the name of a location: one of '-', '/', '.', ':', ' ' or empty. Ignored for the last dimension."
separator: String!
"How many characters the dimension has in the name."
length: Int!
"Which characters the dimension uses."
labelType: LayoutLabelType!
}
"How the names of the storage locations of a warehouse are built when they are generated: up to five dimensions, joined in their order. The layout only generates names; the names of existing locations stay editable."
input StorageLocationLayoutInput {
"Between one and five dimensions in their order."
dimensions: [StorageLocationLayoutDimensionInput]!
}
"The type of a storage location, from a fixed list of the system (read it with QueryStorageLocationTypes). The ID is stable and is the key to write; name and description are texts in the language of the caller, as in the earlier storage location type of the API."
input StorageLocationTypeFilterInput {
and: [StorageLocationTypeFilterInput!]
or: [StorageLocationTypeFilterInput!]
"The stable ID of the type."
id: ComparableGuidOperationFilterInput @cost(weight: "50")
"The name of the type, in the language of the caller, for example Shelf."
name: StringOperationFilterInput @cost(weight: "50")
"Whether a storage location of this type can be created through the API. The system creates the locations of the types goods receipt, box and picking trolley itself."
isCreatable: ComparableBooleanOperationFilterInput @cost(weight: "50")
"Whether a storage location can be changed from or to this type. Only shelf, quarantine, pallet, retail, carton, bulk storage and transfer locations can."
isInterchangeable: ComparableBooleanOperationFilterInput @cost(weight: "50")
}
"The type of a storage location, from a fixed list of the system (read it with QueryStorageLocationTypes). The ID is stable and is the key to write; name and description are texts in the language of the caller, as in the earlier storage location type of the API."
input StorageLocationTypeSortInput {
"The name of the type, in the language of the caller, for example Shelf."
name: SortEnumType @cost(weight: "50")
}
input StringOperationFilterInput {
and: [StringOperationFilterInput!]
or: [StringOperationFilterInput!]
eq: String @cost(weight: "10")
neq: String @cost(weight: "10")
contains: String @cost(weight: "20")
ncontains: String @cost(weight: "20")
in: [String] @cost(weight: "10")
nin: [String] @cost(weight: "10")
startsWith: String @cost(weight: "20")
nstartsWith: String @cost(weight: "20")
endsWith: String @cost(weight: "20")
nendsWith: String @cost(weight: "20")
}
"The value of one dimension of a subset item, for example its length. Which dimensions exist is defined by the dimension set of the item; the dimensions have nothing to do with the outer dimensions of the item."
input SubsetDimensionValueInput {
"The ID of the dimension of the dimension set."
dimensionId: ID!
"The value of the dimension."
value: Decimal!
"The smallest value a subset may take in this dimension. Absent when there is no lower limit."
minimumValue: Decimal
"The largest value a subset may take in this dimension. Absent when there is no upper limit."
maximumValue: Decimal
"The unit of the values."
unitId: ID!
}
"How a subset item is reserved for an order: complete, or as needed. 'commissioningPercentage' is only present for AsNeeded, required there; a value for Complete is refused with 400. (One model with a mode and an optional field, for the same reason as 'StockTracking'.)"
input SubsetReservationInput {
"How the subset is reserved."
mode: SubsetReservationMode!
"Share, in percent from 0 to 100, that is picked for an order. Present only for AsNeeded, required there."
commissioningPercentage: Int
}
"The postal address of a new supplier."
input SupplierAddressInput {
"The salutation of the addressee."
salutation: String
"The first name of the addressee."
firstName: String
"The last name of the addressee."
lastName: String
"An additional line for the company name."
additionalCompanyLine: String
"The street and house number."
street: String!
"An additional address line."
additionalAddressLine: String
"The postal code."
postalCode: String!
"The city."
city: String!
"The state or region."
state: String
"The country as an ISO 3166-1 alpha-2 code, for example 'DE'. Input is case-insensitive."
countryCode: String!
}
"Changes to the postal address of a supplier. Fields that are omitted stay as they are."
input SupplierAddressUpdateInput {
"The salutation of the addressee; null removes it."
salutation: String
"The first name of the addressee; null removes it."
firstName: String
"The last name of the addressee; null removes it."
lastName: String
"An additional line for the company name; null removes it."
additionalCompanyLine: String
"The street and house number."
street: String
"An additional address line; null removes it."
additionalAddressLine: String
"The postal code."
postalCode: String
"The city."
city: String
"The state or region; null removes it."
state: String
"The country as an ISO 3166-1 alpha-2 code, for example 'DE'. Input is case-insensitive."
countryCode: String
}
"The contact details of a new supplier. Fields that are omitted are empty."
input SupplierContactInput {
"The name of the contact person."
contactName: String
"The email address."
emailAddress: String
"The main phone number."
phoneNumber: String
"The direct-dial extension."
phoneExtension: String
"The fax number."
faxNumber: String
}
"Changes to the contact details of a supplier. Fields that are omitted stay as they are."
input SupplierContactUpdateInput {
"The name of the contact person; null removes it."
contactName: String
"The email address; null removes it."
emailAddress: String
"The main phone number; null removes it."
phoneNumber: String
"The direct-dial extension; null removes it."
phoneExtension: String
"The fax number; null removes it."
faxNumber: String
}
"The delivery and order conditions of a new supplier. Fields that are omitted are empty (amounts) or false."
input SupplierDeliveryConditionsInput {
"The usual delivery time of the supplier in days."
deliveryTimeInDays: Int
"The minimum order value of the supplier, net, in the currency of the supplier."
minimumOrderValueAmount: Decimal
"The surcharge the supplier charges for orders below the minimum order value, net, in the currency of the supplier."
smallQuantitySurchargeAmount: Decimal
"The freight cost the supplier charges per order, net, in the currency of the supplier."
freightCostAmount: Decimal
"The order value from which the supplier delivers free of freight cost, net, in the currency of the supplier."
freeShippingThresholdAmount: Decimal
"The VAT rate in percent applied to line items without an item."
vatRateForCustomLineItems: Decimal
"Whether the discount scale of the supplier is applied to the total value of a purchase order instead of each line item."
appliesDiscountScalePerOrder: Boolean
"A note on the delivery conditions."
note: String
}
"Changes to the delivery and order conditions of a supplier. Fields that are omitted stay as they are."
input SupplierDeliveryConditionsUpdateInput {
"The usual delivery time of the supplier in days; null removes it."
deliveryTimeInDays: Int
"The minimum order value of the supplier, net, in the currency of the supplier. Null removes it."
minimumOrderValueAmount: Decimal
"The surcharge the supplier charges for orders below the minimum order value, net, in the currency of the supplier. Null removes it."
smallQuantitySurchargeAmount: Decimal
"The freight cost the supplier charges per order, net, in the currency of the supplier. Null removes it."
freightCostAmount: Decimal
"The order value from which the supplier delivers free of freight cost, net, in the currency of the supplier. Null removes it."
freeShippingThresholdAmount: Decimal
"The VAT rate in percent applied to line items without an item."
vatRateForCustomLineItems: Decimal
"Whether the discount scale of the supplier is applied to the total value of a purchase order instead of each line item."
appliesDiscountScalePerOrder: Boolean
"A note on the delivery conditions; null removes it."
note: String
}
"The dropshipping settings of a new supplier. Fields that are omitted are false."
input SupplierDropshippingInput {
"Whether sales orders paid cash on delivery may be dropshipped by the supplier."
allowsCashOnDelivery: Boolean
"Whether line items without an item may be dropshipped by the supplier."
allowsCustomLineItems: Boolean
}
"Changes to the dropshipping settings of a supplier. Fields that are omitted keep their last value."
input SupplierDropshippingUpdateInput {
"Whether sales orders paid cash on delivery may be dropshipped by the supplier."
allowsCashOnDelivery: Boolean
"Whether line items without an item may be dropshipped by the supplier."
allowsCustomLineItems: Boolean
}
"A supplier that the merchant purchases goods from."
input SupplierFilterInput {
and: [SupplierFilterInput!]
or: [SupplierFilterInput!]
"The ID of the supplier."
id: ComparableLieferantKeyOperationFilterInput @cost(weight: "15")
"The supplier number."
supplierNumber: StringOperationFilterInput @cost(weight: "15")
"The merchant's own customer number at the supplier."
supplierAccountNumber: StringOperationFilterInput @cost(weight: "15")
"The company name of the supplier."
companyName: StringOperationFilterInput @cost(weight: "15")
"A free-text note on the status of the supplier. It has no meaning for the system; the name 'status' is kept free for a real state of the supplier."
statusNote: StringOperationFilterInput @cost(weight: "50")
"The language of the supplier as BCP 47 tag, for example 'de' or 'de-AT'. Case does not matter on input; the output uses the canonical form (language lower case, region upper case)."
languageTag: StringOperationFilterInput @cost(weight: "200")
"The currency of the supplier as an ISO 4217 alpha-3 code in uppercase, for example 'EUR'."
currencyCode: StringOperationFilterInput @cost(weight: "50")
"The creditor number of the supplier in accounting."
creditorNumber: ComparableNullableOfInt32OperationFilterInput @cost(weight: "50")
"The VAT identification number of the supplier."
vatId: StringOperationFilterInput @cost(weight: "50")
"Whether purchases from the supplier are exempt from VAT."
isVatExempt: ComparableBooleanOperationFilterInput @cost(weight: "50")
"Whether the supplier is excluded from the purchase list."
isExcludedFromPurchaseList: ComparableBooleanOperationFilterInput @cost(weight: "50")
"The own company that purchase orders to the supplier are placed for by default."
defaultCompanyId: ComparableFirmaKeyOperationFilterInput @cost(weight: "50")
"The warehouse that goods ordered from the supplier are delivered to by default."
defaultWarehouseId: ComparableWarenlagerKeyOperationFilterInput @cost(weight: "50")
"The date and time the supplier was created. Empty for suppliers without a recorded creation date."
createdAt: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "50")
"The date and time the supplier was last changed."
changedAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "15")
}
"How the supplier packs the item. Description and quantity belong together."
input SupplierPackageUnitInput {
"Name of the packaging unit of the supplier."
description: String!
"How many units of the item the packaging unit holds."
quantity: Decimal!
}
"The payment conditions of a new supplier. Fields that are omitted are empty."
input SupplierPaymentConditionsInput {
"The number of days within which invoices of the supplier are due."
paymentTermInDays: Int
"The cash discount in percent that the supplier grants for early payment."
cashDiscountPercentage: Decimal
"The number of days within which the cash discount applies."
cashDiscountDays: Int
}
"Changes to the payment conditions of a supplier. Fields that are omitted stay as they are."
input SupplierPaymentConditionsUpdateInput {
"The number of days within which invoices of the supplier are due; null removes it."
paymentTermInDays: Int
"The cash discount in percent that the supplier grants for early payment; null removes it."
cashDiscountPercentage: Decimal
"The number of days within which the cash discount applies; null removes it."
cashDiscountDays: Int
}
"One tier of the purchase price of a supplier item. Polymorphic: the property 'kind' selects the variant."
input SupplierPriceTierInput @oneOf {
"A tier that states the net purchase price."
netSupplierPriceTier: NetSupplierPriceTierInput
"A tier that states a percentage discount."
percentageDiscountSupplierPriceTier: PercentageDiscountSupplierPriceTierInput
}
"A supplier that the merchant purchases goods from."
input SupplierSortInput {
"The ID of the supplier."
id: LieferantKeySortInput @cost(weight: "15")
"The supplier number."
supplierNumber: SortEnumType @cost(weight: "15")
"The merchant's own customer number at the supplier."
supplierAccountNumber: SortEnumType @cost(weight: "15")
"The company name of the supplier."
companyName: SortEnumType @cost(weight: "15")
"A free-text note on the status of the supplier. It has no meaning for the system; the name 'status' is kept free for a real state of the supplier."
statusNote: SortEnumType @cost(weight: "50")
"The language of the supplier as BCP 47 tag, for example 'de' or 'de-AT'. Case does not matter on input; the output uses the canonical form (language lower case, region upper case)."
languageTag: SortEnumType @cost(weight: "200")
"The currency of the supplier as an ISO 4217 alpha-3 code in uppercase, for example 'EUR'."
currencyCode: SortEnumType @cost(weight: "50")
"The creditor number of the supplier in accounting."
creditorNumber: SortEnumType @cost(weight: "50")
"The VAT identification number of the supplier."
vatId: SortEnumType @cost(weight: "50")
"Whether purchases from the supplier are exempt from VAT."
isVatExempt: SortEnumType @cost(weight: "50")
"Whether the supplier is excluded from the purchase list."
isExcludedFromPurchaseList: SortEnumType @cost(weight: "50")
"The own company that purchase orders to the supplier are placed for by default."
defaultCompanyId: FirmaKeySortInput @cost(weight: "50")
"The warehouse that goods ordered from the supplier are delivered to by default."
defaultWarehouseId: WarenlagerKeySortInput @cost(weight: "50")
"The date and time the supplier was created. Empty for suppliers without a recorded creation date."
createdAt: SortEnumType @cost(weight: "50")
"The date and time the supplier was last changed."
changedAt: SortEnumType @cost(weight: "15")
}
"The stock of the supplier is considered for the item. The object is present when it is."
input SupplierStockInput {
"The stock the supplier has of the item."
stockLevel: Decimal!
}
"A tax class. Items, shipping methods and line items carry a tax class; a tax zone gives each tax class its rate."
input TaxClassFilterInput {
and: [TaxClassFilterInput!]
or: [TaxClassFilterInput!]
"The ID of the tax class."
id: ComparableSteuerklasseKeyOperationFilterInput
"The name of the tax class."
name: StringOperationFilterInput
"The kind of rate the tax class stands for. Empty when the tax class has none."
rateType: ComparableNullableOfTaxRateTypeOperationFilterInput
"Whether this is the default tax class. Line items without a tax class of their own, for example of items without one, are taxed with it."
isDefault: ComparableBooleanOperationFilterInput
}
"A tax class. Items, shipping methods and line items carry a tax class; a tax zone gives each tax class its rate."
input TaxClassSortInput {
"The ID of the tax class."
id: SteuerklasseKeySortInput @cost(weight: "10")
"The name of the tax class."
name: SortEnumType @cost(weight: "10")
}
"A tax code: the posting key and accounts that accounting books a sale with."
input TaxCodeFilterInput {
and: [TaxCodeFilterInput!]
or: [TaxCodeFilterInput!]
"The ID of the tax code."
id: ComparableSteuerschluesselKeyOperationFilterInput
"The number of the tax code, unique. It is the posting key handed to accounting."
number: ComparableInt32OperationFilterInput
"The name of the tax code."
name: StringOperationFilterInput
"Whether the accounts are automatic accounts in accounting. The posting key is then not handed over with the posting."
isAutomaticAccount: ComparableBooleanOperationFilterInput
}
"A tax code: the posting key and accounts that accounting books a sale with."
input TaxCodeSortInput {
"The ID of the tax code."
id: SteuerschluesselKeySortInput @cost(weight: "10")
"The number of the tax code, unique. It is the posting key handed to accounting."
number: SortEnumType @cost(weight: "10")
"The name of the tax code."
name: SortEnumType @cost(weight: "10")
}
"The rate of one tax class in one tax zone, with the tax codes for each tax treatment."
input TaxRateFilterInput {
and: [TaxRateFilterInput!]
or: [TaxRateFilterInput!]
"The tax class the rate is for."
taxClassId: ComparableSteuerklasseKeyOperationFilterInput
}
"A tax rate of a country as supplied with the ERP, used to set up tax zones."
input TaxRatePresetFilterInput {
and: [TaxRatePresetFilterInput!]
or: [TaxRatePresetFilterInput!]
"The state the rate applies to. Empty for the whole country."
stateCode: StringOperationFilterInput
"The kind of rate."
rateType: ComparableTaxRateTypeOperationFilterInput
}
"A tax rate of a country as supplied with the ERP, used to set up tax zones."
input TaxRatePresetSortInput {
"The country, as ISO 3166-1 alpha-2 code."
countryCode: SortEnumType @cost(weight: "10")
"The state the rate applies to. Empty for the whole country."
stateCode: SortEnumType @cost(weight: "10")
"The kind of rate."
rateType: SortEnumType @cost(weight: "10")
"The rate in percent."
ratePercent: SortEnumType @cost(weight: "10")
}
"The rate of one tax class in one tax zone, with the tax codes for each tax treatment."
input TaxRateSortInput {
"The tax class the rate is for."
taxClassId: SteuerklasseKeySortInput @cost(weight: "10")
"The tax rate in percent, with at most two decimals."
ratePercent: SortEnumType @cost(weight: "10")
}
"A destination country of a tax zone, or one state of it."
input TaxZoneCountryFilterInput {
and: [TaxZoneCountryFilterInput!]
or: [TaxZoneCountryFilterInput!]
"The country, as ISO 3166-1 alpha-2 code."
countryCode: StringOperationFilterInput
"The state within the country, for example CA. Empty when the whole country belongs to the tax zone."
stateCode: StringOperationFilterInput
}
"A destination country of a tax zone, or one state of it."
input TaxZoneCountrySortInput {
"The country, as ISO 3166-1 alpha-2 code."
countryCode: SortEnumType @cost(weight: "10")
"The state within the country, for example CA. Empty when the whole country belongs to the tax zone."
stateCode: SortEnumType @cost(weight: "10")
}
"A tax zone: the destination countries of one company and one departure country that are taxed with the same rates."
input TaxZoneFilterInput {
and: [TaxZoneFilterInput!]
or: [TaxZoneFilterInput!]
"The ID of the tax zone."
id: ComparableSteuerzoneKeyOperationFilterInput
"The company the tax zone belongs to."
companyId: ComparableFirmaKeyOperationFilterInput
"The country goods are shipped from, as ISO 3166-1 alpha-2 code. The tax zone applies only to sales shipped from it."
departureCountryCode: StringOperationFilterInput
"The name of the tax zone."
name: StringOperationFilterInput
}
"A tax zone: the destination countries of one company and one departure country that are taxed with the same rates."
input TaxZoneSortInput {
"The ID of the tax zone."
id: SteuerzoneKeySortInput @cost(weight: "10")
"The company the tax zone belongs to."
companyId: FirmaKeySortInput @cost(weight: "10")
"The country goods are shipped from, as ISO 3166-1 alpha-2 code. The tax zone applies only to sales shipped from it."
departureCountryCode: SortEnumType @cost(weight: "10")
"The name of the tax zone."
name: SortEnumType @cost(weight: "10")
}
"Ends a subscription at a date. Every recurring line item without an end date, or with a later one, gets this end date. Periods due up to the end date are still billed; next due dates after it are removed. Follow-up sales orders that were already created are not changed. Undo it by removing or moving the end dates of the line items. - Request"
input TerminateSalesSubscriptionCommandRequestInput {
"The ID of the subscription."
salesSubscriptionId: ID!
"The last day a period can be due. Defaults to today. Only the date counts; a time part is ignored."
endDate: DateTime
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Represents a key for a text block group entity identified by an integer identifier."
input TextbausteinGruppeKeyInput {
"Gets or sets the text block group identifier."
kTextbausteinGruppe: Int!
}
"Represents a key for a text block group entity identified by an integer identifier."
input TextbausteinGruppeKeySortInput {
"Gets or sets the text block group identifier."
kTextbausteinGruppe: SortEnumType @cost(weight: "10")
}
"Represents a key for a text block (Textbaustein) entity identified by an integer identifier."
input TextbausteinKeyInput {
"Gets or sets the text block identifier."
kTextbaustein: Int!
}
"Represents a key for a text block (Textbaustein) entity identified by an integer identifier."
input TextbausteinKeySortInput {
"Gets or sets the text block identifier."
kTextbaustein: SortEnumType @cost(weight: "10")
}
"A reusable text that users insert into a customer, supplier, sales order, invoice or invoice correction, in one or more languages. The text itself is read with 'QueryTextBlockTranslationsByTextBlockId'."
input TextBlockFilterInput {
and: [TextBlockFilterInput!]
or: [TextBlockFilterInput!]
"The ID of the text block."
id: ComparableTextbausteinKeyOperationFilterInput @cost(weight: "15")
"The ID of the group the text block is in."
groupId: ComparableTextbausteinGruppeKeyOperationFilterInput @cost(weight: "50")
"The name of the text block, 1 to 255 characters. Not unique."
name: StringOperationFilterInput @cost(weight: "50")
"Where the text block can be inserted: the key of an entry of 'QueryTextBlockUsages', for example salesOrder. The usage decides which variables the content can use."
usageKey: StringOperationFilterInput @cost(weight: "50")
"The key combination that inserts the text block in editors. Empty when it has none. Free text, not checked for conflicts."
shortcut: StringOperationFilterInput @cost(weight: "50")
"The abbreviation that expands to the text block while typing. Empty when it has none. Free text, not checked for conflicts."
autoText: StringOperationFilterInput @cost(weight: "50")
}
"A group of text blocks. Groups only organise the list; they say nothing about where a block can be used."
input TextBlockGroupFilterInput {
and: [TextBlockGroupFilterInput!]
or: [TextBlockGroupFilterInput!]
"The ID of the text block group."
id: ComparableTextbausteinGruppeKeyOperationFilterInput @cost(weight: "15")
"The name of the group, 1 to 255 characters."
name: StringOperationFilterInput @cost(weight: "50")
}
"A group of text blocks. Groups only organise the list; they say nothing about where a block can be used."
input TextBlockGroupSortInput {
"The ID of the text block group."
id: TextbausteinGruppeKeySortInput @cost(weight: "15")
"The name of the group, 1 to 255 characters."
name: SortEnumType @cost(weight: "50")
}
"A reusable text that users insert into a customer, supplier, sales order, invoice or invoice correction, in one or more languages. The text itself is read with 'QueryTextBlockTranslationsByTextBlockId'."
input TextBlockSortInput {
"The ID of the text block."
id: TextbausteinKeySortInput @cost(weight: "15")
"The name of the text block, 1 to 255 characters. Not unique."
name: SortEnumType @cost(weight: "50")
"Where the text block can be inserted: the key of an entry of 'QueryTextBlockUsages', for example salesOrder. The usage decides which variables the content can use."
usageKey: SortEnumType @cost(weight: "50")
}
"The content of a text block in one language."
input TextBlockTranslationFilterInput {
and: [TextBlockTranslationFilterInput!]
or: [TextBlockTranslationFilterInput!]
"The language as BCP 47 tag."
languageTag: StringOperationFilterInput @cost(weight: "200")
}
"The content of a text block in one language."
input TextBlockTranslationSortInput {
"The language as BCP 47 tag."
languageTag: SortEnumType @cost(weight: "200")
}
"A place a text block can be used. Every text block has exactly one usage."
input TextBlockUsageFilterInput {
and: [TextBlockUsageFilterInput!]
or: [TextBlockUsageFilterInput!]
"The stable key of the usage, for example customer, supplier, salesOrder, salesInvoice or salesInvoiceCorrection."
key: StringOperationFilterInput @cost(weight: "15")
}
"A place a text block can be used. Every text block has exactly one usage."
input TextBlockUsageSortInput {
"The stable key of the usage, for example customer, supplier, salesOrder, salesInvoice or salesInvoiceCorrection."
key: SortEnumType @cost(weight: "15")
"The name of the usage in the language of the request."
name: SortEnumType @cost(weight: "50")
}
"A text."
input TextOptionValueInput {
"The text."
value: String!
}
"A text."
input TextWarehouseSettingValueInput {
"The text."
value: String!
}
"The identifiers of an item that is traded. Every identifier has its own property; an identifier the item does not have is absent. Further GTINs of the item are the GTINs of its containers."
input TradeItemIdentifiersInput {
"The item number (SKU), unique among all items. Every item has one."
sku: String!
"Global Trade Item Number of the item, including EAN."
gtin: String
"Universal Product Code."
upc: String
"International Standard Book Number."
isbn: String
"Default Amazon Standard Identification Number."
asin: String
"Manufacturer part number (German 'Herstellerartikelnummer', HAN)."
manufacturerPartNumber: String
"eBay product identifier."
epid: String
"Fulfillment network SKU of JTL-Fulfillment Network."
jfsku: String
"Amazon fulfillment network SKU."
amazonFnsku: String
"Own free identifier of the shop owner for the item."
ownIdentifier: String
}
"A transaction colour: a colour with a meaning that users set on sales documents to mark them, for example red for 'urgent'. The list is global. Used for the detail and for the list."
input TransactionColorFilterInput {
and: [TransactionColorFilterInput!]
or: [TransactionColorFilterInput!]
"The ID of the transaction colour. It stays the same when the colour is changed."
id: ComparableFarbeKeyOperationFilterInput @cost(weight: "15")
"The meaning of the colour. Null for colours created without one."
name: StringOperationFilterInput @cost(weight: "50")
"The colour as #RRGGBB in capital letters. Unique among the transaction colours."
color: StringOperationFilterInput @cost(weight: "50")
}
"A transaction colour: a colour with a meaning that users set on sales documents to mark them, for example red for 'urgent'. The list is global. Used for the detail and for the list."
input TransactionColorSortInput {
"The ID of the transaction colour. It stays the same when the colour is changed."
id: FarbeKeySortInput @cost(weight: "15")
"The meaning of the colour. Null for colours created without one."
name: SortEnumType @cost(weight: "50")
"The colour as #RRGGBB in capital letters. Unique among the transaction colours."
color: SortEnumType @cost(weight: "50")
}
"A transaction status: a label users set on sales documents to track their processing, for example 'waiting for payment'. Used for the detail and for the list."
input TransactionStatusFilterInput {
and: [TransactionStatusFilterInput!]
or: [TransactionStatusFilterInput!]
"The ID of the transaction status."
id: ComparableVorgangsstatusKeyOperationFilterInput @cost(weight: "15")
"The name of the status. Unique among all transaction statuses, ignoring letter case, when a status is created or renamed; existing data may contain duplicates or no name."
name: StringOperationFilterInput @cost(weight: "50")
}
"A transaction status: a label users set on sales documents to track their processing, for example 'waiting for payment'. Used for the detail and for the list."
input TransactionStatusSortInput {
"The ID of the transaction status."
id: VorgangsstatusKeySortInput @cost(weight: "15")
"The name of the status. Unique among all transaction statuses, ignoring letter case, when a status is created or renamed; existing data may contain duplicates or no name."
name: SortEnumType @cost(weight: "50")
}
"Raises the automatic event of a customer that belongs to an action (for example created, changed or deleted), so that the workflows that listen to it run. Use it after a write call that was sent with disableAutomaticWorkflows=true. The workflows run asynchronously; their result is not reported back, read the workflow queue and log (QueryWorkflowQueueEntries, QueryWorkflowLogEntries) for it. The action keys a kind of object supports are a catalog in the workflow API design document, not an enum, so new actions are added without a contract change. Errors: CUSTOMER_NOT_FOUND (the customer does not exist); WORKFLOW_ACTION_UNKNOWN (422, the key is not in the catalog of the customer); WORKFLOW_ACTION_NOT_AVAILABLE (422, the key is known, but the workflow engine has no such event for customers); WORKFLOWS_NOT_LICENSED (the license does not include workflows). - Request"
input TriggerCustomerActionEventCommandRequestInput {
"The ID of the customer."
customerId: ID!
"The key of the action whose automatic event is raised, for example created, changed or deleted. The keys a customer supports are listed in the workflow API design document."
actionKey: String!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Raises a manual workflow event for a customer. The workflows that listen to the event run asynchronously; their result is not reported back, read the workflow queue and log (QueryWorkflowQueueEntries, QueryWorkflowLogEntries) for it. Errors: CUSTOMER_NOT_FOUND (the customer does not exist); WORKFLOW_EVENT_NOT_FOUND (the event does not exist or belongs to another kind of object); WORKFLOWS_NOT_LICENSED (the license does not include workflows). - Request"
input TriggerCustomerWorkflowEventCommandRequestInput {
"The ID of the customer."
customerId: ID!
"The ID of the manual event. Must be an event of customers (see QueryCustomerManualWorkflowEvents)."
workflowEventId: ID!
"Suppresses the automatic workflow triggers that the changes of this call would raise on the customer or on objects it touches. The call itself still runs. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Raises the automatic event of a delivery note that belongs to an action (for example created, changed or deleted), so that the workflows that listen to it run. Use it after a write call that was sent with disableAutomaticWorkflows=true. The workflows run asynchronously; their result is not reported back, read the workflow queue and log (QueryWorkflowQueueEntries, QueryWorkflowLogEntries) for it. The action keys a kind of object supports are a catalog in the workflow API design document, not an enum, so new actions are added without a contract change. Errors: DeliveryNoteNotFound (the delivery note does not exist); WORKFLOW_ACTION_UNKNOWN (422, the key is not in the catalog of the delivery note); WORKFLOW_ACTION_NOT_AVAILABLE (422, the key is known, but the workflow engine has no such event for delivery notes); WorkflowsNotLicensed (the license does not include workflows). - Request"
input TriggerDeliveryNoteActionEventCommandRequestInput {
"The ID of the delivery note."
deliveryNoteId: ID!
"The key of the action whose automatic event is raised, for example created, changed or deleted. The keys a delivery note supports are listed in the workflow API design document."
actionKey: String!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Raises a manual workflow event for a delivery note. The workflows that listen to the event run asynchronously; their result is not reported back, read the workflow queue and log (QueryWorkflowQueueEntries, QueryWorkflowLogEntries) for it. Errors: DeliveryNoteNotFound (the delivery note does not exist); WorkflowEventNotFound (the event does not exist or belongs to another kind of object); WorkflowsNotLicensed (the license does not include workflows). - Request"
input TriggerDeliveryNoteWorkflowEventCommandRequestInput {
"The ID of the delivery note."
deliveryNoteId: ID!
"The ID of the manual event. Must be an event of delivery notes (see QueryDeliveryNoteManualWorkflowEvents)."
workflowEventId: ID!
"Suppresses the automatic workflow triggers that the changes of this call would raise on the delivery note or on objects it touches. The call itself still runs. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Raises the automatic event of a incoming invoice that belongs to an action (for example created, changed or deleted), so that the workflows that listen to it run. Use it after a write call that was sent with disableAutomaticWorkflows=true. The workflows run asynchronously; their result is not reported back, read the workflow queue and log (QueryWorkflowQueueEntries, QueryWorkflowLogEntries) for it. The action keys a kind of object supports are a catalog in the workflow API design document, not an enum, so new actions are added without a contract change. Errors: INCOMING_INVOICE_NOT_FOUND (the incoming invoice does not exist); WORKFLOW_ACTION_UNKNOWN (422, the key is not in the catalog of the incoming invoice); WORKFLOW_ACTION_NOT_AVAILABLE (422, the key is known, but the workflow engine has no such event for incoming invoices); WORKFLOWS_NOT_LICENSED (the license does not include workflows). - Request"
input TriggerIncomingInvoiceActionEventCommandRequestInput {
"The ID of the incoming invoice."
incomingInvoiceId: ID!
"The key of the action whose automatic event is raised, for example created, changed or deleted. The keys a incoming invoice supports are listed in the workflow API design document."
actionKey: String!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Triggers a manual workflow event for an incoming invoice. The workflows that listen to the event run asynchronously; their result is not reported back. - Request"
input TriggerIncomingInvoiceWorkflowEventCommandRequestInput {
"The ID of the incoming invoice."
incomingInvoiceId: ID!
"The ID of the manual workflow event. Must be an event of incoming invoices."
workflowEventId: ID!
"Suppresses the automatic workflow triggers that the changes of this call would raise on the incoming invoice or on objects it touches. The call itself still runs. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Raises the automatic event of a item that belongs to an action (for example created, changed or deleted), so that the workflows that listen to it run. Use it after a write call that was sent with disableAutomaticWorkflows=true. The workflows run asynchronously; their result is not reported back, read the workflow queue and log (QueryWorkflowQueueEntries, QueryWorkflowLogEntries) for it. The action keys a kind of object supports are a catalog in the workflow API design document, not an enum, so new actions are added without a contract change. Errors: ItemNotFound (the item does not exist); WORKFLOW_ACTION_UNKNOWN (422, the key is not in the catalog of the item); WORKFLOW_ACTION_NOT_AVAILABLE (422, the key is known, but the workflow engine has no such event for items); WorkflowsNotLicensed (the license does not include workflows). - Request"
input TriggerItemActionEventCommandRequestInput {
"The ID of the item."
itemId: ID!
"The key of the action whose automatic event is raised, for example created, changed or deleted. The keys a item supports are listed in the workflow API design document."
actionKey: String!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Raises a manual workflow event for a item. The workflows that listen to the event run asynchronously; their result is not reported back, read the workflow queue and log (QueryWorkflowQueueEntries, QueryWorkflowLogEntries) for it. Errors: ItemNotFound (the item does not exist); WorkflowEventNotFound (the event does not exist or belongs to another kind of object); WorkflowsNotLicensed (the license does not include workflows). - Request"
input TriggerItemWorkflowEventCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the manual event. Must be an event of items (see QueryItemManualWorkflowEvents)."
workflowEventId: ID!
"Suppresses the automatic workflow triggers that the changes of this call would raise on the item or on objects it touches. The call itself still runs. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Raises the automatic event of a payment transaction that belongs to an action (created or assigned), so that the workflows that listen to it run. Use it after a write call that was sent with disableAutomaticWorkflows=true. The workflows run asynchronously; their result is not reported back, read the workflow queue and log (QueryWorkflowQueueEntries, QueryWorkflowLogEntries) for it. The action keys a kind of object supports are a catalog in the workflow API design document, not an enum, so new actions are added without a contract change. Errors: PAYMENT_TRANSACTION_NOT_FOUND (the payment transaction was not found); PAYMENT_ACCOUNT_HIDDEN (the payment account is hidden; show it with 'ShowPaymentAccount' first); WORKFLOW_ACTION_UNKNOWN (the key is not in the catalog of the payment transaction); WORKFLOW_ACTION_NOT_AVAILABLE (the key is known, but the workflow engine has no such event for payment transactions); WORKFLOWS_NOT_LICENSED (the license does not include workflows). - Request"
input TriggerPaymentTransactionActionEventCommandRequestInput {
"The ID of the payment transaction."
paymentTransactionId: ID!
"The key of the action whose automatic event is raised: created or assigned. The keys a payment transaction supports are listed in the workflow API design document."
actionKey: String!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Raises a manual workflow event for a payment transaction. The workflows that listen to the event run asynchronously; their result is not reported back, read the workflow queue and log (QueryWorkflowQueueEntries, QueryWorkflowLogEntries) for it. Errors: PAYMENT_TRANSACTION_NOT_FOUND (the payment transaction was not found); PAYMENT_ACCOUNT_HIDDEN (the payment account is hidden; show it with 'ShowPaymentAccount' first); WORKFLOW_EVENT_NOT_FOUND (the event does not exist or belongs to another kind of object); WORKFLOWS_NOT_LICENSED (the license does not include workflows). - Request"
input TriggerPaymentTransactionWorkflowEventCommandRequestInput {
"The ID of the payment transaction."
paymentTransactionId: ID!
"The ID of the manual event. Must be an event of payment transactions (see QueryPaymentTransactionManualWorkflowEvents)."
workflowEventId: ID!
"Suppresses the automatic workflow triggers that the changes of this call would raise on the payment transaction or on objects it touches. The call itself still runs. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Raises the automatic workflow event of a purchase order that belongs to an action (for example created, released or changed), so that the workflows that react to it run. Use it after a write that was sent with disableAutomaticWorkflows=true; every write of purchase orders names the keys of the events it raises, or that it raises none. The workflows run asynchronously; their result is not reported back, read the workflow queue and log (QueryWorkflowQueueEntries, QueryWorkflowLogEntries) for it. The action keys a kind of record supports are a catalogue in the workflow API design document, not an enum, so new actions are added without a contract change. Errors arrive as GraphQL errors with the code in 'extensions.code'. Codes: PURCHASE_ORDER_NOT_FOUND (the order was not found); WORKFLOW_ACTION_UNKNOWN (the key is not in the catalogue of purchase orders); WORKFLOW_ACTION_NOT_AVAILABLE (the key is known, but the workflow engine has no such event for purchase orders); WORKFLOWS_NOT_LICENSED (the license does not include workflows). - Request"
input TriggerPurchaseOrderActionEventCommandRequestInput {
"The ID of the purchase order."
purchaseOrderId: ID!
"The key of the action whose automatic event is raised, for example created, released or changed. The keys a purchase order supports are listed in the workflow API design document."
actionKey: String!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Triggers a manual workflow event for a purchase order; 'QueryPurchaseOrderManualWorkflowEvents' lists the events. The workflows that react to the event run asynchronously; their result is not reported back, read the workflow queue and log (QueryWorkflowQueueEntries, QueryWorkflowLogEntries) for it. Errors arrive as GraphQL errors with the code in 'extensions.code'. Codes: PURCHASE_ORDER_NOT_FOUND (the order was not found); WORKFLOW_EVENT_NOT_FOUND (the event does not exist or belongs to another kind of record); WORKFLOWS_NOT_LICENSED (the license does not include workflows). - Request"
input TriggerPurchaseOrderWorkflowEventCommandRequestInput {
"The ID of the purchase order."
purchaseOrderId: ID!
"The ID of the manual workflow event. Must be an event of purchase orders."
workflowEventId: ID!
"Suppresses the automatic workflow triggers that the changes of this call would raise on the purchase order or on objects it touches. The call itself still runs. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Raises the automatic event of a return that belongs to an action (for example created, changed or deleted), so that the workflows that listen to it run. Use it after a write call that was sent with disableAutomaticWorkflows=true. The workflows run asynchronously; their result is not reported back, read the workflow queue and log (QueryWorkflowQueueEntries, QueryWorkflowLogEntries) for it. The action keys a kind of object supports are a catalog in the workflow API design document, not an enum, so new actions are added without a contract change. Errors: RETURN_NOT_FOUND (the return does not exist); WORKFLOW_ACTION_UNKNOWN (422, the key is not in the catalog of the return); WORKFLOW_ACTION_NOT_AVAILABLE (422, the key is known, but the workflow engine has no such event for returns); WORKFLOWS_NOT_LICENSED (the license does not include workflows). - Request"
input TriggerReturnActionEventCommandRequestInput {
"The ID of the return."
returnId: ID!
"The key of the action whose automatic event is raised, for example created, changed or deleted. The keys a return supports are listed in the workflow API design document."
actionKey: String!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Raises a manual workflow event for a return. The workflows that listen to the event run asynchronously; their result is not reported back, read the workflow queue and log (QueryWorkflowQueueEntries, QueryWorkflowLogEntries) for it. Errors: RETURN_NOT_FOUND (the return does not exist); WORKFLOW_EVENT_NOT_FOUND (the event does not exist or belongs to another kind of object); WORKFLOWS_NOT_LICENSED (the license does not include workflows). - Request"
input TriggerReturnWorkflowEventCommandRequestInput {
"The ID of the return."
returnId: ID!
"The ID of the manual event. Must be an event of returns (see QueryReturnManualWorkflowEvents)."
workflowEventId: ID!
"Suppresses the automatic workflow triggers that the changes of this call would raise on the return or on objects it touches. The call itself still runs. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Raises the automatic event of a sales invoice that belongs to an action (for example created, changed or deleted), so that the workflows that listen to it run. Use it after a write call that was sent with disableAutomaticWorkflows=true. The workflows run asynchronously; their result is not reported back, read the workflow queue and log (QueryWorkflowQueueEntries, QueryWorkflowLogEntries) for it. The action keys a kind of object supports are a catalog in the workflow API design document, not an enum, so new actions are added without a contract change. Errors: SALES_INVOICE_NOT_FOUND (the sales invoice does not exist); WORKFLOW_ACTION_UNKNOWN (422, the key is not in the catalog of the sales invoice); WORKFLOW_ACTION_NOT_AVAILABLE (422, the key is known, but the workflow engine has no such event for sales invoices); WORKFLOWS_NOT_LICENSED (the license does not include workflows). - Request"
input TriggerSalesInvoiceActionEventCommandRequestInput {
"The ID of the sales invoice."
salesInvoiceId: ID!
"The key of the action whose automatic event is raised, for example created, changed or deleted. The keys a sales invoice supports are listed in the workflow API design document."
actionKey: String!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Raises a manual workflow event for a sales invoice. The workflows that listen to the event run asynchronously; their result is not reported back, read the workflow queue and log (QueryWorkflowQueueEntries, QueryWorkflowLogEntries) for it. Errors: SALES_INVOICE_NOT_FOUND (the sales invoice does not exist); WORKFLOW_EVENT_NOT_FOUND (the event does not exist or belongs to another kind of object); WORKFLOWS_NOT_LICENSED (the license does not include workflows). - Request"
input TriggerSalesInvoiceWorkflowEventCommandRequestInput {
"The ID of the sales invoice."
salesInvoiceId: ID!
"The ID of the manual event. Must be an event of sales invoices (see QuerySalesInvoiceManualWorkflowEvents)."
workflowEventId: ID!
"Suppresses the automatic workflow triggers that the changes of this call would raise on the sales invoice or on objects it touches. The call itself still runs. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Raises the automatic event of a sales order that belongs to an action (for example created, changed or deleted), so that the workflows that listen to it run. Use it after a write call that was sent with disableAutomaticWorkflows=true. The workflows run asynchronously; their result is not reported back, read the workflow queue and log (QueryWorkflowQueueEntries, QueryWorkflowLogEntries) for it. The action keys a kind of object supports are a catalog in the workflow API design document, not an enum, so new actions are added without a contract change. Errors: SalesOrderNotFound (the sales order does not exist); WORKFLOW_ACTION_UNKNOWN (422, the key is not in the catalog of the sales order); WORKFLOW_ACTION_NOT_AVAILABLE (422, the key is known, but the workflow engine has no such event for sales orders); WorkflowsNotLicensed (the license does not include workflows). - Request"
input TriggerSalesOrderActionEventCommandRequestInput {
"The ID of the sales order."
salesOrderId: ID!
"The key of the action whose automatic event is raised, for example created, changed or deleted. The keys a sales order supports are listed in the workflow API design document."
actionKey: String!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Raises a manual workflow event for a sales order. The workflows that listen to the event run asynchronously; their result is not reported back, read the workflow queue and log (QueryWorkflowQueueEntries, QueryWorkflowLogEntries) for it. Errors: SalesOrderNotFound (the sales order does not exist); WorkflowEventNotFound (the event does not exist or belongs to another kind of object); WorkflowsNotLicensed (the license does not include workflows). - Request"
input TriggerSalesOrderWorkflowEventCommandRequestInput {
"The ID of the sales order."
salesOrderId: ID!
"The ID of the manual event. Must be an event of sales orders (see QuerySalesOrderManualWorkflowEvents)."
workflowEventId: ID!
"Suppresses the automatic workflow triggers that the changes of this call would raise on the sales order or on objects it touches. The call itself still runs. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Raises an action event of a quotation. Errors: SalesQuotationNotFound, WORKFLOW_ACTION_UNKNOWN, WORKFLOW_ACTION_NOT_AVAILABLE, WorkflowsNotLicensed. - Request"
input TriggerSalesQuotationActionEventCommandRequestInput {
"The ID of the sales quotation."
salesQuotationId: ID!
"The action key, for example created, changed or deleted. The supported keys are listed in the workflow API design document."
actionKey: String!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Raises a manual workflow event for a sales quotation. Errors: SalesQuotationNotFound, WorkflowEventNotFound, WorkflowsNotLicensed. - Request"
input TriggerSalesQuotationWorkflowEventCommandRequestInput {
"The ID of the sales quotation."
salesQuotationId: ID!
"The ID of the manual event. Must be an event of sales quotations (see QuerySalesQuotationManualWorkflowEvents)."
workflowEventId: ID!
"Suppresses the automatic workflows that this call would raise. Defaults to false."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Removes a purchase order from an incoming invoice: all line items from this purchase order are deleted together with their additional costs. - Request"
input UnassignIncomingInvoicePurchaseOrderCommandRequestInput {
"The ID of the incoming invoice."
incomingInvoiceId: ID!
"The ID of the purchase order."
purchaseOrderId: ID!
}
"Removes one payment from a payment transaction: the payment is deleted, also when it existed before and was only linked, for example a payment from the shop. The fees of the transaction booked as order costs are removed with it, also when other payments of the transaction remain. The payment status of the document can change; a payout that is removed can make it fully paid and start its workflows. Only payments of sales documents can be removed here; payments of incoming invoices are changed there. Errors: PAYMENT_TRANSACTION_NOT_FOUND (the payment transaction was not found); PAYMENT_ACCOUNT_HIDDEN (the payment account is hidden; show it with 'ShowPaymentAccount' first); PAYMENT_NOT_FOUND (the payment was not found); PAYMENT_NOT_ASSIGNED_TO_TRANSACTION (the payment does not belong to the transaction); PAYMENT_NOT_UNASSIGNABLE (the payment is not a payment of a sales document, for example a payment of an incoming invoice); PAYMENT_CANNOT_BE_DELETED (the payment cannot be deleted. The error lists the blocker codes, the same as for 'DeletePayment': PAYMENT_BOOKED_BY_REFUND, PAYMENT_IS_VOUCHER_REDEMPTION). - Request"
input UnassignPaymentTransactionCommandRequestInput {
"The ID of the payment transaction."
paymentTransactionId: ID!
"The ID of the payment to remove (see 'QueryPaymentTransactionAssignmentsByPaymentTransactionId')."
paymentId: ID!
"Whether to suppress the automatic workflows this call would start: the events of the payment transaction and, when a sales order or a sales invoice becomes fully paid, its workflows. Events for other systems are still published. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Removes the block of a customer. A customer that is not blocked stays as it is. - Request"
input UnblockCustomerCommandRequestInput {
"The ID of the customer."
customerId: ID!
"Suppresses the automatic workflow triggers of this call (the customer event 'changed'). Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Takes back the cancellation of a sales quotation. Fails with extensions.code SalesQuotationCannotBeUncancelled; extensions.blockers says why. - Request"
input UndoSalesQuotationCancellationCommandRequestInput {
"The ID of the quotation. Fails with a GraphQL error whose extensions.code is SalesQuotationNotFound."
salesQuotationId: ID!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Takes a payment transaction back into the matching and the default list. Unignoring a transaction that is not ignored does nothing and answers 204. Errors: PAYMENT_TRANSACTION_NOT_FOUND (the payment transaction was not found); PAYMENT_ACCOUNT_HIDDEN (the payment account is hidden; show it with 'ShowPaymentAccount' first). - Request"
input UnignorePaymentTransactionCommandRequestInput {
"The ID of the payment transaction."
paymentTransactionId: ID!
"Whether to suppress the automatic workflows this call would start. Events for other systems are still published. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"An entry of the unit code catalogue: a code of UN/CEFACT Recommendation 20 (units of measurement) or 21 (types of packages), as used on e-invoices."
input UnitCodeFilterInput {
and: [UnitCodeFilterInput!]
or: [UnitCodeFilterInput!]
"The unit code in canonical form: uppercase, 2 or 3 characters."
code: StringOperationFilterInput @cost(weight: "15")
"The name of the unit as kept in the catalogue, in no particular language."
name: StringOperationFilterInput @cost(weight: "50")
}
"An entry of the unit code catalogue: a code of UN/CEFACT Recommendation 20 (units of measurement) or 21 (types of packages), as used on e-invoices."
input UnitCodeSortInput {
"The unit code in canonical form: uppercase, 2 or 3 characters."
code: SortEnumType @cost(weight: "15")
"The name of the unit as kept in the catalogue, in no particular language."
name: SortEnumType @cost(weight: "50")
}
"Unlocks the automatic, unattended import of a payment account, for example after the credentials were renewed in the desktop client. Unlocking an import that is not locked does nothing and answers 204. Works on a hidden account too. Errors: PAYMENT_ACCOUNT_NOT_FOUND (the payment account was not found). - Request"
input UnlockPaymentAccountAutoImportCommandRequestInput {
"The ID of the payment account."
paymentAccountId: ID!
"Whether to suppress the automatic workflows this call would start. Events for other systems are still published. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes an additional cost type. Only the fields that are sent change. The two flags can only change while the type is not in use. - Request"
input UpdateAdditionalCostTypeCommandRequestInput {
"The ID of the additional cost type."
additionalCostTypeId: ID!
"Name of the type, unique regardless of letter case. 1 to 255 characters."
name: String
"Whether costs of this type are part of the amount payable to the supplier."
isPayableToSupplier: Boolean
"Whether costs of this type are added to the purchase price of the items."
affectsPurchasePrice: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the number, the expected delivery date or the note of an advance shipping notice. Only the properties that are sent change. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: an invalid request, for example an empty number, a property that cannot be cleared sent as null or a text with control characters; ADVANCE_SHIPPING_NOTICE_NOT_FOUND (the advance shipping notice was not found); ADVANCE_SHIPPING_NOTICE_NUMBER_DUPLICATE (another notice of the order has the number); ADVANCE_SHIPPING_NOTICE_MANAGED_BY_FULFILLMENT_NETWORK (the notice belongs to a fulfillment network inbound of another user and is read-only). - Request"
input UpdateAdvanceShippingNoticeCommandRequestInput {
"The ID of the advance shipping notice."
advanceShippingNoticeId: ID!
"The changes."
changes: AdvanceShippingNoticeChangesInput!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a line item of an advance shipping notice. Only the properties that are sent change; the item cannot be changed. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: an invalid request, for example a property that cannot be cleared sent as null or a text with control characters; ADVANCE_SHIPPING_NOTICE_NOT_FOUND or ADVANCE_SHIPPING_NOTICE_LINE_ITEM_NOT_FOUND (the notice or the line item was not found); ADVANCE_SHIPPING_NOTICE_PACKAGE_NUMBER_UNKNOWN (no package of the notice has the package number); ADVANCE_SHIPPING_NOTICE_QUANTITY_OUT_OF_RANGE or ADVANCE_SHIPPING_NOTICE_QUANTITY_NOT_WHOLE (the quantity is below 0, 10,000,000 or more, or not a whole number for an item that is not divisible); ADVANCE_SHIPPING_NOTICE_SERIAL_NUMBER_COUNT_MISMATCH (serial numbers were sent and their count is not the quantity); ADVANCE_SHIPPING_NOTICE_SERIAL_NUMBER_DUPLICATE (a serial number appears twice in the notice); ADVANCE_SHIPPING_NOTICE_BATCH_NOT_ALLOWED, ADVANCE_SHIPPING_NOTICE_SHELF_LIFE_EXPIRATION_DATE_NOT_ALLOWED or ADVANCE_SHIPPING_NOTICE_SERIAL_NUMBERS_NOT_ALLOWED (the item is not tracked that way); ADVANCE_SHIPPING_NOTICE_MANAGED_BY_FULFILLMENT_NETWORK (the notice belongs to a fulfillment network inbound of another user and is read-only). - Request"
input UpdateAdvanceShippingNoticeLineItemCommandRequestInput {
"The ID of the advance shipping notice."
advanceShippingNoticeId: ID!
"The ID of the line item."
lineItemId: ID!
"The changes."
changes: AdvanceShippingNoticeLineItemChangesInput!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a package of an advance shipping notice. Only the properties that are sent change; a new package number moves the line items of the package with it. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: an invalid request, for example a property that cannot be cleared sent as null or a text with control characters; ADVANCE_SHIPPING_NOTICE_NOT_FOUND or ADVANCE_SHIPPING_NOTICE_PACKAGE_NOT_FOUND (the notice or the package was not found); ADVANCE_SHIPPING_NOTICE_PACKAGE_NUMBER_DUPLICATE (another package of the notice has the package number); ADVANCE_SHIPPING_NOTICE_WEIGHT_OUT_OF_RANGE (the weight is below 0 or above 1,000,000); ADVANCE_SHIPPING_NOTICE_DIMENSION_OUT_OF_RANGE (the width, height or depth is below 0 or above 1,000,000); ADVANCE_SHIPPING_NOTICE_IDENTIFIER_EMPTY (an identifier has an empty name or value); ADVANCE_SHIPPING_NOTICE_MANAGED_BY_FULFILLMENT_NETWORK (the notice belongs to a fulfillment network inbound of another user and is read-only). - Request"
input UpdateAdvanceShippingNoticePackageCommandRequestInput {
"The ID of the advance shipping notice."
advanceShippingNoticeId: ID!
"The ID of the package."
packageId: ID!
"The changes."
changes: AdvanceShippingNoticePackageChangesInput!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a child component of a bill of materials. The input is a one-of: exactly one variant is sent and it must be the type of the child component. Only the properties that are sent change. The type cannot be changed. Errors: the request is invalid; BillOfMaterialsComponentNotFound (the child component was not found); BillOfMaterialsChildComponentTypeMismatch (the variant is not the type of the child component); BillOfMaterialsReadOnly (the bill of materials cannot be changed); QuantityDeviationConfigurationNotModifiable (the quantity deviation configuration cannot be changed); a referenced measurement unit or operation step was not found. - Request"
input UpdateBillOfMaterialsChildComponentCommandRequestInput {
"The ID of the child component to change."
billOfMaterialsChildComponentId: ID!
"The changes. Exactly one variant, the type of the child component."
changes: UpdateBillOfMaterialsChildComponentInput!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"The changes to a child component of a bill of materials. Polymorphic: exactly one variant is sent, and it has to be the type of the child component (the type cannot be changed). A property that is omitted stays as it is."
input UpdateBillOfMaterialsChildComponentInput @oneOf {
"Changes an item of a bill of materials. Only the properties that are sent change. The underlying item and the parent component cannot be changed here; the parent component and the position are changed by moving the item."
billOfMaterialsItemChanges: BillOfMaterialsItemChangesInput
}
"Changes a bill of materials. Only the properties that are sent change. The production item cannot be changed, and the components are changed with the commands for bill of materials components. Only drafts can be changed. Errors: the request is invalid; BillOfMaterialsNotFound (the bill of materials was not found); BillOfMaterialsReadOnly (the bill of materials is not a draft). - Request"
input UpdateBillOfMaterialsCommandRequestInput {
"The ID of the bill of materials to change."
billOfMaterialsId: ID!
"The new name of the bill of materials. Must not consist of white space only."
name: String
"The new description of the bill of materials. Sending null or a value that consists of white space only removes the description."
description: String
"The new requirements for the production input of all components of this bill of materials regarding the shelf life end dates of the stock accounts to be debited. Must not be set to a value other than None if no item of the bill of materials has stock keeping with shelf life end date configured."
componentPostingsShelfLifeEndDateRequirements: OverallComponentPostingsInventoryAccountingDataRequirements
"The new requirements for the production input of all components of this bill of materials regarding the batch numbers of the stock accounts to be debited. Must not be set to a value other than None if no item of the bill of materials has stock keeping with batch number configured."
componentPostingsBatchNumberRequirements: OverallComponentPostingsInventoryAccountingDataRequirements
"The new way the shelf life end date of the produced item is calculated after completing a lot. Sending null means no shelf life end date is calculated."
shelfLifeEndDateGenerationMode: ShelfLifeEndDateGenerationMode
"The new time span that is added when calculating the shelf life end date of the produced item after completing a lot. Sending null removes the time span. Required when ShelfLifeEndDateGenerationMode is ProductionDate."
additionalShelfLifeEndDateTime: TimeSpan
"How far the actually used quantity of the items may exceed their planned quantity, replacing the current configuration as a whole. Sending null means it must not exceed it."
upwardQuantityDeviation: QuantityDeviationConfigurationInput
"How far the actually used quantity of the items may fall below their planned quantity, replacing the current configuration as a whole. Sending null means it must not fall below it."
downwardQuantityDeviation: QuantityDeviationConfigurationInput
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the name and the sort number of a category. The name is the name of the default texts and the same as setting the default text of the default language. Omitted fields stay as they are. Which parent a category has is changed with 'MoveCategory', the sales channels with their own operations. - Request"
input UpdateCategoryCommandRequestInput {
"The ID of the category."
categoryId: ID!
"The new name of the category in the default language, at most 255 characters. Omitted leaves it as it is."
name: String
"The new position among the siblings, 0 to 65000. Omitted leaves it as it is. Use 'SetCategoryChildOrder' to number all siblings at once."
sortNumber: Int
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the options and the display type of a characteristic. Only the properties that are sent change. Names have 'PutCharacteristicName' and 'DeleteCharacteristicName', groups 'AddCharacteristicToGroup' and 'RemoveCharacteristicFromGroup', the order 'SetCharacteristicOrder' and 'ResetCharacteristicOrder'. Changing 'isVisibleInShop' or 'isEbayAttribute' has consequences in the sales channels: the characteristic is sent to the online shops or withdrawn from them, and eBay listings take it over or drop it. Errors: CHARACTERISTIC_NOT_FOUND (no characteristic has this ID); CHARACTERISTIC_DISPLAY_TYPE_INVALID (the display type is not one of the known values). - Request"
input UpdateCharacteristicCommandRequestInput {
"The ID of the characteristic to change."
characteristicId: ID!
"How the values are presented to customers in the online shop: TEXT, SELECT_BOX, IMAGE or IMAGE_AND_TEXT. Omitted leaves it as it is. Any other value is refused (error code CHARACTERISTIC_DISPLAY_TYPE_INVALID)."
displayType: String
"Allows or forbids several values per item."
isMultiSelect: Boolean
"Shows or hides the characteristic in the online shop. Hiding it removes it from the shops that received it."
isVisibleInShop: Boolean
"Transfers the characteristic to eBay as an item specific or stops that."
isEbayAttribute: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renames a characteristic group. Errors: CHARACTERISTIC_GROUP_NOT_FOUND (no group has this ID), CHARACTERISTIC_GROUP_NAME_REQUIRED, CHARACTERISTIC_GROUP_NAME_ALREADY_EXISTS as for 'CreateCharacteristicGroup'. - Request"
input UpdateCharacteristicGroupCommandRequestInput {
"The ID of the group to change."
characteristicGroupId: ID!
"The new name of the group."
name: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the texts of a characteristic value in one or several languages, in one step. Only the listed languages change, and in each entry only the properties that are sent (a text sent as null is removed); nothing that is left out is deleted. Remove the texts of a language with 'DeleteCharacteristicValueText'. The order of the values has 'SetCharacteristicValueOrder'. Errors: CHARACTERISTIC_NOT_FOUND (no characteristic has this ID); CHARACTERISTIC_VALUE_NOT_FOUND (the characteristic has no value with this ID); CHARACTERISTIC_VALUE_NAME_REQUIRED (the language has no texts yet and no name is sent, or the name is empty), CHARACTERISTIC_LANGUAGE_NOT_FOUND (a language is unknown or not active), CHARACTERISTIC_VALUE_URL_PATH_INVALID (a URL path contains characters that are not allowed, starts or ends with '-' or contains '--'), CHARACTERISTIC_VALUE_URL_PATH_FORBIDDEN_SEGMENT (a URL path contains a reserved segment), CHARACTERISTIC_VALUE_NAME_ALREADY_EXISTS (another value of the characteristic has this name in the same language, regardless of upper and lower case), CHARACTERISTIC_VALUE_URL_PATH_ALREADY_EXISTS (another value uses this URL path in the same language). - Request"
input UpdateCharacteristicValueCommandRequestInput {
"The ID of the characteristic."
characteristicId: ID!
"The ID of the characteristic value."
characteristicValueId: ID!
"The changes of the texts, one entry per language. Only the listed languages change, and in each only the properties that are sent; the other languages stay as they are."
texts: [CharacteristicValueTextChangeInput]
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a company. Only the properties that are sent change. The address and the bank account are replaced as a whole when sent. Changing the country of the address adds an entry for the new country to the VAT IDs; the old entry stays. Changing 'isSmallBusiness' changes how tax is determined for later documents. - Request"
input UpdateCompanyCommandRequestInput {
"The ID of the company."
companyId: ID!
"The new name of the company, at most 255 characters. It must be unique among the active companies."
name: String
"The owner or managing director, at most 255 characters."
owner: String
"The postal address."
address: CompanyAddressInput
"Phone number, at most 50 characters."
phoneNumber: String
"Fax number, at most 30 characters."
faxNumber: String
"E-mail address of the company, at most 255 characters, exactly one '@'."
emailAddress: String
"Website, at most 255 characters."
website: String
"The national tax number, at most 25 characters."
taxNumber: String
"Whether the company is a small business under the small-business scheme."
isSmallBusiness: Boolean
"The SEPA creditor identifier, at most 35 characters."
sepaCreditorId: String
"The PayPal account, at most 250 characters."
payPalEmailAddress: String
"The bank account."
bankAccount: CompanyBankAccountInput
"The DHL Intraship customer number, at most 15 characters."
dhlIntrashipCustomerId: String
"The UPS customer number, at most 15 characters."
upsCustomerId: String
"The GLN base number, 7 to 9 digits."
glnBaseNumber: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a ConfigurableItem. Every field is optional; a field that is omitted stays as it is. An object that is sent replaces the whole object. A field the kind does not have, the kind of the item itself and the dimension set of a subset item cannot be changed here and are rejected with 400. Sending the route of another kind than the item has is answered with 409. - Request"
input UpdateConfigurableItemCommandRequestInput {
"The ID of the item."
itemId: ID!
"Name of the item in the default language. Further languages and sales channel texts are the descriptions of the item."
name: String
"The identifiers of the item. The item number (SKU) is mandatory and unique. Replaced as a whole."
identifiers: TradeItemIdentifiersInput
"The ID of the product group."
productGroupId: ID
"The ID of the manufacturer."
manufacturerId: ID
"The ID of the item condition, for example new or used."
conditionId: ID
"The ID of the delivery status of the item (the master data of delivery statuses, for example \"in stock\" or \"ships in 3 days\")."
deliveryStatusId: ID
"The ID of the tax class. When omitted the item gets the company default. The value must reference an existing tax class."
taxClassId: ID
"The ID of the shipping class."
shippingClassId: ID
"Outer dimensions as shipped."
dimensions: ItemDimensionsInput
"Weights."
weights: ItemWeightsInput
"Customs information."
customs: ItemCustomsInput
"Sales unit and content with its base price."
units: ItemUnitsInput
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the name and the description of a cross-selling group in the default language. Only the properties that are sent change. A description that is sent as null or empty is removed. Other languages are changed with SetCrossSellingGroupTranslation. Errors: errorCode is CROSS_SELLING_GROUP_NOT_FOUND (no group has this ID); CROSS_SELLING_GROUP_NAME_REQUIRED, CROSS_SELLING_GROUP_NAME_TOO_LONG (the name is null, empty, only spaces, or has more than 255 characters); CROSS_SELLING_GROUP_DESCRIPTION_TOO_LONG (more than 255 characters); CROSS_SELLING_GROUP_NAME_ALREADY_EXISTS (another group has the same name in the default language, ignoring upper and lower case). - Request"
input UpdateCrossSellingGroupCommandRequestInput {
"The ID of the cross-selling group to change."
crossSellingGroupId: ID!
"The new name in the default language. If omitted, the name stays unchanged. If given: Leading and trailing spaces are removed. The name must not be null, empty or consist only of spaces and has at most 255 characters. It must be unique among the cross-selling groups, ignoring upper and lower case."
name: String
"The new description in the default language. If omitted, it stays unchanged; null or an empty text removes it. At most 255 characters."
description: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes how a currency is named and written. Only the properties that are sent change. The code and the exchange rate cannot be changed here: the code never changes after creation, the exchange rate has its own commands ('SetCurrencyExchangeRate', 'RefreshCurrencyExchangeRates'). - Request"
input UpdateCurrencyCommandRequestInput {
"The currency code. A standard currency uses its ISO 4217 alpha-3 code in capitals ('EUR'); a currency defined by the tenant uses a code with the prefix 'x-' in lower case ('x-loyalty'). Requests are matched ignoring case, responses always carry the canonical spelling."
currencyCode: String!
"The new display name, 1 to 20 characters."
name: String
"The new currency symbol as plain text, 1 to 255 characters."
symbol: String
"The new placement of the symbol."
symbolPlacement: CurrencySymbolPlacement
"The new decimal separator, exactly one character."
decimalSeparator: String
"The new thousands separator, at most one character. An empty text removes it."
thousandsSeparator: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes an address of a customer. Only what is sent changes. A billing address that is the default keeps its type. - Request"
input UpdateCustomerAddressCommandRequestInput {
"The ID of the customer."
customerId: ID!
"The ID of the address."
addressId: ID!
"The use of the address. A changed type makes the address a non-default address of the new type."
type: CustomerAddressType
"The company name, at most 128 characters. An empty text removes the value."
companyName: String
"An addition to the company name, at most 60 characters. An empty text removes the value."
companyAddition: String
"The salutation, at most 30 characters. An empty text removes the value."
salutation: String
"The academic title, at most 64 characters. An empty text removes the value."
title: String
"The first name, at most 255 characters. An empty text removes the value."
firstName: String
"The last name, at most 255 characters. An empty text removes the value."
lastName: String
"Street and house number, at most 255 characters. An empty text removes the value."
street: String
"An addition to the address, at most 255 characters. An empty text removes the value."
addressAddition: String
"The postal code, at most 24 characters. An empty text removes the value."
postalCode: String
"The city, at most 255 characters. An empty text removes the value."
city: String
"The state or region, at most 255 characters. An empty text removes the value."
state: String
"The country as ISO 3166-1 alpha-2 code, 2 characters."
countryCode: String
"The email address, at most 255 characters. An empty text removes the value."
email: String
"The phone number, at most 30 characters. An empty text removes the value."
phone: String
"The mobile number, at most 30 characters. An empty text removes the value."
mobile: String
"The fax number, at most 30 characters. An empty text removes the value."
fax: String
"The post number for parcel lockers, at most 255 characters. An empty text removes the value."
postId: String
"The VAT identification number, at most 20 characters. An empty text removes the value."
vatId: String
"The Global Location Number, at most 13 characters. An empty text removes the value."
gln: String
"Suppresses the automatic workflow triggers of this call (the customer event 'changed'). Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a bank account of a customer. Only what is sent changes. - Request"
input UpdateCustomerBankAccountCommandRequestInput {
"The ID of the customer."
customerId: ID!
"The ID of the bank account."
bankAccountId: ID!
"The account holder, 1 to 255 characters. It cannot be empty."
accountHolder: String
"The name of the bank, at most 255 characters. An empty text removes the value."
bankName: String
"The IBAN, at most 34 characters, with a valid check sum. Spaces are removed. An empty text removes the value."
iban: String
"The BIC, 8 or 11 characters. An empty text removes the value."
bic: String
"The national bank code for accounts without IBAN, at most 32 characters. An empty text removes the value."
bankCode: String
"The national account number for accounts without IBAN, at most 32 characters. An empty text removes the value."
accountNumber: String
"Suppresses the automatic workflow triggers of this call (the customer event 'changed'). Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renames a customer category. - Request"
input UpdateCustomerCategoryCommandRequestInput {
"The ID of the customer category."
customerCategoryId: ID!
"The name, 1 to 128 characters, unique (not case-sensitive)."
name: String
"Suppresses the automatic workflow triggers of this call. Customer categories raise no workflow event today; the parameter keeps calls stable when one is added. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the master data of a customer. Only what is sent changes. Addresses, the blocked state and the parts of the customer have their own operations. - Request"
input UpdateCustomerCommandRequestInput {
"The ID of the customer."
customerId: ID!
"The customer number, at most 30 characters, unique within the tenant. It cannot be empty."
number: String
"The debtor number for accounting. Null removes the value."
debtorNumber: Int
"The customer group."
customerGroupId: ID
"The customer category. Null removes the value."
customerCategoryId: ID
"The customer print text set that documents of this customer print. Null removes the assignment (errorCode is CUSTOMER_PRINT_TEXT_NOT_FOUND)."
customerPrintTextId: ID
"The own company the customer belongs to. Null removes the value."
companyId: ID
"The language as BCP 47 language tag, for example de or de-AT: language subtag in lower case, region subtag in upper case. Case does not matter on input. Wawi currently holds only the two-letter language subtag. It must be a language used in Wawi. An empty text removes the value."
languageTag: String
"The payment terms. Only the parts that are sent change."
paymentTerms: CustomerPaymentTermsChangesInput
"The discount in percent, 0 to 100."
discountPercent: Decimal
"The credit limit in the default currency of the tenant, a whole amount greater than 0. Null removes the value."
creditLimit: Decimal
"Where the first contact came from, at most 255 characters. An empty text removes the value."
origin: String
"The date of birth. Only the date part is stored. Null removes the value."
birthDate: DateTime
"The website, at most 255 characters. An empty text removes the value."
website: String
"The tax number, at most 255 characters. An empty text removes the value."
taxNumber: String
"The commercial register number, at most 255 characters. An empty text removes the value."
commercialRegisterNumber: String
"Since when the customer exists."
customerSince: DateTime
"Suppresses the automatic workflow triggers of this call (the customer event 'changed'). Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a contact of a customer. Only what is sent changes. - Request"
input UpdateCustomerContactCommandRequestInput {
"The ID of the customer."
customerId: ID!
"The ID of the contact."
contactId: ID!
"The salutation, at most 255 characters. An empty text removes the value."
salutation: String
"The first name, 1 to 255 characters. It cannot be empty."
firstName: String
"The last name, 1 to 64 characters. It cannot be empty."
lastName: String
"The department, at most 255 characters. An empty text removes the value."
department: String
"The email address, at most 255 characters. An empty text removes the value."
email: String
"The phone number, at most 32 characters. An empty text removes the value."
phone: String
"The mobile number, at most 32 characters. An empty text removes the value."
mobile: String
"The fax number, at most 32 characters. An empty text removes the value."
fax: String
"Suppresses the automatic workflow triggers of this call (the customer event 'changed'). Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a customer group. Only what is sent changes. - Request"
input UpdateCustomerGroupCommandRequestInput {
"The ID of the customer group."
customerGroupId: ID!
"The name, 1 to 255 characters, unique (not case-sensitive)."
name: String
"The discount in percent, 0 to 100."
discountPercent: Decimal
"Whether online shops show net prices."
displaysNetPrices: Boolean
"The customer print text set of the group. Null removes the assignment (errorCode is CUSTOMER_PRINT_TEXT_NOT_FOUND)."
customerPrintTextId: ID
"Suppresses the automatic workflow triggers of this call. Customer groups raise no workflow event today; the parameter keeps calls stable when one is added. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a note of a customer. Only what is sent changes. - Request"
input UpdateCustomerNoteCommandRequestInput {
"The ID of the customer."
customerId: ID!
"The ID of the note."
noteId: ID!
"The text, not empty."
text: String
"The kind of note."
type: CustomerNoteType
"A sales order of this customer the note is about. Null removes the link."
salesOrderId: ID
"Suppresses the automatic workflow triggers of this call (the customer event 'changed'). Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renames a customer print text. - Request"
input UpdateCustomerPrintTextCommandRequestInput {
"The ID of the customer print text."
customerPrintTextId: ID!
"The new name, 1 to 255 characters."
name: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the texts of a customer print text in one language. Only the texts that are sent are changed: a text that is left out stays as it is, a text sent as null or empty is cleared. The language is created when the customer print text has no texts in it yet. A language without any text after the change is removed, like 'RemoveCustomerPrintTextTranslation'. Idempotent. - Request"
input UpdateCustomerPrintTextTranslationCommandRequestInput {
"The ID of the customer print text."
customerPrintTextId: ID!
"The language as BCP 47 tag, for example de or de-AT; case is not significant. It must be an active language."
languageTag: String!
"Printed on the invoice. Plain text. Left out means unchanged; null or empty clears it."
invoiceText: String
"Printed on the sales order and on the pick document of the order. Plain text. Left out means unchanged; null or empty clears it."
salesOrderText: String
"Printed on the quotation. Plain text. Left out means unchanged; null or empty clears it."
quotationText: String
"Printed on the invoice correction (credit note). Plain text. Left out means unchanged; null or empty clears it."
invoiceCorrectionText: String
"Printed on the delivery note. Plain text. Left out means unchanged; null or empty clears it."
deliveryNoteText: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Updates a custom field. The data type and the entity type cannot be changed. - Request"
input UpdateCustomFieldCommandRequestInput {
"The ID of the custom field to update."
customFieldId: ID!
"The name of the field. It must be unique among the fields of the same entity type, ignoring letter case."
name: String
"An internal description of the field. Null removes the description."
description: String
"The name of the group the field is displayed under. A moved field is placed at the end of the new group unless 'sortOrder' is given in the same request. A name that matches an existing group of the same entity type apart from letter case uses the existing spelling."
groupName: String
"Where user interfaces show the field. Not available for sales orders and sales order line items. Known keys: 'GENERAL', 'CUSTOM_FIELDS_TAB'. New keys can be added; handle an unknown key as not known, never as a failure."
displayLocation: String
"Indicates that a value is expected for this field. A hint for user interfaces, not enforced by the API."
isRequired: Boolean
"Indicates that user interfaces hide the field."
isHidden: Boolean
"The new position within the group, starting at 1; a larger value places the field at the end. Other fields of the group move accordingly."
sortOrder: Int
"Replaces the product group restriction, which only restricts the field in user interfaces. Only for item fields. Both properties must be given."
productGroupRestriction: ProductGroupRestrictionInput
"If true, automatic workflows are not triggered by this call."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the note of a delivery note. Only the properties that are sent change; sending null clears the note. errorCode is one of: DELIVERY_NOTE_NOT_FOUND (the delivery note was not found); DELIVERY_NOTE_HANDLED_BY_FULFILLMENT_NETWORK (the delivery note is handled by the JTL Fulfillment Network and cannot be changed here). - Request"
input UpdateDeliveryNoteCommandRequestInput {
"The ID of the delivery note."
deliveryNoteId: ID!
"A free note."
note: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the note of a delivery note line item. The quantity cannot be changed. Only the properties that are sent change; sending null clears the note. errorCode is one of: DELIVERY_NOTE_NOT_FOUND (the delivery note was not found); DELIVERY_NOTE_LINE_ITEM_NOT_FOUND (the line item was not found on the delivery note); DELIVERY_NOTE_HANDLED_BY_FULFILLMENT_NETWORK (the delivery note is handled by the JTL Fulfillment Network and cannot be changed here). - Request"
input UpdateDeliveryNoteLineItemCommandRequestInput {
"The ID of the delivery note."
deliveryNoteId: ID!
"The ID of the delivery note line item."
lineItemId: ID!
"A free note."
note: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a DivisibleStockItem. Every field is optional; a field that is omitted stays as it is. An object that is sent replaces the whole object. A field the kind does not have, the kind of the item itself and the dimension set of a subset item cannot be changed here and are rejected with 400. Sending the route of another kind than the item has is answered with 409. - Request"
input UpdateDivisibleStockItemCommandRequestInput {
"The ID of the item."
itemId: ID!
"Name of the item in the default language. Further languages and sales channel texts are the descriptions of the item."
name: String
"The identifiers of the item. The item number (SKU) is mandatory and unique. Replaced as a whole."
identifiers: TradeItemIdentifiersInput
"The ID of the product group."
productGroupId: ID
"The ID of the manufacturer."
manufacturerId: ID
"The ID of the item condition, for example new or used."
conditionId: ID
"The ID of the delivery status of the item (the master data of delivery statuses, for example \"in stock\" or \"ships in 3 days\")."
deliveryStatusId: ID
"The ID of the tax class. When omitted the item gets the company default. The value must reference an existing tax class."
taxClassId: ID
"The ID of the shipping class."
shippingClassId: ID
"Outer dimensions as shipped."
dimensions: ItemDimensionsInput
"Weights."
weights: ItemWeightsInput
"Customs information."
customs: ItemCustomsInput
"Sales unit and content with its base price."
units: ItemUnitsInput
"Settings of the stock management, replaced as a whole."
stockManagement: StockManagementInput
"What the stock postings carry to trace the lots."
lotTracking: LotTrackingType
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a dunning level. Only the properties that are sent change. Notices that were already issued keep the values they were issued with. The scope and the level number cannot be changed. Renaming a level changes which output templates are used for its dunning letters. - Request"
input UpdateDunningLevelCommandRequestInput {
"The ID of the dunning level."
dunningLevelId: ID!
"The new name, 1 to 255 characters."
name: String
"The new payment term in days, 1 to 9999."
paymentTermDays: Int
"The new grace period in days, 0 to 9999."
gracePeriodDays: Int
"The new fee, 0 or more, at most two decimal places."
flatFee: Decimal
"The new yearly interest rate in percent, 0 to 100."
annualInterestRatePercent: Decimal
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the payment due date or the comment of a dunning notice. Only the properties that are sent change. Only the current notice of an open invoice can be changed. - Request"
input UpdateDunningNoticeCommandRequestInput {
"The ID of the dunning notice."
dunningNoticeId: ID!
"The new payment due date. Only the date counts. It must not be before the dunning date of the notice."
paymentDueDate: DateTime
"The new comment. An empty text removes it."
comment: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a function attribute. Only the properties that are sent change. The data type cannot be changed. System attributes accept only 'activeSalesChannels', as in the Wawi dialog. Errors: errorCode is ATTRIBUTE_NOT_FOUND (no attribute has this ID); ATTRIBUTE_KIND_MISMATCH (the attribute is a multilingual attribute; use 'UpdateMultilingualAttribute'); ATTRIBUTE_IS_SYSTEM_ATTRIBUTE (the attribute is supplied by the system and another property than 'activeSalesChannels' is sent); ATTRIBUTE_NAME_REQUIRED, ATTRIBUTE_NAME_INVALID, ATTRIBUTE_CODE_REQUIRED, ATTRIBUTE_GROUP_NAME_INVALID, ATTRIBUTE_ALLOWED_VALUES_NOT_SUPPORTED, ATTRIBUTE_ALLOWED_VALUES_REQUIRED, ATTRIBUTE_ALLOWED_VALUES_INVALID, ATTRIBUTE_SALES_CHANNEL_NOT_SUPPORTED as for 'CreateFunctionAttribute' (and ATTRIBUTE_ALLOWED_VALUE_RENAME_INVALID when a 'renamedFrom' does not match an entry of the current list); ATTRIBUTE_NAME_ALREADY_EXISTS, ATTRIBUTE_CODE_ALREADY_EXISTS. - Request"
input UpdateFunctionAttributeCommandRequestInput {
"The ID of the function attribute to change."
attributeId: ID!
"The name of the group the attribute is displayed under. A moved attribute is placed at the end of the new group unless 'sortOrder' is given in the same request. A name that matches an existing group of the same entity type apart from letter case uses the existing spelling."
groupName: String
"The technical identifier. Changing it breaks online shops, plug-ins and interfaces that recognise the function attribute by the old code. It must be unique among the function attributes of the entity type."
code: String
"The name of the function attribute. It must not contain the character '#'."
name: String
"Replaces the list of allowed values. Only for data type 'VALUE_LIST'. A removed entry that is not named in a 'renamedFrom' clears the value on items and categories that carry it."
allowedValues: [FunctionAttributeAllowedValueInput]
"An internal description of the function attribute for staff. Null removes the description."
description: String
"The new position within the group, starting at 1; a larger value places the attribute at the end. Other attributes of the group move accordingly."
sortOrder: Int
"Replaces the online shops the function attribute is transferred to. An empty list means that no shop receives it."
activeSalesChannels: [AttributeSalesChannelInput]
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a cash discount line item. Only the fields that are sent change. - Request"
input UpdateIncomingInvoiceCashDiscountLineItemCommandRequestInput {
"The ID of the incoming invoice."
incomingInvoiceId: ID!
"The ID of the line item."
lineItemId: ID!
"Description. 1 to 255 characters."
name: String
"The discount for this tax rate as a positive net amount in the invoice currency, greater than 0. The line item then has the quantity 1 and the net unit price minus this amount (\"netAmount\" is minus this amount). At most 12 digits before the decimal point; larger values are refused (400)."
amount: Decimal
"Tax rate in percent, 0 to 100."
taxRate: Decimal
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes header fields of an incoming invoice. Only the fields that are sent change. Once the invoice is posted, the supplier, contact, address, exchange rate and distribution method are locked; once it is closed, the due date is locked too. - Request"
input UpdateIncomingInvoiceCommandRequestInput {
"The ID of the incoming invoice."
incomingInvoiceId: ID!
"Another supplier. Only while the invoice is open and has no line items from purchase orders."
supplierId: ID
"The number the supplier printed on the invoice. At most 255 characters."
supplierInvoiceNumber: String
"The date printed on the invoice."
invoiceDate: DateTime
"Date by which the invoice is to be paid."
dueDate: DateTime
"Internal notes. At most 255 characters."
notes: String
"The contact person at the supplier. Must belong to the supplier."
supplierContactId: ID
"The address as printed on the invoice; replaces the whole address."
supplierAddress: IncomingInvoiceSupplierAddressInput
"Units of the invoice currency per unit of the home currency. Prices and amounts in the invoice currency stay as they are. Greater than 0 and at most 12 digits before the decimal point; other values are refused (400)."
exchangeRate: Decimal
"How additional costs are distributed from now on. Costs already distributed are not redistributed."
additionalCostDistributionMethod: AdditionalCostDistributionMethod
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a free-text line item. Only the fields that are sent change. - Request"
input UpdateIncomingInvoiceFreeTextLineItemCommandRequestInput {
"The ID of the incoming invoice."
incomingInvoiceId: ID!
"The ID of the line item."
lineItemId: ID!
"Description. 1 to 255 characters."
name: String
"Invoiced quantity. At most 12 digits before the decimal point; larger values are refused (400)."
quantity: Decimal
"Net price per unit in the invoice currency. At most 12 digits before the decimal point; larger values are refused (400)."
netUnitPrice: Decimal
"Tax rate in percent, 0 to 100."
taxRate: Decimal
"Unit as printed on the invoice. At most 255 characters."
unit: String
"Internal note. At most 255 characters."
notes: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes an item line item. Only the fields that are sent change. The item and the purchase order line cannot change; delete the line item and add a new one instead. - Request"
input UpdateIncomingInvoiceItemLineItemCommandRequestInput {
"The ID of the incoming invoice."
incomingInvoiceId: ID!
"The ID of the line item."
lineItemId: ID!
"Description. 1 to 255 characters."
name: String
"Invoiced quantity. At most 12 digits before the decimal point; larger values are refused (400)."
quantity: Decimal
"Net price per unit in the invoice currency. At most 12 digits before the decimal point; larger values are refused (400)."
netUnitPrice: Decimal
"Tax rate in percent, 0 to 100."
taxRate: Decimal
"Unit as printed on the invoice. At most 255 characters."
unit: String
"Item number of the supplier. At most 255 characters."
supplierSku: String
"Name of the item at the supplier. At most 255 characters."
supplierItemName: String
"Internal note. At most 255 characters."
notes: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a payment of an incoming invoice. Only the fields that are sent change. The invoice must be approved for payment. - Request"
input UpdateIncomingInvoicePaymentCommandRequestInput {
"The ID of the incoming invoice."
incomingInvoiceId: ID!
"The ID of the payment."
paymentId: ID!
"Paid amount in the home currency, rounded to cents; an amount that rounds to 0.00 is refused (400). Negative for money refunded by the supplier. At most 12 digits before the decimal point."
amount: Decimal
"Date of the payment."
paidAt: DateTime
"The payment method."
paymentMethodId: ID
"Whether the payment is a down payment."
isDownPayment: Boolean
"Note. At most 2000 characters."
notes: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the counted quantity of an inventory count. Item, batch number, best-before date and serial number identify the count and cannot be changed; delete the count and add a new one instead. - Request"
input UpdateInventoryCountCommandRequestInput {
"The ID of the inventory count to update."
inventoryCountId: ID!
"The new counted quantity. Must not be negative; a whole number unless the item is divisible; 1 for an item managed by serial number."
quantity: Decimal
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes an item condition. GraphQL only. The input is a one-of: exactly one variant is sent and it must be the stock handling of the condition; it cannot be changed. Only the properties that are sent change. Translations, restriction and marketplace codes have their own operations. Errors: errorCode is ITEM_CONDITION_NOT_FOUND (404); ITEM_CONDITION_COLOR_INVALID, ITEM_CONDITION_SUFFIX_EMPTY, ITEM_CONDITION_SUFFIX_TOO_LONG (400); ITEM_CONDITION_TYPE_MISMATCH, ITEM_CONDITION_SUFFIX_ALREADY_EXISTS (409). - Request"
input UpdateItemConditionCommandRequestInput {
"The ID of the item condition."
itemConditionId: ID!
"The changes. Exactly one variant, the stock handling of the condition."
changes: UpdateItemConditionInput!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"The changes of an item condition. A one-of: exactly one variant is sent and it must be the stock handling of the condition. Only the properties that are sent change."
input UpdateItemConditionInput @oneOf {
"Changes a condition with own items."
ownItemConditionChanges: OwnItemConditionChangesInput
"Changes a condition that is posted to the standard condition."
standardItemConditionChanges: StandardItemConditionChangesInput
"Changes a condition that only informs."
noStockItemConditionChanges: NoStockItemConditionChangesInput
}
"Changes a container. Every field is optional; a field that is omitted stays as it is. The unit cannot be changed. - Request"
input UpdateItemContainerCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the container."
containerId: ID!
"How many units of the item the container holds."
quantity: Decimal
"Global Trade Item Number of the container."
gtin: String
"Universal Product Code of the container."
upc: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a free-text variation. Every field is optional; a field that is omitted stays as it is. An inherited one is changed at the variation parent. - Request"
input UpdateItemFreeTextVariationCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the free-text variation."
freeTextVariationId: ID!
"Display name in the default language."
name: String
"The label per language, replaced as a whole."
names: [LocalizedTextInput]
"Whether the customer has to enter a text."
isRequired: Boolean
"Zero-based position among the variations of the item."
position: Int
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a medium. Every field is optional; a field that is omitted stays as it is. - Request"
input UpdateItemMediumCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the medium."
mediumId: ID!
"The key of what the medium is for, one of DATASHEET, VIDEO or OTHER (the list can grow)."
mediaCategoryId: String
"Display name of the medium."
name: String
"The URL the medium is opened from."
url: String
"Zero-based position."
position: Int
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a packaging. Every field is optional; a list of materials replaces all materials. - Request"
input UpdateItemPackagingCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the packaging."
packagingId: ID!
"Name of the packaging."
name: String
"Whether the packaging is a composite of several materials."
isComposite: Boolean
"The packaging category."
categoryId: ID
"The recycling class."
recyclingClassId: ID
"The materials, replaced as a whole. At least one."
materials: [NewItemPackagingMaterialInput]
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a selection variation. Every field is optional; a field that is omitted stays as it is. - Request"
input UpdateItemSelectionVariationCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the selection variation."
variationId: ID!
"Display name in the default language."
name: String
"The display name per language, replaced as a whole."
names: [LocalizedTextInput]
"How the shop shows the variation. The style is one of DROPDOWN, RADIO_BUTTONS, IMAGE_SWATCHES or TEXT_SWATCHES. It changes how the axis is shown in the shop, not which fields exist. The list can grow with the shops; a client treats a value it does not know like DROPDOWN."
style: String
"Zero-based position among the variations of the item."
position: Int
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a value of a selection variation. Every field is optional; a field that is omitted stays as it is. - Request"
input UpdateItemSelectionVariationValueCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the selection variation."
variationId: ID!
"The ID of the value of the selection variation."
valueId: ID!
"Display name of the value in the default language."
name: String
"The display names per language, replaced as a whole."
names: [LocalizedTextInput]
"Zero-based position of the value within its variation."
position: Int
"Own item number suffix or number of the value."
sku: String
"Own GTIN of the value."
gtin: String
"Default surcharge in net on the price when the value is chosen."
surchargeNet: Decimal
"Weight in kilograms that the value adds to the weight."
weightOffset: Decimal
"Surcharges per customer group, replaced as a whole."
customerGroupSurcharges: [CustomerGroupSurchargeInput]
"Surcharges per sales channel, replaced as a whole."
salesChannelSurcharges: [SalesChannelSurchargeInput]
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Sets the standard sales price of an item from a gross price. The net price is calculated as gross price divided by (1 + tax rate / 100) and stored; the gross price itself is not stored. The tax rate is the rate of the tax class of the item in the country of the company, for a consumer in that country. An item without a tax class of its own is taxed with the default tax class. A rate of 0 percent is a valid rate. Use it when a user enters the gross price. To change the tax class and keep the gross price, change the tax class of the item first and then send the gross price again. The change has the same effects as changing the net sales price: customer group prices that are a percentage of the standard price follow, the item is sent to the sales channels again, and the item change workflow event is raised. The response carries what was stored and the tax rate that was used. Errors: PRICE_OUT_OF_RANGE (the gross price is negative or larger than 999999999999, as validation error); ITEM_NOT_FOUND (no item has this ID); ITEM_KIND_DOES_NOT_SUPPORT_SUB_RESOURCE (the item kind has no prices); COMPANY_NOT_FOUND, COMPANY_INACTIVE (see 'companyId'); DEFAULT_TAX_CLASS_NOT_FOUND (the item has no tax class of its own and there is no default tax class); TAX_ZONE_NOT_FOUND_FOR_DESTINATION (no tax zone of the company contains its own country); TAX_RATE_NOT_FOUND_FOR_TAX_CLASS (the tax zone has no rate for the tax class). - Request"
input UpdateItemStandardGrossPriceCommandRequestInput {
"The ID of the item."
itemId: ID!
"The company whose country determines the tax rate. Omitted means the first active company (the active company with the lowest ID). An unknown company is answered with 422 (error code COMPANY_NOT_FOUND), an inactive company with 409 (error code COMPANY_INACTIVE). Without any active company the call is answered with 422 (error code COMPANY_NOT_FOUND)."
companyId: ID
"The gross sales price to set. At least 0 and at most 999999999999; 0 removes the price. Any number of decimal places is accepted; the stored net price keeps 13."
salesPriceGross: Decimal!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a supplier item. Every field is optional; an object that is sent replaces the whole object, and a list of tiers replaces all tiers. - Request"
input UpdateItemSupplierCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the supplier item."
itemSupplierId: ID!
"The item number the supplier uses for the item."
supplierItemNumber: String
"The name the supplier uses for the item."
supplierItemName: String
"The VAT rate of the purchase price, in percent."
vatRate: Decimal
"The currency of the purchase price as ISO 4217 code."
currencyCode: String
"The tiers of the purchase price, at least one. A tier from quantity 0 or 1 is the base price."
purchasePriceTiers: [SupplierPriceTierInput]
"The delivery time in days that the supplier item has of its own, at least 0. Omitted or null means that the delivery time of the supplier applies."
ownDeliveryTimeInDays: Int
"The stock of the supplier, when it is considered. Absent when it is not."
supplierStock: SupplierStockInput
"Whether the supplier ships to the customers directly."
isDropshippingActive: Boolean
"How the supplier packs the item. Absent when it is not maintained."
packageUnit: SupplierPackageUnitInput
"The smallest quantity that is purchased."
minimumPurchaseQuantity: Decimal
"The interval in which the quantity is purchased, for example 6 for packs of six."
purchaseInterval: Decimal
"Free-text notes on the supplier item."
notes: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Sets the default supplier items of an item. Both are optional; a field that is omitted stays as it is. - Request"
input UpdateItemSupplierDefaultsCommandRequestInput {
"The ID of the item."
itemId: ID!
"The default supplier item. It has to belong to the item."
defaultItemSupplierId: ID
"The default supplier item for dropshipping. It has to belong to the item and have dropshipping active."
defaultDropshippingItemSupplierId: ID
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a component of a kit. Every field is optional; a field that is omitted stays as it is. - Request"
input UpdateKitComponentCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the component item."
componentItemId: ID!
"How many units of the component one unit of the kit consumes."
quantity: Decimal
"Zero-based position of the component."
position: Int
"Free-text comment on the component."
comment: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a KitItem. Every field is optional; a field that is omitted stays as it is. An object that is sent replaces the whole object. A field the kind does not have, the kind of the item itself and the dimension set of a subset item cannot be changed here and are rejected with 400. Sending the route of another kind than the item has is answered with 409. - Request"
input UpdateKitItemCommandRequestInput {
"The ID of the item."
itemId: ID!
"Name of the item in the default language. Further languages and sales channel texts are the descriptions of the item."
name: String
"The identifiers of the item. The item number (SKU) is mandatory and unique. Replaced as a whole."
identifiers: TradeItemIdentifiersInput
"The ID of the product group."
productGroupId: ID
"The ID of the manufacturer."
manufacturerId: ID
"The ID of the item condition, for example new or used."
conditionId: ID
"The ID of the delivery status of the item (the master data of delivery statuses, for example \"in stock\" or \"ships in 3 days\")."
deliveryStatusId: ID
"The ID of the tax class. When omitted the item gets the company default. The value must reference an existing tax class."
taxClassId: ID
"The ID of the shipping class."
shippingClassId: ID
"Outer dimensions as shipped."
dimensions: ItemDimensionsInput
"Weights."
weights: ItemWeightsInput
"Customs information."
customs: ItemCustomsInput
"Sales unit and content with its base price."
units: ItemUnitsInput
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the name or the color of a label. Fields that are omitted stay as they are. The kind cannot be changed. GraphQL only. - Request"
input UpdateLabelCommandRequestInput {
"The ID of the label."
labelId: ID!
"The new name. The rules are those of 'CreateLabel'."
name: String
"The new color as '#RRGGBB' with six hexadecimal digits, upper or lower case; it is returned in upper case."
color: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Updates an existing manufacturer. Properties that are omitted stay as they are. Errors: errorCode is MANUFACTURER_NOT_FOUND (no manufacturer has this ID), MANUFACTURER_NAME_ALREADY_EXISTS (another manufacturer has this name, regardless of upper and lower case). - Request"
input UpdateManufacturerCommandRequestInput {
"The ID of the manufacturer to update."
manufacturerId: ID!
"The new name of the manufacturer. It must be unique among all manufacturers."
name: String
"The new website of the manufacturer; null removes it."
website: String
"The new position of the manufacturer in sorted lists; null removes it."
sortNumber: Int
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the display code or the unit code of a measurement unit. The names are changed per language with 'SetMeasurementUnitTranslation' and 'RemoveMeasurementUnitTranslation'. Fields that are omitted stay as they are; null removes the unit code. The display code of a system measurement unit cannot be changed. - Request"
input UpdateMeasurementUnitCommandRequestInput {
"The ID of the measurement unit."
measurementUnitId: ID!
"The new display code, 1 to 255 characters."
displayCode: String
"The new UN/CEFACT unit code, 2 or 3 letters or digits; null removes it."
unitCode: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a multilingual attribute. Only the properties that are sent change. The names per language are written with 'SetAttributeName' and 'RemoveAttributeName'. The data type cannot be changed. System attributes accept only 'activeSalesChannels', as in the Wawi dialog. Errors: errorCode is ATTRIBUTE_NOT_FOUND (no attribute has this ID); ATTRIBUTE_KIND_MISMATCH (the attribute is a function attribute; use 'UpdateFunctionAttribute'); ATTRIBUTE_IS_SYSTEM_ATTRIBUTE (the attribute is supplied by the system and another property than 'activeSalesChannels' is sent); ATTRIBUTE_GROUP_NAME_INVALID, ATTRIBUTE_LANGUAGE_NOT_FOUND, ATTRIBUTE_ALLOWED_VALUES_REQUIRED, ATTRIBUTE_ALLOWED_VALUES_NOT_SUPPORTED, ATTRIBUTE_ALLOWED_VALUES_INVALID, ATTRIBUTE_SALES_CHANNEL_NOT_SUPPORTED as for 'CreateMultilingualAttribute' (and ATTRIBUTE_ALLOWED_VALUE_RENAME_INVALID when a 'renamedFrom' does not match an entry of the current list); ATTRIBUTE_NAME_ALREADY_EXISTS. - Request"
input UpdateMultilingualAttributeCommandRequestInput {
"The ID of the attribute to change."
attributeId: ID!
"The name of the group the attribute is displayed under. A moved attribute is placed at the end of the new group unless 'sortOrder' is given in the same request. A name that matches an existing group of the same entity type apart from letter case uses the existing spelling."
groupName: String
"Replaces the list of allowed values. Only for data type 'VALUE_LIST'. A removed entry that is not named in a 'renamedFrom' clears the value on items and categories that carry it."
allowedValues: [MultilingualAllowedValueInput]
"An internal description of the attribute for staff. Null removes the description."
description: String
"The new position within the group, starting at 1; a larger value places the attribute at the end. Other attributes of the group move accordingly."
sortOrder: Int
"Replaces the online shops the attribute is transferred to. An empty list means that no shop receives it."
activeSalesChannels: [AttributeSalesChannelInput]
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a MultiPurposeVoucherItem. Every field is optional; a field that is omitted stays as it is. An object that is sent replaces the whole object. A field the kind does not have, the kind of the item itself and the dimension set of a subset item cannot be changed here and are rejected with 400. Sending the route of another kind than the item has is answered with 409. - Request"
input UpdateMultiPurposeVoucherItemCommandRequestInput {
"The ID of the item."
itemId: ID!
"Name of the item in the default language. Further languages and sales channel texts are the descriptions of the item."
name: String
"The identifiers of the item: its item number, which is unique. Replaced as a whole."
identifiers: BasicItemIdentifiersInput
"The ID of the product group."
productGroupId: ID
"The ID of the manufacturer."
manufacturerId: ID
"The ID of the item condition, for example new or used."
conditionId: ID
"The ID of the delivery status of the item (the master data of delivery statuses, for example \"in stock\" or \"ships in 3 days\")."
deliveryStatusId: ID
"Settings of the voucher that is sold, replaced as a whole."
voucher: VoucherSettingsInput
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes prefix, suffix or counter of a number range, the global range of a type as well as the range of a company. Fields that are omitted stay as they are; changing the prefix does not touch the counter. The counter may be set to any value in range, also lower than it is, for example to start again at 1 in a new year; numbers that documents already have are skipped when numbers are issued. Type and company cannot change; delete the range and create another one instead. Error codes: NUMBER_RANGE_NOT_FOUND, NUMBER_RANGE_PATTERN_INVALID, NUMBER_RANGE_COUNTER_INVALID, NUMBER_RANGE_TOO_LONG. GraphQL only. - Request"
input UpdateNumberRangeCommandRequestInput {
"The ID of the number range."
numberRangeId: ID!
"The new prefix, empty for none, at most 20 characters. Prefix and suffix may contain the date tokens '<J>' (year, four digits), '<M>' (month, two digits), '<T>' (day, two digits) and '<K>' (ISO calendar week, two digits). The tokens are upper case; the system replaces them with the date of issue when it issues a number. Lower case tokens are not replaced and are rejected."
prefix: String
"The new suffix, empty for none, at most 20 characters."
suffix: String
"The new counter, 0 to 2147483646."
nextCounter: Int
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes an on-hold reason. Fields that are omitted stay as they are. GraphQL only. - Request"
input UpdateOnHoldReasonCommandRequestInput {
"The ID of the on-hold reason."
onHoldReasonId: ID!
"The new name, 1 to 50 characters."
name: String
"The new value of 'isMergeable'."
isMergeable: Boolean
"The new value of 'isExcludedFromPurchaseList'."
isExcludedFromPurchaseList: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes an operation. Only the properties that are sent change. The steps are changed with the commands for operation steps. Errors: the request is invalid; OperationNotFound (the operation was not found); OperationNumberAlreadyExists (another operation already has this operation number). - Request"
input UpdateOperationCommandRequestInput {
"The ID of the operation to change."
operationId: ID!
"The new number of the operation. Must be unique across all operations and must not consist of white space only."
operationNumber: String
"The new name of the operation. Must not consist of white space only."
name: String
"The new description of the operation. Sending null or a value that consists of white space only removes the description."
description: String
"Indicates whether the operation is active."
isActive: Boolean
"Indicates whether the operation must be completed explicitly during production."
isCompletionMandatory: Boolean
"Indicates whether and for whom the operation allows simplified production."
simplifiedProduction: OperationSimplifiedProduction
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a step of an operation. Only the properties that are sent change. The position is changed by moving the step, and the texts are changed with the commands for operation step texts. Errors: the request is invalid; OperationStepNotFound (the step was not found). - Request"
input UpdateOperationStepCommandRequestInput {
"The ID of the step to change."
operationStepId: ID!
"The new name of the step. Must not consist of white space only."
name: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the text of an operation step in one language. Only the properties that are sent change. Errors: the request is invalid; OperationStepTextNotFound (the step has no text in this language or the step was not found). - Request"
input UpdateOperationStepTextCommandRequestInput {
"The ID of the step."
operationStepId: ID!
"The language of the text to change as a BCP 47 language tag, e.g. \"de\" or \"de-AT\"; case-insensitive."
languageTag: String!
"The new text of the step in this language. Must not consist of white space only."
text: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a package. Only the properties that are sent change; sending null clears an optional property. The shipping date is set with MarkPackageShipped. Changing a package does not report anything to the sales channel. errorCode is one of: PACKAGE_NOT_FOUND (the package was not found); SHIPPING_METHOD_NOT_FOUND (a referenced shipping method was not found or is not active); TRACKING_NUMBER_INVALID (the tracking number is empty, longer than 255 characters or does not match the rule of the shipping method); DELIVERY_NOTE_HANDLED_BY_FULFILLMENT_NETWORK (the delivery note is handled by the JTL Fulfillment Network and cannot be changed here); PACKAGE_HAS_SHIPPING_LABEL (the shipping method cannot change while a label exists; cancel the label in the shipping service first). - Request"
input UpdatePackageCommandRequestInput {
"The ID of the package."
packageId: ID!
"The shipping method."
shippingMethodId: ID
"The weight in kilograms."
weight: Decimal
"The tracking number."
trackingNumber: String
"The tracking number of an enclosed return label."
enclosedReturnTrackingNumber: String
"The shipping method of the enclosed return label."
returnShippingMethodId: ID
"The expected delivery date."
expectedDeliveryDate: DateTime
"A free note."
note: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a PackagingItem. Every field is optional; a field that is omitted stays as it is. An object that is sent replaces the whole object. A field the kind does not have, the kind of the item itself and the dimension set of a subset item cannot be changed here and are rejected with 400. Sending the route of another kind than the item has is answered with 409. - Request"
input UpdatePackagingItemCommandRequestInput {
"The ID of the item."
itemId: ID!
"Name of the item in the default language. Further languages and sales channel texts are the descriptions of the item."
name: String
"The identifiers of the item: its item number, which is unique. Replaced as a whole."
identifiers: BasicItemIdentifiersInput
"The ID of the product group."
productGroupId: ID
"The ID of the manufacturer."
manufacturerId: ID
"The ID of the item condition, for example new or used."
conditionId: ID
"The ID of the delivery status of the item (the master data of delivery statuses, for example \"in stock\" or \"ships in 3 days\")."
deliveryStatusId: ID
"The ID of the tax class. When omitted the item gets the company default. The value must reference an existing tax class."
taxClassId: ID
"Outer dimensions of the packaging."
dimensions: ItemDimensionsInput
"Weights of the packaging."
weights: ItemWeightsInput
"Settings of the stock management, replaced as a whole."
stockManagement: StockManagementInput
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the settings of a payment account. Fields that are omitted stay as they are. Credentials and the connection to the bank or the provider are changed in the desktop client. Works on a hidden account too. Errors: PAYMENT_ACCOUNT_NOT_FOUND (the payment account was not found); PAYMENT_METHOD_NOT_FOUND (the payment method was not found); IBAN_INVALID (the IBAN is not valid); PAYMENT_ACCOUNT_NOT_EXTERNAL_FOR_BANK_DATA (IBAN, BIC and holder can only be changed on an external account; other accounts take them from the bank). - Request"
input UpdatePaymentAccountCommandRequestInput {
"The ID of the payment account."
paymentAccountId: ID!
"The display name; null clears it."
name: String
"The description; null clears it."
description: String
"The payment method of the payments recorded when a transaction is assigned; null clears it."
transferPaymentMethodId: ID
"The payment method for direct debits; null clears it."
directDebitPaymentMethodId: ID
"The payment method for chargebacks and refunds; null clears it."
chargebackPaymentMethodId: ID
"Transactions booked on or before this date are not imported; null removes the limit."
importCutoffDate: DateTime
"The IBAN. Only for an external account."
iban: String
"The BIC. Only for an external account."
bic: String
"The holder of the account. Only for an external account."
holder: String
"Whether to suppress the automatic workflows this call would start. Events for other systems are still published. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a payment. Fields that are omitted stay as they are. A changed amount can change the payment status of the document the payment counts for (for a payment of an invoice correction, of the corrected invoice), and a document that becomes fully paid starts its workflows. Where the payment counts is changed with the move operations. Errors: PAYMENT_NOT_FOUND (the payment was not found); PAYMENT_METHOD_NOT_FOUND (the payment method was not found); AMOUNT_NOT_POSITIVE (the amount is not greater than 0); PAYMENT_CANNOT_BE_CHANGED (the payment cannot be changed. The error lists the blocker codes: PAYMENT_IS_VOUCHER_REDEMPTION (for the amount, the date, the transaction ID and the note), PAYMENT_BOOKED_BY_REFUND, PaymentFromPaymentTransaction (for the amount)). - Request"
input UpdatePaymentCommandRequestInput {
"The ID of the payment."
paymentId: ID!
"The new amount as a positive number with at most two decimals; a payout stays a payout."
amount: Decimal
"The new date of the payment."
paymentDate: DateTime
"The new payment method."
paymentMethodId: ID
"The new transaction ID; null removes it."
externalTransactionId: String
"The new note; null removes it."
note: String
"Whether the payment is a down payment."
isDownPayment: Boolean
"The new general ledger account; null removes it."
generalLedgerAccount: String
"Whether the payment is left out of the accounting export."
isExcludedFromAccountingExport: Boolean
"Whether to suppress the workflows this call would start because a sales order or a sales invoice becomes fully paid. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the settings of a payment method. Only the properties that are sent change. Whether it is active or the default is changed with the actions, not here. 'name' changes the name in the default language, like the translation of that language. Documents keep the name they were printed with. - Request"
input UpdatePaymentMethodCommandRequestInput {
"The ID of the payment method."
paymentMethodId: ID!
"The new name in the default language, at most 255 characters. It must be unique among the payment methods, ignoring case."
name: String
"The G/L account, at most 32 characters. An empty text removes it."
generalLedgerAccount: String
"Whether the amount can be collected by direct debit."
supportsDirectDebit: Boolean
"Whether an order can be shipped before the payment arrived. A change applies to open orders with this payment method."
canShipBeforePayment: Boolean
"Whether open invoices paid with this method are dunned."
isDunningEnabled: Boolean
"The cash discount for early payment. It is replaced as a whole; null removes it."
cashDiscount: PaymentMethodCashDiscountInput
"The eBay payment option. An empty text removes it."
ebayPaymentOption: String
"The priority for first in, first out reservation, 0 to 255."
reservationPriority: Int
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the internal note of a payment transaction. Everything else comes from the bank, the provider or the external system. Fields that are omitted stay as they are. Errors: PAYMENT_TRANSACTION_NOT_FOUND (the payment transaction was not found); PAYMENT_ACCOUNT_HIDDEN (the payment account is hidden; show it with 'ShowPaymentAccount' first). - Request"
input UpdatePaymentTransactionCommandRequestInput {
"The ID of the payment transaction."
paymentTransactionId: ID!
"A note for internal use; null clears it."
internalNote: String
"Whether to suppress the automatic workflows this call would start. Events for other systems are still published. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a pick list template. Only the properties that are sent change; sending null clears an optional property. A group (reservation, order selection, item selection, visibility, automation) keeps the properties that are not sent in it, and a range keeps the limit that is not sent in it. A list that is sent replaces the whole list; an empty list removes the filter. Pick lists that already exist are not changed. The warehouse cannot be changed. A refused action reports 'errorCode'. errorCode is one of: PICK_LIST_TEMPLATE_NOT_FOUND (the pick list template was not found); PICK_LIST_PRINT_TEMPLATE_NOT_FOUND (the print template was not found); PICK_LIST_TEMPLATE_NAME_MISSING (the name is empty, null or longer than 64 characters); PICK_LIST_TEMPLATE_NULL_NOT_ALLOWED (null was sent for a group, a range, a list or a setting that cannot be empty); PICK_LIST_TEMPLATE_SOURCE_TYPE_REQUIRED (no source type is selected); PICK_LIST_TEMPLATE_TIME_WINDOWS_OVERLAP (two active time windows share a weekday and overlap in time); PICK_LIST_TEMPLATE_TIME_WINDOW_INVALID (a time is not hh:mm, or 'timeFrom' equals 'timeTo'); PICK_LIST_TEMPLATE_RANGE_INVALID (a range has a minimum larger than its maximum, a fractional value where the setting counts whole units, or an order priority outside -5 to 5); PICK_LIST_TEMPLATE_EXPECTED_DELIVERY_DAYS_REQUIRED (the expected delivery date mode WithinDays has no number of days); PICK_LIST_TEMPLATE_LIMIT_INVALID (the limit of a time window is 0 or less); PICK_LIST_TEMPLATE_REFERENCE_NOT_FOUND (an ID in a set filter or user list was not found); PICK_LIST_TEMPLATE_SELECTION_TOO_LARGE (a set filter or user list that the template stores as text holds more entries than fit); PICK_LIST_TEMPLATE_VALUE_UNKNOWN (an unknown sort criterion or source type was sent); PICK_LIST_TEMPLATE_STOCK_SORT_ORDER_INVALID (a sort criterion is given twice); PICK_LIST_TEMPLATE_TYPE_COMBINATION_INVALID (the source types do not fit the template type, for example production replenishment on an identical-orders template). - Request"
input UpdatePickListTemplateCommandRequestInput {
"The ID of the pick list template."
pickListTemplateId: ID!
"The name of the template, 1 to 64 characters; null is refused."
name: String
"A comment, up to 255 characters; null clears it."
comment: String
"The colour of the quick button; null clears it."
color: String
"The quick slot, 1 to 15; null clears it. A slot that another template of the same warehouse and type holds moves to this template (BOXES and EAZY_SHIPPING templates share their slots)."
quickSlot: Int
"The print template of the pick list; null selects the standard one."
printTemplateId: ID
"How stock is chosen and reserved."
reservation: PickListTemplateReservationInput
"Which orders are put on the pick lists."
orderSelection: PickListTemplateOrderSelectionInput
"Which items are put on the pick lists."
itemSelection: PickListTemplateItemSelectionInput
"Who sees the template and its pick lists."
visibility: PickListTemplateVisibilityInput
"Automatic creation of pick lists."
automation: PickListTemplateAutomationInput
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the header of a price inquiry. Only the properties that are sent change. The supplier and the number cannot be changed. A new company replaces the billing address, a new warehouse the delivery address. A price inquiry raises no workflow events. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: an invalid request, for example a property that cannot be cleared sent as null or a text with control characters; PRICE_INQUIRY_REQUESTED_DELIVERY_DATE_REQUIRED (the requested delivery date was sent as null); PRICE_INQUIRY_NOT_FOUND (the price inquiry was not found); COMPANY_NOT_FOUND, WAREHOUSE_NOT_FOUND or SUPPLIER_CONTACT_NOT_FOUND (a referenced record was not found); WAREHOUSE_NOT_USABLE (the warehouse is inactive or a drop shipping target). - Request"
input UpdatePriceInquiryCommandRequestInput {
"The ID of the price inquiry."
priceInquiryId: ID!
"The new company; it cannot be cleared."
companyId: ID
"The new contact person of the supplier; null removes the person and leaves the supplier's address."
supplierContactId: ID
"The new warehouse, an active one that is no drop shipping target; it cannot be cleared."
warehouseId: ID
"The new requested delivery date; it cannot be cleared."
requestedDeliveryDate: DateTime
"The new reference; null removes it."
referenceNumber: String
"The new internal comment; null removes it."
internalComment: String
"The new print note; null removes it."
printNote: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a line of a price inquiry. The input is a one-of: exactly one variant is sent and it must be the kind of the line. Only the properties that are sent change. Entering the price the supplier answered with is a change of 'netUnitPrice'. A price inquiry raises no workflow events. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: an invalid request, for example a quantity below 0, a property that cannot be cleared sent as null or a text with control characters; PRICE_INQUIRY_NOT_FOUND or PRICE_INQUIRY_LINE_ITEM_NOT_FOUND (the price inquiry or the line was not found); PRICE_INQUIRY_LINE_ITEM_TYPE_MISMATCH (the variant is not the kind of the line); PRICE_INQUIRY_LINE_ITEM_NOT_WRITABLE (an allowance or charge). - Request"
input UpdatePriceInquiryLineItemCommandRequestInput {
"The ID of the price inquiry."
priceInquiryId: ID!
"The ID of the line."
lineItemId: ID!
"The changes. Exactly one variant, the kind of the line."
changes: UpdatePriceInquiryLineItemInput!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes of a line of a price inquiry. Polymorphic: exactly one variant is sent, and it must be the kind of the line."
input UpdatePriceInquiryLineItemInput @oneOf {
"Changes of a line with an item."
priceInquiryItemLineChanges: PriceInquiryItemLineChangesInput
"Changes of a free line."
priceInquiryCustomLineChanges: PriceInquiryCustomLineChangesInput
}
"Changes a product group. Only the properties that are sent change. Errors: errorCode is PRODUCT_GROUP_NAME_REQUIRED, PRODUCT_GROUP_NAME_TOO_LONG (the name is null, empty or only spaces, or has more than 255 characters); PRODUCT_GROUP_NOT_FOUND (no product group has this ID); PRODUCT_GROUP_NAME_ALREADY_EXISTS (another product group already has this name, regardless of upper and lower case). - Request"
input UpdateProductGroupCommandRequestInput {
"The ID of the product group to change."
productGroupId: ID!
"The new name of the product group. If omitted, the name stays unchanged. If given, leading and trailing spaces are removed, and the name must not be null, empty or consist only of spaces, and has at most 255 characters."
name: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a production item. Only the properties that are sent change. Lot sizes and bills of materials are changed with their own commands. Errors: the request is invalid; ProductionItemNotFound (the production item was not found); a referenced template was not found. - Request"
input UpdateProductionItemCommandRequestInput {
"The ID of the production item to change."
productionItemId: ID!
"The ID of the new template to be used for printing an item label when a lot is completed. Sending null means no item label is printed on completion."
lotLabelTemplateId: ID
"The ID of the new template to be used for printing an item label for each produced unit when a lot is completed. Sending null means no item label is printed for each produced unit on completion."
singleItemLabelTemplateId: ID
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a production order. Only the properties that are sent change. The quantity is specified either by the target total quantity or by lot count and lot size. If the production item is changed and no quantity is sent, lot count and lot size are determined anew from the current target total quantity. Only possible while the production order has not been released. The resource assignment is changed by ChangeProductionOrderResourceAssignment. Errors: the request is invalid; PRODUCTION_ORDER_NOT_FOUND (the production order was not found); PRODUCTION_ORDER_ALREADY_RELEASED (the production order has already been released); PRODUCTION_ITEM_NOT_FOUND (the production item was not found); BILL_OF_MATERIALS_NOT_FOUND (the bill of materials was not found); PRODUCTION_ORDER_BILL_OF_MATERIALS_MISMATCH (the bill of materials does not belong to the production item); PRODUCTION_ORDER_LOT_SIZE_NOT_DEFINED (the lot size is not one of the lot sizes of the production item). - Request"
input UpdateProductionOrderCommandRequestInput {
"The ID of the production order to change."
productionOrderId: ID!
"The ID of the new production item to be produced. If no quantity is sent, lot count and lot size are determined anew from the current target total quantity."
productionItemId: ID
"The ID of the new bill of materials. It must belong to the production item."
billOfMaterialsId: ID
"The new quantity to be produced: either the target total quantity or lot count and lot size. Exactly one variant."
quantity: ProductionOrderQuantitySpecificationInput
"The new planned start of the production order."
targetStartAt: DateTime
"The new planned completion of the production order."
targetCompletionAt: DateTime
"The new planned delivery date of the production order."
deliveryAt: DateTime
"The new reference number of the order underlying the production order. Empty removes it."
referenceNumber: String
"The new project number associated with the production order. Empty removes it."
projectNumber: String
"The new note that is displayed during production. Empty removes it."
notice: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes an entry of the purchase list. Only the properties that are sent change. A new supplier or warehouse that another entry has for the same item is refused: change the quantity of that entry instead and delete this one. The purchase list has no workflow events. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: an invalid request, for example a quantity of 0 or less or a text with control characters; PURCHASE_LIST_ENTRY_NOT_FOUND (the entry was not found); SUPPLIER_NOT_FOUND or WAREHOUSE_NOT_FOUND (a referenced record was not found); PURCHASE_LIST_QUANTITY_NOT_WHOLE (the item is not divisible and the quantity is not a whole number); PURCHASE_LIST_SUPPLIER_EXCLUDED (the supplier is excluded from the purchase list), ITEM_NOT_ASSIGNED_TO_SUPPLIER (the supplier does not have the item) or SUPPLIER_INACTIVE (the supplier is not active); WAREHOUSE_NOT_USABLE (the warehouse is inactive or a drop shipping target); PURCHASE_LIST_ENTRY_ALREADY_EXISTS (another entry has this item with the new supplier and warehouse). - Request"
input UpdatePurchaseListEntryCommandRequestInput {
"The ID of the purchase list entry."
entryId: ID!
"The new quantity to buy, more than 0."
quantity: Decimal
"The new supplier; null removes the supplier."
supplierId: ID
"The new warehouse, an active one that is no drop shipping target; null removes the warehouse."
warehouseId: ID
"The new note; null removes it."
note: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the header of a purchase order, in every status. The input is a one-of: exactly one variant is sent and it must be the kind of the order. Only the properties that are sent change; sending null clears an optional property. Supplier, number, currency and language cannot be changed. Raises the workflow event 'changed'. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: PURCHASE_ORDER_REQUESTED_DELIVERY_DATE_REQUIRED (the requested delivery date is cleared) or another invalid request, for example a property that cannot be cleared is sent as null or a text has control characters; PURCHASE_ORDER_NOT_FOUND (the order was not found); WAREHOUSE_NOT_FOUND, COMPANY_NOT_FOUND or SUPPLIER_CONTACT_NOT_FOUND (a referenced record was not found); PURCHASE_ORDER_TYPE_MISMATCH (the variant is not the kind of the order); PURCHASE_ORDER_ALREADY_SENT (a new warehouse for an order that was sent); WAREHOUSE_NOT_USABLE (the warehouse is inactive or a drop shipping target). - Request"
input UpdatePurchaseOrderCommandRequestInput {
"The ID of the purchase order."
purchaseOrderId: ID!
"The changes. Exactly one variant, the kind of the order."
changes: UpdatePurchaseOrderInput!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes of a purchase order header. Polymorphic: exactly one variant is sent, and it must be the kind of the order."
input UpdatePurchaseOrderInput @oneOf {
"Changes of a purchase order to a warehouse."
warehousePurchaseOrderChanges: WarehousePurchaseOrderChangesInput
"Changes of a drop shipping purchase order. The customer cannot be changed."
dropShippingPurchaseOrderChanges: DropShippingPurchaseOrderChangesInput
}
"Changes an item or custom line, in every status, also when something was delivered. The input is a one-of: exactly one variant is sent and it must be the kind of the line. Only the properties that are sent change. The allowances and charges are computed anew. An order that is sent or partially delivered gets its status computed anew from the ordered and delivered quantities; a completed order stays completed. Raises the workflow event 'changed', and 'line-item-reduced' when the quantity is lowered. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: an invalid request, for example a quantity below 0, a property that cannot be cleared sent as null or a text with control characters; PURCHASE_ORDER_NOT_FOUND or PURCHASE_ORDER_LINE_ITEM_NOT_FOUND (the order or the line was not found); PURCHASE_ORDER_LINE_ITEM_TYPE_MISMATCH (the variant is not the kind of the line); PURCHASE_ORDER_LINE_ITEM_NOT_WRITABLE (an allowance or charge). - Request"
input UpdatePurchaseOrderLineItemCommandRequestInput {
"The ID of the purchase order."
purchaseOrderId: ID!
"The ID of the line item."
lineItemId: ID!
"The changes. Exactly one variant, the kind of the line."
changes: UpdatePurchaseOrderLineItemInput!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes of a line item. Polymorphic: exactly one variant is sent, and it must be the kind of the line. Allowances and charges cannot be written."
input UpdatePurchaseOrderLineItemInput @oneOf {
"Changes of an item line."
purchaseOrderItemLineChanges: PurchaseOrderItemLineChangesInput
"Changes of a custom line."
purchaseOrderCustomLineChanges: PurchaseOrderCustomLineChangesInput
}
"Changes a refund. Fields that are omitted stay as they are. Before the refund is sent, the amount, the payment reference, the internal note and, for a bank transfer, the recipient can be changed; a new amount changes the payout the refund booked as well, and a smaller payout can make the sales order or the corrected invoice fully paid and start its workflows. Once the refund is sent or confirmed, only 'internalNote' can be changed. Errors: REFUND_NOT_FOUND (the refund was not found); REFUND_ALREADY_SENT (the refund was sent or confirmed, only 'internalNote' can be changed); RECIPIENT_NOT_CHANGEABLE (the recipient of a refund of a payment transaction is its payer); AMOUNT_NOT_POSITIVE (the amount is not greater than 0); AMOUNT_EXCEEDS_REFUNDABLE_AMOUNT (the amount is more than can be refunded); RECIPIENT_IBAN_INVALID (the IBAN of the recipient is not valid). - Request"
input UpdateRefundCommandRequestInput {
"The ID of the refund."
refundId: ID!
"The new amount, greater than 0, with at most two decimals."
amount: Decimal
"The new text for the recipient."
paymentReference: String
"The new internal note; null removes it."
internalNote: String
"The new name of the recipient of a bank transfer."
recipientName: String
"The new IBAN of the recipient of a bank transfer."
recipientIban: String
"The new BIC of the recipient's bank; null removes it."
recipientBic: String
"Whether to suppress the workflows this call would start because a sales order or a sales invoice becomes fully paid. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a RegularItem. Every field is optional; a field that is omitted stays as it is. An object that is sent replaces the whole object. A field the kind does not have, the kind of the item itself and the dimension set of a subset item cannot be changed here and are rejected with 400. Sending the route of another kind than the item has is answered with 409. - Request"
input UpdateRegularItemCommandRequestInput {
"The ID of the item."
itemId: ID!
"Name of the item in the default language. Further languages and sales channel texts are the descriptions of the item."
name: String
"The identifiers of the item. The item number (SKU) is mandatory and unique. Replaced as a whole."
identifiers: TradeItemIdentifiersInput
"The ID of the product group."
productGroupId: ID
"The ID of the manufacturer."
manufacturerId: ID
"The ID of the item condition, for example new or used."
conditionId: ID
"The ID of the delivery status of the item (the master data of delivery statuses, for example \"in stock\" or \"ships in 3 days\")."
deliveryStatusId: ID
"The ID of the tax class. When omitted the item gets the company default. The value must reference an existing tax class."
taxClassId: ID
"The ID of the shipping class."
shippingClassId: ID
"Outer dimensions as shipped."
dimensions: ItemDimensionsInput
"Weights."
weights: ItemWeightsInput
"Customs information."
customs: ItemCustomsInput
"Sales unit and content with its base price."
units: ItemUnitsInput
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a resource. The input is a one-of: exactly one variant is sent and it must be the category of the resource. Only the properties that are sent change. The category cannot be changed. Errors: the request is invalid; RESOURCE_NOT_FOUND (the resource was not found); RESOURCE_CATEGORY_MISMATCH (the variant is not the category of the resource); RESOURCE_TYPE_NOT_FOUND (the resource type was not found); RESOURCE_TYPE_CATEGORY_MISMATCH (the resource type belongs to another category). - Request"
input UpdateResourceCommandRequestInput {
"The ID of the resource to change."
resourceId: ID!
"The changes. Exactly one variant, the category of the resource."
changes: UpdateResourceInput!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a resource group. Only the properties that are sent change. The resource category is changed by ChangeResourceGroupCategory. Errors: the request is invalid; RESOURCE_GROUP_NOT_FOUND (the resource group was not found). - Request"
input UpdateResourceGroupCommandRequestInput {
"The ID of the resource group to change."
resourceGroupId: ID!
"The new name of the resource group."
name: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"The changes to a resource. Polymorphic: exactly one variant is sent, and it has to be the category of the resource (the category cannot be changed). A property that is omitted stays as it is."
input UpdateResourceInput @oneOf {
"Changes a workbench. Only the properties that are sent change. The warehouse is changed by ChangeWorkbenchWarehouse, the host by ChangeWorkbenchHost."
workbenchChanges: WorkbenchChangesInput
"Changes a machine. Only the properties that are sent change. The hardware is changed by ChangeMachineHardware."
machineChanges: MachineChangesInput
"Changes an employee. Only the properties that are sent change. The linked user cannot be changed."
employeeChanges: EmployeeChangesInput
}
"Changes a resource type. Only the properties that are sent change. The category cannot be changed. Errors: the request is invalid; RESOURCE_TYPE_NOT_FOUND (the resource type was not found). - Request"
input UpdateResourceTypeCommandRequestInput {
"The ID of the resource type to change."
resourceTypeId: ID!
"The new name of the resource type."
name: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the name of a destination area or whether it is active. Only what is sent changes. Templates that use a destination area that becomes inactive keep it; a calculation with them refuses. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: RESTOCK_SUGGESTION_DESTINATION_AREA_NAME_REQUIRED or VALIDATION_FAILED (an empty name, or the request is invalid otherwise); RESTOCK_SUGGESTION_DESTINATION_AREA_NOT_FOUND (the destination area was not found; an area of the other kind counts as not found). - Request"
input UpdateRestockSuggestionDestinationAreaCommandRequestInput {
"The ID of the destination area."
destinationAreaId: ID!
"The new name, 1 to 255 characters. It cannot be cleared."
name: String
"Whether the destination area can be used in settings. It cannot be cleared."
isActive: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the priority of an entry; the entries in between move by one. What an entry refers to cannot be changed: add a new entry and delete the old one. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: VALIDATION_FAILED (the request is invalid, for example a priority out of range); RESTOCK_SUGGESTION_DESTINATION_AREA_NOT_FOUND or RESTOCK_SUGGESTION_DESTINATION_AREA_ENTRY_NOT_FOUND (the destination area or the entry was not found). - Request"
input UpdateRestockSuggestionDestinationAreaEntryCommandRequestInput {
"The ID of the destination area."
destinationAreaId: ID!
"The ID of the entry."
entryId: ID!
"The new priority, 1 is the highest, at most the number of entries. It cannot be cleared."
priority: Int
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the name of a start area or whether it is active. Only what is sent changes. Templates that use a start area that becomes inactive keep it; a calculation with them refuses. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: RESTOCK_SUGGESTION_START_AREA_NAME_REQUIRED or VALIDATION_FAILED (an empty name, or the request is invalid otherwise); RESTOCK_SUGGESTION_START_AREA_NOT_FOUND (the start area was not found; an area of the other kind counts as not found). - Request"
input UpdateRestockSuggestionStartAreaCommandRequestInput {
"The ID of the start area."
startAreaId: ID!
"The new name, 1 to 255 characters. It cannot be cleared."
name: String
"Whether the start area can be used in settings. It cannot be cleared."
isActive: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the priority of an entry; the entries in between move by one. What an entry refers to cannot be changed: add a new entry and delete the old one. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: VALIDATION_FAILED (the request is invalid, for example a priority out of range); RESTOCK_SUGGESTION_START_AREA_NOT_FOUND or RESTOCK_SUGGESTION_START_AREA_ENTRY_NOT_FOUND (the start area or the entry was not found). - Request"
input UpdateRestockSuggestionStartAreaEntryCommandRequestInput {
"The ID of the start area."
startAreaId: ID!
"The ID of the entry."
entryId: ID!
"The new priority, 1 is the highest, at most the number of entries. It cannot be cleared."
priority: Int
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the name or the settings of a template. Only what is sent changes, and only what is sent is checked; a reference to an area that was deleted since stays until it is changed. A template cannot select one supplier ('sourceSelection' 'SUPPLIER') or one warehouse ('destinationSelection' 'WAREHOUSE'): the ERP's templates have no place for them; send such settings with the calculation instead. The template is kept in the ERP's expert mode, so that the ERP calculates with exactly these settings; its options outside this contract (display and purchase list options of the ERP's dialog) are kept as stored. A template the ERP kept in its simple mode is stored with the values it was calculated with, plus the changes. Available in GraphQL only. Errors arrive as GraphQL errors with the code in 'extensions.code'; a refusal because of the current state also lists every reason in 'extensions.blockers'. Codes: RESTOCK_SUGGESTION_TEMPLATE_NAME_REQUIRED or RESTOCK_SUGGESTION_SELECTION_NOT_ALLOWED_IN_TEMPLATE (the name is empty, or the settings select one supplier or one warehouse); RESTOCK_SUGGESTION_START_AREA_REQUIRED, RESTOCK_SUGGESTION_SUPPLIER_REQUIRED, RESTOCK_SUGGESTION_DESTINATION_AREA_REQUIRED, RESTOCK_SUGGESTION_WAREHOUSE_REQUIRED, RESTOCK_SUGGESTION_FORECAST_PERIOD_REQUIRED or VALIDATION_FAILED (a selection or forecast type misses the ID, days, dates or period it needs, or the request is invalid otherwise, for example an ID the selection does not use, a period that ends before it starts, an unknown value of a documented string or a number out of its range); RESTOCK_SUGGESTION_TEMPLATE_NOT_FOUND (the template was not found); RESTOCK_SUGGESTION_START_AREA_NOT_FOUND, RESTOCK_SUGGESTION_DESTINATION_AREA_NOT_FOUND, SUPPLIER_NOT_FOUND or WAREHOUSE_NOT_FOUND (a referenced record was not found; an area of the other kind counts as not found); RESTOCK_SUGGESTION_START_AREA_INACTIVE, RESTOCK_SUGGESTION_DESTINATION_AREA_INACTIVE or WAREHOUSE_NOT_USABLE (an area or the warehouse is not active). - Request"
input UpdateRestockSuggestionTemplateCommandRequestInput {
"The ID of the template."
templateId: ID!
"The new name, 1 to 255 characters. It cannot be cleared."
name: String
"Changes of the settings."
settings: RestockSuggestionSettingsChangesInput
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Updates the header data of a return; only the fields that are sent change. - Request"
input UpdateReturnCommandRequestInput {
"The ID of the return. If it does not exist, errorCode is RETURN_NOT_FOUND."
returnId: ID!
"The ID of the warehouse the goods are returned to."
warehouseId: ID
"The ID of the company the return belongs to."
companyId: ID
"Updates to the pickup address; only the fields that are sent change. Null removes the address."
pickupAddress: ReturnPickupAddressUpdateInput
"Whether the return is reported to the sales channel of the sales order."
transmitToSalesChannel: Boolean
"Whether the shipping costs are credited in the sales invoice correction. Once it exists, errorCode is RETURN_REFUND_SETTINGS_LOCKED."
refundShippingCosts: Boolean
"A comment for internal use; null removes it."
internalComment: String
"A number of the return in another system; null removes it."
externalNumber: String
"A comment that can be shown to the customer; null removes it."
externalComment: String
"Whether a returned bill of materials is credited completely. Once a correction exists, errorCode is RETURN_REFUND_SETTINGS_LOCKED."
creditBillOfMaterialsCompletely: Boolean
"How coupons are credited in the sales invoice correction: NONE, FULL or PROPORTIONAL."
couponCreditMode: String
"The comment on the correction amount; null removes it. Once a correction exists, errorCode is RETURN_REFUND_SETTINGS_LOCKED."
correctionAmountComment: String
"A gross amount added to the correction as a free line item; null removes it. Once a correction exists, errorCode is RETURN_REFUND_SETTINGS_LOCKED."
correctionAmount: Decimal
"The contact person of the customer for this return; null removes it."
contact: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Updates an exchange item; only the fields that are sent change. If the exchange sales order exists, errorCode is RETURN_EXCHANGE_SALES_ORDER_EXISTS. - Request"
input UpdateReturnExchangeItemCommandRequestInput {
"The ID of the return. If it does not exist, errorCode is RETURN_NOT_FOUND."
returnId: ID!
"The ID of the exchange item. If it does not exist, errorCode is RETURN_EXCHANGE_ITEM_NOT_FOUND."
returnExchangeItemId: ID!
"The update."
update: ReturnExchangeItemUpdateInput!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Updates a line item of a return; only the fields that are sent change. - Request"
input UpdateReturnLineItemCommandRequestInput {
"The ID of the return. If it does not exist, errorCode is RETURN_NOT_FOUND."
returnId: ID!
"The ID of the line item. If it does not exist, errorCode is RETURN_LINE_ITEM_NOT_FOUND."
returnLineItemId: ID!
"The update. Completed line items cannot be changed."
update: ReturnLineItemUpdateInput!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the colour, the position or the visibility in the warehouse of a return reason. Fields that are omitted stay as they are. Names and descriptions are changed per language with 'SetReturnReasonTranslation', the restriction with 'SetReturnReasonRestriction'. Errors: RETURN_REASON_NOT_FOUND (404); RETURN_REASON_COLOR_INVALID (400). GraphQL only. - Request"
input UpdateReturnReasonCommandRequestInput {
"The ID of the return reason."
returnReasonId: ID!
"The colour as #RRGGBB; case is not significant."
color: String
"The new position in selection lists, starting at 1; a larger value places the return reason at the end. The other return reasons move accordingly."
sortOrder: Int
"Whether the warehouse offers the return reason."
isVisibleInWms: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the position or the visibility in the warehouse of a return state. The stage and the parent cannot be changed. Names are changed per language with 'SetReturnStateTranslation'. Errors: RETURN_STATE_NOT_FOUND (404); RETURN_STATE_SYSTEM_STATE_SORT_ORDER_FIXED, RETURN_STATE_WMS_VISIBILITY_NOT_ALLOWED (409). GraphQL only. - Request"
input UpdateReturnStateCommandRequestInput {
"The ID of the return state."
returnStateId: ID!
"The new position among the states with the same parent, starting at 1; a larger value places the state at the end. The other states move accordingly. Not possible for system states."
sortOrder: Int
"Whether the warehouse offers the return state. Only possible for the system state 'Completed' and below the system states 'Arrived' and 'Completed'."
isVisibleInWms: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a cancellation reason for sales invoices. Fields that are omitted stay as they are. Documents that were cancelled with the reason show the new name. GraphQL only. - Request"
input UpdateSalesInvoiceCancellationReasonCommandRequestInput {
"The ID of the cancellation reason for sales invoices."
cancellationReasonId: ID!
"The new name, 1 to 50 characters."
name: String
"The new value of 'isCommentRequired'."
isCommentRequired: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the header of a draft; only the fields that are sent change. A finalized or cancelled invoice cannot be changed: cancel it or correct it. A refusal carries 'blockers' with all reasons, each with a code and a message. Errors: errorCode is SALES_INVOICE_NOT_FOUND (no sales invoice with this ID); errorCode is SALES_INVOICE_NOT_DRAFT (only a draft can be changed; a finalized or cancelled invoice cannot); errorCode is SALES_INVOICE_VALUE_DATE_BEFORE_INVOICE_DATE (the value date is before the invoice date); errorCode is SALES_INVOICE_SERVICE_DATE_RANGE_INVALID (the end of the service period is before its start); errorCode is SALES_INVOICE_ADDRESS_INVALID (an address is incomplete); errorCode is PAYMENT_METHOD_NOT_FOUND (no payment method with this ID). - Request"
input UpdateSalesInvoiceCommandRequestInput {
"The ID of the sales invoice."
salesInvoiceId: ID!
"The changes."
update: SalesInvoiceUpdateInput!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a cancellation reason for sales invoice corrections. Fields that are omitted stay as they are. Documents that were cancelled with the reason show the new name. GraphQL only. - Request"
input UpdateSalesInvoiceCorrectionCancellationReasonCommandRequestInput {
"The ID of the cancellation reason for sales invoice corrections."
cancellationReasonId: ID!
"The new name, 1 to 50 characters."
name: String
"The new value of 'isCommentRequired'."
isCommentRequired: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a line item of a draft; only the fields that are sent change. Quantity, price, discount and tax rate only change on a line item without an order link. A refusal carries 'blockers' with all reasons, each with a code and a message. Errors: errorCode is SALES_INVOICE_NOT_FOUND (no sales invoice with this ID); errorCode is SALES_INVOICE_NOT_DRAFT (only a draft can be changed; a finalized or cancelled invoice cannot); errorCode is SALES_INVOICE_LINE_ITEM_NOT_FOUND (no line item with this ID on the invoice); errorCode is SALES_INVOICE_LINE_ITEM_LOCKED_BY_ORDER (quantity, price, discount or tax rate of a line item with an order link); errorCode is SALES_INVOICE_LINE_ITEM_READ_ONLY (a line item of type OTHER). - Request"
input UpdateSalesInvoiceLineItemCommandRequestInput {
"The ID of the sales invoice."
salesInvoiceId: ID!
"The ID of the line item."
salesInvoiceLineItemId: ID!
"The changes."
update: SalesInvoiceLineItemUpdateInput!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Replaces the billing address of a sales order. - Request"
input UpdateSalesOrderBillingAddressCommandRequestInput {
"The ID of the sales order. Fails with a GraphQL error whose extensions.code is SalesOrderNotFound, SalesOrderIsPending or SalesOrderReadOnly."
salesOrderId: ID!
"The new billing address. Fails with a GraphQL error whose extensions.code is BillingAddressLockedByInvoice."
address: SalesOrderAddressInput!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Changes a cancellation reason for sales orders. Fields that are omitted stay as they are. Documents that were cancelled with the reason show the new name. GraphQL only. - Request"
input UpdateSalesOrderCancellationReasonCommandRequestInput {
"The ID of the cancellation reason for sales orders."
cancellationReasonId: ID!
"The new name, 1 to 50 characters."
name: String
"The new value of 'isCommentRequired'."
isCommentRequired: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Updates a charge line item of a sales order; only the fields that are sent change. - Request"
input UpdateSalesOrderChargeLineItemCommandRequestInput {
"The ID of the sales order. Fails with a GraphQL error whose extensions.code is SalesOrderNotFound, SalesOrderIsPending or SalesOrderReadOnly."
salesOrderId: ID!
"The ID of a charge line item. Fails with a GraphQL error whose extensions.code is SalesOrderLineItemNotFound or SalesOrderLineItemTypeMismatch."
salesOrderLineItemId: ID!
"The update. Invoiced line items keep price and tax class; the quantity cannot drop below the invoiced, picked or fulfilled quantity."
update: SalesOrderChargeLineItemUpdateInput!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Updates the header data of a sales order; only the fields that are sent change. - Request"
input UpdateSalesOrderCommandRequestInput {
"The ID of the sales order. Fails with a GraphQL error whose extensions.code is SalesOrderNotFound, SalesOrderIsPending or SalesOrderReadOnly."
salesOrderId: ID!
"The ID of the shipping method. Fails with a GraphQL error whose extensions.code is ShippingMethodNotFound."
shippingMethodId: ID
"The ID of the user responsible for the sales order."
responsibleUserId: ID
"The ID of the process status. Fails with a GraphQL error whose extensions.code is ProcessStatusNotFound."
processStatusId: ID
"The ID of the payment method. Fails with a GraphQL error whose extensions.code is PaymentMethodNotFound."
paymentMethodId: ID
"How and when the sales order is to be shipped."
shippingDetails: SalesOrderShippingDetailsInput
"The payment terms."
paymentTerms: SalesOrderPaymentTermsInput
"A text printed on the documents."
printText: String
"The date of the sales order."
orderDate: DateTime
"An internal note."
note: String
"The language of the documents as BCP 47 language tag, for example de or de-AT. Language subtag in lower case, region subtag in upper case; case does not matter on input. Wawi currently holds only the two-letter language subtag. Fails with a GraphQL error whose extensions.code is LANGUAGE_NOT_ACTIVE."
languageTag: String
"The number of the sales order on the sales channel."
externalNumber: String
"The order number of the customer."
customerOrderNumber: String
"The comment of the customer."
customerComment: String
"The currency as ISO 4217 code. Fails with a GraphQL error whose extensions.code is CurrencyLockedByInvoice."
currencyCode: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Sets the value of a custom field of a sales order and replaces the value that was there. - Request"
input UpdateSalesOrderCustomFieldValueCommandRequestInput {
"The ID of the sales order. Fails with a GraphQL error whose extensions.code is SalesOrderNotFound, SalesOrderIsPending or SalesOrderReadOnly."
salesOrderId: ID!
"The ID of the custom field. Fails with CustomFieldNotFound, or CustomFieldNotForSalesOrders when it is not a field for sales orders."
customFieldId: ID!
"The value. Its type has to match the data type of the field, else SalesOrderCustomFieldValueTypeMismatch."
value: SalesOrderFieldValueInput!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Updates a free line item of a sales order; only the fields that are sent change. - Request"
input UpdateSalesOrderCustomLineItemCommandRequestInput {
"The ID of the sales order. Fails with a GraphQL error whose extensions.code is SalesOrderNotFound, SalesOrderIsPending or SalesOrderReadOnly."
salesOrderId: ID!
"The ID of a free line item. Fails with a GraphQL error whose extensions.code is SalesOrderLineItemNotFound or SalesOrderLineItemTypeMismatch."
salesOrderLineItemId: ID!
"The update. Invoiced line items keep price and tax class; the quantity cannot drop below the invoiced, picked or fulfilled quantity."
update: SalesOrderCustomLineItemUpdateInput!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Updates a discount line item of a sales order; only the fields that are sent change. - Request"
input UpdateSalesOrderDiscountLineItemCommandRequestInput {
"The ID of the sales order. Fails with a GraphQL error whose extensions.code is SalesOrderNotFound, SalesOrderIsPending or SalesOrderReadOnly."
salesOrderId: ID!
"The ID of a discount line item. Fails with a GraphQL error whose extensions.code is SalesOrderLineItemNotFound or SalesOrderLineItemTypeMismatch."
salesOrderLineItemId: ID!
"The update. Invoiced line items keep their amount."
update: SalesOrderDiscountLineItemUpdateInput!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Updates a line item for an item of the catalog; only the fields that are sent change. - Request"
input UpdateSalesOrderItemLineItemCommandRequestInput {
"The ID of the sales order. Fails with a GraphQL error whose extensions.code is SalesOrderNotFound, SalesOrderIsPending or SalesOrderReadOnly."
salesOrderId: ID!
"The ID of an item line item. Fails with a GraphQL error whose extensions.code is SalesOrderLineItemNotFound or SalesOrderLineItemTypeMismatch."
salesOrderLineItemId: ID!
"The update. Invoiced line items keep price and tax class; the quantity cannot drop below the invoiced, picked or fulfilled quantity."
update: SalesOrderItemLineItemUpdateInput!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Sets the value of a custom field of a sales order line item and replaces the value that was there. - Request"
input UpdateSalesOrderLineItemCustomFieldValueCommandRequestInput {
"The ID of the sales order. Fails with a GraphQL error whose extensions.code is SalesOrderNotFound, SalesOrderIsPending or SalesOrderReadOnly."
salesOrderId: ID!
"The ID of the line item. Fails with a GraphQL error whose extensions.code is SalesOrderLineItemNotFound."
salesOrderLineItemId: ID!
"The ID of the custom field. Fails with CustomFieldNotFound, or CustomFieldNotForSalesOrderLineItems when it is not a field for line items."
customFieldId: ID!
"The value. Its type has to match the data type of the field, else SalesOrderCustomFieldValueTypeMismatch."
value: SalesOrderFieldValueInput!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Updates the text of a note on a sales order. - Request"
input UpdateSalesOrderNoteCommandRequestInput {
"The ID of the sales order. Fails with a GraphQL error whose extensions.code is SalesOrderNotFound."
salesOrderId: ID!
"The ID of the note. Fails with a GraphQL error whose extensions.code is SalesOrderNoteNotFound."
salesOrderNoteId: ID!
"The new text of the note."
text: String!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Replaces the address the goods of a sales order are shipped to. - Request"
input UpdateSalesOrderShipmentAddressCommandRequestInput {
"The ID of the sales order. Fails with a GraphQL error whose extensions.code is SalesOrderNotFound, SalesOrderIsPending or SalesOrderReadOnly."
salesOrderId: ID!
"The new shipment address."
address: SalesOrderAddressInput!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Updates a voucher line item of a sales order; only the fields that are sent change. - Request"
input UpdateSalesOrderVoucherLineItemCommandRequestInput {
"The ID of the sales order. Fails with a GraphQL error whose extensions.code is SalesOrderNotFound, SalesOrderIsPending or SalesOrderReadOnly."
salesOrderId: ID!
"The ID of a voucher line item. Fails with a GraphQL error whose extensions.code is SalesOrderLineItemNotFound or SalesOrderLineItemTypeMismatch."
salesOrderLineItemId: ID!
"The update. Invoiced line items keep their amount; the quantity cannot drop below the invoiced, picked or fulfilled quantity."
update: SalesOrderVoucherLineItemUpdateInput!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Replaces the billing address of a sales quotation. - Request"
input UpdateSalesQuotationBillingAddressCommandRequestInput {
"The ID of the quotation. Fails with extensions.code SalesQuotationNotFound, or SalesQuotationCannotBeUpdated with extensions.blockers."
salesQuotationId: ID!
"The new billing address."
address: SalesQuotationAddressInput!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Updates a charge line item of a sales quotation; only the fields that are sent change. - Request"
input UpdateSalesQuotationChargeLineItemCommandRequestInput {
"The ID of the quotation. Fails with extensions.code SalesQuotationNotFound, or SalesQuotationCannotBeUpdated with extensions.blockers."
salesQuotationId: ID!
"The ID of a charge line item. Fails with extensions.code SalesQuotationLineItemNotFound or SalesQuotationLineItemTypeMismatch."
salesQuotationLineItemId: ID!
"The update."
update: SalesQuotationChargeLineItemUpdateInput!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Updates the header of a sales quotation. Only the sent properties change; line items have their own mutations. - Request"
input UpdateSalesQuotationCommandRequestInput {
"The ID of the quotation. Fails with extensions.code SalesQuotationNotFound, or SalesQuotationCannotBeUpdated with extensions.blockers."
salesQuotationId: ID!
"The ID of the shipping method. Fails with a GraphQL error whose extensions.code is ShippingMethodNotFound."
shippingMethodId: ID
"The ID of the user responsible for the quotation."
responsibleUserId: ID
"The ID of the process status. Fails with a GraphQL error whose extensions.code is ProcessStatusNotFound."
processStatusId: ID
"The ID of the payment method. Fails with a GraphQL error whose extensions.code is PaymentMethodNotFound."
paymentMethodId: ID
"The ID of the customer; addresses stay. Fails with a GraphQL error whose extensions.code is CustomerNotFound."
customerId: ID
"The ID of the company that sells. Fails with a GraphQL error whose extensions.code is CompanyNotFound."
companyId: ID
"The payment terms."
paymentTerms: SalesQuotationPaymentTermsInput
"The date of the quotation."
quotationDate: DateTime
"A text printed on the quotation."
printText: String
"An internal note."
note: String
"The language of the documents as ISO 639-1 code. Fails with a GraphQL error whose extensions.code is LanguageNotFound."
languageTag: String
"A number from another system, at most 50 characters."
externalNumber: String
"The delivery date that the quotation promises."
estimatedDeliveryDate: DateTime
"The order number of the customer."
customerOrderNumber: String
"A comment from or for the customer."
customerComment: String
"The currency as ISO 4217 code. Fails with a GraphQL error whose extensions.code is CurrencyNotFound."
currencyCode: String
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Updates a free line item of a sales quotation; only the fields that are sent change. - Request"
input UpdateSalesQuotationCustomLineItemCommandRequestInput {
"The ID of the quotation. Fails with extensions.code SalesQuotationNotFound, or SalesQuotationCannotBeUpdated with extensions.blockers."
salesQuotationId: ID!
"The ID of a free line item. Fails with extensions.code SalesQuotationLineItemNotFound or SalesQuotationLineItemTypeMismatch."
salesQuotationLineItemId: ID!
"The update."
update: SalesQuotationCustomLineItemUpdateInput!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Updates a discount line item of a sales quotation; only the fields that are sent change. - Request"
input UpdateSalesQuotationDiscountLineItemCommandRequestInput {
"The ID of the quotation. Fails with extensions.code SalesQuotationNotFound, or SalesQuotationCannotBeUpdated with extensions.blockers."
salesQuotationId: ID!
"The ID of a discount line item. Fails with extensions.code SalesQuotationLineItemNotFound or SalesQuotationLineItemTypeMismatch."
salesQuotationLineItemId: ID!
"The update."
update: SalesQuotationDiscountLineItemUpdateInput!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Updates a line item for an item of the catalog; it stays editable when the item became inactive. - Request"
input UpdateSalesQuotationItemLineItemCommandRequestInput {
"The ID of the quotation. Fails with extensions.code SalesQuotationNotFound, or SalesQuotationCannotBeUpdated with extensions.blockers."
salesQuotationId: ID!
"The ID of an item line item. Fails with extensions.code SalesQuotationLineItemNotFound or SalesQuotationLineItemTypeMismatch."
salesQuotationLineItemId: ID!
"The update."
update: SalesQuotationItemLineItemUpdateInput!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Updates the text of a note on a sales quotation. - Request"
input UpdateSalesQuotationNoteCommandRequestInput {
"The ID of the sales quotation. Fails with a GraphQL error whose extensions.code is SalesQuotationNotFound."
salesQuotationId: ID!
"The ID of the note. Fails with a GraphQL error whose extensions.code is SalesQuotationNoteNotFound."
salesQuotationNoteId: ID!
"The new text of the note."
text: String!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Replaces the address the goods of a sales quotation are to be shipped to. - Request"
input UpdateSalesQuotationShipmentAddressCommandRequestInput {
"The ID of the quotation. Fails with extensions.code SalesQuotationNotFound, or SalesQuotationCannotBeUpdated with extensions.blockers."
salesQuotationId: ID!
"The new shipment address."
address: SalesQuotationAddressInput!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
}
"Updates a voucher line item of a sales quotation; only the fields that are sent change. - Request"
input UpdateSalesQuotationVoucherLineItemCommandRequestInput {
"The ID of the quotation. Fails with extensions.code SalesQuotationNotFound, or SalesQuotationCannotBeUpdated with extensions.blockers."
salesQuotationId: ID!
"The ID of a voucher line item. Fails with extensions.code SalesQuotationLineItemNotFound or SalesQuotationLineItemTypeMismatch."
salesQuotationLineItemId: ID!
"The update."
update: SalesQuotationVoucherLineItemUpdateInput!
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a line item for a charge such as shipping or a fee. Only the properties that are sent change. The schedule has its own operation. - Request"
input UpdateSalesSubscriptionChargeLineItemCommandRequestInput {
"The ID of the subscription."
salesSubscriptionId: ID!
"The ID of the line item."
salesSubscriptionLineItemId: ID!
"The name printed on the sales order; not empty."
name: String
"The net amount of the charge."
salesPriceNet: Decimal
"The quantity; greater than 0. Defaults to 1."
quantity: Decimal
"The ID of the tax class. Defaults to the default tax class."
taxClassId: ID
"A note on the line item. An empty text removes it."
note: String
"The position of the line item."
sortOrder: Int
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a subscription. Only the properties that are sent change. Line items and their schedules have their own operations. Follow-up sales orders that were already created are not changed. - Request"
input UpdateSalesSubscriptionCommandRequestInput {
"The ID of the subscription."
salesSubscriptionId: ID!
"The ID of the customer. Addresses are not changed by it."
customerId: ID
"A number from another system, at most 50 characters."
externalNumber: String
"The user responsible for the subscription."
responsibleUserId: ID
"The language of the documents as BCP 47 language tag, for example de or de-AT. Language subtag in lower case, region subtag in upper case; case does not matter on input. Wawi currently holds only the two-letter language subtag."
languageTag: String
"The ID of the payment method."
paymentMethodId: ID
"The ID of the shipping method."
shippingMethodId: ID
"The ID of the process status; it must be usable for subscriptions."
processStatusId: ID
"The payment terms. Only the parts that are sent change."
paymentTerms: SalesSubscriptionPaymentTermsChangesInput
"Changes to the billing address. Only the properties that are sent change. Follow-up sales orders created later take it over."
billingAddress: SalesSubscriptionAddressChangesInput
"Changes to the shipping address. Only the properties that are sent change. Follow-up sales orders created later take it over."
shipmentAddress: SalesSubscriptionAddressChangesInput
"An internal note."
note: String
"A comment from the customer."
customerComment: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a line item for a free line without an item. Only the properties that are sent change. The schedule has its own operation. - Request"
input UpdateSalesSubscriptionCustomLineItemCommandRequestInput {
"The ID of the subscription."
salesSubscriptionId: ID!
"The ID of the line item."
salesSubscriptionLineItemId: ID!
"The name printed on the sales order; not empty."
name: String
"The quantity billed per period; greater than 0."
quantity: Decimal
"The net price per unit."
salesPriceNet: Decimal
"The ID of the tax class. Defaults to the default tax class."
taxClassId: ID
"The discount in percent, 0 to 100."
discountPercent: Decimal
"A note on the line item. An empty text removes it."
note: String
"The position of the line item."
sortOrder: Int
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a line item for a discount such as a coupon. Only the properties that are sent change. The schedule has its own operation. - Request"
input UpdateSalesSubscriptionDiscountLineItemCommandRequestInput {
"The ID of the subscription."
salesSubscriptionId: ID!
"The ID of the line item."
salesSubscriptionLineItemId: ID!
"The name printed on the sales order; not empty."
name: String
"The net amount by which each follow-up sales order is reduced; greater than 0."
amount: Decimal
"A note on the line item. An empty text removes it."
note: String
"The position of the line item."
sortOrder: Int
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a line item for an item of the catalog. Only the properties that are sent change. The schedule has its own operation. - Request"
input UpdateSalesSubscriptionItemLineItemCommandRequestInput {
"The ID of the subscription."
salesSubscriptionId: ID!
"The ID of the line item."
salesSubscriptionLineItemId: ID!
"The quantity billed per period; greater than 0."
quantity: Decimal
"The net price per unit. Defaults to the price of the item for the customer."
salesPriceNet: Decimal
"The discount in percent, 0 to 100."
discountPercent: Decimal
"The name printed on the sales order. Defaults to the name of the item."
name: String
"A note on the line item. An empty text removes it."
note: String
"The position of the line item."
sortOrder: Int
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the schedule of a recurring line item. Only the properties that are sent change. The next due date is never recalculated by itself: it stays unless it is sent, and an end date before it ends the line item. To pause or skip periods, move the next due date. A line item that has ended needs a new next due date when its end date is removed or moved. - Request"
input UpdateSalesSubscriptionLineItemScheduleCommandRequestInput {
"The ID of the subscription."
salesSubscriptionId: ID!
"The ID of the line item."
salesSubscriptionLineItemId: ID!
"How often the line item becomes due. Changing away from the custom cadence removes 'every' and 'unit'."
cadence: SalesSubscriptionCadence
"For the custom cadence: the number of units between two due dates, 1 to 999."
every: Int
"For the custom cadence: the unit of 'every'."
unit: SalesSubscriptionIntervalUnit
"The first day the schedule applies. Only the date counts; a time part is ignored."
startDate: DateTime
"The last day a period can be due; not before the start date. Null removes the end date. Only the date counts; a time part is ignored."
endDate: DateTime
"How many days before the due date the follow-up sales order is created, 0 to 9999."
leadTimeDays: Int
"The date of the next period to bill; not before the start date, not after the end date, never null. If it is not on the cadence, the next cadence date after it is used. Only the date counts; a time part is ignored."
nextDueDate: DateTime
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a line item for a voucher. Only the properties that are sent change. The schedule has its own operation. - Request"
input UpdateSalesSubscriptionVoucherLineItemCommandRequestInput {
"The ID of the subscription."
salesSubscriptionId: ID!
"The ID of the line item."
salesSubscriptionLineItemId: ID!
"The name printed on the sales order; not empty."
name: String
"The value of one voucher; greater than 0."
amount: Decimal
"The number of vouchers per period; greater than 0. Defaults to 1."
quantity: Decimal
"A note on the line item. An empty text removes it."
note: String
"The position of the line item."
sortOrder: Int
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the unit code of a sales unit. The names are changed per language with 'SetSalesUnitTranslation' and 'RemoveSalesUnitTranslation'. Fields that are omitted stay as they are; null removes the unit code. Hidden sales units cannot be changed. - Request"
input UpdateSalesUnitCommandRequestInput {
"The ID of the sales unit."
salesUnitId: ID!
"The new UN/CEFACT unit code, 2 or 3 letters or digits; null removes it."
unitCode: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renames a shipping class. The items that carry the class keep it. - Request"
input UpdateShippingClassCommandRequestInput {
"The ID of the shipping class."
shippingClassId: ID!
"The new name, at most 255 characters."
name: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes an own shipping method. Only what is sent changes. Whether the shipping method is active is not changed by this call; use activate and deactivate. The export mode cannot be changed. errorCode is one of: SHIPPING_METHOD_TAX_CLASS_REQUIRED, SHIPPING_METHOD_TAX_CLASS_NOT_ALLOWED, SHIPPING_METHOD_TRACKING_ID_PATTERN_INVALID, SHIPPING_METHOD_NOT_FOUND, SHIPPING_METHOD_NAME_ALREADY_EXISTS, SHIPPING_METHOD_NOT_OWN. - Request"
input UpdateShippingMethodCommandRequestInput {
"The ID of the shipping method."
shippingMethodId: ID!
"The name of the shipping method, at most 255 characters. It must be unique among all shipping methods."
name: String
"The shipping costs, gross. Not negative."
grossPrice: Decimal
"From this order value on, shipping is free. Omit the property to leave it unchanged; null removes the limit (no free shipping from an order value). Not negative; 0 is stored as no limit and read back as absent."
freeShippingFromOrderValue: Decimal
"The weight of the packaging that is added to the weight of the goods. Not negative."
additionalWeight: Decimal
"What the shipping costs the merchant, net. Not negative."
netPurchasePrice: Decimal
"The tax class of the shipping costs. Required when the tax rate determination is TaxClass and not allowed otherwise (error codes SHIPPING_METHOD_TAX_CLASS_REQUIRED, SHIPPING_METHOD_TAX_CLASS_NOT_ALLOWED)."
taxClassId: ID
"How the tax rate of the shipping costs is determined. Stable key in UPPER_SNAKE. Known values: TAX_CLASS, HIGHEST_GROSS_POSITION, HIGHEST_VAT_POSITION. New values can be added; a client that does not know a value ignores or tolerates it."
taxRateDetermination: String
"The priority of the shipping method, from -5 to 5."
priority: Int
"Whether and how packages have to be weighed. Stable key in UPPER_SNAKE. Known values: NONE, WITH_PRESET, WITHOUT_PRESET, WITH_SCALE, EVEN_DISTRIBUTION. New values can be added; a client that does not know a value ignores or tolerates it."
weighingRequirement: String
"How the tracking ID is entered. Stable key in UPPER_SNAKE. Known values: NONE, MANUAL, VIA_SHIPPING_DATA_IMPORT. New values can be added; a client that does not know a value ignores or tolerates it."
trackingIdEntry: String
"A regular expression the tracking ID has to match. It has to be a valid regular expression that works without backtracking, so without back references and look-around (error code SHIPPING_METHOD_TRACKING_ID_PATTERN_INVALID). Such an expression is matched in time proportional to the length of the tracking ID."
trackingIdPattern: String
"The tracking ID is cut from this position on. Omit the property to leave it unchanged; null for both positions means the tracking ID is not cut."
trackingIdCutFrom: Int
"The tracking ID is cut up to this position. null for both positions means the tracking ID is not cut."
trackingIdCutTo: Int
"The link to the tracking page: an absolute http or https address without quotation marks, angle brackets or blanks. The placeholders #IdentCode# (tracking ID), #PLZ# (postal code), #Tag# (day), #Monat# (month) and #Jahr# (year) are replaced; their values are URL-encoded."
trackingUrlTemplate: String
"Whether a shipping mail is sent to the customer."
sendShippingMail: Boolean
"Whether labels are printed on dispatch."
printLabels: Boolean
"Whether the start position on the label sheet is asked before printing. Only has an effect when labels are printed."
askLabelStartPosition: Boolean
"What marketplaces are told about the shipping method. The value replaces what was there as a whole."
marketplaces: ShippingMethodMarketplacesInput
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a SinglePurposeVoucherItem. Every field is optional; a field that is omitted stays as it is. An object that is sent replaces the whole object. A field the kind does not have, the kind of the item itself and the dimension set of a subset item cannot be changed here and are rejected with 400. Sending the route of another kind than the item has is answered with 409. - Request"
input UpdateSinglePurposeVoucherItemCommandRequestInput {
"The ID of the item."
itemId: ID!
"Name of the item in the default language. Further languages and sales channel texts are the descriptions of the item."
name: String
"The identifiers of the item: its item number, which is unique. Replaced as a whole."
identifiers: BasicItemIdentifiersInput
"The ID of the product group."
productGroupId: ID
"The ID of the manufacturer."
manufacturerId: ID
"The ID of the item condition, for example new or used."
conditionId: ID
"The ID of the delivery status of the item (the master data of delivery statuses, for example \"in stock\" or \"ships in 3 days\")."
deliveryStatusId: ID
"The ID of the tax class. When omitted the item gets the company default. The value must reference an existing tax class."
taxClassId: ID
"Settings of the voucher that is sold, replaced as a whole."
voucher: VoucherSettingsInput
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the standard prices of an item. Every field is optional; a field that is omitted stays as it is. - Request"
input UpdateStandardPricesCommandRequestInput {
"The ID of the item."
itemId: ID!
"The currency of the prices as ISO 4217 code. Prices are written in the default currency of the tenant only. Omitted means the default currency; any other currency, including one the tenant has, is refused with 409 (error code CURRENCY_NOT_SUPPORTED), nothing is converted when writing."
currencyCode: String
"Net sales price of the item."
salesPriceNet: Decimal
"Manufacturer's suggested retail price."
suggestedRetailPrice: Decimal
"Whether automatic discounts are not applied to the item."
ignoreDiscounts: Boolean
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a StockItem. Every field is optional; a field that is omitted stays as it is. An object that is sent replaces the whole object. A field the kind does not have, the kind of the item itself and the dimension set of a subset item cannot be changed here and are rejected with 400. Sending the route of another kind than the item has is answered with 409. - Request"
input UpdateStockItemCommandRequestInput {
"The ID of the item."
itemId: ID!
"Name of the item in the default language. Further languages and sales channel texts are the descriptions of the item."
name: String
"The identifiers of the item. The item number (SKU) is mandatory and unique. Replaced as a whole."
identifiers: TradeItemIdentifiersInput
"The ID of the product group."
productGroupId: ID
"The ID of the manufacturer."
manufacturerId: ID
"The ID of the item condition, for example new or used."
conditionId: ID
"The ID of the delivery status of the item (the master data of delivery statuses, for example \"in stock\" or \"ships in 3 days\")."
deliveryStatusId: ID
"The ID of the tax class. When omitted the item gets the company default. The value must reference an existing tax class."
taxClassId: ID
"The ID of the shipping class."
shippingClassId: ID
"Outer dimensions as shipped."
dimensions: ItemDimensionsInput
"Weights."
weights: ItemWeightsInput
"Customs information."
customs: ItemCustomsInput
"Sales unit and content with its base price."
units: ItemUnitsInput
"Settings of the stock management, replaced as a whole."
stockManagement: StockManagementInput
"How the units are traced, replaced as a whole. Changing it can be refused with 409, for example for serial numbers on an item with stock."
tracking: StockTrackingInput
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Updates the shipping method, the expected delivery date or the note of an existing stock transfer. Source and target warehouse cannot be changed. - Request"
input UpdateStockTransferCommandRequestInput {
"The ID of the stock transfer to update."
stockTransferId: ID!
"Shipping method used to move the items. It must be an active shipping method of your own."
shippingMethodId: ID
"Date on which the items are expected to arrive in the target warehouse."
expectedDeliveryDate: DateTime
"Internal note on the stock transfer."
note: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the quantity of a line item of an open stock transfer. - Request"
input UpdateStockTransferLineItemCommandRequestInput {
"The ID of the stock transfer the line item belongs to."
stockTransferId: ID!
"The ID of the line item to update. It must belong to the stock transfer in the route."
stockTransferLineItemId: ID!
"Quantity of the item to transfer. Must be greater than zero."
quantity: Decimal
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a storage location. A field that is omitted stays as it is."
input UpdateStorageLocationChangeInput {
"The location to change."
storageLocationId: ID!
"The new name."
name: String
"The ID of the new type, as in the single change of a storage location. A type that cannot be changed is refused with STORAGE_LOCATION_TYPE_CHANGE_NOT_ALLOWED, naming the row."
locationTypeId: UUID
"The new comment."
comment: String
"The new priority."
priority: Int
"The new sort number."
sortNumber: Int
"The new size and load capacity. They replace the old ones as a whole: a property that is not sent has no limit afterwards (see StorageLocationDimensionsInput)."
dimensions: StorageLocationDimensionsInput
}
"Changes a storage location. Only the properties that are sent change. The type can only be changed between shelf, quarantine, pallet, retail, carton, bulk storage and transfer; the locations the system or a process needs keep their type. Status and the lock for the available stock are changed with their own mutations. errorCode is one of: STORAGE_LOCATION_NAME_INVALID (the request is invalid); WAREHOUSE_NOT_FOUND or STORAGE_LOCATION_NOT_FOUND (the warehouse or the storage location was not found); WAREHOUSE_TYPE_DOES_NOT_SUPPORT_STORAGE_LOCATIONS (the warehouse has no storage locations: only warehouses with storage location management have them); STORAGE_LOCATION_TYPE_CHANGE_NOT_ALLOWED, STORAGE_LOCATION_IS_SYSTEM_LOCATION, STORAGE_LOCATION_INVENTORY_LOCKED, STORAGE_LOCATION_NAME_NOT_UNIQUE (the change is refused). - Request"
input UpdateStorageLocationCommandRequestInput {
"The ID of the warehouse."
warehouseId: ID!
"The ID of the storage location."
storageLocationId: ID!
"The new name, at most 50 characters, without an apostrophe."
name: String
"The new comment."
comment: String
"The ID of the new type."
locationTypeId: UUID
"The new priority."
priority: Int
"The new sort number."
sortNumber: Int
"The new size and load capacity. They replace the old ones as a whole: a property of the object that is not sent has no value or limit afterwards. Omit Dimensions to leave all four unchanged."
dimensions: StorageLocationDimensionsInput
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a SubsetStockItem. Every field is optional; a field that is omitted stays as it is. An object that is sent replaces the whole object. A field the kind does not have, the kind of the item itself and the dimension set of a subset item cannot be changed here and are rejected with 400. Sending the route of another kind than the item has is answered with 409. - Request"
input UpdateSubsetStockItemCommandRequestInput {
"The ID of the item."
itemId: ID!
"Name of the item in the default language. Further languages and sales channel texts are the descriptions of the item."
name: String
"The identifiers of the item. The item number (SKU) is mandatory and unique. Replaced as a whole."
identifiers: TradeItemIdentifiersInput
"The ID of the product group."
productGroupId: ID
"The ID of the manufacturer."
manufacturerId: ID
"The ID of the item condition, for example new or used."
conditionId: ID
"The ID of the delivery status of the item (the master data of delivery statuses, for example \"in stock\" or \"ships in 3 days\")."
deliveryStatusId: ID
"The ID of the tax class. When omitted the item gets the company default. The value must reference an existing tax class."
taxClassId: ID
"The ID of the shipping class."
shippingClassId: ID
"Outer dimensions as shipped."
dimensions: ItemDimensionsInput
"Weights."
weights: ItemWeightsInput
"Customs information."
customs: ItemCustomsInput
"Sales unit and content with its base price."
units: ItemUnitsInput
"Settings of the stock management, replaced as a whole."
stockManagement: StockManagementInput
"One value per dimension of the dimension set, replaced as a whole."
subsetDimensions: [SubsetDimensionValueInput]
"How much of the item is reserved for production, replaced as a whole."
reservation: SubsetReservationInput
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Updates an existing supplier. Fields that are omitted stay as they are. Errors: errorCode is SUPPLIER_NOT_FOUND (no active supplier has this ID), and the validation codes of CreateSupplier. - Request"
input UpdateSupplierCommandRequestInput {
"The ID of the supplier to update."
supplierId: ID!
"The company name of the supplier."
companyName: String
"The supplier number; null removes it."
supplierNumber: String
"The merchant's own customer number at the supplier; null removes it."
supplierAccountNumber: String
"A free-text note on the status of the supplier; null removes it."
statusNote: String
"Changes to the postal address of the supplier. Fields that are omitted stay as they are."
address: SupplierAddressUpdateInput
"Changes to the contact details of the supplier. Fields that are omitted stay as they are."
contact: SupplierContactUpdateInput
"Changes to the delivery and order conditions of the supplier. Fields that are omitted stay as they are."
deliveryConditions: SupplierDeliveryConditionsUpdateInput
"Changes to the payment conditions of the supplier. Fields that are omitted stay as they are."
paymentConditions: SupplierPaymentConditionsUpdateInput
"The dropshipping settings of the supplier. Null disables dropshipping for the supplier and keeps its settings. Sending an object enables dropshipping; its omitted fields keep their last value, so sending an empty object restores the settings from before dropshipping was disabled."
dropshipping: SupplierDropshippingUpdateInput
"The language of the supplier as BCP 47 tag, for example 'de' or 'de-AT'. Case does not matter on input; the output uses the canonical form (language lower case, region upper case)."
languageTag: String
"The currency of the supplier as an ISO 4217 alpha-3 code, for example 'EUR'. Input is case-insensitive."
currencyCode: String
"The creditor number of the supplier in accounting; null removes it."
creditorNumber: Int
"The VAT identification number of the supplier; null removes it."
vatId: String
"Whether purchases from the supplier are exempt from VAT."
isVatExempt: Boolean
"Whether the supplier is excluded from the purchase list."
isExcludedFromPurchaseList: Boolean
"The own company that purchase orders to the supplier are placed for by default. Must be an existing company."
defaultCompanyId: ID
"The warehouse that goods ordered from the supplier are delivered to by default. Must be an existing warehouse."
defaultWarehouseId: ID
"The website of the supplier; null removes it."
website: String
"A free-text comment on the supplier; null removes it."
comment: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the name or the rate type of a tax class. Fields that are omitted stay as they are. - Request"
input UpdateTaxClassCommandRequestInput {
"The ID of the tax class."
taxClassId: ID!
"The new name, 1 to 255 characters, unique."
name: String
"The new rate type, unique among tax classes; null removes it."
rateType: TaxRateType
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a tax code. Fields that are omitted stay as they are. The number cannot change while rates, overrides or documents use the tax code. - Request"
input UpdateTaxCodeCommandRequestInput {
"The ID of the tax code."
taxCodeId: ID!
"The new number, unique, from 1."
number: Int
"The new name, 1 to 255 characters, unique."
name: String
"The new general ledger account for the tax, at most 10 characters; null removes it."
taxAccount: String
"The new account for cash discounts, at most 10 characters; null removes it."
cashDiscountAccount: String
"The new revenue account, at most 10 characters; null removes it."
revenueAccount: String
"The new account for bonuses, at most 10 characters; null removes it."
bonusAccount: String
"The new account for write-offs, at most 10 characters; null removes it."
writeOffAccount: String
"The new account for down payments, at most 10 characters; null removes it."
downPaymentAccount: String
"Whether the accounts are automatic accounts in accounting."
isAutomaticAccount: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the name of a tax zone or which VAT ID of the company it shows. Fields that are omitted stay as they are. Company and departure country cannot change; create a new tax zone instead. - Request"
input UpdateTaxZoneCommandRequestInput {
"The ID of the tax zone."
taxZoneId: ID!
"The new name, 1 to 255 characters."
name: String
"Which VAT ID of the company is shown on documents of sales to business customers."
vatIdSourceForBusinesses: String
"Which VAT ID of the company is shown on documents of sales to consumers."
vatIdSourceForConsumers: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the name, the usage, the shortcut or the autotext of a text block. Fields that are omitted stay as they are. A text block cannot be moved to another group. Changing the usage keeps the content, but placeholders that the new usage does not know stay in the text unresolved. - Request"
input UpdateTextBlockCommandRequestInput {
"The ID of the text block."
textBlockId: ID!
"The new name, 1 to 255 characters."
name: String
"The new usage: the key of an entry of 'QueryTextBlockUsages'."
usageKey: String
"The new key combination, up to 255 characters; null removes it."
shortcut: String
"The new abbreviation, up to 255 characters; null removes it."
autoText: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renames a text block group. - Request"
input UpdateTextBlockGroupCommandRequestInput {
"The ID of the text block group."
textBlockGroupId: ID!
"The new name, 1 to 255 characters."
name: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the meaning or the colour of a transaction colour. The ID stays the same, so sales documents keep their colour. Errors: TRANSACTION_COLOR_NOT_FOUND (404); TRANSACTION_COLOR_NAME_EMPTY, TRANSACTION_COLOR_NAME_TOO_LONG, TRANSACTION_COLOR_INVALID (400); TRANSACTION_COLOR_ALREADY_EXISTS (409). GraphQL only. - Request"
input UpdateTransactionColorCommandRequestInput {
"The ID of the transaction colour."
transactionColorId: ID!
"The new meaning, 1 to 255 characters."
name: String
"The new colour as #RRGGBB; case is not significant. No other transaction colour may have it."
color: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes the name or the kinds of sales documents of a transaction status. A list that is sent replaces the existing one. Errors: TRANSACTION_STATUS_NOT_FOUND (404); TRANSACTION_STATUS_NAME_EMPTY, TRANSACTION_STATUS_NAME_TOO_LONG, TRANSACTION_STATUS_VALID_FOR_DUPLICATED (400); TRANSACTION_STATUS_NAME_ALREADY_EXISTS (409). GraphQL only. - Request"
input UpdateTransactionStatusCommandRequestInput {
"The ID of the transaction status."
transactionStatusId: ID!
"The new name, 1 to 255 characters. It must be unique among the transaction statuses, ignoring letter case."
name: String
"The kinds of sales documents the status can be chosen for. A list that is sent replaces the existing one; an empty list means none. Known keys: 'SALES_QUOTATION', 'SALES_ORDER', 'SUBSCRIPTION'. New keys can be added; pass back the keys you read, handle an unknown key as not known, never as a failure."
validFor: [String]
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a user. Errors: USER_NOT_FOUND, USER_TYPE_NOT_EDITABLE, USER_EMAIL_ALREADY_IN_USE, USER_NAME_REQUIRED. - Request"
input UpdateUserCommandRequestInput {
"The ID of the user."
userId: ID!
"The new phone number. Null or empty text removes it."
phoneNumber: String
"The new note. Null or empty text removes it."
note: String
"The new display name. Null or empty text is refused."
name: String
"The new mobile phone number. Null or empty text removes it."
mobilePhoneNumber: String
"The new email address, unique without regard to case and outer spaces. Null or empty text removes it."
emailAddress: String
"The new department. Null or empty text removes it."
department: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Sets the company of a user in this tenant. Errors: USER_NOT_FOUND, USER_TYPE_NOT_EDITABLE, COMPANY_NOT_FOUND, COMPANY_NOT_ACTIVE. - Request"
input UpdateUserCompanyCommandRequestInput {
"The ID of the user."
userId: ID!
"The ID of the company. It must be active."
companyId: ID!
}
"Changes name or description of a group. Errors: USER_GROUP_NOT_FOUND, USER_GROUP_NAME_ALREADY_EXISTS, USER_GROUP_NAME_TOO_LONG. - Request"
input UpdateUserGroupCommandRequestInput {
"The ID of the user group."
userGroupId: ID!
"The new unique name. Not sent: the name stays. Null or empty fails with USER_GROUP_NAME_REQUIRED."
name: String
"The new description. Null or empty text removes it. More than 255 characters fail with UserGroupDescriptionTooLong."
description: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes an axis. Every field is optional; a field that is omitted stays as it is. - Request"
input UpdateVariationAxisCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the variation axis."
axisId: ID!
"Display name of the axis in the default language."
name: String
"The display names per language, replaced as a whole."
names: [LocalizedTextInput]
"How the shop shows the axis. The style is one of DROPDOWN, RADIO_BUTTONS, IMAGE_SWATCHES or TEXT_SWATCHES. It changes how the axis is shown in the shop, not which fields exist. The list can grow with the shops; a client treats a value it does not know like DROPDOWN."
style: String
"Zero-based position of the axis."
position: Int
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a VariationParentItem. Every field is optional; a field that is omitted stays as it is. An object that is sent replaces the whole object. A field the kind does not have, the kind of the item itself and the dimension set of a subset item cannot be changed here and are rejected with 400. Sending the route of another kind than the item has is answered with 409. - Request"
input UpdateVariationParentItemCommandRequestInput {
"The ID of the item."
itemId: ID!
"Name of the item in the default language. Further languages and sales channel texts are the descriptions of the item."
name: String
"The identifiers of the item: its item number, which is unique. Replaced as a whole."
identifiers: BasicItemIdentifiersInput
"The ID of the product group."
productGroupId: ID
"The ID of the manufacturer."
manufacturerId: ID
"The ID of the item condition, for example new or used."
conditionId: ID
"The ID of the delivery status of the item (the master data of delivery statuses, for example \"in stock\" or \"ships in 3 days\")."
deliveryStatusId: ID
"The ID of the tax class. When omitted the item gets the company default. The value must reference an existing tax class."
taxClassId: ID
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a value. Every field is optional; a field that is omitted stays as it is. - Request"
input UpdateVariationValueCommandRequestInput {
"The ID of the item."
itemId: ID!
"The ID of the variation value."
valueId: ID!
"Display name of the value in the default language."
name: String
"The display names per language, replaced as a whole."
names: [LocalizedTextInput]
"Zero-based position of the value within its axis."
position: Int
"Own item number suffix or number of the value."
sku: String
"Own GTIN of the value."
gtin: String
"Default surcharge in net on the price when the value is chosen."
surchargeNet: Decimal
"Weight in kilograms that the value adds to the weight."
weightOffset: Decimal
"Surcharges per customer group, replaced as a whole."
customerGroupSurcharges: [CustomerGroupSurchargeInput]
"Surcharges per sales channel, replaced as a whole."
salesChannelSurcharges: [SalesChannelSurchargeInput]
"Suppresses the automatic workflow triggers of this call. Defaults to false when omitted."
disableAutomaticWorkflows: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Changes a warehouse. The input is a one-of: exactly one variant is sent and it must be the type of the warehouse. Only the properties that are sent change; sending null clears an optional property. The type cannot be changed. errorCode is one of: WAREHOUSE_NOT_FOUND (the warehouse was not found); WAREHOUSE_TYPE_MISMATCH (the variant is not the type of the warehouse The type cannot be changed, so the request has to carry the variant of its own type); WAREHOUSE_NAME_NOT_UNIQUE (the name is already used by an active warehouse). - Request"
input UpdateWarehouseCommandRequestInput {
"The ID of the warehouse."
warehouseId: ID!
"The changes. Exactly one variant, the type of the warehouse."
changes: UpdateWarehouseInput!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"The changes to a warehouse. Polymorphic: exactly one variant is sent, and it has to be the type of the warehouse (the type cannot be changed). A property that is omitted stays as it is."
input UpdateWarehouseInput @oneOf {
"Changes a standard warehouse. Only the properties that are sent change. The type cannot be changed. The address is replaced as a whole when it is sent."
standardWarehouseChanges: StandardWarehouseChangesInput
"Changes a warehouse with storage location management, including the locations its processes use by default."
wmsWarehouseChanges: WmsWarehouseChangesInput
"Changes a warehouse run by an external fulfillment partner."
externalFulfillmentWarehouseChanges: ExternalFulfillmentWarehouseChangesInput
"Changes a drop shipping warehouse. Source and target cannot be changed: create a new drop shipping warehouse for another route."
dropShippingWarehouseChanges: DropShippingWarehouseChangesInput
"Changes a warehouse of the JTL-Fulfillment Network. Address and fulfillment network ID come from the network and cannot be changed."
fulfillmentNetworkWarehouseChanges: FulfillmentNetworkWarehouseChangesInput
"Changes a Fulfillment by Amazon warehouse. The warehouse itself and its marketplace regions are kept by the Amazon integration."
amazonFbaWarehouseChanges: AmazonFbaWarehouseChangesInput
}
"Renders the customer as an export document of its template set (XML, JSON or other text built with DotLiquid) and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is CUSTOMER_NOT_FOUND (no customer with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Request"
input UploadCustomerExportCommandRequestInput {
"The ID of the customer."
customerId: ID!
"Where the file is uploaded to. The URL must carry its own authorization, for example an Azure SAS URL, an S3 presigned URL or a signed URL of another storage."
target: CustomerOutputUploadTargetInput!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Whether the output is recorded in the output history and the print state of the document. Defaults to true. Set it to false for a preview."
recordOutput: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renders the customer as a PDF and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is CUSTOMER_NOT_FOUND (no customer with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Request"
input UploadCustomerPdfCommandRequestInput {
"The ID of the customer."
customerId: ID!
"Where the file is uploaded to. The URL must carry its own authorization, for example an Azure SAS URL, an S3 presigned URL or a signed URL of another storage."
target: CustomerOutputUploadTargetInput!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Whether the output is recorded in the output history and the print state of the document. Defaults to true. Set it to false for a preview."
recordOutput: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renders the delivery note as an export document of its template set (XML, JSON or other text built with DotLiquid) and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is DELIVERY_NOTE_NOT_FOUND (no delivery note with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Request"
input UploadDeliveryNoteExportCommandRequestInput {
"The ID of the delivery note."
deliveryNoteId: ID!
"Where the file is uploaded to. The URL must carry its own authorization, for example an Azure SAS URL, an S3 presigned URL or a signed URL of another storage."
target: DeliveryOutputUploadTargetInput!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Whether the output is recorded in the output history and the print state of the document. Defaults to true. Set it to false for a preview."
recordOutput: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renders the delivery note as a PDF and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is DELIVERY_NOTE_NOT_FOUND (no delivery note with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Request"
input UploadDeliveryNotePdfCommandRequestInput {
"The ID of the delivery note."
deliveryNoteId: ID!
"Where the file is uploaded to. The URL must carry its own authorization, for example an Azure SAS URL, an S3 presigned URL or a signed URL of another storage."
target: DeliveryOutputUploadTargetInput!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Whether the output is recorded in the output history and the print state of the document. Defaults to true. Set it to false for a preview."
recordOutput: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renders the dunning notice as a PDF and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is DUNNING_NOTICE_NOT_FOUND (no dunning notice with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Request"
input UploadDunningNoticePdfCommandRequestInput {
"The ID of the dunning notice."
dunningNoticeId: ID!
"Where the file is uploaded to. The URL must carry its own authorization, for example an Azure SAS URL, an S3 presigned URL or a signed URL of another storage."
target: SalesOutputUploadTargetInput!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Whether the output is recorded in the output history and the print state of the document. Defaults to true. Set it to false for a preview."
recordOutput: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renders the inventory count as an export document of its template set (XML, JSON or other text built with DotLiquid) and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is INVENTORY_COUNT_NOT_FOUND (no inventory count with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Request"
input UploadInventoryCountExportCommandRequestInput {
"The ID of the inventory count."
inventoryCountId: ID!
"Where the file is uploaded to. The URL must carry its own authorization, for example an Azure SAS URL, an S3 presigned URL or a signed URL of another storage."
target: WarehouseOutputUploadTargetInput!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Whether the output is recorded in the output history and the print state of the document. Defaults to true. Set it to false for a preview."
recordOutput: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renders the inventory count as a PDF and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is INVENTORY_COUNT_NOT_FOUND (no inventory count with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Request"
input UploadInventoryCountPdfCommandRequestInput {
"The ID of the inventory count."
inventoryCountId: ID!
"Where the file is uploaded to. The URL must carry its own authorization, for example an Azure SAS URL, an S3 presigned URL or a signed URL of another storage."
target: WarehouseOutputUploadTargetInput!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Whether the output is recorded in the output history and the print state of the document. Defaults to true. Set it to false for a preview."
recordOutput: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renders item labels as one PDF and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is OUTPUT_LABEL_LIMIT_EXCEEDED (more than 500 entries; split the selection into several calls); errorCode is OUTPUT_LABEL_ENTRY_INVALID (an entry has no valid ID or a quantity below 1); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Request"
input UploadItemLabelsPdfCommandRequestInput {
"The item labels to output, each with the number of labels. At most 500 entries per call; split larger selections into several calls."
entries: [ItemLabelEntryInput]!
"Where the file is uploaded to. The URL must carry its own authorization, for example an Azure SAS URL, an S3 presigned URL or a signed URL of another storage."
target: ItemOutputUploadTargetInput!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Whether the output is recorded in the output history and the print state of the document. Defaults to true. Set it to false for a preview."
recordOutput: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renders package ID labels as one PDF and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is OUTPUT_LABEL_LIMIT_EXCEEDED (more than 500 entries; split the selection into several calls); errorCode is OUTPUT_LABEL_ENTRY_INVALID (an entry has no valid ID or a quantity below 1); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Request"
input UploadPackageIdLabelsPdfCommandRequestInput {
"The package ID labels to output, each with the number of labels. At most 500 entries per call; split larger selections into several calls."
entries: [PackageIdLabelEntryInput]!
"Where the file is uploaded to. The URL must carry its own authorization, for example an Azure SAS URL, an S3 presigned URL or a signed URL of another storage."
target: DeliveryOutputUploadTargetInput!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Whether the output is recorded in the output history and the print state of the document. Defaults to true. Set it to false for a preview."
recordOutput: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renders the pick list as an export document of its template set (XML, JSON or other text built with DotLiquid) and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is PICK_LIST_NOT_FOUND (no pick list with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Request"
input UploadPickListExportCommandRequestInput {
"The ID of the pick list."
pickListId: ID!
"Where the file is uploaded to. The URL must carry its own authorization, for example an Azure SAS URL, an S3 presigned URL or a signed URL of another storage."
target: WarehouseOutputUploadTargetInput!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Whether the output is recorded in the output history and the print state of the document. Defaults to true. Set it to false for a preview."
recordOutput: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renders the pick list as a PDF and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is PICK_LIST_NOT_FOUND (no pick list with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Request"
input UploadPickListPdfCommandRequestInput {
"The ID of the pick list."
pickListId: ID!
"Where the file is uploaded to. The URL must carry its own authorization, for example an Azure SAS URL, an S3 presigned URL or a signed URL of another storage."
target: WarehouseOutputUploadTargetInput!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Whether the output is recorded in the output history and the print state of the document. Defaults to true. Set it to false for a preview."
recordOutput: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renders the purchase order as an export document of its template set (XML, JSON or other text built with DotLiquid) and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is PURCHASE_ORDER_NOT_FOUND (no purchase order with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Request"
input UploadPurchaseOrderExportCommandRequestInput {
"The ID of the purchase order."
purchaseOrderId: ID!
"Where the file is uploaded to. The URL must carry its own authorization, for example an Azure SAS URL, an S3 presigned URL or a signed URL of another storage."
target: PurchaseOrderOutputUploadTargetInput!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Whether the output is recorded in the output history and the print state of the document. Defaults to true. Set it to false for a preview."
recordOutput: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renders the purchase order as a PDF and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is PURCHASE_ORDER_NOT_FOUND (no purchase order with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Request"
input UploadPurchaseOrderPdfCommandRequestInput {
"The ID of the purchase order."
purchaseOrderId: ID!
"Where the file is uploaded to. The URL must carry its own authorization, for example an Azure SAS URL, an S3 presigned URL or a signed URL of another storage."
target: PurchaseOrderOutputUploadTargetInput!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Whether the output is recorded in the output history and the print state of the document. Defaults to true. Set it to false for a preview."
recordOutput: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renders the return as an export document of its template set (XML, JSON or other text built with DotLiquid) and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is RETURN_NOT_FOUND (no return with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Request"
input UploadReturnExportCommandRequestInput {
"The ID of the return."
returnId: ID!
"Where the file is uploaded to. The URL must carry its own authorization, for example an Azure SAS URL, an S3 presigned URL or a signed URL of another storage."
target: ReturnOutputUploadTargetInput!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Whether the output is recorded in the output history and the print state of the document. Defaults to true. Set it to false for a preview."
recordOutput: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renders the return as a PDF and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is RETURN_NOT_FOUND (no return with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Request"
input UploadReturnPdfCommandRequestInput {
"The ID of the return."
returnId: ID!
"Where the file is uploaded to. The URL must carry its own authorization, for example an Azure SAS URL, an S3 presigned URL or a signed URL of another storage."
target: ReturnOutputUploadTargetInput!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Whether the output is recorded in the output history and the print state of the document. Defaults to true. Set it to false for a preview."
recordOutput: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renders the pure e-invoice data (XRechnung or ZUGFeRD XML) of the sales credit note and uploads it to the given URL with a PUT request. The PDF of the document already carries its e-invoice data; use this call only when the XML alone is wanted. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_CREDIT_NOTE_NOT_FOUND (no sales credit note with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Request"
input UploadSalesCreditNoteEInvoiceCommandRequestInput {
"The ID of the sales credit note."
salesCreditNoteId: ID!
"Where the file is uploaded to. The URL must carry its own authorization, for example an Azure SAS URL, an S3 presigned URL or a signed URL of another storage."
target: SalesOutputUploadTargetInput!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Whether the output is recorded in the output history and the print state of the document. Defaults to true. Set it to false for a preview."
recordOutput: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renders the sales credit note as an export document of its template set (XML, JSON or other text built with DotLiquid) and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_CREDIT_NOTE_NOT_FOUND (no sales credit note with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Request"
input UploadSalesCreditNoteExportCommandRequestInput {
"The ID of the sales credit note."
salesCreditNoteId: ID!
"Where the file is uploaded to. The URL must carry its own authorization, for example an Azure SAS URL, an S3 presigned URL or a signed URL of another storage."
target: SalesOutputUploadTargetInput!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Whether the output is recorded in the output history and the print state of the document. Defaults to true. Set it to false for a preview."
recordOutput: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renders the sales credit note as a PDF and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_CREDIT_NOTE_NOT_FOUND (no sales credit note with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Request"
input UploadSalesCreditNotePdfCommandRequestInput {
"The ID of the sales credit note."
salesCreditNoteId: ID!
"Where the file is uploaded to. The URL must carry its own authorization, for example an Azure SAS URL, an S3 presigned URL or a signed URL of another storage."
target: SalesOutputUploadTargetInput!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Whether the output is recorded in the output history and the print state of the document. Defaults to true. Set it to false for a preview."
recordOutput: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renders the pure e-invoice data (XRechnung or ZUGFeRD XML) of the sales invoice correction and uploads it to the given URL with a PUT request. The PDF of the document already carries its e-invoice data; use this call only when the XML alone is wanted. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_INVOICE_CORRECTION_NOT_FOUND (no sales invoice correction with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Request"
input UploadSalesInvoiceCorrectionEInvoiceCommandRequestInput {
"The ID of the sales invoice correction."
salesInvoiceCorrectionId: ID!
"Where the file is uploaded to. The URL must carry its own authorization, for example an Azure SAS URL, an S3 presigned URL or a signed URL of another storage."
target: SalesOutputUploadTargetInput!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Whether the output is recorded in the output history and the print state of the document. Defaults to true. Set it to false for a preview."
recordOutput: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renders the sales invoice correction as an export document of its template set (XML, JSON or other text built with DotLiquid) and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_INVOICE_CORRECTION_NOT_FOUND (no sales invoice correction with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Request"
input UploadSalesInvoiceCorrectionExportCommandRequestInput {
"The ID of the sales invoice correction."
salesInvoiceCorrectionId: ID!
"Where the file is uploaded to. The URL must carry its own authorization, for example an Azure SAS URL, an S3 presigned URL or a signed URL of another storage."
target: SalesOutputUploadTargetInput!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Whether the output is recorded in the output history and the print state of the document. Defaults to true. Set it to false for a preview."
recordOutput: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renders the sales invoice correction as a PDF and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_INVOICE_CORRECTION_NOT_FOUND (no sales invoice correction with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Request"
input UploadSalesInvoiceCorrectionPdfCommandRequestInput {
"The ID of the sales invoice correction."
salesInvoiceCorrectionId: ID!
"Where the file is uploaded to. The URL must carry its own authorization, for example an Azure SAS URL, an S3 presigned URL or a signed URL of another storage."
target: SalesOutputUploadTargetInput!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Whether the output is recorded in the output history and the print state of the document. Defaults to true. Set it to false for a preview."
recordOutput: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renders the pure e-invoice data (XRechnung or ZUGFeRD XML) of the sales invoice and uploads it to the given URL with a PUT request. The PDF of the document already carries its e-invoice data; use this call only when the XML alone is wanted. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_INVOICE_NOT_FOUND (no sales invoice with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Request"
input UploadSalesInvoiceEInvoiceCommandRequestInput {
"The ID of the sales invoice."
salesInvoiceId: ID!
"Where the file is uploaded to. The URL must carry its own authorization, for example an Azure SAS URL, an S3 presigned URL or a signed URL of another storage."
target: SalesOutputUploadTargetInput!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Whether the output is recorded in the output history and the print state of the document. Defaults to true. Set it to false for a preview."
recordOutput: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renders the sales invoice as an export document of its template set (XML, JSON or other text built with DotLiquid) and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_INVOICE_NOT_FOUND (no sales invoice with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Request"
input UploadSalesInvoiceExportCommandRequestInput {
"The ID of the sales invoice."
salesInvoiceId: ID!
"Where the file is uploaded to. The URL must carry its own authorization, for example an Azure SAS URL, an S3 presigned URL or a signed URL of another storage."
target: SalesOutputUploadTargetInput!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Whether the output is recorded in the output history and the print state of the document. Defaults to true. Set it to false for a preview."
recordOutput: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renders the sales invoice as a PDF and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_INVOICE_NOT_FOUND (no sales invoice with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Request"
input UploadSalesInvoicePdfCommandRequestInput {
"The ID of the sales invoice."
salesInvoiceId: ID!
"Where the file is uploaded to. The URL must carry its own authorization, for example an Azure SAS URL, an S3 presigned URL or a signed URL of another storage."
target: SalesOutputUploadTargetInput!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Whether the output is recorded in the output history and the print state of the document. Defaults to true. Set it to false for a preview."
recordOutput: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renders the sales order as an export document of its template set (XML, JSON or other text built with DotLiquid) and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_ORDER_NOT_FOUND (no sales order with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Request"
input UploadSalesOrderExportCommandRequestInput {
"The ID of the sales order."
salesOrderId: ID!
"Where the file is uploaded to. The URL must carry its own authorization, for example an Azure SAS URL, an S3 presigned URL or a signed URL of another storage."
target: SalesOutputUploadTargetInput!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Whether the output is recorded in the output history and the print state of the document. Defaults to true. Set it to false for a preview."
recordOutput: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renders the sales order as a PDF and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_ORDER_NOT_FOUND (no sales order with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Request"
input UploadSalesOrderPdfCommandRequestInput {
"The ID of the sales order."
salesOrderId: ID!
"Where the file is uploaded to. The URL must carry its own authorization, for example an Azure SAS URL, an S3 presigned URL or a signed URL of another storage."
target: SalesOutputUploadTargetInput!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Whether the output is recorded in the output history and the print state of the document. Defaults to true. Set it to false for a preview."
recordOutput: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renders the sales quotation as an export document of its template set (XML, JSON or other text built with DotLiquid) and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_QUOTATION_NOT_FOUND (no sales quotation with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Request"
input UploadSalesQuotationExportCommandRequestInput {
"The ID of the sales quotation."
salesQuotationId: ID!
"Where the file is uploaded to. The URL must carry its own authorization, for example an Azure SAS URL, an S3 presigned URL or a signed URL of another storage."
target: SalesOutputUploadTargetInput!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Whether the output is recorded in the output history and the print state of the document. Defaults to true. Set it to false for a preview."
recordOutput: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renders the sales quotation as a PDF and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is SALES_QUOTATION_NOT_FOUND (no sales quotation with this ID); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Request"
input UploadSalesQuotationPdfCommandRequestInput {
"The ID of the sales quotation."
salesQuotationId: ID!
"Where the file is uploaded to. The URL must carry its own authorization, for example an Azure SAS URL, an S3 presigned URL or a signed URL of another storage."
target: SalesOutputUploadTargetInput!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Whether the output is recorded in the output history and the print state of the document. Defaults to true. Set it to false for a preview."
recordOutput: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renders SSCC labels as one PDF and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is OUTPUT_LABEL_LIMIT_EXCEEDED (more than 500 entries; split the selection into several calls); errorCode is OUTPUT_LABEL_ENTRY_INVALID (an entry has no valid ID or a quantity below 1); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Request"
input UploadSsccLabelsPdfCommandRequestInput {
"The SSCC labels to output, each with the number of labels. At most 500 entries per call; split larger selections into several calls."
entries: [SsccLabelEntryInput]!
"Where the file is uploaded to. The URL must carry its own authorization, for example an Azure SAS URL, an S3 presigned URL or a signed URL of another storage."
target: DeliveryOutputUploadTargetInput!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Whether the output is recorded in the output history and the print state of the document. Defaults to true. Set it to false for a preview."
recordOutput: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"Renders storage location labels as one PDF and uploads it to the given URL with a PUT request. The call returns at once with an output job; read its state with GetOutputJob. Errors: errorCode is OUTPUT_LABEL_LIMIT_EXCEEDED (more than 500 entries; split the selection into several calls); errorCode is OUTPUT_LABEL_ENTRY_INVALID (an entry has no valid ID or a quantity below 1); errorCode is OUTPUT_TEMPLATE_SET_NOT_FOUND (no template set with this ID); errorCode is OUTPUT_TEMPLATE_SET_DOCUMENT_TYPE_MISMATCH (the template set belongs to another document type than this document); errorCode is OUTPUT_NO_MATCHING_TEMPLATE (the template set has no template for this document and the requested channel); errorCode is OUTPUT_UPLOAD_TARGET_INVALID (the target URL is not an https URL, points to a private network address or is not valid). - Request"
input UploadStorageLocationLabelsPdfCommandRequestInput {
"The ID of the warehouse."
warehouseId: ID!
"The storage location labels to output, each with the number of labels. At most 500 entries per call; split larger selections into several calls."
entries: [StorageLocationLabelEntryInput]!
"Where the file is uploaded to. The URL must carry its own authorization, for example an Azure SAS URL, an S3 presigned URL or a signed URL of another storage."
target: WarehouseOutputUploadTargetInput!
"The template set to output with. Defaults to the standard template set of the document type. The Wawi picks the template inside the set by its own rules (language, company, customer group and so on)."
templateSetId: ID
"Whether the output is recorded in the output history and the print state of the document. Defaults to true. Set it to false for a preview."
recordOutput: Boolean
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"A user of Wawi: a person, an API application or a system component."
input UserFilterInput {
and: [UserFilterInput!]
or: [UserFilterInput!]
"The ID of the user, as used in \"createdBy\" or \"changedBy\"."
id: ComparableBenutzerKeyOperationFilterInput @cost(weight: "15")
"The \"sub\" of the JTL cloud access token, opaque text without a fixed format. Null if not set."
identityProviderUserId: StringOperationFilterInput @cost(weight: "15")
"The unique login name of the user."
login: StringOperationFilterInput @cost(weight: "15")
"The department of the user. Null if not set."
department: StringOperationFilterInput @cost(weight: "50")
"The email address of the user. Null if not set."
emailAddress: StringOperationFilterInput @cost(weight: "50")
"Whether the user is active."
isActive: ComparableBooleanOperationFilterInput @cost(weight: "50")
"The time of the last sign-in. Null if the user never signed in."
lastLoginAt: ComparableNullableOfDateTimeOffsetOperationFilterInput @cost(weight: "50")
"The display name of the user."
name: StringOperationFilterInput @cost(weight: "50")
"The kind of the user."
userType: ComparableUserTypeOperationFilterInput @cost(weight: "50")
}
"A user group. Permissions are given to groups, not to single users."
input UserGroupFilterInput {
and: [UserGroupFilterInput!]
or: [UserGroupFilterInput!]
"The ID of the user group."
id: ComparableUserGroupKeyOperationFilterInput @cost(weight: "15")
"What the group is for. Null if not set."
description: StringOperationFilterInput @cost(weight: "50")
"Whether this is the administrator group. Its members have all permissions."
isAdministrator: ComparableBooleanOperationFilterInput @cost(weight: "200")
"The name of the user group, unique among all user groups."
name: StringOperationFilterInput @cost(weight: "50")
}
"The key of a user group (tRechtBenutzerGruppe.kRechtBenutzerGruppe)."
input UserGroupKeySortInput {
"Gets the identifier of the user group."
kRechtBenutzerGruppe: SortEnumType @cost(weight: "10")
}
"A member of a user group."
input UserGroupMemberFilterInput {
and: [UserGroupMemberFilterInput!]
or: [UserGroupMemberFilterInput!]
"The ID of the user."
userId: ComparableBenutzerKeyOperationFilterInput @cost(weight: "15")
}
"A member of a user group."
input UserGroupMemberSortInput {
"The ID of the user."
userId: BenutzerKeySortInput @cost(weight: "15")
}
"A permission given to a user group."
input UserGroupPermissionFilterInput {
and: [UserGroupPermissionFilterInput!]
or: [UserGroupPermissionFilterInput!]
"The ID of the permission."
permissionId: ComparableBerechtigungKeyOperationFilterInput @cost(weight: "200")
}
"A permission given to a user group."
input UserGroupPermissionSortInput {
"The ID of the permission."
permissionId: BerechtigungKeySortInput @cost(weight: "200")
}
"A user group. Permissions are given to groups, not to single users."
input UserGroupSortInput {
"The ID of the user group."
id: UserGroupKeySortInput @cost(weight: "15")
"The name of the user group, unique among all user groups."
name: SortEnumType @cost(weight: "50")
}
"A user of Wawi: a person, an API application or a system component."
input UserSortInput {
"The ID of the user, as used in \"createdBy\" or \"changedBy\"."
id: BenutzerKeySortInput @cost(weight: "15")
"The unique login name of the user."
login: SortEnumType @cost(weight: "15")
"The department of the user. Null if not set."
department: SortEnumType @cost(weight: "50")
"The email address of the user. Null if not set."
emailAddress: SortEnumType @cost(weight: "50")
"Whether the user is active."
isActive: SortEnumType @cost(weight: "50")
"The time of the last sign-in. Null if the user never signed in."
lastLoginAt: SortEnumType @cost(weight: "50")
"The display name of the user."
name: SortEnumType @cost(weight: "50")
"The kind of the user."
userType: SortEnumType @cost(weight: "50")
}
"Checks a template text for syntax errors. The text is parsed, not rendered, and nothing is stored. The result is empty if the text is valid. The text goes in the body because templates can be long. GraphQL only (new API rule). - Request"
input ValidateOutputTemplateTextCommandRequestInput {
"The template text."
text: String!
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
"One axis of a variation, for example color, with its values."
input VariationAxisFilterInput {
and: [VariationAxisFilterInput!]
or: [VariationAxisFilterInput!]
"The ID of the variation axis."
id: ComparableVariationKeyOperationFilterInput
}
"One axis of a variation, for example color, with its values."
input VariationAxisSortInput {
"The ID of the variation axis."
id: VariationKeySortInput @cost(weight: "10")
"Zero-based position of the axis within the variation."
position: SortEnumType @cost(weight: "10")
}
"One combination of a variation parent: the item that is sold for one choice of values. The item is a normal item of any kind and does not know that it is a combination."
input VariationCombinationFilterInput {
and: [VariationCombinationFilterInput!]
or: [VariationCombinationFilterInput!]
"The ID of the item that is sold for this combination."
itemId: ComparableArtikelKeyOperationFilterInput
}
"One combination of a variation parent: the item that is sold for one choice of values. The item is a normal item of any kind and does not know that it is a combination."
input VariationCombinationSortInput {
"The ID of the item that is sold for this combination."
itemId: ArtikelKeySortInput @cost(weight: "10")
}
input VariationKeySortInput {
kVariation: SortEnumType @cost(weight: "10")
}
"The value a variation child takes on one axis of its parent."
input VariationValueAssignmentInput {
"The ID of the variation axis of the parent."
axisId: ID!
"The ID of the chosen value of that axis."
valueId: ID!
}
input VerkaufAuftragFileKeySortInput {
kAuftragFile: SortEnumType @cost(weight: "10")
}
input VerkaufAuftragKeySortInput {
kAuftrag: SortEnumType @cost(weight: "10")
}
input VerkaufAuftragPositionFileKeySortInput {
kAuftragPositionFile: SortEnumType @cost(weight: "10")
}
input VerkaufAuftragPositionKeySortInput {
kAuftragPosition: SortEnumType @cost(weight: "10")
}
input VersandartKeySortInput {
kVersandart: SortEnumType @cost(weight: "10")
}
input VersandKeySortInput {
kVersand: SortEnumType @cost(weight: "10")
}
input VersandklasseKeySortInput {
kVersandklasse: SortEnumType @cost(weight: "10")
}
input VorgangsstatusKeySortInput {
kVorgangsstatus: SortEnumType @cost(weight: "10")
}
"Identity key for a Vorlage (template)."
input VorlageKeySortInput {
"Gets the Vorlage identifier."
kVorlage: SortEnumType @cost(weight: "10")
"Gets a value indicating whether the key refers to a stored Vorlage."
isExisting: SortEnumType @cost(weight: "10")
}
input VorlagenSetKeySortInput {
kVorlagenset: SortEnumType @cost(weight: "10")
}
"Settings of the voucher that a voucher item sells."
input VoucherSettingsInput {
"The settings of a digital voucher: the print template set the voucher document is produced with. Absent when the voucher is a physical voucher card."
digitalDelivery: DigitalVoucherDeliveryInput
"The fixed amount of the voucher, greater than zero. Absent when the value is taken from the sales document line the voucher is sold on."
fixedAmount: Decimal
"Currency of the voucher as ISO 4217 code."
currencyCode: String!
"Campaign the voucher belongs to."
campaign: String
}
"The postal address of a warehouse when written. The address is replaced as a whole."
input WarehouseAddressInput {
"The recipient company name, at most 255 characters."
companyName: String
"Street with house number, at most 255 characters."
street: String!
"Address supplement, at most 255 characters."
additionalAddressLine: String
"Postal code, at most 255 characters."
postalCode: String!
"City, at most 255 characters."
city: String!
"State or region, at most 100 characters."
state: String
"The ISO 3166-1 alpha-2 code of the country. When omitted, the country of the company is used."
countryCode: String
"The contact person."
contact: WarehouseContactInput!
}
"One capability of a warehouse: whether the kind offers it and whether it is enabled. The capabilities are a list of the system that grows without a change of the schema, so a capability is a stable key plus texts, not an enum (a new enum value would break clients that handle the values one by one)."
input WarehouseCapabilityStateFilterInput {
and: [WarehouseCapabilityStateFilterInput!]
or: [WarehouseCapabilityStateFilterInput!]
"The stable key of the capability, in UPPER_SNAKE. Known keys: BATCH_TRACKING, SHELF_LIFE_EXPIRATION_TRACKING, SUBSET_MANAGEMENT. A client that does not know a key shows the name."
capabilityId: StringOperationFilterInput @cost(weight: "50")
"Whether the kind of the warehouse offers the capability. A capability that is not available cannot be enabled."
isAvailable: ComparableBooleanOperationFilterInput @cost(weight: "50")
"Whether the capability is enabled. Always false when it is not available."
isEnabled: ComparableBooleanOperationFilterInput @cost(weight: "50")
}
"One capability of a warehouse: whether the kind offers it and whether it is enabled. The capabilities are a list of the system that grows without a change of the schema, so a capability is a stable key plus texts, not an enum (a new enum value would break clients that handle the values one by one)."
input WarehouseCapabilityStateSortInput {
"The stable key of the capability, in UPPER_SNAKE. Known keys: BATCH_TRACKING, SHELF_LIFE_EXPIRATION_TRACKING, SUBSET_MANAGEMENT. A client that does not know a key shows the name."
capabilityId: SortEnumType @cost(weight: "50")
"The name of the capability, in the language of the caller."
name: SortEnumType @cost(weight: "50")
}
"The contact person of a warehouse when written."
input WarehouseContactInput {
"Salutation, at most 255 characters."
salutation: String!
"First name, at most 255 characters."
firstName: String!
"Last name, at most 255 characters."
lastName: String!
"Department."
department: String
"Phone number."
phoneNumber: String
"Fax number."
faxNumber: String
"E-mail address."
emailAddress: String
}
"One row of the warehouse list: what is needed to find and show a warehouse. The full structure is read with the single warehouse query."
input WarehouseListEntryFilterInput {
and: [WarehouseListEntryFilterInput!]
or: [WarehouseListEntryFilterInput!]
"The ID of the warehouse."
id: ComparableWarenlagerKeyOperationFilterInput @cost(weight: "15")
"The type of the warehouse."
warehouseType: ComparableWarehouseTypeOperationFilterInput @cost(weight: "200")
"Whether the warehouse is active."
isActive: ComparableBooleanOperationFilterInput @cost(weight: "50")
"The name of the warehouse."
name: StringOperationFilterInput @cost(weight: "50")
"The short name of the warehouse."
shortName: StringOperationFilterInput @cost(weight: "50")
"The ID of the company the warehouse belongs to."
companyId: ComparableFirmaKeyOperationFilterInput @cost(weight: "50")
"Whether the warehouse manages storage locations that this API shows (true for a warehouse with storage location management). Every other warehouse has one storage location internally, which the API does not show; its storage location operations fail with errorCode WAREHOUSE_TYPE_DOES_NOT_SUPPORT_STORAGE_LOCATIONS."
hasStorageLocations: ComparableBooleanOperationFilterInput @cost(weight: "200")
"Whether stock can be posted on the warehouse directly, by a stock posting. True only for an active warehouse of the type 'Standard'; every other warehouse takes stock through the processes of its own system."
allowsDirectStockPosting: ComparableBooleanOperationFilterInput @cost(weight: "200")
}
"One row of the warehouse list: what is needed to find and show a warehouse. The full structure is read with the single warehouse query."
input WarehouseListEntrySortInput {
"The ID of the warehouse."
id: WarenlagerKeySortInput @cost(weight: "15")
"The name of the warehouse."
name: SortEnumType @cost(weight: "50")
"The priority of the warehouse when orders are delivered."
deliveryPriority: SortEnumType @cost(weight: "50")
}
"One HTTP header that is sent with the upload request, for example a header the signature of a presigned URL covers."
input WarehouseOutputUploadHeaderInput {
"The header name."
name: String!
"The header value."
value: String!
}
"The place a rendered file is uploaded to. The file is sent with a PUT request to the URL. Only https URLs to public addresses are accepted; redirects are not followed. The URL is a secret: it is never logged and never returned."
input WarehouseOutputUploadTargetInput {
"The upload URL including its signature (SAS, presigned or signed URL)."
url: String!
"Headers to send with the upload. For Azure Blob Storage the header x-ms-blob-type is set automatically when the host is blob.core.windows.net. For other storages send the headers the signature requires."
headers: [WarehouseOutputUploadHeaderInput]!
}
"Changes of a purchase order to a warehouse."
input WarehousePurchaseOrderChangesInput {
"The new ordering company; the billing address becomes its address. It cannot be cleared."
companyId: ID
"The supplier's contact person to address the order to; null addresses the supplier without a person."
supplierContactId: ID
"When the goods are requested. It cannot be cleared."
requestedDeliveryDate: DateTime
"The new delivery address, as a whole. It cannot be cleared."
deliveryAddress: PurchaseOrderAddressInput
"The supplier's number for the order."
supplierDocumentNumber: String
"A free reference."
referenceNumber: String
"A comment for internal use."
internalComment: String
"A note printed on the order documents."
printNote: String
"The new receiving warehouse, an active one that is no drop shipping target, while the order has not been sent. The delivery address becomes the warehouse's unless 'deliveryAddress' is sent as well. It cannot be cleared."
warehouseId: ID
}
"A new purchase order delivered to one of the company's warehouses. It starts as 'Open' when the ERP requires purchase orders to be released and 'release' is not set, else as 'Released'."
input WarehousePurchaseOrderCreationInput {
"The ID of the supplier, an active one. Currency and language of the order are the supplier's."
supplierId: ID!
"The ID of the company that orders; its address becomes the billing address. When omitted, the supplier's default company is used, else the first company."
companyId: ID
"The ID of the supplier's contact person to address the order to. When omitted, the supplier's address is used without a person."
supplierContactId: ID
"When the goods are requested. When omitted: today plus the supplier's delivery time, or plus 14 days when the supplier has none."
requestedDeliveryDate: DateTime
"Replaces the delivery address the order would get from its warehouse or customer."
deliveryAddress: PurchaseOrderAddressInput
"The supplier's number for the order."
supplierDocumentNumber: String
"A free reference."
referenceNumber: String
"A comment for internal use."
internalComment: String
"A note printed on the order documents."
printNote: String
"The ID of the receiving warehouse, an active one that is no drop shipping target. When omitted, the supplier's default warehouse is used; one of the two is required. The delivery address is the warehouse's."
warehouseId: ID
"Whether to release the order right away, as the release box of the purchase order dialog does. Defaults to false; when the ERP does not require release, every new order is released anyway."
release: Boolean
}
"A node of the settings tree: a group, a text, an input, a button or a custom part. Nodes form a tree through ParentId. How the tree is laid out is up to the frontend."
input WarehouseSettingsNodeFilterInput {
and: [WarehouseSettingsNodeFilterInput!]
or: [WarehouseSettingsNodeFilterInput!]
"The stable ID of the node. For an input it equals the setting key, for example sales.invoice.dueDays."
id: StringOperationFilterInput
"The depth in the tree. A top-level node has level 1."
level: ComparableInt32OperationFilterInput
}
"A node of the settings tree: a group, a text, an input, a button or a custom part. Nodes form a tree through ParentId. How the tree is laid out is up to the frontend."
input WarehouseSettingsNodeSortInput {
"The depth in the tree. A top-level node has level 1."
level: SortEnumType @cost(weight: "10")
"The position among the nodes of the same parent. Lower comes first."
sortOrder: SortEnumType @cost(weight: "10")
"The stable ID of the node. For an input it equals the setting key, for example sales.invoice.dueDays."
id: SortEnumType @cost(weight: "10")
}
"One change inside a saved set of changes: a new value, or a reset when the value is absent."
input WarehouseSettingValueChangeInput {
"The key of the setting."
settingKey: String!
"The new value. Absent resets the setting to its inherited value or default."
value: WarehouseSettingValueInput
}
"The value of one setting."
input WarehouseSettingValueEntryFilterInput {
and: [WarehouseSettingValueEntryFilterInput!]
or: [WarehouseSettingValueEntryFilterInput!]
"The key of the setting."
settingKey: StringOperationFilterInput
"Whether the value is the default or was set."
source: ComparableWarehouseValueSourceOperationFilterInput
"When the value was last changed. Absent for a default."
changedAt: ComparableNullableOfDateTimeOffsetOperationFilterInput
}
"The value of one setting."
input WarehouseSettingValueEntrySortInput {
"The key of the setting."
settingKey: SortEnumType @cost(weight: "10")
"When the value was last changed. Absent for a default."
changedAt: SortEnumType @cost(weight: "10")
}
"The value of a setting. Every value has a type; a setting only accepts the type its definition names."
input WarehouseSettingValueInput @oneOf {
"A yes or no value."
booleanWarehouseSettingValue: BooleanWarehouseSettingValueInput
"A whole number."
integerWarehouseSettingValue: IntegerWarehouseSettingValueInput
"A decimal number."
decimalWarehouseSettingValue: DecimalWarehouseSettingValueInput
"A text."
textWarehouseSettingValue: TextWarehouseSettingValueInput
"The key of one option."
choiceWarehouseSettingValue: ChoiceWarehouseSettingValueInput
"The keys of several options."
multiChoiceWarehouseSettingValue: MultiChoiceWarehouseSettingValueInput
}
input WarengruppeKeySortInput {
kWarengruppe: SortEnumType @cost(weight: "10")
}
input WarenlagerKeySortInput {
kWarenlager: SortEnumType @cost(weight: "10")
}
input WarenLagerPlatzKeySortInput {
kWarenLagerPlatz: SortEnumType @cost(weight: "10")
}
"Changes a warehouse with storage location management, including the locations its processes use by default."
input WmsWarehouseChangesInput {
"The new name. It must be unique among the active warehouses."
name: String
"The new short name."
shortName: String
"The new description."
description: String
"The new priority when orders are delivered."
deliveryPriority: Int
"The new company."
companyId: ID
"The new digit for the shipping unit numbers (NVE)."
nveExtensionDigit: String
"Whether the stock is left out of the available stock."
isLockedForAvailableStock: Boolean
"The new address. It replaces the old address as a whole."
address: WarehouseAddressInput
"The new location layout. It only affects names that are generated afterwards."
layout: StorageLocationLayoutInput
"The new goods receipt location. It must be a location of this warehouse."
goodsReceiptLocationId: ID
"The new default goods receipt location of the mobile app."
mobileGoodsReceiptLocationId: ID
"The new box location."
boxLocationId: ID
"The new picking trolley location 'in progress'."
inProgressLocationId: ID
"The new returns location."
returnsLocationId: ID
}
"Creates a warehouse with storage location management in one call. The system creates the goods receipt location, the box location and the picking trolley location 'in progress' with it and sets them as the special locations. Further storage locations and settings are added with their own mutations."
input WmsWarehouseCreationInput {
"The name of the warehouse, at most 250 characters. It must be unique among the active warehouses."
name: String!
"The short name of the warehouse."
shortName: String!
"A free description of the warehouse."
description: String
"The priority when orders are delivered. When omitted, the warehouse is put behind all others."
deliveryPriority: Int
"The ID of the company the warehouse belongs to. When omitted, the company of the user is used."
companyId: ID
"The digit from 0 to 9 for the shipping unit numbers (NVE)."
nveExtensionDigit: String
"Whether the stock is left out of the available stock. Defaults to false."
isLockedForAvailableStock: Boolean
"The postal address with the contact person."
address: WarehouseAddressInput!
"Create items that do not exist yet on goods receipt, in the given category. Omitted means never."
newItemOnReceipt: NewItemOnReceiptInput
"How the names of the storage locations are built when they are generated."
layout: StorageLocationLayoutInput!
}
"Changes a workbench. Only the properties that are sent change. The warehouse is changed by ChangeWorkbenchWarehouse, the host by ChangeWorkbenchHost."
input WorkbenchChangesInput {
"The new number of the resource."
number: String
"The new name of the resource."
name: String
"The new description of the resource. Sending null removes the description."
description: String
"The ID of the new resource type of the resource. It must belong to the category of the resource."
resourceTypeId: ID
"Whether the resource is active."
isActive: Boolean
"To what extent, or at which levels, components are reserved at the workbench."
reservationMode: ReservationMode
"Whether the dialog for displaying and/or capturing process parameter values is shown automatically during production."
autoShowProcessParameterValuesInProduction: Boolean
"Whether the use of components with an expired best-before date is permitted at the workbench."
expiredComponentsUsage: ExpiredComponentsUsage
"Whether and how available stock is reserved for the production session when a replenishment order is created at the workbench."
replenishmentCreationStockReservationMode: ReplenishmentCreationAvailableStockReservationMode
}
"Creates a workbench."
input WorkbenchCreationInput {
"The number of the new resource."
number: String!
"The name of the new resource."
name: String!
"The description of the new resource. When omitted, the resource has no description."
description: String
"The ID of the resource type of the new resource. It must belong to the category of the new resource."
resourceTypeId: ID!
"Whether the new resource is active. When omitted, the resource is active."
isActive: Boolean
"The name of the host the new workbench runs on. When omitted, no host is assigned."
hostName: String
"The ID of the warehouse assigned to the new workbench. When omitted, no warehouse is assigned."
warehouseId: ID
"To what extent, or at which levels, components are reserved at the new workbench. When omitted, Operation is used."
reservationMode: ReservationMode
"Whether the dialog for displaying and/or capturing process parameter values is shown automatically during production. When omitted, it is not shown automatically."
autoShowProcessParameterValuesInProduction: Boolean
"Whether the use of components with an expired best-before date is permitted at the new workbench. When omitted, NotPermitted is used."
expiredComponentsUsage: ExpiredComponentsUsage
"Whether and how available stock is reserved for the production session when a replenishment order is created at the new workbench. When omitted, None is used."
replenishmentCreationStockReservationMode: ReplenishmentCreationAvailableStockReservationMode
}
"One entry of the error log of a sync (Worker.tErrorlog, written by the worker, read by nothing today). The message is free text of the worker and can contain data of the shop or the account: it is cut at 1000 characters and only readable with the narrower scope."
input WorkerSyncErrorFilterInput {
and: [WorkerSyncErrorFilterInput!]
or: [WorkerSyncErrorFilterInput!]
"The sync the error belongs to."
syncId: ComparableWorkerSyncKeyOperationFilterInput @cost(weight: "50")
"When the error was logged."
occurredAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "50")
}
"One entry of the error log of a sync (Worker.tErrorlog, written by the worker, read by nothing today). The message is free text of the worker and can contain data of the shop or the account: it is cut at 1000 characters and only readable with the narrower scope."
input WorkerSyncErrorSortInput {
"When the error was logged."
occurredAt: SortEnumType @cost(weight: "50")
"The ID of the entry."
id: SortEnumType @cost(weight: "15")
}
"One sync of the worker: what it syncs, how often, and what it is doing. The API answers for one tenant, so only the syncs of that tenant appear."
input WorkerSyncFilterInput {
and: [WorkerSyncFilterInput!]
or: [WorkerSyncFilterInput!]
"The ID of the sync."
id: ComparableWorkerSyncKeyOperationFilterInput @cost(weight: "15")
"The key of the sync type, for example shop or ebay."
type: StringOperationFilterInput @cost(weight: "50")
"The sales channel of the sync. Absent when it has none."
salesChannelId: ComparableSalesChannelIdOperationFilterInput @cost(weight: "200")
}
"Represents a configuration key that serves as a unique identifier for configuration entities."
input WorkerSyncKeySortInput {
"Gets the unique identifier for the configuration key."
kWorkerSync: SortEnumType @cost(weight: "10")
}
"One run of a sync. There is no run history today (the status is last writer wins); it needs a new table of the worker (assumption: Worker.tRun with an index on the sync and the start)."
input WorkerSyncRunFilterInput {
and: [WorkerSyncRunFilterInput!]
or: [WorkerSyncRunFilterInput!]
"The sync that ran."
syncId: ComparableWorkerSyncKeyOperationFilterInput @cost(weight: "15")
"When the run started."
startedAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "15")
"How the run ended. Absent while it runs."
result: ComparableNullableOfSyncResultOperationFilterInput @cost(weight: "50")
}
"One run of a sync. There is no run history today (the status is last writer wins); it needs a new table of the worker (assumption: Worker.tRun with an index on the sync and the start)."
input WorkerSyncRunSortInput {
"When the run started."
startedAt: SortEnumType @cost(weight: "15")
"The ID of the run."
id: SortEnumType @cost(weight: "15")
}
"One sync of the worker: what it syncs, how often, and what it is doing. The API answers for one tenant, so only the syncs of that tenant appear."
input WorkerSyncSortInput {
"The ID of the sync."
id: WorkerSyncKeySortInput @cost(weight: "15")
"The key of the sync type, for example shop or ebay."
type: SortEnumType @cost(weight: "50")
"The pause between the end of a run and the start of the next, in seconds."
intervalSeconds: SortEnumType @cost(weight: "200")
}
"Der Schlüssel eines Workflows."
input WorkflowKeyInput {
"Der eindeutige Bezeichner des Workflows."
workflowId: Int!
}
"One line of the workflow log. All lines of one run share the ExecutionId. The text is free text of the workflow and can contain customer data: it is cut at 1000 characters and only readable with the narrower scope."
input WorkflowLogEntryFilterInput {
and: [WorkflowLogEntryFilterInput!]
or: [WorkflowLogEntryFilterInput!]
"Groups the lines of one run."
executionId: ComparableGuidOperationFilterInput @cost(weight: "50")
"The workflow that wrote the line."
workflowId: ComparableWorkflowKeyOperationFilterInput @cost(weight: "50")
"The code of the kind of object the run was about."
entityType: StringOperationFilterInput @cost(weight: "50")
"The ID of the object the run was about, as the API of that object writes it."
entityId: StringOperationFilterInput @cost(weight: "50")
"How serious the line is."
level: ComparableWorkflowLogLevelOperationFilterInput @cost(weight: "50")
"When the line was written."
occurredAt: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "50")
}
"One line of the workflow log. All lines of one run share the ExecutionId. The text is free text of the workflow and can contain customer data: it is cut at 1000 characters and only readable with the narrower scope."
input WorkflowLogEntrySortInput {
"When the line was written."
occurredAt: SortEnumType @cost(weight: "50")
"Rises with every line, so lines of the same moment keep their order."
sequence: SortEnumType @cost(weight: "15")
}
"One workflow run that waits, runs or failed. Finished runs are not here; read the workflow log for them."
input WorkflowQueueEntryFilterInput {
and: [WorkflowQueueEntryFilterInput!]
or: [WorkflowQueueEntryFilterInput!]
"The workflow that is run."
workflowId: ComparableWorkflowKeyOperationFilterInput @cost(weight: "50")
"The code of the kind of object the run is about."
entityType: StringOperationFilterInput @cost(weight: "50")
"Where the run is."
status: ComparableWorkflowQueueStatusOperationFilterInput @cost(weight: "50")
"When the run is due to start."
startDate: ComparableDateTimeOffsetOperationFilterInput @cost(weight: "50")
}
"Der Schlüssel eines Eintrags der Workflow-Warteschlange."
input WorkflowQueueEntryKeySortInput {
"Der eindeutige Bezeichner des Eintrags der Workflow-Warteschlange."
workflowQueueEntryId: SortEnumType @cost(weight: "10")
}
"One workflow run that waits, runs or failed. Finished runs are not here; read the workflow log for them."
input WorkflowQueueEntrySortInput {
"When the run is due to start."
startDate: SortEnumType @cost(weight: "50")
"The ID of the queue entry."
id: WorkflowQueueEntryKeySortInput @cost(weight: "15")
}
"Writes off all quantities still held in the transit warehouse, for example because they were lost on the way, and completes the stock transfer. This cannot be undone. - Request"
input WriteOffStockTransferTransitCommandRequestInput {
"The ID of the stock transfer whose quantities in transit are written off."
stockTransferId: ID!
"Comment stored with the write-off postings."
comment: String
"Client-supplied idempotency key. When provided, a repeated request with the same key and payload replays the original result instead of re-executing the mutation."
idempotencyKey: String
}
input ZahlungKeySortInput {
kZahlung: SortEnumType @cost(weight: "10")
}
"Represents a unique identifier for a payment reconciliation outgoing payment (refund or supplier payment)."
input ZahlungsabgleichAusgangKeySortInput {
"Gets the payment reconciliation outgoing payment (refund or supplier payment) identifier."
kZahlungsabgleichAusgang: SortEnumType @cost(weight: "10")
}
"Represents a unique identifier for a payment reconciliation account (bank, payment provider or marketplace account)."
input ZahlungsabgleichKontoKeySortInput {
"Gets the payment reconciliation account (bank, payment provider or marketplace account) identifier."
kZahlungsabgleichKonto: SortEnumType @cost(weight: "10")
}
input ZahlungsabgleichUmsatzKeySortInput {
kZahlungsabgleichUmsatz: SortEnumType @cost(weight: "10")
}
"Represents a unique identifier for a payment reconciliation provider (a banking standard, a file format, a payment provider or the external accounts of an integration)."
input ZahlungsanbieterKeySortInput {
"Gets the module GUID of the payment reconciliation provider."
cModulID: SortEnumType @cost(weight: "10")
}
input ZahlungsartKeySortInput {
kZahlungsart: SortEnumType @cost(weight: "10")
}
input ZahlungsErinnerungKeySortInput {
kZahlungsErinnerung: SortEnumType @cost(weight: "10")
}
input ZustandKeySortInput {
kZustand: SortEnumType @cost(weight: "10")
}
"The state of an action run."
enum ActionStatus {
"The action still runs."
RUNNING
"The action finished successfully."
SUCCEEDED
"The action finished with a remark the user should read."
WARNING
"The action failed."
FAILED
}
"How an additional cost of an incoming invoice is distributed over its line items."
enum AdditionalCostDistributionMethod {
"In proportion to the quantity of each line item."
QUANTITY
"In proportion to the net amount of each line item."
NET_AMOUNT
"In proportion to the shipping weight of each line item (item weight times quantity)."
SHIPPING_WEIGHT
}
"How a package of an advance shipping notice is shipped. A client treats an unknown value as 'Other'."
enum AdvanceShippingNoticeFreightType {
"A parcel."
PARCEL
"Palletised or general cargo."
PALLETISED_FREIGHT
"A full truck load."
TRUCK_LOAD
"Any other way of shipping."
OTHER
}
"Where a package of an advance shipping notice stands. It is a plain note kept for the user: the ERP does not change it and nothing reacts to it, receiving the goods does not set it. A client treats an unknown value as not supported."
enum AdvanceShippingNoticePackageStatus {
"Announced by the supplier, not arrived yet."
ANNOUNCED
"Arrived at the warehouse."
ARRIVED
"Done; nothing more is expected for it."
COMPLETED
}
"Whether an application runs by itself or is started by a user."
enum ApplicationKind {
"A service or server that should run all the time."
SERVICE
"An application a user starts and closes."
CLIENT
}
"Whether an application has a living session."
enum ApplicationState {
"At least one session reported within the timeout."
RUNNING
"There is a session, but none reported within the timeout."
STALE
"There is no active session. For a client application this is normal; a service that is missing may be shut down on purpose, for example during an update."
NOT_RUNNING
}
"Defines when a policy shall be executed."
enum ApplyPolicy {
"Before the resolver was executed."
BEFORE_RESOLVER
"After the resolver was executed."
AFTER_RESOLVER
"The policy is applied in the validation step before the execution."
VALIDATION
}
"The kind of an attribute. Multilingual attributes describe an item or category to customers and carry a name per language. Function attributes steer online shops and interfaces and are not shown to customers."
enum AttributeKind {
"An attribute that describes an item or category and has a name per language."
MULTILINGUAL
"A function attribute: a technical switch for online shops and interfaces. It has one name and no translations."
FUNCTION
}
"The type of a child component of a bill of materials."
enum BillOfMaterialsChildComponentType {
"A bill of materials item."
ITEM
"A bill of materials configuration group."
CONFIGURATION_GROUP
}
"The type of a parent component of a bill of materials."
enum BillOfMaterialsParentComponentType {
"A bill of materials operation."
OPERATION
}
"The state of a bill of materials."
enum BillOfMaterialsState {
"The bill of materials is a draft. It can still be modified. It cannot be produced yet."
DRAFT
"The bill of materials is the one used by default for production. It can no longer be modified. It can be produced."
DEFAULT
"The bill of materials has been archived. It can no longer be modified. It can no longer be produced."
ARCHIVED
"The bill of materials is an alternative to the default bill of materials. It can no longer be modified. It can be produced."
ALTERNATIVE
"The bill of materials is used to customize a production order. It can no longer be modified. It can only be produced in connection with the production order for which it was created."
PRODUCTION_ORDER_CUSTOMIZATION
"The bill of materials is marked as deleted. Bills of materials marked as deleted can generally no longer be retrieved."
DELETED
}
"Which amount a cash discount percentage or amount refers to."
enum CashDiscountBasis {
"The net amount of the line items plus the additional costs payable to the supplier."
NET
"The gross amount of the line items plus the additional costs payable to the supplier."
GROSS
}
"Which kind of value a custom field holds. It follows from the field type of the definition and cannot be chosen. The set is closed and is the discriminator of the value variants: a further type would be a new variant, so a client that evaluates the discriminator must ignore variants it does not know."
enum CategoryFieldValueType {
"A text, also a short text, URL, e-mail address, phone number, country code or list entry."
TEXT
"A whole number."
INTEGER
"A decimal number, also a price."
DECIMAL
"A yes or no, a checkbox."
BOOLEAN
"A date; only the calendar date counts."
DATE
}
"Where a change set stands."
enum ChangeSetStatus {
"Accepted and waiting."
QUEUED
"The changes are being applied."
RUNNING
"All changes were applied."
SUCCEEDED
"Nothing was applied because a technical error stopped the run; the whole run was rolled back."
FAILED
}
"How the company signs in at the mail server."
enum CompanyEmailAuthentication {
"User name and password."
PASSWORD
"A sign-in at the mail provider that was authorised in the application. It can be disconnected through the API but only be connected in the application."
O_AUTH
}
"How the connection to the mail server is secured. Whether the certificate of the server is checked is a separate property ('IsCertificateCheckDisabled')."
enum CompanyEmailEncryption {
"No encryption."
NONE
"STARTTLS."
START_TLS
"SSL/TLS from the start."
SSL
}
"Which kind of value a custom field of a company holds. It follows from the data type of the field and is the discriminator of the value. Clients must tolerate unknown values."
enum CompanyFieldValueType {
"A text, also a short text, URL, e-mail address, phone number, country code or value list entry."
TEXT
"A whole number."
INTEGER
"A decimal number, also a price."
DECIMAL
"A yes or no, a checkbox."
BOOLEAN
"A date; only the calendar date counts."
DATE
}
"Defines requirements for the production input of a bill of materials component regarding the shelf life end dates or batch numbers of the stock accounts to be debited."
enum ComponentPostingsInventoryAccountingDataRequirements {
"Any requirements for the production input of a bill of materials component are specified by the containing bill of materials."
INHERITED
"For the production input of a bill of materials component, inventory can be posted from all stock accounts of the respective item."
NONE
"For the production input of a bill of materials component, inventory can only be posted from stock accounts with matching shelf life end dates or matching batch numbers."
IDENTICAL
}
"How a condition compares a setting with a value."
enum ConditionOperator {
"Equal to the value."
EQUAL_TO
"Not equal to the value."
NOT_EQUAL_TO
"Greater than the value."
GREATER_THAN
"Greater than or equal to the value."
GREATER_THAN_OR_EQUAL_TO
"Less than the value."
LESS_THAN
"Less than or equal to the value."
LESS_THAN_OR_EQUAL_TO
"Has a value. No value to compare."
IS_SET
"Has no value. No value to compare."
IS_NOT_SET
"A multiple choice contains the value."
CONTAINS
}
"The continent a country belongs to."
enum Continent {
"Africa."
AFRICA
"Asia."
ASIA
"Europe."
EUROPE
"North America."
NORTH_AMERICA
"Oceania."
OCEANIA
"South America."
SOUTH_AMERICA
}
"Where the code of a country comes from."
enum CountryCodeSource {
"A code of ISO 3166-1."
ISO
"A code assigned in Wawi to an entry of its own."
USER_ASSIGNED
}
"Where the code of a currency comes from."
enum CurrencyCodeSource {
"A standard currency: the code is an ISO 4217 alpha-3 code."
ISO
"A currency defined by the tenant: the code starts with 'x-'."
USER_ASSIGNED
}
"Where the currency symbol stands relative to the amount."
enum CurrencySymbolPlacement {
"The symbol follows the amount, for example 12,50 EUR."
AFTER_AMOUNT
"The symbol precedes the amount, for example $12.50."
BEFORE_AMOUNT
}
"The use of an address of a customer. A client treats an unknown value as 'Other'."
enum CustomerAddressType {
"An address goods are delivered to."
SHIPPING
"An address invoices are made out to. The default billing address carries the name and the contact data of the customer."
BILLING
"Any other address of the customer."
OTHER
}
"Where the price of a customer group comes from. The sources exclude each other. This is a closed set: a new value is a new variant and a breaking change."
enum CustomerGroupPriceSource {
"The customer group has no price list of its own. It takes over the base price of the item."
INHERITED
"The customer group has a price list of its own that overrides the base price."
OWN
}
"Which of the two merged customers a value is taken from."
enum CustomerMergeSide {
"The customer that stays."
TARGET
"The customer that is merged into the other one."
SOURCE
}
"The kind of a note. A client treats an unknown value as 'Text'."
enum CustomerNoteType {
"A plain note."
TEXT
"A note about an email."
EMAIL
"A note about a phone call."
PHONE
}
"The shape of a custom field definition."
enum CustomFieldKind {
"A field without further configuration."
SCALAR
"A field with a list of allowed values."
VALUE_LIST
}
"How much of a date and time a setting holds."
enum DateTimePrecision {
"A date. The time part is midnight."
DATE
"A time of day. The date part is 0001-01-01."
TIME
"A date and a time."
DATE_TIME
}
"What a delete call did."
enum DeleteOutcome {
"The shipping method is deleted."
DELETED
"The shipping method is used in orders and was only deactivated."
DEACTIVATED
}
"Whether the open quantities of a sales order can be delivered from stock. Closed set."
enum DeliverabilityLevel {
"Nothing can be delivered: there is no stock for any open line item, or the order is blocked."
NOT_DELIVERABLE
"Some open quantities can be delivered."
PARTIALLY_DELIVERABLE
"All open quantities can be delivered."
FULLY_DELIVERABLE
}
"How far the delivered quantities are invoiced. Closed set."
enum DeliveryNoteInvoicingStatus {
"No quantity of the delivery note is on an invoice."
NOT_INVOICED
"Some, but not all quantities are on an invoice."
PARTIALLY_INVOICED
"All quantities of the delivery note are on an invoice."
INVOICED
}
"Whether the goods of a delivery note have left. Closed set."
enum DeliveryNoteStatus {
"At least one package of the delivery note has no shipping date yet."
OPEN
"Every package of the delivery note has a shipping date."
SHIPPED
}
"What a dependency changes on a node."
enum DependencyEffect {
"The node is only shown when the conditions hold."
VISIBLE
"The node can only be changed when the conditions hold."
ENABLED
"The node needs a value when the conditions hold."
REQUIRED
}
"How the conditions of a dependency combine."
enum DependencyMatch {
"Every condition must hold."
ALL
"One condition is enough."
ANY
}
"The type of the origin of a disposition."
enum DispositionOriginType {
"The disposition originates from a sales order line item."
SALES_ORDER_POSITION
"The disposition originates from a purchase order line item."
PURCHASE_ORDER_POSITION
"The disposition originates from a production order."
PRODUCTION_ORDER
}
"The processing status of a disposition."
enum DispositionStatus {
"The disposition was created and has not been processed any further."
CREATED
"The disposition was transferred to a production order."
ON_PRODUCTION_ORDER
"The production for the disposition has started."
IN_PRODUCTION
"The production for the disposition has been completed."
PRODUCED
"The production for the disposition has been partially completed."
PARTIALLY_PRODUCED
"The status is not yet determined. The disposition is being processed, for example while a production order is being created for it, or its status could not be derived from its quantities. This is a short-lived intermediate status."
PENDING
}
"How far a sales order or a sales invoice is paid. A closed set."
enum DocumentPaymentStatus {
"Nothing that counts as paid has been recorded."
UNPAID
"Something is paid, but less than is due."
PARTIALLY_PAID
"Everything due is paid, within a rounding tolerance. A cancelled invoice counts as paid."
PAID
"Cannot be determined: a sales order on a partly paid collective invoice, a kind of invoice that can no longer be created."
NOT_DETERMINABLE
}
"How the supplier of a drop shipping is chosen for each item."
enum DropShippingSupplierChoice {
"The supplier marked as the default drop shipping supplier of the item."
DEFAULT_SUPPLIER
"The drop shipping supplier with the lowest purchase price."
CHEAPEST_SUPPLIER
"The drop shipping supplier with the shortest delivery time."
FASTEST_SUPPLIER
}
"The state of a dunning run."
enum DunningRunStatus {
"The run is still creating dunning notices."
RUNNING
"The run has finished. 'createdNotices' and 'skippedInvoices' are final."
COMPLETED
"The run has stopped with an error and has created no dunning notices."
FAILED
}
"Specifies whether the use of components with an expired best-before date is permitted."
enum ExpiredComponentsUsage {
"The use of components with expired best-before date is not permitted."
NOT_PERMITTED
"The use of components with expired best-before date is permitted."
PERMITTED
}
"How a group wants to be shown. It is a hint: the frontend decides the layout."
enum GroupPresentation {
"An entry of the navigation that leads to pages."
NAVIGATION
"A page with its own content."
PAGE
"A section on a page."
SECTION
"A part of a section."
SUBSECTION
}
"The overall status. It says that the database answers and that no session is overdue. It does not say that the services work correctly."
enum HealthStatus {
"No session is overdue."
HEALTHY
"At least one session has not reported for longer than the timeout. The process may have crashed or hangs."
DEGRADED
}
"An action on an incoming invoice whose availability can be looked up."
enum IncomingInvoiceAction {
"Change the header of the invoice."
UPDATE
"Delete the invoice."
DELETE
"Post the invoice."
POST
"Approve the invoice for payment."
APPROVE
"Revoke the approval for payment."
REVOKE_APPROVAL
"Add, change or delete line items, purchase orders and cash discounts."
CHANGE_LINE_ITEMS
"Set or remove additional costs."
CHANGE_ADDITIONAL_COSTS
"Record, change or delete payments."
CHANGE_PAYMENTS
}
"Kind of a line item of an incoming invoice. More kinds can be added later; treat an unknown value like a free-text line item."
enum IncomingInvoiceLineItemType {
"An item from the catalog, usually from a purchase order."
ITEM
"A line with a free description and no item, for example a service, a shipping charge or a surcharge."
FREE_TEXT
"A cash discount granted by the supplier, one line per tax rate, with a negative amount."
CASH_DISCOUNT
}
"How much of the payable amount of an incoming invoice is paid."
enum IncomingInvoicePaymentStatus {
"No payment yet."
UNPAID
"Paid in part."
PARTIALLY_PAID
"Fully paid."
PAID
}
"Lifecycle status of an incoming invoice."
enum IncomingInvoiceStatus {
"Being recorded. Line items, purchase orders and additional costs can still be changed."
OPEN
"Posted. The invoice is binding and its line items are locked; posting updated the purchase prices of the delivered items."
POSTED
"Posted and fully paid. Set and reset automatically by the payments."
CLOSED
}
"Where a run that finishes an inventory stands. Closed set: the states of one run."
enum InventoryCountFinishStatus {
"Accepted and waiting."
QUEUED
"The counted quantities are being booked."
RUNNING
"The inventory is booked and its counts are removed."
SUCCEEDED
"Nothing was booked because a technical error stopped the run; the whole run was rolled back and the counts are kept."
FAILED
}
"How an item condition deals with stock."
enum ItemConditionStockHandling {
"Items in this condition are their own items with their own stock: a condition item with the suffix of the condition. Returns are posted to that item."
OWN_ITEM
"Items in this condition have no own item. Returns are posted to the item in the standard condition; the condition only informs."
STANDARD_ITEM
"The condition only informs, for example in returns. No item can take it and nothing is posted to it."
NO_STOCK
}
"Which kind of value an attribute or custom field holds. It follows from the field type of the definition and cannot be chosen. This is a closed set: a new value is a new variant and a breaking change."
enum ItemFieldValueType {
"A text, also a short text, URL, e-mail address, phone number, country code or list entry."
TEXT
"A whole number."
INTEGER
"A decimal number, also a price."
DECIMAL
"A yes or no, a checkbox."
BOOLEAN
"A date with time."
DATE
}
"The kind of an item. The kinds exclude each other: an item is exactly one of them for its whole life. Being a combination of a variation parent is not a kind and is not visible on the item itself: the parent owns that relation. New kinds are added over time, so a consumer has to tolerate values it does not know and treat such an item through the properties every item has."
enum ItemType {
"A regular sellable item without stock management and without further structure."
REGULAR
"An item whose stock is managed in whole units, with optional batch, shelf life expiration date or serial number tracking."
STOCK_ITEM
"An item whose stock is managed in fractional quantities, for example 2.5 units. Serial number tracking is not possible."
DIVISIBLE_STOCK_ITEM
"An item whose stock is managed in subsets (German 'Teilmengen'), each with its own subset number. It needs a dimension set with a value per dimension and a reservation. Neither serial numbers nor batch nor shelf life expiration dates are possible."
SUBSET_STOCK_ITEM
"A bill of materials (German 'Stückliste'): sold as a set of component items. It has no stock management and no purchasing of its own and inherits its stock behavior from its components."
KIT
"The parent of a variation combination. It holds the variation axes, is not sold itself and has neither own price nor own stock. The items that are its combinations are read through its sub-resource and are items of any kind except a variation parent."
VARIATION_PARENT
"An item the customer configures by choosing components from configuration groups."
CONFIGURABLE
"A voucher item whose voucher is redeemed once against a single, already known tax rate."
SINGLE_PURPOSE_VOUCHER
"A voucher item whose voucher can be redeemed against any goods and is therefore not taxed when sold."
MULTI_PURPOSE_VOUCHER
"A packaging item (German 'Kartonage') used when shipping. It is stock-managed and not sold to customers."
PACKAGING
}
"Where the code of a language comes from."
enum LanguageCodeSource {
"A code of the language list Wawi delivers."
ISO
"A code assigned in Wawi to an entry of its own."
USER_ASSIGNED
}
"Which characters one dimension of the location layout uses to number the locations."
enum LayoutLabelType {
"Numbers and letters."
NUMBERS_OR_LETTERS
"Numbers only."
NUMBERS
"Letters only."
LETTERS
}
"What the stock postings of an item carry to trace its lots. An item that uses neither has no lot tracking at all instead of a 'none' value. This is a closed set: a new value is a new variant and a breaking change."
enum LotTrackingType {
"Every stock posting carries a batch number (German 'Charge')."
BATCH
"Every stock posting carries a shelf life expiration date (SLED, German 'MHD')."
SHELF_LIFE_EXPIRATION_DATE
"Every stock posting carries both a batch number and a shelf life expiration date."
BATCH_AND_SHELF_LIFE_EXPIRATION_DATE
}
"Defines the type of lot size configuration for a production item."
enum LotType {
"Fixed lot sizes are defined for the production item."
OWN
"No lot sizes are defined for the production item. The quantity to be produced must always be specified when creating a production order or at the start of an ad-hoc production."
NONE
}
"Indicates whether and for whom an operation allows simplified production."
enum OperationSimplifiedProduction {
"The operation does not allow simplified production."
NO
"The operation allows simplified production for users who have the permission for simplified production."
PERMITTED_USERS_ONLY
}
"The data type of a sync option."
enum OptionValueType {
"True or false."
BOOLEAN
"A whole number."
INTEGER
"A text."
TEXT
}
"The kind of a layout."
enum OutputLayoutKind {
"A list layout."
LIST
"A label layout."
LABEL
}
"Defines requirements for the production input of all components of a bill of materials regarding the shelf life end dates or batch numbers of the stock accounts to be debited."
enum OverallComponentPostingsInventoryAccountingDataRequirements {
"For the production input of all components of a bill of materials, inventory can be posted from all stock accounts of the respective item."
NONE
"For the production input of all components of a bill of materials, inventory can only be posted from stock accounts with matching shelf life end dates or matching batch numbers."
IDENTICAL
}
"What a path setting points to."
enum PathTarget {
"A file."
FILE
"A folder."
FOLDER
}
"The state of a fetch of transactions for a payment account. A closed set."
enum PaymentAccountImportRunState {
"Accepted, not started yet."
QUEUED
"Fetching."
RUNNING
"Finished without errors."
COMPLETED
"Finished, but some transactions or steps failed; 'message' tells which."
COMPLETED_WITH_ERRORS
"Stopped by an error, for example invalid credentials, a confirmation the bank asked for, or another fetch that was running. When the bank asked for a confirmation or the credentials are invalid, the ERP also locks the automatic import of the account ('isAutoImportLocked')."
FAILED
}
"Whether money came in or went out, for a payment and for a payment transaction. Follows from the sign of the amount. A closed set: money either comes in or goes out."
enum PaymentDirection {
"Money received, usually from the customer; the amount is positive."
INCOMING
"Money paid out, for example back to the customer (a payout), or taken back; the amount is negative."
OUTGOING
}
"What an assignment of a payment transaction is. Selects the variant of 'PaymentTransactionAssignment'; a new kind is a new variant. A client that does not know a value skips the entry; its amount still counts in 'assignedAmount'."
enum PaymentTransactionAssignmentKind {
"A payment of a sales order, a sales invoice, a sales invoice correction or a sales credit note."
SALES_PAYMENT
"A payment of an incoming invoice (supplier invoice)."
INCOMING_INVOICE_PAYMENT
"A refund paid out from the transaction without a sales document."
REFUND
"Order costs booked on a sales order from a fee transaction."
FEE_COST
}
"How much of a payment transaction is assigned. Follows from 'openAmount'. A closed set."
enum PaymentTransactionAssignmentStatus {
"Nothing is assigned."
UNASSIGNED
"Part of the amount is assigned; 'openAmount' is left."
PARTIALLY_ASSIGNED
"The whole amount is assigned, or more; then 'openAmount' has the opposite sign of 'amount'."
FULLY_ASSIGNED
}
"What an assignment did. A client that does not know a value reads the assignments of the transaction ('QueryPaymentTransactionAssignmentsByPaymentTransactionId'); 'paymentId' is set either way."
enum PaymentTransactionAssignOutcome {
"A new payment was recorded on the document."
CREATED
"A payment the document already had, for example from the shop, was linked to the transaction; no new payment was recorded."
LINKED
}
"What the automatic assignment did. A client that does not know a value relies on 'openAmount' and 'assignmentStatus' of the response."
enum PaymentTransactionAutoAssignOutcome {
"The transaction was assigned; see 'QueryPaymentTransactionAssignmentsByPaymentTransactionId'."
ASSIGNED
"Several documents match about equally well, so nothing was assigned. Assign by hand; 'QueryPaymentTransactionSuggestions' lists the candidates."
AMBIGUOUS
"No document matches well enough; nothing was assigned."
NO_MATCH
}
"What the import of one transaction did. A client that does not know a value reads the transaction with 'GetPaymentTransaction' when 'paymentTransactionId' is set, and treats it as not saved otherwise."
enum PaymentTransactionImportOutcome {
"The transaction was new and was saved."
CREATED
"A transaction with the same ID existed in the account and was updated."
UPDATED
"A transaction with the same ID exists, but the delivered data was dropped (amount 0, an import filter that excludes it, or a booking date on or before the import cutoff date of the account); the saved transaction is unchanged."
UNCHANGED
"The transaction was new but was not saved: the amount is 0, an import filter excludes it, a workflow refused it, or it was booked on or before the import cutoff date of the account."
DISCARDED
"The transaction was new and was saved, but an import filter or a workflow ignored it ('isIgnored')."
HIDDEN
}
"What a payment transaction stands for, as the bank or the payment provider reports it. A closed set: a new kind changes how transactions are matched and is a change of the schema anyway."
enum PaymentTransactionKind {
"A transfer, a card or a wallet payment, received or sent."
REGULAR
"A direct debit collected from the payer."
DIRECT_DEBIT
"Money paid back to the payer, usually for an earlier transaction ('referenceTransactionId')."
REFUND
"Money taken back by the payer or the payment provider, usually for an earlier transaction ('referenceTransactionId')."
CHARGEBACK
"A fee of the payment provider, usually for an earlier transaction ('referenceTransactionId'). It is booked as order costs on the sales order of that transaction and cannot be assigned."
FEE
}
"How far the bank or the payment provider has processed a payment transaction. A closed set."
enum PaymentTransactionState {
"Announced or pre-booked: the money has not moved yet, and the bank or the provider can still change or replace the transaction."
PENDING
"Booked; the transaction does not change any more."
COMPLETED
"Cancelled by a participant."
CANCELLED
"Not completed because of an error; 'statusText' tells why."
FAILED
"Not completed in time."
EXPIRED
}
"The kind of document a suggestion points to. Selects the variant of 'PaymentTransactionSuggestion'. A client that does not know a value skips the entry."
enum PaymentTransactionSuggestionTargetType {
"A sales order."
SALES_ORDER
"A sales invoice."
SALES_INVOICE
}
"Which orders are put on the pick list by their addresses. Closed set."
enum PickListAddressMode {
"All orders."
ALL
"Only orders whose billing and delivery address are identical."
IDENTICAL_ADDRESSES
"Only orders whose billing and delivery address differ."
DIFFERENT_ADDRESSES
}
"How the expected delivery date of an order limits the pick list. Every mode includes overdue orders and orders without an expected delivery date. Closed set."
enum PickListExpectedDeliveryDateMode {
"The expected delivery date is not checked."
NO_FILTER
"Orders expected to be delivered by the end of today. Overdue orders and orders without an expected delivery date are included."
TODAY
"Orders expected to be delivered by the end of tomorrow. Overdue orders and orders without an expected delivery date are included."
TOMORROW
"Orders expected to be delivered by the end of the day that is the given number of days after today. Overdue orders and orders without an expected delivery date are included."
WITHIN_DAYS
}
"Whether stock with an expired best-before date is reserved. Closed set."
enum PickListExpiredShelfLifeHandling {
"Stock with an expired best-before date is not reserved."
EXCLUDE
"Stock with an expired best-before date is reserved as well."
INCLUDE
}
"Where a pick list line item stands. Closed set."
enum PickListLineItemStatus {
"A Wawi delivery session holds the line item."
PENDING
"Created; the goods are reserved, nothing is picked yet."
CREATED
"Picked."
PICKED
"In a shipping box, waiting for packing."
IN_BOX
"Completed; the stock is posted out of the warehouse."
COMPLETED
}
"Which batch and best-before information the item of a line item needs when it is picked. Closed set."
enum PickListLotTracking {
"No batch number and no best-before date."
NONE
"A batch number is needed."
BATCH
"A best-before date is needed."
SHELF_LIFE
"A batch number and a best-before date are needed."
BATCH_AND_SHELF_LIFE
}
"What changing the reservation of a line item achieved. Closed set."
enum PickListReservationChangeOutcome {
"The whole quantity was reserved on the other storage locations."
COMPLETE
"Only a part was reserved; the old line item keeps the remainder."
PARTIAL
}
"The direction of a sort criterion. Closed set."
enum PickListSortDirection {
"Smallest first."
ASCENDING
"Largest first."
DESCENDING
}
"Where a pick list stands. Read only: it is derived from the line items, never set. Closed set."
enum PickListStatus {
"A Wawi delivery session holds the pick list while it is being delivered; it is not worked on by pickers."
PENDING
"Created; the goods are reserved, nothing is picked yet."
CREATED
"Some line items are further than Created and some are still Created. A list with voucher line items, which the system creates already processed, is InProgress from the start."
IN_PROGRESS
"All line items are picked."
PICKED
"The picked goods are in shipping boxes and wait for packing."
IN_BOX
"Completed; the stock is posted out of the warehouse."
COMPLETED
}
"Whether a list of users grants access or takes it away. Closed set."
enum PickListUserSelectionMode {
"Only the listed users see it."
VISIBLE_TO
"Everybody except the listed users sees it."
HIDDEN_FROM
}
"A day of the week. Closed set."
enum PickListWeekday {
"Monday."
MONDAY
"Tuesday."
TUESDAY
"Wednesday."
WEDNESDAY
"Thursday."
THURSDAY
"Friday."
FRIDAY
"Saturday."
SATURDAY
"Sunday."
SUNDAY
}
"The kind of a line of a price inquiry. A client treats an unknown value as not supported."
enum PriceInquiryLineItemType {
"A line with an item."
ITEM
"A free line without an item, for example a service."
CUSTOM
"A discount or a charge (freight, minimum quantity surcharge) that the ERP computed from the supplier's conditions when the price inquiry was made from the purchase list. It is read only."
ALLOWANCE_OR_CHARGE
}
"How a price tier states its price. The kinds exclude each other. This is a closed set: a new value is a new variant and a breaking change."
enum PriceTierKind {
"The tier states the net price."
NET_PRICE
"The tier states a percentage by which the standard price is reduced."
PERCENTAGE_REDUCTION
}
"Defines the type of manufacturing of a production item."
enum ProductionType {
"The production item is always manufactured in the same way according to its production bill of materials."
REGULAR
"The production item and/or its production bill of materials have customizable properties (e.g., process parameters or configuration groups)."
CUSTOMIZED
}
"How the ERP picks the supplier of a purchase list entry. A client treats an unknown value as not supported."
enum PurchaseListSupplierStrategy {
"The item's default supplier."
DEFAULT
"The supplier with the shortest delivery time; the default supplier wins a tie."
FASTEST
"The supplier with the lowest total for the quantity of this entry, evaluated per supplier after its minimum order quantity and order interval and counting its quantity discount scale, freight, minimum quantity surcharge and cash discount."
CHEAPEST
}
"What an allowance or charge line stands for. A client treats an unknown value as a charge."
enum PurchaseOrderAllowanceOrChargeType {
"Discount from the supplier's discount scale, one line per tax rate. Its amount is negative."
DISCOUNT
"The supplier's freight costs, when the order is below the supplier's free-shipping threshold or the supplier has none."
FREIGHT_CHARGE
"The supplier's surcharge for an order below its minimum order value."
MINIMUM_QUANTITY_SURCHARGE
}
"The kind of a line item. A client treats an unknown value as not supported."
enum PurchaseOrderLineItemType {
"A line with an item."
ITEM
"A free line without an item, for example a service or packaging."
CUSTOM
"A discount or a charge the ERP computes from the supplier's conditions."
ALLOWANCE_OR_CHARGE
}
"Which quantity of the purchase order lines becomes the quantity of the new line items."
enum PurchaseOrderQuantityBasis {
"The confirmed quantity, otherwise the ordered quantity, minus what all incoming invoices already contain, this one included."
ORDERED
"The delivered quantity minus what all incoming invoices already contain, this one included."
DELIVERED
}
"Where a purchase order stands. The status is changed by the commands and by the changes of the line items, never written directly. A client treats an unknown value as not supported."
enum PurchaseOrderStatus {
"Not released yet. Only orders to a warehouse."
OPEN
"Released: the order may be sent to the supplier. A drop shipping order starts here."
RELEASED
"Sent to the supplier; nothing received yet."
SENT
"Something received, something still open."
PARTIALLY_DELIVERED
"Nothing more is expected: everything was received, the rest was cancelled, or the order was completed by hand."
COMPLETED
}
"The kind of a purchase order: where the supplier delivers to. The kind is fixed when the order is created. A client treats an unknown value as not supported."
enum PurchaseOrderType {
"Delivered to one of the company's warehouses."
WAREHOUSE
"Delivered by the supplier straight to a customer."
DROP_SHIPPING
}
"How a refund moves the money."
enum RefundMethod {
"Refunds an earlier incoming payment transaction through the payment account that received it, for example a refund at the payment provider."
PAYMENT_TRANSACTION
"Transfers the amount from a bank account to the recipient's IBAN, without an earlier transaction to refund."
BANK_TRANSFER
}
"Where a refund stands. A closed set: the states of the refund process."
enum RefundStatus {
"Created, not sent yet. It can be changed, sent or deleted."
PENDING
"The last attempt to send it failed; 'lastErrorMessage' says why. It can be changed, sent again or deleted."
FAILED
"Accepted by the payment provider or the bank. It can no longer be changed, sent or deleted, except for its internal note."
SENT
"The outgoing transaction of the payment provider or the bank has been imported and matched to the refund, normally after it was sent. Like a sent refund it can no longer be changed, sent or deleted, except for its internal note."
CONFIRMED
}
"Release maturity of a GraphQL field as exposed by the @releaseStatus directive."
enum ReleaseStatusLevel {
"The field is planned, not implemented yet."
PLANNED
"The field is in development and may change or disappear without notice."
DEVELOPMENT
"The field is experimental and may change incompatibly."
EXPERIMENTAL
"The field is in beta; changes are announced but still possible."
BETA
}
"Specifies whether and how available stock is reserved for the production session when a replenishment order is created."
enum ReplenishmentCreationAvailableStockReservationMode {
"Available stock is not reserved for the production session when a replenishment order is created."
NONE
"Available stock is reserved for the production session based on a user prompt when a replenishment order is created."
USER_PROMPT
"Available stock is automatically reserved for the production session when a replenishment order is created."
AUTO
}
"Specifies to what extent, or at which levels, components are reserved at a workbench."
enum ReservationMode {
"The reservation is carried out for each operation of a production."
OPERATION
"The reservation is carried out per run (lot) of a production (for all operations at once)."
ITERATION
"The reservation is carried out directly for the entire production session (i.e., all operations of all runs/lots)."
SESSION
}
"The category of a resource. It determines the variant of the resource and which properties it has."
enum ResourceCategoryType {
"An employee who works in production."
EMPLOYEE
"A workbench at which production takes place."
WORKBENCH
"A machine used in production."
MACHINE
}
"How the demand of several destination warehouses is suggested. A client treats an unknown value as not supported."
enum RestockSuggestionDemandAllocation {
"Each warehouse gets its own demand covered."
PER_WAREHOUSE
"The demand of all warehouses is ordered for the warehouse with the highest priority."
FIRST_WAREHOUSE
}
"The kind of an entry of a destination area. A client treats an unknown value as not supported."
enum RestockSuggestionDestinationAreaEntryType {
"A whole warehouse."
WAREHOUSE
"An area of a warehouse with storage location management. Read only: such entries come from earlier versions of the ERP."
WAREHOUSE_AREA
"One storage location. Read only: such entries come from earlier versions of the ERP."
STORAGE_LOCATION
}
"Which warehouses get their demand covered. A client treats an unknown value as not supported."
enum RestockSuggestionDestinationSelection {
"The warehouses of a destination area, in their priority."
DESTINATION_AREA
"One warehouse."
WAREHOUSE
}
"Whether and from which period the past consumption is projected onto the coming days. A client treats an unknown value as not supported."
enum RestockSuggestionForecastType {
"No forecast: only the open demand counts."
NONE
"The consumption of the last days, today included."
LAST_DAYS
"The consumption between two days."
CUSTOM_PERIOD
"The consumption of a period relative to the day of the calculation, for example last quarter."
RELATIVE_PERIOD
}
"For which warehouse an inflow from purchase orders counts. A client treats an unknown value as not supported."
enum RestockSuggestionInflowAllocation {
"For the warehouse its purchase order delivers to."
PURCHASE_ORDER_WAREHOUSE
"The inflow of all purchase orders of an item is set off against the destination warehouses from the highest priority down."
FIRST_WAREHOUSE
}
"The kind of an entry of a start area. A client treats an unknown value as not supported."
enum RestockSuggestionStartAreaEntryType {
"A supplier."
SUPPLIER
"The company's own production."
PRODUCTION
"A source warehouse: suggestions from it become stock transfers."
WAREHOUSE
}
"Where a restock suggestion gets its goods from. A client treats an unknown value as not supported."
enum RestockSuggestionType {
"From a supplier, also the company's own production: the suggestion becomes a purchase order."
SUPPLIER
"From another of the company's warehouses: the suggestion becomes a stock transfer."
STOCK_TRANSFER
"From nowhere yet: no supplier delivers the item. Only with 'includeItemsWithoutSupplier'."
UNSOURCED
}
"Which unpaid open sales orders count as demand. A client treats an unknown value as not supported."
enum RestockSuggestionUnpaidSalesOrders {
"No unpaid sales order."
NONE
"Only sales orders with a partial payment."
PARTIALLY_PAID
"Every unpaid sales order, partially paid ones included."
ALL
}
"The stage of the return process a return state belongs to. The three system states each stand for one stage; the states a user adds below a system state belong to the stage of that system state. What Wawi does when a return line item reaches a state depends on the stage."
enum ReturnStateType {
"The return is announced; the goods have not arrived."
ANNOUNCED
"The goods have arrived."
ARRIVED
"The return is completed."
COMPLETED
}
"Whether a sales credit note is a draft or a final document. A client treats an unknown value as not supported."
enum SalesCreditNoteStatus {
"A draft without a number. It can be read but not cancelled."
DRAFT
"A final document with a number."
FINAL
}
"Which document a cancellation cancels; it selects the variant. Clients treat an unknown value as not supported."
enum SalesInvoiceCancellationDocumentType {
"It cancels a sales invoice."
CANCELS_SALES_INVOICE
"It cancels a sales invoice correction."
CANCELS_SALES_INVOICE_CORRECTION
}
"Whether a sales invoice correction is a draft or a final document. A client treats an unknown value as not supported."
enum SalesInvoiceCorrectionStatus {
"A draft without a number. It can be read but not cancelled."
DRAFT
"A final document with a number."
FINAL
}
"What an entry of the invoice overview is."
enum SalesInvoiceDocumentType {
"A sales invoice."
INVOICE
"The cancellation document of a sales invoice. Its details are read through the cancellation document resource."
CANCELLATION
}
"Where an invoice stands. Derived; it changes only by finalizing and cancelling."
enum SalesInvoiceStatus {
"The invoice has no number yet. It can be edited, deleted and finalized."
DRAFT
"The invoice has its number and is binding. It can be cancelled."
FINALIZED
"The invoice was cancelled; a cancellation document exists."
CANCELLED
}
"Where an item line item stands in a kit or a configurable item."
enum SalesItemStructure {
"A line item on its own."
SINGLE
"The parent line item of a kit (bill of materials)."
KIT_PARENT
"A component of a kit."
KIT_COMPONENT
"The parent line item of a configurable item."
CONFIGURABLE_PARENT
"A component of a configurable item."
CONFIGURABLE_COMPONENT
}
"How much of the open quantity of a line item can be delivered now."
enum SalesLineItemDeliverabilityStatus {
"Nothing is open any more."
DELIVERED
"The open quantity is in stock."
DELIVERABLE
"None of the open quantity is in stock."
NOT_DELIVERABLE
"Part of the open quantity is in stock."
PARTIALLY_DELIVERABLE
}
"The type of a sales line item. It selects the variant of the line item."
enum SalesLineItemType {
"A line item for an item of the catalog."
ITEM
"A free line item without an item of the catalog."
CUSTOM
"A voucher that is sold."
VOUCHER
"A charge such as shipping, a payment fee or gift wrap."
CHARGE
"A discount such as a coupon."
DISCOUNT
"A line item of a type that is only read, such as a carton."
OTHER
}
"How far a sales order has been delivered."
enum SalesOrderDeliveryStatus {
"The sales order was cancelled."
CANCELLED
"Nothing has been delivered yet."
PENDING
"Part of the sales order has been delivered."
PARTIALLY_DELIVERED
"Everything has been delivered."
DELIVERED
"Part of the sales order has been shipped."
PARTIALLY_SHIPPED
"Everything has been packed and shipped."
SHIPPED
"The sales order was credited."
CREDITED
"The sales order was completed without shipping."
COMPLETED_WITHOUT_SHIPPING
}
"The state of a drop shipping purchase order."
enum SalesOrderDropShippingStatus {
"The purchase order is created but not sent to the supplier yet."
OPEN
"The purchase order is sent to the supplier."
SENT
"The supplier has shipped and the drop shipping is closed."
COMPLETED
}
"Whether a sales order can still be changed."
enum SalesOrderEditability {
"The sales order can be changed."
CHANGES_ALLOWED
"The sales invoice was created outside of Wawi; some changes are locked."
INVOICED_EXTERNALLY
"The sales order cannot be changed."
CHANGES_FORBIDDEN
}
"Which kind of value a custom field holds, given by the data type of the field. Clients must tolerate unknown values."
enum SalesOrderFieldValueType {
"A text, also a short text, URL, e-mail address, phone number, country code or list entry."
TEXT
"A whole number."
INTEGER
"A decimal number, also a price."
DECIMAL
"A yes or no, a checkbox."
BOOLEAN
"A date; only the calendar date counts."
DATE
}
"How the content of a note reached the company."
enum SalesOrderNoteType {
"A plain note."
TEXT
"A note about an email."
EMAIL
"A note about a phone call."
PHONE
}
"How far a sales order has been paid."
enum SalesOrderPaymentStatus {
"Nothing has been paid."
UNPAID
"Part of the amount has been paid."
PARTIALLY_PAID
"The full amount has been paid."
PAID
"The status cannot be determined, for example for a collective sales invoice."
UNDETERMINABLE
}
"How far a sales order has been invoiced."
enum SalesOrderSalesInvoiceStatus {
"No sales invoice exists."
NONE
"Part of the sales order has been invoiced."
PARTIAL
"The whole sales order has been invoiced."
FULL
}
"The overall status of a sales order as the order list shows it."
enum SalesOrderStatus {
"Nothing has been delivered yet."
OPEN
"Part of the sales order has been delivered."
IN_PROGRESS
"Everything has been delivered or the order was completed without shipping."
SHIPPED
"The sales order was cancelled."
CANCELLED
}
"Whether a sales quotation can still be changed."
enum SalesQuotationEditability {
"The quotation can be changed."
CHANGES_ALLOWED
"The quotation is marked as invoiced outside of Wawi; some changes are locked."
INVOICED_EXTERNALLY
"The quotation cannot be changed."
CHANGES_FORBIDDEN
}
"How the content of a note reached the company."
enum SalesQuotationNoteType {
"A plain note."
TEXT
"A note about an email."
EMAIL
"A note about a phone call."
PHONE
}
"The state of a sales quotation. New states can be added, so a client has to tolerate unknown values."
enum SalesQuotationStatus {
"The quotation is valid and no sales order was created from it yet."
OPEN
"At least one sales order was created from the quotation."
SALES_ORDER_CREATED
"The quotation was cancelled. This state wins over SalesOrderCreated."
CANCELLED
}
"How often a recurring line item becomes due."
enum SalesSubscriptionCadence {
"Every month on the first day of the month."
MONTH_START
"Every month on the 15th."
MID_MONTH
"Every month on the last day of the month."
MONTH_END
"Every 'every' days, months or years, counted from the start date."
CUSTOM
}
"The unit of a custom cadence."
enum SalesSubscriptionIntervalUnit {
"Days."
DAYS
"Months."
MONTHS
"Years."
YEARS
}
"The kind of a line item. A client treats a value it does not know as 'Other'."
enum SalesSubscriptionLineItemKind {
"An item from the catalog, billed in every period of its schedule."
ITEM
"A free line without an item, billed in every period of its schedule."
CUSTOM
"A voucher sold in every period of its schedule."
VOUCHER
"A charge such as shipping or a fee. It has no schedule and is part of every follow-up sales order."
CHARGE
"A discount such as a coupon. It has no schedule and is part of every follow-up sales order."
DISCOUNT
"A line item that cannot be written through the API, for example a carton. It is not part of follow-up sales orders."
OTHER
}
"The state of a subscription, derived from the next due dates of its recurring line items."
enum SalesSubscriptionStatus {
"Every recurring line item has a next due date."
ACTIVE
"Some recurring line items have ended, others have not."
PARTIALLY_ENDED
"Every recurring line item has ended; no further sales order is created."
ENDED
}
"The type of a voucher line item."
enum SalesSubscriptionVoucherType {
"A single-purpose voucher, printed or sent."
SINGLE_PURPOSE
"A multi-purpose voucher, printed or sent."
MULTI_PURPOSE
"A digital single-purpose voucher."
SINGLE_PURPOSE_DIGITAL
"A digital multi-purpose voucher."
MULTI_PURPOSE_DIGITAL
}
"The type of a voucher line item."
enum SalesVoucherType {
"A single-purpose voucher, printed or sent."
SINGLE_PURPOSE
"A multi-purpose voucher, printed or sent."
MULTI_PURPOSE
"A digital single-purpose voucher."
SINGLE_PURPOSE_DIGITAL
"A digital multi-purpose voucher."
MULTI_PURPOSE_DIGITAL
}
"At which point of the goods flow serial numbers are captured. An item that does not track serial numbers has no serial tracking at all instead of a 'none' value. This is a closed set: a new value is a new variant and a breaking change."
enum SerialNumberTrackingType {
"Serial numbers are captured on goods issue only."
OUTBOUND_ONLY
"Serial numbers are captured on goods receipt and on goods issue."
INBOUND_AND_OUTBOUND
"Serial numbers are captured on every warehouse movement."
EVERY_MOVEMENT
}
"The kind of a node in the settings tree."
enum SettingsNodeKind {
"A group that holds other nodes: a navigation entry, a page, a section."
GROUP
"A text for the user: a heading, a paragraph, an info or a warning."
TEXT_BLOCK
"A link to a help page or another website."
LINK
"A button that runs an action, for example testing a connection."
BUTTON
"A yes or no setting."
CHECKBOX
"A setting with several choices that can be selected together."
CHECKBOX_GROUP
"A setting with one choice out of a few, all shown at once."
RADIO_GROUP
"A setting with one choice out of a list."
DROPDOWN
"A text setting such as a name, an e-mail address, a URL, a path or a password."
TEXT_INPUT
"A whole number setting."
INTEGER_INPUT
"A decimal number setting."
DECIMAL_INPUT
"A date, a time or a date and time setting."
DATE_TIME_INPUT
"A page or section that brings its own frontend and its own API."
CUSTOM
}
"For whom a setting value applies. Settings are global unless they are stored per user or per workstation."
enum SettingsScope {
"For the whole Wawi installation."
GLOBAL
"For one user, on every workstation."
USER
"For one user on one workstation."
WORKSTATION
}
"The data type of a setting value."
enum SettingValueType {
"True or false."
BOOLEAN
"A whole number."
INTEGER
"A decimal number."
DECIMAL
"A text."
TEXT
"A date, a time or both."
DATE_TIME
"The key of one option."
CHOICE
"The keys of several options."
MULTI_CHOICE
"A secret that can be written but not read."
SECRET
}
"Indicates how the shelf life end date of a produced item is calculated after completing a lot."
enum ShelfLifeEndDateGenerationMode {
"The shelf life end date of the produced item is based on the earliest shelf life end date of the components used."
EARLIEST
"The shelf life end date of the produced item is based on the latest shelf life end date of the components used."
LATEST
"The shelf life end date of the produced item is based on the production date plus a separately configurable time span."
PRODUCTION_DATE
}
"Who created a shipping method."
enum ShippingMethodOrigin {
"Created automatically, for example by an order import. Can be mapped to an own shipping method, converted to an own one or deleted."
AUTOMATIC
"Created by a user (or by the Shipping app setup). Can be changed."
OWN
}
"What a shipping run did with one sales order. Closed set."
enum ShippingRunOrderOutcome {
"Not processed yet."
PENDING
"Delivered; the delivery notes were created. Label results are listed separately."
DELIVERED
"Not delivered because the sales order is blocked or not deliverable; the blockers say why."
SKIPPED
"Not delivered because the delivery of the run failed."
FAILED
}
"Where a shipping run stands. Closed set."
enum ShippingRunStatus {
"Accepted and waiting."
QUEUED
"The sales orders are being processed."
RUNNING
"The run ended. Read the outcome of every sales order; some may have been skipped or have failed labels."
COMPLETED
"A technical error stopped the delivery; no sales order of the run was delivered."
FAILED
}
"Result of the last transfer of a package to a shipping service (label request or shipping data export). Closed set."
enum ShippingTransferStatus {
"The package was not transferred, or the result is unknown."
NONE
"The last transfer succeeded."
SUCCEEDED
"The last transfer failed; the messages are shown in the shipping service."
FAILED
}
enum SortEnumType {
ASC
DESC
}
"The direction of a stock posting that a posting type is used in."
enum StockPostingDirection {
"The posting adds stock to a storage location."
INBOUND
"The posting removes stock from a storage location."
OUTBOUND
"The posting moves stock from one storage location to another."
TRANSFER
}
"How the individual units of a stock item are traced. The kinds exclude each other. This is a closed set: a new value is a new variant and a breaking change."
enum StockTrackingKind {
"Units are not traced individually."
UNTRACKED
"Units are traced by batch and / or shelf life expiration date."
LOT
"Every unit carries its own serial number."
SERIAL
}
"State of a stock transfer. Clients must treat unknown future values as not actionable."
enum StockTransferStatus {
"The stock transfer has been created. The items are still in the source warehouse and the line items can be changed."
OPEN
"The items have left the source warehouse and are fully or partly held in the transit warehouse."
IN_TRANSIT
"All items have been received in the target warehouse, or the quantities still in transit have been written off."
COMPLETED
}
"The status of a storage location. A location in a status other than active cannot be used for stock movements of the warehouse management system."
enum StorageLocationStatus {
"The location can be used."
ACTIVE
"The location is locked and does not take part in picking and postings."
LOCKED
"The location is locked by a running inventory count. Only the inventory count sets and releases it."
INVENTORY_LOCKED
"The location is switched off."
INACTIVE
}
"How much of a subset item is reserved for production. This is a closed set: a new value is a new variant and a breaking change."
enum SubsetReservationMode {
"The item is reserved completely for production."
COMPLETE
"The item is reserved only as far as production needs it."
AS_NEEDED
}
"How a purchase price tier states its price. The kinds exclude each other. This is a closed set: a new value is a new variant and a breaking change."
enum SupplierPriceTierKind {
"The tier states the net purchase price."
NET_PRICE
"The tier states a percentage discount on the net purchase price of the supplier item."
PERCENTAGE_DISCOUNT
}
"Where a sync is in its life: not whether the last run worked and not whether it is locked (see LastResult and IsLocked)."
enum SyncLifecycleState {
"The worker is not running the sync. It starts again by itself when the worker starts."
SUSPENDED
"The sync is starting."
STARTING
"The sync is running."
RUNNING
"The sync waits for its next run."
SLEEPING
"The sync is being stopped."
STOPPING
"The sync was stopped by a user. It stays stopped until a user starts it."
DEACTIVATED
}
"How the last run of a sync ended."
enum SyncResult {
"The run ended without errors."
SUCCEEDED
"The run ended with errors, or did not run because the sync is locked."
FAILED
}
"The kind of rate a tax class stands for. It selects the matching rate from the tax rate presets of a country."
enum TaxRateType {
"Super-reduced rate."
SUPER_REDUCED
"Second, lower reduced rate."
REDUCED_LOW
"Reduced rate."
REDUCED
"Standard rate."
STANDARD
"Intermediate (parking) rate."
INTERMEDIATE
}
"How a sale is taxed."
enum TaxTreatment {
"The sale is taxed with the rate of its tax class."
TAXABLE
"Tax-free intra-community delivery to a business customer in another EU country."
INTRA_COMMUNITY_DELIVERY
"Tax-free for the seller; the customer owes the tax (reverse charge)."
REVERSE_CHARGE
"Tax-exempt: an export from the EU, or a sale made exempt on purpose."
EXEMPT
}
"A tax treatment forced for a sale instead of determining it."
enum TaxTreatmentOverride {
"Force the reverse-charge procedure."
REVERSE_CHARGE
"Force a tax-exempt sale."
EXEMPT
"Force a taxable sale, also where the sale would otherwise be tax-free."
TAXABLE
}
"The kind of text a text setting holds."
enum TextFormat {
"Any text."
PLAIN
"An e-mail address."
EMAIL
"A web address."
URL
"A file or folder path."
PATH
"A secret. It is never returned, only whether it is set."
PASSWORD
"A telephone number."
PHONE
"HTML markup."
HTML
}
"The role of a text block."
enum TextStyle {
"A heading."
HEADING
"A plain explaining paragraph."
PARAGRAPH
"A hint."
INFO
"A warning about a consequence."
WARNING
"A warning about something that cannot be undone."
DANGER
}
"The kind of a user. The kinds differ in who uses them, not in their fields."
enum UserType {
"A person who signs in to Wawi. The only kind that can be created and changed."
INTERACTIVE
"The service account of a registered API application. Read-only."
API_APPLICATION
"The service account of a Wawi component. Read-only."
SYSTEM_APPLICATION
}
"Where the value of a setting comes from."
enum ValueSource {
"The default of the setting. Nobody set a value."
DEFAULT
"A value that was set."
EXPLICIT
}
"How a condition compares a setting with a value."
enum WarehouseConditionOperator {
"Equal to the value."
EQUAL_TO
"Not equal to the value."
NOT_EQUAL_TO
"Greater than the value."
GREATER_THAN
"Greater than or equal to the value."
GREATER_THAN_OR_EQUAL_TO
"Less than the value."
LESS_THAN
"Less than or equal to the value."
LESS_THAN_OR_EQUAL_TO
"Has a value. No value to compare."
IS_SET
"Has no value. No value to compare."
IS_NOT_SET
"A multiple choice contains the value."
CONTAINS
}
"What a dependency changes on a node."
enum WarehouseDependencyEffect {
"The node is only shown when the conditions hold."
VISIBLE
"The node can only be changed when the conditions hold."
ENABLED
"The node needs a value when the conditions hold."
REQUIRED
}
"How the conditions of a dependency combine."
enum WarehouseDependencyMatch {
"Every condition must hold."
ALL
"One condition is enough."
ANY
}
"The kind of a node in the settings tree."
enum WarehouseSettingsNodeKind {
"A group that holds other nodes: a navigation entry, a page, a section."
GROUP
"A text for the user: a heading, a paragraph, an info or a warning."
TEXT_BLOCK
"A yes or no setting."
CHECKBOX
"A setting with several choices that can be selected together."
CHECKBOX_GROUP
"A setting with one choice out of a few, all shown at once."
RADIO_GROUP
"A setting with one choice out of a list."
DROPDOWN
"A text setting such as a name, an e-mail address, a URL, a path or a password."
TEXT_INPUT
"A whole number setting."
INTEGER_INPUT
"A decimal number setting."
DECIMAL_INPUT
}
"The data type of a setting value."
enum WarehouseSettingValueType {
"True or false."
BOOLEAN
"A whole number."
INTEGER
"A decimal number."
DECIMAL
"A text."
TEXT
"The key of one option."
CHOICE
"The keys of several options."
MULTI_CHOICE
}
"The type of a warehouse. The types exclude each other and a warehouse keeps its type for its whole life. Whether a warehouse has a storage location structure, a fulfillment partner or a source and target warehouse is not a trait that can be combined: it is the type. New types are added over time, so a consumer has to tolerate values it does not know and treat such a warehouse through the properties every warehouse has."
enum WarehouseType {
"A warehouse without storage location management, the plain case. It has one implicit storage location that is not visible in this API."
STANDARD
"A warehouse run by an external fulfillment partner. Orders are sent to the partner as fulfillment orders and delivery notes."
EXTERNAL_FULFILLMENT
"A warehouse with storage location management for the warehouse management system. It has storage locations and a location layout."
WMS
"The stock Amazon holds for the seller (Fulfillment by Amazon). It is created and kept by the Amazon integration, not by this API."
AMAZON_FBA
"A warehouse that stands for the route from a source warehouse to a target warehouse, for example a supplier that ships to the customer. It holds no own storage structure."
DROP_SHIPPING
"A warehouse of the JTL-Fulfillment Network. It is created and kept by the fulfillment network, not by this API."
FULFILLMENT_NETWORK
"The stock Amazon has reserved internally for a Fulfillment by Amazon warehouse (not yet available). It is created and kept by the Amazon integration, not by this API."
AMAZON_FBA_PENDING
}
"Where the value of a setting comes from."
enum WarehouseValueSource {
"The default of the setting. Nobody set a value."
DEFAULT
"A value that was set."
EXPLICIT
}
"How serious a workflow log entry is."
enum WorkflowLogLevel {
"An action or condition failed."
ERROR
"Something unexpected happened, the run went on."
WARNING
"Detail for troubleshooting."
DEBUG
"General information about the run."
INFO
"An action of the workflow was carried out."
ACTION
}
"Where a queued workflow run is. A run that finishes leaves the queue; its trace stays in the workflow log."
enum WorkflowQueueStatus {
"The run is queued and waits for the workflow engine."
WAITING
"The workflow engine is running it."
RUNNING
"The run failed and stays in the queue until a user removes it."
FAILED
}
scalar Byte
@specifiedBy(
url: "https://scalars.graphql.org/chillicream/unsigned-byte.html"
)
"The `DateTime` scalar type represents a date and time with time zone offset information."
scalar DateTime
@specifiedBy(url: "https://scalars.graphql.org/chillicream/date-time.html")
"The `Decimal` scalar type represents a decimal floating-point number with high precision."
scalar Decimal
@specifiedBy(url: "https://scalars.graphql.org/chillicream/decimal.html")
"The `Long` scalar type represents a signed 64-bit integer."
scalar Long
@specifiedBy(url: "https://scalars.graphql.org/chillicream/long.html")
scalar TimeSpan
@specifiedBy(url: "https://scalars.graphql.org/chillicream/duration.html")
"The `UUID` scalar type represents a Universally Unique Identifier (UUID) as defined by RFC 9562."
scalar UUID
@specifiedBy(url: "https://scalars.graphql.org/chillicream/uuid.html")
"The purpose of the `cost` directive is to define a `weight` for GraphQL types, fields, and arguments. Static analysis can use these weights when calculating the overall cost of a query or response."
directive @cost(
"The `weight` argument defines what value to add to the overall cost for every appearance, or possible appearance, of a type, field, argument, etc."
weight: String!
) on
| SCALAR
| OBJECT
| FIELD_DEFINITION
| ARGUMENT_DEFINITION
| ENUM
| INPUT_FIELD_DEFINITION