GraphQL World Of Cd Keys API reference

Explore World Of Cd Keys's API reference documentation.
This page will help you get up and running with the API.

API Endpoints
# Sandbox:
https://api.stage.wock.digitalwarehou.se/graphql
# Production:
https://api.worldofcdkeys.com/graphql
Headers
Authorization: Bearer <YOUR_TOKEN_HERE>

Authentication

All GraphQL API queries require a valid JWT access token passed in the request header as Authorization.

It could be acquired by calling the access token URL endpoint with tenant id parameter with proper client id, client secret, and scope, which will be delivered to you by our helpdesk. Parameters are different between environments.

We are using Azure Active Directory and client credentials flow, so here is an example of how to acquire a token: Access token request with a shared secret

The generated token is valid for 360 seconds (10 minutes).

GraphQL

We use the GraphQL server to create this API to give our clients as much flexibility as possible. With that, you can query only for properties that you need in your daily work.

For development/test purposes we strongly recommend using Insomnia client because it supports GraphQL schemas better than the other API clients, with autocompletion and real-time schema preview. To autocomplete and preview the schema documentation in Insomnia, you need to be authenticated first and then refresh the schema in the client's program itself.

Endpoints

GraphQL queries/mutations are executed by sending POST HTTP requests to the endpoint proper for the environment. It's available in the upper part of the documentation. Let's assume we want to use the sandbox, and we need to make a POST request to https://api.stage.wock.digitalwarehou.se/graphql.

If we want to use GET requests, we need to make a GET request to https://api.stage.wock.digitalwarehou.se/graphql?query=our_query_body_goes_here (only applies to queries, mutations are not supported in GET requests).

Queries

Queries begin with one of the objects listed under QueryRoot. The QueryRoot is the schemas entry-point for queries.

Queries are equivalent to making a GET request in REST.

Mutations

Mutations begin with one of the objects listed under MutationRoot. The MutationRoot is the schema’s entry-point for mutations.

Mutations are equivalent to making a POST request in REST, so they are mutating (modifying) the state, like creating an order.

Status and error codes

All API queries return HTTP status codes that contain more information about the response.

200 OK

GraphQL HTTP status codes are different from REST API status codes. Most importantly, the GraphQL API can return a 200 OK response code in cases that would typically produce 4xx or 5xx errors in REST.

Error handling

The error object's response contains additional detail to help you debug your operation.

Response
 {
 "errors": [
  {
   "message""Products in your order must be unique. You cannot order the same product twice.",
   "extensions": {
    "code""PRODUCT_UNIQUE_ERR"
    "correlationId""8b77ccc823f869598fe156d822603664"
   }
  }
 ],
 "data": {
  "createOrder"null
 }
}

Improvements/bugs

We are open to hearing your suggestions, so don't hesitate to contact us when you see a possibility for improvement or a bug.
If you can, always please attach a correlationId from the error response. Enjoy!

Changelog

01.03.2025

  1. Important - changed type name returned in orders query from OrderResponseCollectionSegment to OrdersCollectionSegment
  2. Important - changed type name returned in products query from ProductResponseCollectionSegment to ProductsCollectionSegment
  3. Added status filterable & sortable property to OrderResponse used in response for orders query
  4. Added partnerProductId property to OrderCreatedLineResponse used in response for createOrder mutation
  5. Marked isBundle property as deprecated in OrderProductResponse used in response for orders query
  6. Marked isSubBundle property as deprecated in OrderProductResponse used in response for orders query
  7. Marked isBundle property as deprecated in ProductResponse used in response for products query
  8. Marked isSubBundle property as deprecated in ProductResponse used in response for products query
  9. Marked productPartnerId property as deprecated in ProductResponse used in response for products query
  10. Added productPartnerIds property to ProductResponse used in response for products query
  11. Added partnerProductId property to OutboundDeliveryProductResponse used in deliveries query
  12. Added stockLimit property to PartnerResponse used in partner query
18.07.2024
  1. Added excludedRegions and excludedLanguages properties to ProductResponse (products query)
  2. Added used property to PartnerResponse (partner query)

Queries

delivery

Description

Returns keys from Outbound Delivery in the following statuses:

Ready for download
Partially downloaded
Completed
Response

Returns an OutboundDeliveryResponse

Arguments
Name Description
orderId - UUID
legacyOrderId - String

Example

Query
query delivery(
  $orderId: UUID,
  $legacyOrderId: String
) {
  delivery(
    orderId: $orderId,
    legacyOrderId: $legacyOrderId
  ) {
    products {
      details {
        id
        name
        platform
        region
        language
      }
      keys {
        id
        key
        downloadedAt
        mimeType
        subKeys {
          id
          key
          downloadedAt
          mimeType
          subKeys {
            ...OutboundDeliveryKeyResponseFragment
          }
        }
      }
      deliveryIdentifier
      partnerProductId
    }
    orderId
    legacyOrderId
    archives {
      link
      password
    }
    status {
      ready
      error
    }
  }
}
Variables
{
  "orderId": "e21de451-d7e2-4f28-8925-2c1c3809a42b",
  "legacyOrderId": "xyz789"
}
Response
{
  "data": {
    "delivery": {
      "products": [OutboundDeliveryProductResponse],
      "orderId": "e21de451-d7e2-4f28-8925-2c1c3809a42b",
      "legacyOrderId": "abc123",
      "archives": [OutboundDeliveryArchiveFileResponse],
      "status": OutboundDeliveryStatusResponse
    }
  }
}

orders

Description

Returns list of Outbound Orders in the Ready for download status

Response

Returns an OrdersCollectionSegment

Arguments
Name Description
skip - Int
take - Int
where - OrderResponseFilterInput
order - [OrderResponseSortInput!]

Example

Query
query orders(
  $skip: Int,
  $take: Int,
  $where: OrderResponseFilterInput,
  $order: [OrderResponseSortInput!]
) {
  orders(
    skip: $skip,
    take: $take,
    where: $where,
    order: $order
  ) {
    pageInfo {
      hasNextPage
      hasPreviousPage
    }
    items {
      id
      legacyId
      createdAt
      products {
        id
        name
        isBundle
        isSubBundle
        quantity
        price
        children {
          id
          name
          isBundle
          isSubBundle
          quantity
          price
          children {
            ...OrderProductResponseFragment
          }
        }
      }
      identifier
      status
    }
    totalCount
  }
}
Variables
{
  "skip": 987,
  "take": 123,
  "where": OrderResponseFilterInput,
  "order": [OrderResponseSortInput]
}
Response
{
  "data": {
    "orders": {
      "pageInfo": CollectionSegmentInfo,
      "items": [OrderResponse],
      "totalCount": 123
    }
  }
}

partner

Description

Returns partner's financial balance. Gives an idea of how many orders can be placed within the credit line granted by the supplier. It's changed only after successfully created delivery for an placed order

Response

Returns a PartnerResponse

Example

Query
query partner {
  partner {
    id
    available
    used
    partnerType
    stockLimit
  }
}
Response
{
  "data": {
    "partner": {
      "id": "e21de451-d7e2-4f28-8925-2c1c3809a42b",
      "available": Decimal,
      "used": Decimal,
      "partnerType": "xyz789",
      "stockLimit": 987
    }
  }
}

product

Description

Returns details of a single product

Response

Returns a ProductResponse

Arguments
Name Description
id - Int

Example

Query
query product($id: Int) {
  product(id: $id) {
    language
    lastUpdateDateTime
    quantity {
      text
      image
      all
    }
    bulkPrices {
      price
      minimumQuantity
    }
    productPartnerId
    bundleItems {
      id
      name
      platform
      language
      region
      isSubBundle
    }
    isBundle
    id
    name
    platform
    region
    currency
    isDisabled
    lastUpdatedPriceDateTime
    lastIncreasedStockDateTime
    productPartnerIds
    languages
    regions
    excludedLanguages
    excludedRegions
  }
}
Variables
{"id": 123}
Response
{
  "data": {
    "product": {
      "language": "xyz789",
      "lastUpdateDateTime": "2007-12-03T10:15:30Z",
      "quantity": QuantityResponse,
      "bulkPrices": [BulkPriceResponse],
      "productPartnerId": "xyz789",
      "bundleItems": [ProductSubBundleResponse],
      "isBundle": true,
      "id": 123,
      "name": "xyz789",
      "platform": "xyz789",
      "region": "abc123",
      "currency": "abc123",
      "isDisabled": false,
      "lastUpdatedPriceDateTime": "2007-12-03T10:15:30Z",
      "lastIncreasedStockDateTime": "2007-12-03T10:15:30Z",
      "productPartnerIds": ["xyz789"],
      "languages": ["abc123"],
      "regions": ["abc123"],
      "excludedLanguages": ["abc123"],
      "excludedRegions": ["abc123"]
    }
  }
}

products

Description

Returns product list that are available for purchase

Response

Returns a ProductsCollectionSegment

Arguments
Name Description
skip - Int
take - Int
where - ProductResponseFilterInput
order - [ProductResponseSortInput!]

Example

Query
query products(
  $skip: Int,
  $take: Int,
  $where: ProductResponseFilterInput,
  $order: [ProductResponseSortInput!]
) {
  products(
    skip: $skip,
    take: $take,
    where: $where,
    order: $order
  ) {
    pageInfo {
      hasNextPage
      hasPreviousPage
    }
    items {
      language
      lastUpdateDateTime
      quantity {
        text
        image
        all
      }
      bulkPrices {
        price
        minimumQuantity
      }
      productPartnerId
      bundleItems {
        id
        name
        platform
        language
        region
        isSubBundle
      }
      isBundle
      id
      name
      platform
      region
      currency
      isDisabled
      lastUpdatedPriceDateTime
      lastIncreasedStockDateTime
      productPartnerIds
      languages
      regions
      excludedLanguages
      excludedRegions
    }
    totalCount
  }
}
Variables
{
  "skip": 123,
  "take": 123,
  "where": ProductResponseFilterInput,
  "order": [ProductResponseSortInput]
}
Response
{
  "data": {
    "products": {
      "pageInfo": CollectionSegmentInfo,
      "items": [ProductResponse],
      "totalCount": 123
    }
  }
}

Mutations

createOrder

Description

Request to create a brand new order. Only available for External partner type. When an error occurs, then the following codes will be in response (errors[].extensions.code) as it's stated here:

Code Explanation
ORDER_ERR The information needed to create order is wrong.
ORDER_KEY_TYPE_ERR Key type is incorrect.
PARTNER_BALANCE_ERR The available amount limit has been reached for the partner.
PARTNER_ERR Partner info in the system is incorrect. Contact support.
PARTNER_NOT_FOUND You are not assigned to any partner. Contact support.
PRODUCT_NOT_FOUND One of the requested products is not valid or not found.
PRODUCT_PRICE_MISMATCH The price for a product changed. Retrieve the product or products list to check the updated prices.
PRODUCT_QTY_ERR Maximal ordered product quantity exceeded. The client cannot order more keys than available for the product in one order.
PRODUCT_STOCK_MISMATCH The stock for a product changed. Retrieve the product or products list to check the updated stock.
PRODUCT_UNIQUE_ERR One of the products is requested more than once in the same order.
Response

Returns an OrderCreatedResponse

Arguments
Name Description
input - CreateOrderInput!

Example

Query
mutation createOrder($input: CreateOrderInput!) {
  createOrder(input: $input) {
    orderId
    partnerOrderId
    products {
      productId
      price
      quantity
      keyType
      partnerProductId
    }
  }
}
Variables
{"input": CreateOrderInput}
Response
{
  "data": {
    "createOrder": {
      "orderId": "e21de451-d7e2-4f28-8925-2c1c3809a42b",
      "partnerOrderId": "xyz789",
      "products": [OrderCreatedLineResponse]
    }
  }
}

deleteOrder

Description

Request to delete order in 'New' or 'Ready for download' status

Response

Returns a Boolean

Arguments
Name Description
orderId - UUID!

Example

Query
mutation deleteOrder($orderId: UUID!) {
  deleteOrder(orderId: $orderId)
}
Variables
{
  "orderId": "e21de451-d7e2-4f28-8925-2c1c3809a42b"
}
Response
{"data": {"deleteOrder": false}}

Types

Boolean

Description

The Boolean scalar type represents true or false

BooleanOperationFilterInput

Fields
Input Field Description
eq - Boolean
neq - Boolean
Example
{"eq": true, "neq": false}

BulkPriceResponse

Fields
Field Name Description
price - Decimal!
minimumQuantity - Int!
Example
{"price": Decimal, "minimumQuantity": 123}

BulkPriceResponseFilterInput

Example
{
  "and": [BulkPriceResponseFilterInput],
  "or": [BulkPriceResponseFilterInput],
  "price": DecimalOperationFilterInput,
  "minimumQuantity": IntOperationFilterInput
}

BulkPriceResponseSortInput

Fields
Input Field Description
price - SortEnumType
minimumQuantity - SortEnumType
Example
{"price": "ASC", "minimumQuantity": "ASC"}

CollectionSegmentInfo

Description

Information about the offset pagination

Fields
Field Name Description
hasNextPage - Boolean! Indicates whether more items exist following the set defined by the clients arguments
hasPreviousPage - Boolean! Indicates whether more items exist prior the set defined by the clients arguments
Example
{"hasNextPage": true, "hasPreviousPage": false}

CreateOrderInput

Description

Partners credit line must not be exceeeded

Fields
Input Field Description
products - [CreateOrderProductInput!]! Array of products
Example
{"products": [CreateOrderProductInput]}

CreateOrderProductInput

Description

At least one product must be ordered

Fields
Input Field Description
productId - Int! Product Id
quantity - Int! Quantity of given product - more than 0, cannot exceed 500 (hard limit), and cannot exceed product availability
unitPrice - Decimal! Unit price - must match product price (from a product or products queries)
keyType - Int

A key type which you want to order for the product

keyType description
not specified automatically assigned keys
10 image keys
20 text keys
partnerProductId - String Here you can add your product id so it can be matched with order line and delivery line
Example
{
  "productId": 123,
  "quantity": 123,
  "unitPrice": Decimal,
  "keyType": 123,
  "partnerProductId": "xyz789"
}

DateTime

Description

The DateTime scalar represents an ISO-8601 compliant date time type

Example
"2007-12-03T10:15:30Z"

DateTimeOperationFilterInput

Fields
Input Field Description
eq - DateTime
neq - DateTime
in - [DateTime]
nin - [DateTime]
gt - DateTime
ngt - DateTime
gte - DateTime
ngte - DateTime
lt - DateTime
nlt - DateTime
lte - DateTime
nlte - DateTime
Example
{
  "eq": "2007-12-03T10:15:30Z",
  "neq": "2007-12-03T10:15:30Z",
  "in": ["2007-12-03T10:15:30Z"],
  "nin": ["2007-12-03T10:15:30Z"],
  "gt": "2007-12-03T10:15:30Z",
  "ngt": "2007-12-03T10:15:30Z",
  "gte": "2007-12-03T10:15:30Z",
  "ngte": "2007-12-03T10:15:30Z",
  "lt": "2007-12-03T10:15:30Z",
  "nlt": "2007-12-03T10:15:30Z",
  "lte": "2007-12-03T10:15:30Z",
  "nlte": "2007-12-03T10:15:30Z"
}

Decimal

Description

The built-in Decimal scalar type

Example
Decimal

DecimalOperationFilterInput

Fields
Input Field Description
eq - Decimal
neq - Decimal
in - [Decimal]
nin - [Decimal]
gt - Decimal
ngt - Decimal
gte - Decimal
ngte - Decimal
lt - Decimal
nlt - Decimal
lte - Decimal
nlte - Decimal
Example
{
  "eq": Decimal,
  "neq": Decimal,
  "in": [Decimal],
  "nin": [Decimal],
  "gt": Decimal,
  "ngt": Decimal,
  "gte": Decimal,
  "ngte": Decimal,
  "lt": Decimal,
  "nlt": Decimal,
  "lte": Decimal,
  "nlte": Decimal
}

Int

Description

The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1

Example
123

IntOperationFilterInput

Fields
Input Field Description
eq - Int
neq - Int
in - [Int]
nin - [Int]
gt - Int
ngt - Int
gte - Int
ngte - Int
lt - Int
nlt - Int
lte - Int
nlte - Int
Example
{
  "eq": 123,
  "neq": 123,
  "in": [987],
  "nin": [123],
  "gt": 123,
  "ngt": 987,
  "gte": 123,
  "ngte": 987,
  "lt": 123,
  "nlt": 987,
  "lte": 123,
  "nlte": 123
}

ListFilterInputTypeOfBulkPriceResponseFilterInput

Fields
Input Field Description
all - BulkPriceResponseFilterInput
none - BulkPriceResponseFilterInput
some - BulkPriceResponseFilterInput
any - Boolean
Example
{
  "all": BulkPriceResponseFilterInput,
  "none": BulkPriceResponseFilterInput,
  "some": BulkPriceResponseFilterInput,
  "any": true
}

ListFilterInputTypeOfOrderProductResponseFilterInput

Example
{
  "all": OrderProductResponseFilterInput,
  "none": OrderProductResponseFilterInput,
  "some": OrderProductResponseFilterInput,
  "any": true
}

ListFilterInputTypeOfOutboundDeliveryKeyResponseFilterInput

Example
{
  "all": OutboundDeliveryKeyResponseFilterInput,
  "none": OutboundDeliveryKeyResponseFilterInput,
  "some": OutboundDeliveryKeyResponseFilterInput,
  "any": true
}

ListFilterInputTypeOfProductSubBundleResponseFilterInput

Example
{
  "all": ProductSubBundleResponseFilterInput,
  "none": ProductSubBundleResponseFilterInput,
  "some": ProductSubBundleResponseFilterInput,
  "any": false
}

ListStringOperationFilterInput

Fields
Input Field Description
all - StringOperationFilterInput
none - StringOperationFilterInput
some - StringOperationFilterInput
any - Boolean
Example
{
  "all": StringOperationFilterInput,
  "none": StringOperationFilterInput,
  "some": StringOperationFilterInput,
  "any": false
}

OrderCreatedLineResponse

Fields
Field Name Description
productId - Int!
price - Decimal!
quantity - Int!
keyType - Int
partnerProductId - String
Example
{
  "productId": 987,
  "price": Decimal,
  "quantity": 987,
  "keyType": 987,
  "partnerProductId": "abc123"
}

OrderCreatedResponse

Fields
Field Name Description
orderId - UUID! Order Id - this property is used in delivery query
partnerOrderId - String
products - [OrderCreatedLineResponse!]!
Example
{
  "orderId": "e21de451-d7e2-4f28-8925-2c1c3809a42b",
  "partnerOrderId": "abc123",
  "products": [OrderCreatedLineResponse]
}

OrderProductResponse

Fields
Field Name Description
id - Int! Product Id
name - String! Product name
isBundle - Boolean! This field is deprecated. Will be removed in future.
isSubBundle - Boolean! This field is deprecated. Will be removed in future.
quantity - Int
price - Decimal
children - [OrderProductResponse!]!
Example
{
  "id": 987,
  "name": "xyz789",
  "isBundle": false,
  "isSubBundle": true,
  "quantity": 123,
  "price": Decimal,
  "children": [OrderProductResponse]
}

OrderProductResponseFilterInput

Example
{
  "and": [OrderProductResponseFilterInput],
  "or": [OrderProductResponseFilterInput],
  "id": IntOperationFilterInput,
  "name": StringOperationFilterInput,
  "isBundle": BooleanOperationFilterInput,
  "isSubBundle": BooleanOperationFilterInput,
  "quantity": IntOperationFilterInput,
  "price": DecimalOperationFilterInput,
  "children": ListFilterInputTypeOfOrderProductResponseFilterInput
}

OrderResponse

Fields
Field Name Description
id - UUID! Order Id - this property retrieved from this endpoint response is used in the delivery query
legacyId - String Order Id - from the legacy platform. Only applies to orders which are migrated
createdAt - DateTime! Timestamp of order creation, UTC
products - [OrderProductResponse!]! An array of ordered products
identifier - String! Internal identifier of the order
status - Int!

Status of the order

Value Description
30 Ready for download
40 Completed
Example
{
  "id": "e21de451-d7e2-4f28-8925-2c1c3809a42b",
  "legacyId": "xyz789",
  "createdAt": "2007-12-03T10:15:30Z",
  "products": [OrderProductResponse],
  "identifier": "xyz789",
  "status": 987
}

OrderResponseFilterInput

Example
{
  "and": [OrderResponseFilterInput],
  "or": [OrderResponseFilterInput],
  "id": UuidOperationFilterInput,
  "legacyId": StringOperationFilterInput,
  "identifier": StringOperationFilterInput,
  "createdAt": DateTimeOperationFilterInput,
  "status": IntOperationFilterInput,
  "products": ListFilterInputTypeOfOrderProductResponseFilterInput
}

OrderResponseSortInput

Fields
Input Field Description
id - SortEnumType
legacyId - SortEnumType
identifier - SortEnumType
createdAt - SortEnumType
status - SortEnumType
Example
{
  "id": "ASC",
  "legacyId": "ASC",
  "identifier": "ASC",
  "createdAt": "ASC",
  "status": "ASC"
}

OrdersCollectionSegment

Fields
Field Name Description
pageInfo - CollectionSegmentInfo! Information to aid in pagination
items - [OrderResponse!]
totalCount - Int!
Example
{
  "pageInfo": CollectionSegmentInfo,
  "items": [OrderResponse],
  "totalCount": 123
}

OutboundDeliveryArchiveFileResponse

Fields
Field Name Description
link - String! Link to a zip package with keys
password - String! Password to zip package
Example
{
  "link": "abc123",
  "password": "abc123"
}

OutboundDeliveryArchiveFileResponseFilterInput

Example
{
  "and": [OutboundDeliveryArchiveFileResponseFilterInput],
  "or": [OutboundDeliveryArchiveFileResponseFilterInput],
  "link": StringOperationFilterInput,
  "password": StringOperationFilterInput
}

OutboundDeliveryKeyResponse

Fields
Field Name Description
id - UUID!
key - String! Key in plain text or base64 depends on mime-type
downloadedAt - DateTime Datetime of key first download
mimeType - String! Mime-type of a key: text (text/plain) or image (image/png, image/jpeg, image/gif, image/bmp)
subKeys - [OutboundDeliveryKeyResponse!]! Keys linked with that key. For example DLC, bundle or another dependent key
Example
{
  "id": "e21de451-d7e2-4f28-8925-2c1c3809a42b",
  "key": "abc123",
  "downloadedAt": "2007-12-03T10:15:30Z",
  "mimeType": "xyz789",
  "subKeys": [OutboundDeliveryKeyResponse]
}

OutboundDeliveryKeyResponseFilterInput

Example
{
  "and": [OutboundDeliveryKeyResponseFilterInput],
  "or": [OutboundDeliveryKeyResponseFilterInput],
  "id": UuidOperationFilterInput,
  "key": StringOperationFilterInput,
  "downloadedAt": DateTimeOperationFilterInput,
  "mimeType": StringOperationFilterInput,
  "subKeys": ListFilterInputTypeOfOutboundDeliveryKeyResponseFilterInput
}

OutboundDeliveryProductDetailsResponse

Fields
Field Name Description
id - Int!
name - String!
platform - String!
region - String!
language - String!
Example
{
  "id": 987,
  "name": "xyz789",
  "platform": "abc123",
  "region": "abc123",
  "language": "xyz789"
}

OutboundDeliveryProductDetailsResponseFilterInput

Example
{
  "and": [
    OutboundDeliveryProductDetailsResponseFilterInput
  ],
  "or": [
    OutboundDeliveryProductDetailsResponseFilterInput
  ],
  "id": IntOperationFilterInput,
  "name": StringOperationFilterInput,
  "platform": StringOperationFilterInput,
  "region": StringOperationFilterInput,
  "language": StringOperationFilterInput
}

OutboundDeliveryProductResponse

Fields
Field Name Description
details - OutboundDeliveryProductDetailsResponse! Details of a product
keys - [OutboundDeliveryKeyResponse!]! Array of keys
deliveryIdentifier - String!
partnerProductId - String
Example
{
  "details": OutboundDeliveryProductDetailsResponse,
  "keys": [OutboundDeliveryKeyResponse],
  "deliveryIdentifier": "abc123",
  "partnerProductId": "abc123"
}

OutboundDeliveryProductResponseFilterInput

Example
{
  "and": [OutboundDeliveryProductResponseFilterInput],
  "or": [OutboundDeliveryProductResponseFilterInput],
  "deliveryIdentifier": StringOperationFilterInput,
  "partnerProductId": StringOperationFilterInput,
  "details": OutboundDeliveryProductDetailsResponseFilterInput,
  "keys": ListFilterInputTypeOfOutboundDeliveryKeyResponseFilterInput
}

OutboundDeliveryResponse

Description

Keys from Outbound Delivery in the Ready for download, Partially downloaded or Completed statuses

Fields
Field Name Description
products - [OutboundDeliveryProductResponse!]! Array of products
orderId - UUID! Id of an order to which delivery is assigned
legacyOrderId - String Id of an order to which delivery is assigned - from legacy platform. Only applies to orders which are migrated
archives - [OutboundDeliveryArchiveFileResponse!]! An array of URLs to archives with .zip files contains keys. Only available for External partner type. Otherwise it will return an empty array
status - OutboundDeliveryStatusResponse! Indicates the status of the delivery
Example
{
  "products": [OutboundDeliveryProductResponse],
  "orderId": "e21de451-d7e2-4f28-8925-2c1c3809a42b",
  "legacyOrderId": "abc123",
  "archives": [OutboundDeliveryArchiveFileResponse],
  "status": OutboundDeliveryStatusResponse
}

OutboundDeliveryStatusResponse

Description

Describes the status of the delivery as follows:

ready error description
false null Order was created, but delivery is not ready yet
false not null Order wasn't created, and an error occured. Check the error and create an order again
true null Order was created successfully, delivery is in the 'Ready for download' status
Fields
Field Name Description
ready - Boolean! Indicates if delivery is ready for download
error - String Describes an error that occured
Example
{"ready": true, "error": "xyz789"}

OutboundDeliveryStatusResponseFilterInput

Example
{
  "and": [OutboundDeliveryStatusResponseFilterInput],
  "or": [OutboundDeliveryStatusResponseFilterInput],
  "ready": BooleanOperationFilterInput,
  "error": StringOperationFilterInput
}

PartnerResponse

Fields
Field Name Description
id - UUID! Partner ID
available - Decimal! Credit Line + Balance
used - Decimal! Already used funds
partnerType - String! External or Internal
stockLimit - Int!
Example
{
  "id": "e21de451-d7e2-4f28-8925-2c1c3809a42b",
  "available": Decimal,
  "used": Decimal,
  "partnerType": "xyz789",
  "stockLimit": 123
}

ProductResponse

Fields
Field Name Description
language - String! Language shortcodes
lastUpdateDateTime - DateTime! Last product (metadata like name, language, region / price / stock) update.

This datetime property could be used in the following way: let's assume your's API is refreshing the products list from the API every 10 minutes after the first initial seed. If 02.05.2022 12:00 was the last refetch, then in the next refresh (at 12:10) you can add a filter to query like "give me all products which have a lastUpdateDateTime greater than 02.05.2022 12:00". In the result, you will get only products that were updated in this short period of time (from 12:00 - 12:10) instead of querying all products list
quantity - QuantityResponse Product's available quantity
bulkPrices - [BulkPriceResponse!]! Prices for a product are based on the quantity which you want to order
productPartnerId - String This field is deprecated. Please use ProductPartnerIds instead.
bundleItems - [ProductSubBundleResponse!]! This field is deprecated. Will be removed in future.
isBundle - Boolean! This field is deprecated. Will be removed in future.
id - Int!
name - String!
platform - String!
region - String!
currency - String!
isDisabled - Boolean!
lastUpdatedPriceDateTime - DateTime!
lastIncreasedStockDateTime - DateTime!
productPartnerIds - [String!]!
languages - [String!]!
regions - [String!]!
excludedLanguages - [String!]!
excludedRegions - [String!]!
Example
{
  "language": "xyz789",
  "lastUpdateDateTime": "2007-12-03T10:15:30Z",
  "quantity": QuantityResponse,
  "bulkPrices": [BulkPriceResponse],
  "productPartnerId": "xyz789",
  "bundleItems": [ProductSubBundleResponse],
  "isBundle": true,
  "id": 987,
  "name": "xyz789",
  "platform": "xyz789",
  "region": "abc123",
  "currency": "xyz789",
  "isDisabled": true,
  "lastUpdatedPriceDateTime": "2007-12-03T10:15:30Z",
  "lastIncreasedStockDateTime": "2007-12-03T10:15:30Z",
  "productPartnerIds": ["xyz789"],
  "languages": ["abc123"],
  "regions": ["abc123"],
  "excludedLanguages": ["xyz789"],
  "excludedRegions": ["abc123"]
}

ProductResponseFilterInput

Example
{
  "and": [ProductResponseFilterInput],
  "or": [ProductResponseFilterInput],
  "id": IntOperationFilterInput,
  "name": StringOperationFilterInput,
  "platform": StringOperationFilterInput,
  "language": StringOperationFilterInput,
  "region": StringOperationFilterInput,
  "quantity": QuantityResponseFilterInput,
  "currency": StringOperationFilterInput,
  "isBundle": BooleanOperationFilterInput,
  "isDisabled": BooleanOperationFilterInput,
  "lastUpdateDateTime": DateTimeOperationFilterInput,
  "bundleItems": ListFilterInputTypeOfProductSubBundleResponseFilterInput,
  "productPartnerId": StringOperationFilterInput,
  "productPartnerIds": ListStringOperationFilterInput,
  "bulkPrices": ListFilterInputTypeOfBulkPriceResponseFilterInput,
  "languages": ListStringOperationFilterInput,
  "regions": ListStringOperationFilterInput,
  "excludedLanguages": ListStringOperationFilterInput,
  "excludedRegions": ListStringOperationFilterInput
}

ProductResponseSortInput

Fields
Input Field Description
id - SortEnumType
name - SortEnumType
platform - SortEnumType
language - SortEnumType
region - SortEnumType
quantity - QuantityResponseSortInput
currency - SortEnumType
isBundle - SortEnumType
isDisabled - SortEnumType
lastUpdateDateTime - SortEnumType
productPartnerId - SortEnumType
Example
{
  "id": "ASC",
  "name": "ASC",
  "platform": "ASC",
  "language": "ASC",
  "region": "ASC",
  "quantity": QuantityResponseSortInput,
  "currency": "ASC",
  "isBundle": "ASC",
  "isDisabled": "ASC",
  "lastUpdateDateTime": "ASC",
  "productPartnerId": "ASC"
}

ProductSubBundleResponse

Fields
Field Name Description
id - Int!
name - String!
platform - String!
language - String!
region - String!
isSubBundle - Boolean!
Example
{
  "id": 987,
  "name": "abc123",
  "platform": "abc123",
  "language": "abc123",
  "region": "xyz789",
  "isSubBundle": false
}

ProductSubBundleResponseFilterInput

Example
{
  "and": [ProductSubBundleResponseFilterInput],
  "or": [ProductSubBundleResponseFilterInput],
  "id": IntOperationFilterInput,
  "name": StringOperationFilterInput,
  "platform": StringOperationFilterInput,
  "language": StringOperationFilterInput,
  "region": StringOperationFilterInput,
  "isSubBundle": BooleanOperationFilterInput
}

ProductsCollectionSegment

Description

A segment of a collection

Fields
Field Name Description
pageInfo - CollectionSegmentInfo! Information to aid in pagination
items - [ProductResponse] A flattened list of the items
totalCount - Int!
Example
{
  "pageInfo": CollectionSegmentInfo,
  "items": [ProductResponse],
  "totalCount": 987
}

QuantityResponse

Fields
Field Name Description
text - Int!
image - Int!
all - Int!
Example
{"text": 987, "image": 987, "all": 987}

QuantityResponseFilterInput

Example
{
  "and": [QuantityResponseFilterInput],
  "or": [QuantityResponseFilterInput],
  "text": IntOperationFilterInput,
  "image": IntOperationFilterInput,
  "all": IntOperationFilterInput
}

QuantityResponseSortInput

Fields
Input Field Description
text - SortEnumType
image - SortEnumType
all - SortEnumType
Example
{"text": "ASC", "image": "ASC", "all": "ASC"}

SortEnumType

Values
Enum Value Description

ASC

DESC

Example
"ASC"

String

Description

The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text

Example
"xyz789"

StringOperationFilterInput

Fields
Input Field Description
and - [StringOperationFilterInput!]
or - [StringOperationFilterInput!]
eq - String
neq - String
contains - String
ncontains - String
in - [String]
nin - [String]
startsWith - String
nstartsWith - String
endsWith - String
nendsWith - String
Example
{
  "and": [StringOperationFilterInput],
  "or": [StringOperationFilterInput],
  "eq": "xyz789",
  "neq": "xyz789",
  "contains": "xyz789",
  "ncontains": "abc123",
  "in": ["abc123"],
  "nin": ["xyz789"],
  "startsWith": "abc123",
  "nstartsWith": "xyz789",
  "endsWith": "xyz789",
  "nendsWith": "xyz789"
}

UUID

Example
"e21de451-d7e2-4f28-8925-2c1c3809a42b"

UuidOperationFilterInput

Fields
Input Field Description
eq - UUID
neq - UUID
in - [UUID]
nin - [UUID]
gt - UUID
ngt - UUID
gte - UUID
ngte - UUID
lt - UUID
nlt - UUID
lte - UUID
nlte - UUID
Example
{
  "eq": "e21de451-d7e2-4f28-8925-2c1c3809a42b",
  "neq": "e21de451-d7e2-4f28-8925-2c1c3809a42b",
  "in": [
    "e21de451-d7e2-4f28-8925-2c1c3809a42b"
  ],
  "nin": [
    "e21de451-d7e2-4f28-8925-2c1c3809a42b"
  ],
  "gt": "e21de451-d7e2-4f28-8925-2c1c3809a42b",
  "ngt": "e21de451-d7e2-4f28-8925-2c1c3809a42b",
  "gte": "e21de451-d7e2-4f28-8925-2c1c3809a42b",
  "ngte": "e21de451-d7e2-4f28-8925-2c1c3809a42b",
  "lt": "e21de451-d7e2-4f28-8925-2c1c3809a42b",
  "nlt": "e21de451-d7e2-4f28-8925-2c1c3809a42b",
  "lte": "e21de451-d7e2-4f28-8925-2c1c3809a42b",
  "nlte": "e21de451-d7e2-4f28-8925-2c1c3809a42b"
}