Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
This doc provides an overview of our GraphQL API which is designed specifically with data integration in mind.
Overview of available query and field naming concepts representing how the data is provided.
Returns resource identified by the unique inedntifier
product(sku: "simple_product") {…} - sku(Sku) for product
attribute(code: "attribute_code") {...} - code(AttributeCode) for the attribute
*Stream (paginable)
Streams allow fetching the collection of resources.
Streams are designed specifically for integrations - once you create a new resource or edit existing ones, a resource is automatically transferred to the end of the stream - a given resource at a given moment is available in the stream only once.
The stream gives you the power of importing resources in time without worrying about dealing with nitty-gritty details like edition date etc.
As an example, we do have a product stream with the following SKUs [1, 2, 3 {endCursor}]. Once product 2 gets updated the stream will look like the following [1, 3 {endCursorFromInitialState}, 2]. Once you'd add product 4 again the stream would look like [1, 3 {endCursorFromInitialState}, 2, 4]. Thanks to using this powerful design of the cursor approach and our providing method you are sure you don't miss a resource once fetching continuously unlike it's risky on classic paginal collections.
productStream(first: 1, after: “cursor”) {…}
*List (paginable)
Lists allow fetching the collection(list) of the resources.
The list should always be fetched and updated entirely at once. The list represents finite resources not growing in time.
languageList(first: 1, after: "cursor") {…}
Product.attributeList
Usually available from other resources levels i.e. bindings of the variable product
VariableProduct.bindings
Every API resource is presented in the current state at the moment of fetching.
All paginable collections are based on the standard. According to it every Edge of the graph next to the information of the resource(node) contains a cursor that allows fetching the next resource from the collection.
product created
product property updated
attribute value
product added or removed from a category
template assignment
status changed
a variant has been added or removed
grouped product has been added or removed
product added to a segment
variable product variant added to a segment
grouping product grouped product added to a segment
product related in product relation attribute added to a segment
attribute created
attribute property updated
name
metadata
option added, modified, or removed from an attribute
unit attribute unit
price attribute currency
textarea attribute richEdit property
category created
category property updated
name
attribute value
category tree created
category tree property updated
name
category tree structure
multimedia created
multimedia property updated
name
folder assignment
Here's how you can set child product quantity via API.
mutation {
productGroupingSetChildQuantity(
input: { sku: "SKU_GR_PRODUCT", childSku: "SKU_test2", quantity: 2 }
) {
__typename
}
}mutation {
productAddAttributeValueTranslationsGallery(
input: {
sku: "1"
attributeCode: "gallery"
translations: [
{ language: "pl_PL", value: ["1.jpg", "2.jpg", "3.jpg"] }
]
}
) {
__typename
}
}This is how you can create variable product via API.
mutation {
productCreateVariable(
input: {
sku: "SKU_VAR_PRODUCT"
templateCode: "Tshirts"
categoryCodes: "DELL"
}
) {
__typename
}
}mutation {
productSetTemplate(input: { sku: "SKU78", template: "template" }) {
__typename
}
}This is how you can remove variant product from variable one via API
mutation {
productVariableRemoveVariant(input: { sku: "SKU_VAR_PRODUCT", variantSku: "SKU_test2" }
) {
__typename
}
}mutation {
multimediaDelete(input: { path: "multimedia.jpg" }) {
__typename
}
}query {
productStream (first:10, after:"") {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
... on VariableProduct {
sku
bindings {
code
__typename
}
variantList {
edges {
node {
sku
}
}
}
}
}
}
}
}This is how you can change the name of single multimedia via API.
mutation {
multimediaSetName(
input: {
path: "multimedia.jpg"
name: "multimedia_2.jpg"
}
) {
__typename
}
}Example query on how to get values of custom fields options
fragment Option on Option {
code
name(languages: ["en_US"]) {
value
language
}
customFields {
__typename
customField {
code
}
translations(languages: ["en_US"]) {
language
... on ImageCustomFieldValueTranslation {
imageCustomFieldValue: value {
path
}
}
... on TextCustomFieldValueTranslation {
textCustomFieldValue: value
}
... on TextareaCustomFieldValueTranslation {
textareaCustomFieldValue: value
}
... on TextareaRTECustomFieldValueTranslation {
textareaRTECustomFieldValue: value
}
}
}
}Here's how to add variant to variable product via API.
That's how you add child product to grouping one.
This is how you can query GraphQL API on product attributes by SKU
This is how you remove child product from grouping one via API.
By default, the API key grants you access to queries, meaning you can only read data. If mutations(write) access is required you need to specify write access on key creation.
A regular API key provides you with access to the entire product catalog. It is also possible to limit that by assigning a segment while creating the key. If assigned the consumer will only have access to the products available in the specific segment. This also means that, if write access is granted, you'll be able only to modify the data of products available within the segment.
The only exception from that is when the product is created in batch request with further mutations - though possibly not yet part of the segment since you are the creator of it you can modify its data within this request.
Segment recalculation is an asynchronous process, therefore, sending mutations in separate requests(create and then update) can fail on update - access can not yet be granted.
The best approach for keys assigned to the segment is to create and update the product in batch mutation.
Value translation is set individually in every language.
Value translation is the same in every language.
Represents the behavior of language translation of Attribute values.
Determines the behavior of ProductRelationAttribute value.
Values:
Do not modify related products.
Set backward relations to the modified product only in its newly related products. Already related products remain unmodified.
Set backward relations to the modified product in all its related products.
query {
templateList {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
code
attributeList {
edges {
node {
scope
code
name {
value
language
}
}
}
}
}
}
}
}query {
languageList {
edges {
node
}
}
}mutation {
productVariableAddVariant(input: { sku: "SKU_VAR_PRODUCT", variantSku: "SKU_test2" }) {
__typename
}
}mutation {
productGroupingAddChild(
input: { sku: "SKU_GR_PRODUCT", childSku: "SKU_test2", quantity: 1 }
) {
__typename
}
}mutation {
productAddAttributeValueTranslationsMultiSelect(
input: {
sku: "product_2" # SKU of a product we want to set attribute options in
attributeCode: "labels" # attribute code
translations: [
{ value: ["test1", "test2"], language: "en_GB" } # options to set in a specific language
]
}
) {
__typename
}
}query product {
product(sku: "SKU72") {
sku
attributeList {
edges {
node {
attribute {
code
scope
name {
value
language
}
}
}
}
}
}
}mutation {
productGroupingRemoveChild(input: { sku: "SKU_GR_PRODUCT", childSku: "SKU_test2" }
) {
__typename
}
}mutation {
categoryCreate(
input:{
code: "category_name"
name: {
language:"pl_PL"
value:"nazwa_kategorii"
}
}
) {
__typename
}
}mutation {
attributeSelectAddOption(
input: {
code: "Model"
option: {
code: "eve_1011"
name: { language: "pl_PL", value: "eve_1011" }
}
}
) {
__typename
}
}query {
categoryTree(code: "<code_of_the_category_tree>") {
code
categoryTreeLeafList {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
category {
code
}
parentCategory {
code
}
}
}
}
}
}API mutations are designed to be very small and atomic on purpose - thanks to that design, you don't have to prefetch data to send it back to the server and worry only about the actual change you want to perform.
On the other hand, occasionally your intention is to create or change resources with data that a single mutation does not handle. GraphQL comes in handy here - thanks to its design you can batch mutations(and queries) which means that multiple operations can be performed in one, single request - this not only makes it easier to make updates but also speeds up operations.
mutation {
create: productCreateSimple(input: {sku: "new_product", templateCode: "template"}) {
__typename
}
assignDescription: productAddAttributeValueTranslationsTextarea(
input: {
sku: "new_product"
attributeCode: "description"
translations: [{ value: "Long description", language: "en_GB" }]
}
) {
__typename
}
assignShortDescription: productAddAttributeValueTranslationsTextarea(
input: {
sku: "new_product"
attributeCode: "short_description"
translations: [{ value: "Short description", language: "en_GB" }]
}
) {
__typename
}
}query productRelation {
product(sku: "001") {
sku
createdAt
editedAt
attributeList {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
attribute {
code
}
translations {
... on ProductRelationAttributeValueTranslation {
language
value {
sku
}
}
}
}
}
}
}
}
This is how you can set alternative value to a single multimedia via API.
mutation {
multimediaSetAlt(
input: {
path: "multimedia.jpg"
alt: { language: "en_GB", value: "Alternative value" }
}
) {
__typename
}
}This is how you can create multimedia via API.
This will allow you to get list of first 100 product no matter if they're simple or variable.
folderPath parameter is optional, if not included multimedia will be uploaded to the main folder.
mutation {
multimediaCreate(
input: { name: "file_name.extension", folderPath: "folder_path" }
) {
__typename
}
}mutation {
create: productCreateSimple(input: {sku: "new_product", templateCode: "template"}) {
__typename
}
assignDescription: productAddAttributeValueTranslationsTextarea(
input: {
sku: "new_product"
attributeCode: "description"
translations: [{ value: "Długi opis", language: "pl_PL" }]
}
) {
__typename
}
assignShortDescription: productAddAttributeValueTranslationsTextarea(
input: {
sku: "new_product"
attributeCode: "short_description"
translations: [{ value: "Krótki opis", language: "pl_PL" }]
}
) {
__typename
}
assignText: productAddAttributeValueTranslationsText(
input: {
sku: "new_product"
attributeCode: "text"
translations: [{ value: "wartość", language: "pl_PL" }]
}
) {
__typename
}
}query groupingProduct {
productStream(first: 100) {
...ProductConnection
edges {
node {
... on GroupingProduct {
...Product
childrenList {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
quantity
product {
...SimpleProduct
...VariableProduct
}
}
}
}
}
template {
code
}
}
}
}
}
fragment SimpleProduct on SimpleProduct {
...Product
attributeList {
...AttributeValueConnection
}
}
fragment VariableProduct on VariableProduct {
...Product
attributeList {
...AttributeValueConnection
}
bindings {
...Attribute
optionList(first: 10, after: "") {
edges {
node {
code
customFields {
customField {
code
}
}
name(languages: ["en_US"]) {
value
language
}
}
}
}
}
variantList {
...ProductConnection
}
}
fragment AttributeValueConnection on AttributeValueConnection {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
attribute {
...Attribute
}
translations {
language
}
}
}
}
fragment Attribute on Attribute {
code
name(languages: ["en_US"]) {
value
language
}
scope
}
fragment Product on Product {
__typename
sku
createdAt
editedAt
}
fragment ProductConnection on ProductConnection {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
...Product
}
}
}$client = new \GuzzleHttp\Client(); // Guzzle version 6
$resp = $client->post(
$url,
[
'multipart' => [
[
'name' => 'upload',
'contents' => fopen(__DIR__ . '/test.png', 'r'),
],
[
'name' => 'query',
'contents' => '
mutation {
multimediaCreate(input: {name: "new.png", folderPath: null}) {__typename}
}
',
],
],
'headers' => [
'X-API-KEY' => $apiKey,
],
],
);from urllib import response
import requests
url = "https://marcin.ergonode.app/api/graphql/"
data = {
'upload': open('C:\\temp\\temp.png', 'rb'),
'query': (None, 'mutation{multimediaCreate(input:{name:"<choose_a_name>",folderPath: "<some_folder_path>"}){__typename}}')
}
headers = {
'X-API-KEY': '<some_api_key>',
}
response = requests.post(url, files=data, headers=headers)
print (response.text)
The list of recent and upcoming breaking changes
At Ergonode we strive to make your integration process as fluent as possible but from time to time we discover a flaw in the design of the schema or introduce a really cool new feature that is impossible to be provided in a fully-compatible non-breaking way.
In such a situation, we will always aim to not break your integration with the new release and provide you with a transition period of approximately 3-months to adjust your consumer. Every such change shall be communicated in the following list.
Breaking change scheduled for 04-2024
The entire GraphQL schema is available to fetch from the API itself. It's called .
As with every other query, introspection of the Ergonode API requires .
The simplest way to discover the GraphQL API is to use supporting HTTP clients like . On one hand, they do support scoping through documentation schema, and on the other provide autocomplete functionality which makes writing queries really straightforward.
Alternatively, in order to obtain the full types definition download the schema
or just query the API:
Types reference:
e78b3ed7-db49-4e81-9f29-ecc2985072f4 Currency is not supported.79876042-fe47-4035-ba10-ce07706433fd Template with given TemplateCode does not exist.
4b5f8783-1273-4ddb-8e05-e0ecf685d924 Unit with given UnitName does not exist.
9ff3fdc4-b214-49db-8718-39c315e33d45 Too short input value.
d94b19cc-114f-4f44-9cc4-4138e80a87b9 Too long input value.
c1051bb4-d103-4f74-8988-acbcafc7fdc3 The input value cannot be blank.
ea4e51d1-3342-48bd-87f1-9e672cd90cad The numeric value is too low.
1a9da513-2640-4f84-9b6a-4d99dcddc628 Value is not a valid date format.
d6d40d78-bf28-4773-8c0d-4411be1e8fa6 Translation language is not active.
756b1212-697c-468d-a9ad-50dd783bb169 Too many elements in a collection.
491b2811-7e4d-49f7-adbe-a42622031f1c Language has to be passed when setting a value for local scope Attribute.
786446ad-32b8-40a9-9bb5-e5445196ffd5 Value is not unique for the given attribute.
a16b966e-e884-4075-9de7-4720cad1022a Value does not match Regex.
aa82dbed-9098-4d4b-af22-3a0dde5d47bb Multimedia extension is not acceptable.
e47e5afd-c7ef-4a5d-bb3e-0076269951d4 Value contains banned words.
25db6569-d15d-41a2-a32d-61b67308d285 Attribute code has to represent a unique attribute.
4a9205b6-8f3c-4e85-960d-9835aaa1e9ab Attribute with given AttributeCode does not exist.
62adb4f9-217d-4d9e-b117-0a30b4b33f3b Attribute with given AttributeCode exists already.
25f77355-4443-4850-b8cd-7d3ec7ef5a7a Attribute already has Option with given OptionCode.
bc1a2fc6-4910-4e47-a3aa-1fdbcd2d364b Attribute does not contain Option with given OptionCode.
50084892-e811-4358-820e-f005917f769b Attribute with given AttributeCode is not valid according to context.
72e93c59-575a-4062-914b-5e143f2810f0 Attribute metadata limit exceeded.
ea5e8ce4-8ab7-442d-87ca-db500cad7be2 Attribute metadata payload keys duplicates.
7cc10e50-3d49-43c6-a847-3b8363f9ed83 Invalid attribute scope.
6d2e1555-7d1b-47a7-8d2d-47ea2e33bfe6 Category with given CategoryCode does not exist.
ef49c353-7fec-4f5a-beb7-47d392606a15 Category with given CategoryCode exists already.
b2943d95-24e6-4b0c-9f09-f86ea635d8cb Categories do not have Attribute enabled in configuration.
c18fa865-07a5-4fcb-a6af-8c44b5c643bd Attribute is used in Category as value.
d62579bf-6fde-4396-9f12-bc71d6394746 Multimedia exists already within MultimediaPath.
eabcf146-a4e7-425c-999f-9e04a6c8a988 Multimedia with given MultimediaPath does not exist.
9670b62d-5db8-4de8-81bd-7d6119625df0 Multimedia file should be an image.
df8637af-d466-48c6-a59d-e7126250a654 Multimedia file uploaded is too large.
dd4722d6-9371-42a2-9c35-87b2a03009e7 Multimedia file uploaded extension is not supported.
9465e18e-be76-46e8-ab9f-1db22426ab06 Multimedia file is corrupted and its extension does not match MIME type.
ef0dd12b-f075-4bbb-8535-4f299452cf30 Multimedia with the given extension in MultimediaName does not match the Multimedia file MIME type.
d64f83eb-32ae-48f6-a46d-ffa4fcba6ee3 MultimediaFolder with given MultimediaFolderPath does not exist.
54c25a35-59da-4215-aa61-997bb80d303f MultimediaFolder with given MultimediaFolderPath exists already.
bb87ccb2-0433-40d9-976d-f4f388299840 Product relation cannot reference self.
a339fa44-2bf8-48df-84a5-ad83a4ba74be Product type is invalid.
01b70d39-8e58-4406-a1c8-f63d84f29af6 Product with given Sku does not exist.
c63cc7a9-1298-4520-a5ad-6c0a9c478a00 Product with given Sku exists already.
7e270f10-73b7-4b82-991f-80bda5bc70a3 VariableProduct needs to have bindings in order to add variants.
d3209a3d-23a5-4c53-bf6b-4b72cd42d376 Product cannot be added as a VariableProduct variant as do not have the required attributes.
18b2cb49-313d-4251-96bd-e031351a95b8 VariableProduct has variants already and its binding attributes cannot be changed.
3b96fc99-792e-4698-aee1-a3d95ad97b05 Product attribute value is a bond to VariableProduct and cannot be changed.
0786e099-07ce-4b4e-bf92-d04442c130e5 Another Product is bonded to VariableProduct with the same set of value of binding attributes.
bfff5187-1ac6-45f8-8516-7d59ab030c09 Cannot remove attribute value as it's a binding attribute.
72b36b5b-5c2f-44c6-85f3-ecadc04ea1b3 Product is already a Variant.
6406a966-10e9-4096-abfd-bf6764909fd2 Product does not have given child.
Represents true or false.
Represents a lowercased, alphanumerical, and _ textual Category identifier of 1-128 chars in length.
Represents a textual CategoryTree identifier of 1-128 chars in length.
Represents a currency code in ISO 4217 format. Example: PLN.
Represents a lowercased, alphanumerical, and _ textual CustomField identifier in a single OptionAttribute context of 1-128 chars in length.
Represents a date formatted in one of the: yyyy-MM-dd, yy-MM-dd, dd.MM.yy, dd.MM.yyyy, MM/dd/yy, MM/dd/yyyy, MMMM dd, yyyy, dd MMMM yyyy, dd MMM yyyy
Represents an ISO 8601 date. Example: 2021-04-09T17:25:26+00:00
Represents signed double-precision fractional values as specified by IEEE 754.
Represents non-fractional signed whole numeric values.
Represents a 5 chars LCID language code. Example: pl_PL.
Represents an alphanumeric and _ Metadatum key of 1-128 chars in length.
Represents an alphanumeric, \, - and _ textual MultimediaFolder name of 1-255 chars in length.
Represents a textual combination of MultimediaFolderName scalars joined with / MultimediaFolder identifier pointing to its exact location.
Represents a not containing / textual Multimedia name of 1-128 chars in length.
Represents a textual combination of MultimediaFolderPath, and MultimediaName joined with / Multimedia identifier pointing to its exact location.
Represents a textual Section identifier of 3-32 chars in length.
Represents a textual Product identifier of 1-255 chars in length.
Represents a textual ProductStatus identifier of 1-128 chars in length.
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.
Represents a textual Template identifier of 3-32 chars in length.
Represents a textual Unit name of 1-255 chars in length.
This is how you can get a list of products with ALL attribute types, if you do not need all of them, simply remove any fragment that is not needed
{
__schema {
queryType {
name
}
mutationType {
name
}
subscriptionType {
name
}
types {
...FullType
}
directives {
name
description
locations
args {
...InputValue
}
}
}
}
fragment FullType on __Type {
kind
name
description
fields(includeDeprecated: true) {
name
description
args {
...InputValue
}
type {
...TypeRef
}
isDeprecated
deprecationReason
}
inputFields {
...InputValue
}
interfaces {
...TypeRef
}
enumValues(includeDeprecated: true) {
name
description
isDeprecated
deprecationReason
}
possibleTypes {
...TypeRef
}
}
fragment InputValue on __InputValue {
name
description
type {
...TypeRef
}
defaultValue
}
fragment TypeRef on __Type {
kind
name
ofType {
kind
name
ofType {
kind
name
ofType {
kind
name
ofType
{
kind
name
ofType {
kind
name
ofType {
kind
name
ofType {
kind
name
}
}
}
}
}
}
}
}query {
productStream {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
sku
attributeList {
edges {
node {
...AttributeValue
}
}
}
}
}
}
}
fragment AttributeValue on AttributeValue {
__typename
attribute {
code
name {
language
value
}
}
... on TextAttributeValue {
textAttributeValueTranslations: translations {
value
language
}
}
... on TextareaAttributeValue {
textareaAttributeValueTranslations: translations {
value
language
}
}
... on DateAttributeValue {
dateAttributeValueTranslations: translations {
value
language
}
}
... on UnitAttributeValue {
unitAttribute: attribute {
# unit might be useful in the value context
unit {
name
symbol
}
}
unitAttributeValueTranslations: translations {
value
language
}
}
... on PriceAttributeValue {
priceAttribute: attribute {
# currency might be useful in the price context
currency
}
priceAttributeValueTranslations: translations {
value
language
}
}
... on NumberAttributeValue {
numericAttributeValueTranslations: translations {
value
language
}
}
... on ProductRelationAttributeValue {
productRelationAttributeValueTranslations: translations {
value {
sku
}
language
}
}
... on FileAttributeValue {
fileAttributeValueTranslations: translations {
value {
...Multimedia
}
language
}
}
... on GalleryAttributeValue {
galleryAttributeValueTranslations: translations {
value {
...Multimedia
}
language
}
}
... on ImageAttributeValue {
imageAttributeValueTranslations: translations {
value {
...Multimedia
}
language
}
}
... on MultiSelectAttributeValue {
multiSelectAttributeValueTranslations: translations {
translatedValue {
...OptionTranslatedValue
}
language
}
}
... on SelectAttributeValue {
selectAttributeValueTranslations: translations {
translatedValue {
...OptionTranslatedValue
}
language
}
}
}
fragment Multimedia on Multimedia {
path
name
extension
mime
size
alt {
value
language
}
title {
value
language
}
url
}
fragment OptionTranslatedValue on OptionTranslatedValue {
code
name
customFields {
... on ImageCustomFieldTranslatedValue {
customField {
code
}
image: value {
path
name
extension
mime
size
alt {
language
value
}
title {
language
value
}
url
folder {
name
path
}
}
}
... on TextCustomFieldTranslatedValue {
customField {
code
}
value
}
... on TextareaCustomFieldTranslatedValue {
customField {
code
}
value
}
... on TextareaRTECustomFieldTranslatedValue {
customField {
code
}
value
}
}
}
MultiSelectAttribute.options is going to be removed
SelectAttribute.options is going to be removed
Breaking change scheduled for 09-2023
MultimediaCreateInput.folderName is going to be removed
Mutation.multimediaSetFolder is going to be removed
Breaking changes scheduled for 02-2023
AttributeValue.valueTranslations is going to be removed
Breaking changes scheduled for 12-2022
Attribute.label is going to be removed
Option.label is going to be removed
OptionInput.label is going to be removed
Mutation.attributeSetLabel is going to be removed
label field is going to be removed from Attribute create mutation input objects
AttributeCreateDateInput
AttributeCreateFileInput
Breaking changes scheduled for 10-2022
GroupingProduct.childList is going to be removed
Template.name is going to be removed
Template.defaultLabel is going to be removed
Breaking changes scheduled for 08-2022
TranslatedAttributeValue.inherited is going to be removed
Query.languageTreeLeafList is going to be removed
Breaking change scheduled for 07-2022
Attribute.hint is going to be removed
Attribute.placeholder is going to be removed
Mutation.attributeSetHint is going to be removed
Mutation.attributeSetPlaceholder is going to be removed
placeholder and hint fields are going to be removed from Attribute create mutation input objects
AttributeCreateDateInput
AttributeCreateFileInput
Breaking change scheduled for 05-2022
Option.attribute is going to be removed
Breaking change scheduled for 05-2022
AttributeValue.value is going to be removed
AttributeValue.code is going to be removed
Note: the following examples are based on the API Stream integration concept - if you are not yet familiar with it check an overview of the Query types to understand the approach.
example response:
Since we received information that the next page exists data.categoryStream.pageInfo.hasNextPage=true we should request the next resource. The query is very similar to the previous one except we are passing the appropriate cursor with the request:
example response:
we do know that there is no next page, therefore, there is nothing to fetch at the very moment. We can retry the next request(for the retrieved cursor) with i.e., an increased interval not to waste resources.
Alternatively in some systems, we will want only to fetch the identifier of the resource using some sort of queueing system in order to distribute the consumption processes. In that case, we can just fetch our resource ID (code in the case of categories) and the PageInfo object:
and fetch it in the separate consuming process via a single resource query:
The rest of the process looks the same for the paginating over the stream.
AttributeCreateGalleryInput
AttributeCreateImageInput
AttributeCreateMultiSelectInput
AttributeCreateNumericInput
AttributeCreatePriceInput
AttributeCreateProductRelationInput
AttributeCreateSelectInput
AttributeCreateTextareaInput
AttributeCreateTextInput
AttributeCreateUnitInput
AttributeCreateGalleryInput
AttributeCreateImageInput
AttributeCreateMultiSelectInput
AttributeCreateNumericInput
AttributeCreatePriceInput
AttributeCreateProductRelationInput
AttributeCreateSelectInput
AttributeCreateTextareaInput
AttributeCreateTextInput
AttributeCreateUnitInput
This is how you can create a simple product via API.
mutation {
productCreateGrouping(
input: { sku: "SKU_GR_PRODUCT", templateCode: "Tshirts"}
) {
__typename
}
}You can also assign a category to the newly created product in the same query.
mutation {
productCreateGrouping(
input: { sku: "SKU_GR_PRODUCT", templateCode: "Tshirts", categoryCodes: "DELL"}
) {
__typename
}
}This query will return all multimedia in PIM and extra info about them.
query multimedia {
multimediaStream {
pageInfo {
hasNextPage
endCursor
}
edges {
__typename
node {
name
path
alt {
value
language
}
extension
mime
size
folder {
name
}
url
}
}
}
}{
categoryStream(first: 1) {
pageInfo {
endCursor
hasNextPage
}
edges {
node {
code
name {
value
language
}
}
cursor
}
}
}{
"data": {
"categoryStream": {
"pageInfo": {
"endCursor": "YXJyYXljb25uZWN0aW9uOjQ5",
"hasNextPage": true
},
"edges": [
{
"node": {
"code": "category_name_clothing",
"name": [
{
"value": "Clothing",
"language": "en_GB"
},
{
"value": "Odzież",
"language": "pl_PL"
}
]
},
"cursor": "YXJyYXljb25uZWN0aW9uOjQ5"
}
]
}
}
}{
categoryStream(first: 1, after: "YXJyYXljb25uZWN0aW9uOjQ5") {
...
}{
"data": {
"categoryStream": {
"pageInfo": {
"endCursor": "YXJyYXljb25uZWN0aW9uOjUw",
"hasNextPage": false
}
...
}
}
}{
categoryStream(first: 1) {
pageInfo {
endCursor
hasNextPage
}
edges {
node {
code
}
}
}
}{
category(code: "category_name_clothing") {
name {
value
language
}
code
}
}Queries in GraphQL are created by opening curly brackets.
If we have more than one query, we need to name them and specify that this is the query, we do it as follows.
An example of a simple query that will return the value of "pageInfo" from the "productStream" branch, and from there provide the value of "endCursor". Additionally, from the "productStream" branch, it will return the value "totalCount". Think of it as a tree, a branch, and a leaf. To get information from a leaf, you must first reach it by going through all the steps one by one. Each subsequent indentation must be called using the next curly bracket. Until it's closed, we are constantly working within the same space.
For better understanding, I've stretched the code below to reflect these indents.
The query can also use arguments. The list of available parameters can be found in the API schema(documentation). Here, we will use the "first" argument.
Without using this argument, the system would return all the data it finds, here we want to limit ourselves to the first 2 results.
It is also possible, to refer to the same place with several arguments, in this example we wanted to get the first 2 results and the then results after something.
However, the above query will not work without a slight modification. If to a given object we refer more than once, we must use aliases. Below I used two aliases: "firstTwo" and "dataAfter". Remember to use a colon after the alias.
Note that in the query (the previous one, not the one about available cursors) we call the same "totalCount" data 2 times unnecessarily. We can simplify this by using fragments.
The following query will return us exactly the same data as the previous one.
Of course, if I'm querying only one thing, there's no point in throwing it into a fragment.
However, if there were more objects or the query was more complicated, fragments allow us to optimize it.
In GraphQL it is also possible to use variables, variables are usually passed on by programming languages, but for the sake of completeness, I will show you how to use them.
Before the first curly bracket, I open a round bracket and define ( with the $ sign ) a variable named x in it, then I make a colon and a space and define the type of the variable, in this example, it will be Int (Integer). I could be done here, but I still would like to define a default value, so I put an equals sign followed by "2".
Then in the place where the variable should be passed I simply call it bt $x:
Queries can also use directives. In other words, conditional statements.
I'm going to add a second variable to my query named condition and set its type to Boolean, with the default value true.
Then after pageInfo I placed @include(if: $condition) directive.
Since I have previously set the default value of the $condition variable to true, the condition will be met and the data will show up, but if I change it to false, the data will not.
This is how you can create a simple product via API.
You can also assign a category to the newly created product in the same query.
{
}query queryName {
}query queryName {
productStream {
pageInfo {
endCursor
}
totalCount
}
}mutation {
productCreateSimple(
input: { sku: "SKU_test2", templateCode: "Tshirts"}
) {
__typename
}
}mutation {
productCreateSimple(
input: { sku: "SKU_test2", templateCode: "Tshirts", categoryCodes: "DELL" }
) {
__typename
}
}mutation {
productAddAttributeValueTranslationsFile(input: {
sku:"SKU77"
attributeCode:"file_test"
translations:{
language:"pl_PL"
value:"bike-1.jpg"
}
})
{__typename}
}query queryName {
productStream (first: 2) {
pageInfo {
endCursor
}
totalCount
}
}query queryName {
productStream(first: 2) {
pageInfo {
endCursor
}
totalCount
}
productStream(after: "YXJyYXljb25uZWN0aW9uOjM0Mw==") {
pageInfo {
endCursor
}
totalCount
}
}query queryName {
firstTwo: productStream(first: 2) {
pageInfo {
endCursor
}
totalCount
}
dataAfter: productStream(after: "YXJyYXljb25uZWN0aW9uOjM0Mw==") {
pageInfo {
endCursor
}
totalCount
}
}query x {
productStream {
pageInfo {
endCursor
}
}
}query queryName {
firstTwo: productStream(first: 2) {
pageInfo {
endCursor
}
...fragmentName
}
dataAfter: productStream(after: "YXJyYXljb25uZWN0aW9uOjM0Mw==") {
pageInfo {
endCursor
}
...fragmentName
}
}
fragment fragmentName on ProductConnection {
totalCount
}query queryName ($x: Int = 2) {
firstTwo: productStream(first: $x) {
pageInfo {
endCursor
}
...fragmentName
}
dataAfter: productStream(after: "YXJyYXljb25uZWN0aW9uOjM0Mw==") {
pageInfo {
endCursor
}
...fragmentName
}
}
fragment fragmentName on ProductConnection {
totalCount
}query queryName ($x: Int = 2, $condition: Boolean = true) {
firstTwo: productStream(first: $x) {
pageInfo @include(if: $condition) {
endCursor
}
...fragmentName
}
dataAfter: productStream(after: "YXJyYXljb25uZWN0aW9uOjM0Mw==") {
pageInfo {
endCursor
}
...fragmentName
}
}
fragment fragmentName on ProductConnection {
totalCount
}query queryName ($x: Int = 2, $condition: Boolean = true) {
firstTwo: productStream(first: $x) {
pageInfo @include(if: $condition) {
endCursor
}
...fragmentName
}
dataAfter: productStream(after: "YXJyYXljb25uZWN0aW9uOjM0Mw==") {
pageInfo {
endCursor
}
...fragmentName
}
}
fragment fragmentName on ProductConnection {
totalCount
}query catWithAttVal {
category(code: "buty") {
code
attributeList {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
...AttributeValue
}
}
}
}
}
fragment AttributeValue on AttributeValue {
__typename
attribute {
code
name {
language
value
}
}
... on TextAttributeValue {
textAttributeValueTranslations: translations {
value
language
}
}
... on TextareaAttributeValue {
textareaAttributeValueTranslations: translations {
value
language
}
}
... on DateAttributeValue {
dateAttributeValueTranslations: translations {
value
language
}
}
... on UnitAttributeValue {
unitAttribute: attribute {
# unit might be useful in the value context
unit {
name
symbol
}
}
unitAttributeValueTranslations: translations {
value
language
}
}
... on PriceAttributeValue {
priceAttribute: attribute {
# currency might be useful in the price context
currency
}
priceAttributeValueTranslations: translations {
value
language
}
}
... on NumberAttributeValue {
numericAttributeValueTranslations: translations {
value
language
}
}
... on ProductRelationAttributeValue {
productRelationAttributeValueTranslations: translations {
value {
sku
}
language
}
}
... on FileAttributeValue {
fileAttributeValueTranslations: translations {
value {
...Multimedia
}
language
}
}
... on GalleryAttributeValue {
galleryAttributeValueTranslations: translations {
value {
...Multimedia
}
language
}
}
... on ImageAttributeValue {
imageAttributeValueTranslations: translations {
value {
...Multimedia
}
language
}
}
... on MultiSelectAttributeValue {
multiSelectAttributeValueTranslations: translations {
translatedValue {
...OptionTranslatedValue
}
language
}
}
... on SelectAttributeValue {
selectAttributeValueTranslations: translations {
translatedValue {
...OptionTranslatedValue
}
language
}
}
}
fragment Multimedia on Multimedia {
path
name
extension
mime
size
alt {
value
language
}
title {
value
language
}
url
}
fragment OptionTranslatedValue on OptionTranslatedValue {
code
name
}This is an example of how you can get values of specific attributes in specific languages of a specific product using pagination.
Please keep in mind that this is just an example and more data can be pulled. How to deal with other attribute types can be seen in the fragment AttributeValue here.
query getAttValues {
product(sku: "0123456789") {
# SKU of a single product to get data from
sku
createdAt
editedAt
template {
code
}
attributeList(
first: 10 # nuber of entries to return in a single page (max response time is 60s)
{
"data": {
"product": {
"sku": "0123456789",
"createdAt": "2024-04-04T11:44:54+00:00",
"editedAt": "2024-04-04T13:33:46+00:00",
"template": {
"code": "GraphQL"
},
"attributeList": {
"pageInfo": {
"hasNextPage": false,
"endCursor": "YXJyYXljb25uZWN0aW9uOjQ="
},
"edges": [
{
"node": {
"SelectAttributeValue": [
{
"language": "en_GB",
"translatedValue": {
"code": "blk",
"name": "Black"
}
},
{
"language": "pl_PL",
"translatedValue": {
"code": "blk",
"name": "Czarny"
}
}
]
}
},
{
"node": {
"attribute": {
"name": [
{
"language": "en_GB",
"value": "Short description"
},
{
"language": "pl_PL",
"value": "Krótki opis"
}
]
},
"TextareaAttributeValue": [
{
"language": "en_GB",
"value": "Short countertop description"
},
{
"language": "pl_PL",
"value": "Krótki opis blatu"
}
]
}
},
{
"node": {
"priceAttribute": {
"currency": "EUR"
},
"priceAttributeValue": [
{
"language": "en_GB",
"value": 10.1
},
{
"language": "pl_PL",
"value": 9.99
}
]
}
},
{
"node": {
"GalleryAttributeValue": [
{
"language": "en_GB",
"value": [
{
"path": "semir-beige-kapinos-stopnica-narozna-33x33-g1.webp",
"name": "semir-beige-kapinos-stopnica-narozna-33x33-g1.webp",
"extension": "webp",
"mime": "image\/webp",
"sizeInBytes": 46116,
"alt": [
{
"language": "en_GB",
"value": null
},
{
"language": "pl_PL",
"value": null
}
],
"title": [
{
"language": "en_GB",
"value": null
},
{
"language": "pl_PL",
"value": null
}
]
},
{
"path": "[email protected]",
"name": "[email protected]",
"extension": "webp",
"mime": "image\/webp",
"sizeInBytes": 158884,
"alt": [
{
"language": "en_GB",
"value": null
},
{
"language": "pl_PL",
"value": null
}
],
"title": [
{
"language": "en_GB",
"value": null
},
{
"language": "pl_PL",
"value": null
}
]
}
]
},
{
"language": "pl_PL",
"value": [
{
"path": "semir-beige-kapinos-stopnica-narozna-33x33-g1.webp",
"name": "semir-beige-kapinos-stopnica-narozna-33x33-g1.webp",
"extension": "webp",
"mime": "image\/webp",
"sizeInBytes": 46116,
"alt": [
{
"language": "en_GB",
"value": null
},
{
"language": "pl_PL",
"value": null
}
],
"title": [
{
"language": "en_GB",
"value": null
},
{
"language": "pl_PL",
"value": null
}
]
},
{
"path": "[email protected]",
"name": "[email protected]",
"extension": "webp",
"mime": "image\/webp",
"sizeInBytes": 158884,
"alt": [
{
"language": "en_GB",
"value": null
},
{
"language": "pl_PL",
"value": null
}
],
"title": [
{
"language": "en_GB",
"value": null
},
{
"language": "pl_PL",
"value": null
}
]
}
]
},
{
"language": "de_DE",
"value": [
{
"path": "semir-beige-kapinos-stopnica-narozna-33x33-g1.webp",
"name": "semir-beige-kapinos-stopnica-narozna-33x33-g1.webp",
"extension": "webp",
"mime": "image\/webp",
"sizeInBytes": 46116,
"alt": [
{
"language": "en_GB",
"value": null
},
{
"language": "pl_PL",
"value": null
}
],
"title": [
{
"language": "en_GB",
"value": null
},
{
"language": "pl_PL",
"value": null
}
]
},
{
"path": "[email protected]",
"name": "[email protected]",
"extension": "webp",
"mime": "image\/webp",
"sizeInBytes": 158884,
"alt": [
{
"language": "en_GB",
"value": null
},
{
"language": "pl_PL",
"value": null
}
],
"title": [
{
"language": "en_GB",
"value": null
},
{
"language": "pl_PL",
"value": null
}
]
}
]
}
]
}
}
]
},
"__typename": "SimpleProduct"
}
}
}The changelog is a list of recent changes to GraphQL API schema.
Query.productVariantParent added
Product.status added
Mutation.productSetStatus added
Query.productByUniqueAttribute added
ProductAddAttributeValueTranslationsProductRelationInput.twoWayRelation added
Mutation.multimediaFolderDelete added
Query.attributeOptionList added
MultiSelectAttribute.options removed
SelectAttribute.options removed
OptionAttribute.optionList argument codes added
Template.sectionList added
Query.section added
OptionAttribute interface added
SelectAttribute implements OptionAttribute
MultiSelectAttribute implements OptionAttribute
Query.multimediaFolder added
MultimediaFolderCreateInput.createFolderPath added
MultimediaCreateInput.folderName removed
MultiSelectAttribute.optionList added
MultiSelectAttribute.options becomes deprecated. Use MultiSelectAttribute.optionList instead
SelectAttribute.optionList added
Query.multimedia added
MultimediaFolder.path added
Mutation.multimediaMove added
Mutation.multimediaFolderCreate added
MultiSelectAttributeValueTranslation.translatedValue added
SelectAttributeValueTranslation.translatedValue added
AttributeValue.valueTranslations removed
TextareaAttributeValueTranslation.rawValue added
Attribute.metadata added
Mutation.attributeAddMetadata added
Mutation.attributeDeleteMetadata added
Mutation.multimediaSetFolder added
Query.categoryAttributeList added
Mutation.categoryAttributeAddAttribute added
Mutation.categoryAttributeRemoveAttribute added
Mutation.attributeSetLabel removed
OptionInput.label removed
Option.label removed
Category.attributeList added
Mutation.categoryDeleteAttributeValueTranslations added
Mutation.categoryAddAttributeValueTranslationsText added
MultimediaCreateInput.folderName added
AttributeValue.translations added - represents the translation value type per Attribute type. MultiSelectAttributeValue and SelectAttributeValue instead of simple OptionCode provides entire Option
AttributeValue.valueTranslations becomes deprecated
TranslatedAttributeValue.inherited removed
Query.languageTreeLeafList removed
Template.attributeList added
Query.templateList added
Attribute.name added - represents the same value as Attribute.label field
Attribute.hint removed
Attribute.placeholder removed
Mutation.attributeSetHint removed
Multimedia.title added
Mutation.multimediaSetTitle added
ProductGroupingAddChildInput.quantity added
Mutation.productGroupingSetChildQuantity added
GroupingProduct.childrenList added
AttributeValue.code removed
AttributeValue.value removed
Option.attribute removed
TranslatedAttributeValue.inherited becomes deprecated
Query.languageTree becomes deprecated
Query.languageList added
Attribute.hint becomes deprecated
Attribute.placeholder becomes deprecated
Mutation.attributeSetHint becomes deprecated
Option.attribute becomes deprecated
AttributeValue.valueTranslations added
AttributeValue.value becomes deprecated
Mutation schema has been added to the API. For a full list of mutations available use an introspection
every existing API key has preserved its read access but did not receive write access. In order to obtain write access create a new key with it
Query.sectionList added
Query.template added
OptionAttribute.customFields added
Option.customFields added
Mutation.attributeOptionAddCustomFieldImage added
Mutation.attributeOptionAddCustomFieldText added
Mutation.attributeOptionAddCustomFieldTextarea added
Mutation.attributeOptionAddCustomFieldTextareaRTE added
Mutation.attributeOptionAddOptionCustomFieldValueTranslationsImage added
Mutation.attributeOptionAddOptionCustomFieldValueTranslationsText added
Mutation.attributeOptionAddOptionCustomFieldValueTranslationsTextarea added
Mutation.attributeOptionAddOptionCustomFieldValueTranslationsTextareaRTE added
Mutation.attributeOptionDeleteCustomField added
Mutation.attributeOptionDeleteOptionCustomFieldValueTranslations added
Mutation.multimediaSetFolder removed
SelectAttribute.options becomes deprecated. Use SelectAttribute.optionList instead
Mutation.attributeMultiSelectAddOption added
Mutation.attributeMultiSelectDeleteOption added
Mutation.attributeMultiSelectSetOptionName added
Mutation.attributeSelectAddOption added
Mutation.attributeSelectDeleteOption added
Mutation.attributeSelectSetOptionName added
Mutation.multimediaReplace added
MultimediaCreateInput.folderPath added
MultimediaCreateInput.folderName becomes deprecated. If passed together with folderPath this argument becomes disregarded
Mutation.multimediaSetFolder becomes deprecated
Attribute.label removed
label removed from Attribute create mutation input objects
AttributeCreateDateInput
AttributeCreateFileInput
AttributeCreateGalleryInput
AttributeCreateImageInput
AttributeCreateMultiSelectInput
AttributeCreateNumericInput
AttributeCreatePriceInput
AttributeCreateProductRelationInput
AttributeCreateSelectInput
AttributeCreateTextareaInput
AttributeCreateTextInput
AttributeCreateUnitInput
Mutation.categoryAddAttributeValueTranslationsTextarea added
Mutation.categoryAddAttributeValueTranslationsNumeric added
Mutation.categoryAddAttributeValueTranslationsPrice added
Mutation.categoryAddAttributeValueTranslationsUnit added
Mutation.categoryAddAttributeValueTranslationsImage added
Mutation.categoryAddAttributeValueTranslationsGallery added
Mutation.categoryAddAttributeValueTranslationsFile added
Mutation.categoryAddAttributeValueTranslationsProductRelation added
Mutation.categoryAddAttributeValueTranslationsDate added
Mutation.categoryAddAttributeValueTranslationsSelect added
Mutation.categoryAddAttributeValueTranslationsMultiSelect added
GroupingProduct.childList removed
Template.name removed
Template.defaultLabel removed
AttributeValue implementations per Attribute type added
Attribute.label becomes deprecated
Option.name added - represents the same value as Option.label field
Option.label becomes deprecated
OptionInput.name added
if passed together with label field it takes precedence
Mutation.attributeSetName added
Mutation.attributeSetLabel becomes deprecated
name field added in Attribute create mutation input objects. It replaces label field. If passed together with it name takes precedence
AttributeCreateDateInput
AttributeCreateFileInput
AttributeCreateGalleryInput
AttributeCreateImageInput
AttributeCreateMultiSelectInput
AttributeCreateNumericInput
AttributeCreatePriceInput
AttributeCreateProductRelationInput
AttributeCreateSelectInput
AttributeCreateTextareaInput
AttributeCreateTextInput
AttributeCreateUnitInput
Mutation.attributeSetPlaceholder removed
placeholder and hint fields removed from Attribute create mutation input objects
AttributeCreateDateInput
AttributeCreateFileInput
AttributeCreateGalleryInput
AttributeCreateImageInput
AttributeCreateMultiSelectInput
AttributeCreateNumericInput
AttributeCreatePriceInput
AttributeCreateProductRelationInput
AttributeCreateSelectInput
AttributeCreateTextareaInput
AttributeCreateTextInput
AttributeCreateUnitInput
GroupingProduct.childList becomes deprecated
Template.name becomes deprecated
Template.defaultLabel becomes deprecated
language field becomes nullable for(valid for global attributes only)
DateValueTranslationInput
FileValueTranslationInput
GalleryValueTranslationInput
ImageValueTranslationInput
MultiSelectValueTranslationInput
NumericValueTranslationInput
PriceValueTranslationInput
ProductRelationValueTranslationInput
SelectValueTranslationInput
TextareaValueTranslationInput
TextValueTranslationInput
UnitValueTranslationInput
Mutation.attributeSetPlaceholder becomes deprecated
Interfaces represent a parent for Objects providing definition of common fields.
An attribute represents a type of value that can be assigned to a product.
Fields:
code
Readable id of Attribute.
Implemented by:
Represents a value defining a specific attribute.
Fields:
Implemented by:
Represents a translated attribute value for language.
Fields:
Implemented by:
A custom field represents a type of value that can be assigned to an attribute option.
Fields:
Implemented by:
Represents a value defining a specific CustomField in specific language only.
Fields:
Implemented by:
Represents a value defining a specific CustomField.
Fields:
Implemented by:
Represents a translated custom field value for language.
Fields:
Implemented by:
An attribute with a predefined set of values(options).
Implements:
Fields:
Implemented by:
Fields:
Implemented by:
Status of Product.
createdAt
Creation date.
editedAt
Last edition date.
name (languages: [Language!])
Translatable name allowing to set different values in every active language.
scope
Scope of Attribute determining its values behavior.
metadata
Metadata allows describing the Attribute in an enhanced, custom way.
translations (languages: [Language!])
A value translations.
attribute
An Attribute describing the type of value.
language
A language of a translation.
code
Readable id of CustomField.
customField
A CustomField describing the type of value.
customField
A CustomField describing the type of value.
translations (languages: [Language!])
A value translations.
language
A language of a translation.
A list of options of an Attribute.
first argument cannot be lesser than 0 and higher than 200. The default value is 50.
customFields
Configured attribute custom fields.
sku
sku
A list of categories Product belongs to.
first argument cannot be lesser than 0 and its default value is 50.
template
Template of Product.
attributeList (after: String, first: Int, codes: [AttributeCode!])
A list of Attribute values.
first argument cannot be lesser than 0 and its default value is 50.
status
This is how you can get data after some cursor via API.
query groupingProduct {
productStream(after: "YXJyYXljb25uZWN0aW9uOjM2MTE=") {
...ProductConnection
edges {
node {
... on GroupingProduct {
...Product
childrenList {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
quantity
product {
...SimpleProduct
...VariableProduct
}
}
}
}
}
template {
code
}
}
}
}
}
fragment SimpleProduct on SimpleProduct {
...Product
attributeList {
...AttributeValueConnection
}
}
fragment VariableProduct on VariableProduct {
...Product
attributeList {
...AttributeValueConnection
}
bindings {
...Attribute
optionList(first: 10) {
edges {
node {
code
name(languages: ["en_US"]) {
value
language
}
}
}
}
}
variantList {
...ProductConnection
}
}
fragment AttributeValueConnection on AttributeValueConnection {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
attribute {
...Attribute
}
translations {
language
}
}
}
}
fragment Attribute on Attribute {
code
name(languages: ["en_US"]) {
value
language
}
scope
}
fragment Product on Product {
__typename
sku
createdAt
editedAt
}
fragment ProductConnection on ProductConnection {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
...Product
}
}
}query groupingProduct {
productStream(after: "YXJyYXljb25uZWN0aW9uOjM2MTE=", first: 100) {
... ProductConnection
edges {
node {
... on GroupingProduct {
... Product
childrenList {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
quantity
product {
... SimpleProduct
... VariableProduct
}
}
}
}
}
template {
code
}
}
}
}
}
fragment SimpleProduct on SimpleProduct {
... Product
attributeList {
... AttributeValueConnection
}
}
fragment VariableProduct on VariableProduct {
... Product
attributeList {
... AttributeValueConnection
}
bindings {
... Attribute
options {
code
name {
value
language
}
}
}
variantList {
... ProductConnection
}
}
fragment AttributeValueConnection on AttributeValueConnection {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
attribute {
... Attribute
}
translations {
language
}
}
}
}
fragment Attribute on Attribute {
code
name {
value
language
}
scope
}
fragment Product on Product {
__typename
sku
createdAt
editedAt
}
fragment ProductConnection on ProductConnection {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
... Product
}
}
}Queries allow retrieving data from the server.
Finds an Attribute.
Returns: Attribute
Arguments:
code
Provides a of deleted attribute codes.
Returns:
Arguments:
Provides a list of attribute options.
Returns:
Arguments:
Provides a of attributes.
Returns:
Arguments:
Finds a Category.
Returns:
Arguments:
Provides a list of attributes allowed to be used in a category.
Returns:
Arguments:
Provides a of deleted category codes.
Returns:
Arguments:
Provides a of categories.
Returns:
Arguments:
Finds a CategoryTree.
Returns:
Arguments:
Provides a of deleted category tree codes.
Returns:
Arguments:
Provides a of category trees.
Returns:
Arguments:
Provides a list of active languages.
Returns:
Arguments:
Finds a Multimedia.
Returns:
Arguments:
Finds a MultimediaFolder.
Returns:
Arguments:
Provides a list of multimedia folders.
Returns:
Arguments:
Provides a of multimedia.
Returns:
Arguments:
Finds a Product.
Returns:
Arguments:
Finds a Product by unique attribute value.
Returns:
Arguments:
Provides a of deleted product SKUs.
Returns:
Arguments:
Provides a of products.
Returns:
Arguments:
Finds a parent VariableProduct identified by variant Sku.
Returns:
Arguments:
Finds a Section.
Returns:
Arguments:
Provides a list of sections.
Returns:
Arguments:
Finds a Template.
Returns:
Arguments:
Provides a list of templates.
Returns:
Arguments:
The code of a searched Attribute.
after
Provides elements after the specified cursor.
first
Provides up to first n results. Value cannot be less than 0 and higher than 200.
The default value is 50.
code
The code of a searched Attribute.
filters
Filters for the query.
after
Provides elements after the specified cursor.
first
Provides up to first n results. Value cannot be less than 0 and higher than 200.
The default value is 50.
after
Provides elements after the specified cursor.
first
Provides up to first n results. Value cannot be less than 0 and higher than 200.
The default value is 50.
code
The code of a searched Category.
after
Provides elements after the specified cursor.
first
Provides up to first n results. Value cannot be less than 0 and higher than 500.
The default value is 50.
after
Provides elements after the specified cursor.
first
Provides up to first n results. Value cannot be less than 0 and higher than 200.
The default value is 50.
after
Provides elements after the specified cursor.
first
Provides up to first n results. Value cannot be less than 0 and higher than 200.
The default value is 50.
code
The code of a searched CategoryTree.
after
Provides elements after the specified cursor.
first
Provides up to first n results. Value cannot be less than 0 and higher than 200.
The default value is 50.
after
Provides elements after the specified cursor.
first
Provides up to first n results. Value cannot be less than 0 and higher than 200.
The default value is 50.
after
Provides elements after the specified cursor.
first
Provides up to first n results. Value cannot be less than 0 and higher than 1000.
The default value is 50.
path
The path of a searched Multimedia.
path
The path of a searched MultimediaFolder.
after
Provides elements after the specified cursor.
first
Provides up to first n results. Value cannot be less than 0 and higher than 300.
The default value is 50.
after
Provides elements after the specified cursor.
first
Provides up to first n results. Value cannot be less than 0 and higher than 200.
The default value is 50.
sku
The sku of a searched Product.
attributeCode
The code of unique attribute Product is searched by.
value
The value of unique attribute Product is searched by.
after
Provides elements after the specified cursor.
first
Provides up to first n results. Value cannot be less than 0 and higher than 200.
The default value is 50.
after
Provides elements after the specified cursor.
first
Provides up to first n results. Value cannot be less than 0 and higher than 200.
The default value is 50.
variantSku
The Sku of variant to find a parent VariableProduct.
code
The code of a searched Section.
after
Provides elements after the specified cursor.
first
Provides up to first n results. Value cannot be less than 0 and higher than 100.
The default value is 50.
code
The code of a searched Template.
after
Provides elements after the specified cursor.
first
Provides up to first n results. Value cannot be less than 0 and higher than 100.
The default value is 50.
Mutations allow modifing data on the server.
Adds Attribute metadata.
Input fields:
input
Returns:
Creates DateAttribute
Input fields:
Returns:
Creates FileAttribute
Input fields:
Returns:
Creates GalleryAttribute
Input fields:
Returns:
Creates ImageAttribute
Input fields:
Returns:
Creates MultiSelectAttribute
Input fields:
Returns:
Creates NumericAttribute
Input fields:
Returns:
Creates PriceAttribute
Input fields:
Returns:
Creates ProductRelationAttribute
Input fields:
Returns:
Creates SelectAttribute
Input fields:
Returns:
Creates TextareaAttribute
Input fields:
Returns:
Creates TextAttribute
Input fields:
Returns:
Creates UnitAttribute
Input fields:
Returns:
Sets a DateAttribute format.
Input fields:
Returns:
Deletes Attribute.
Input fields:
Returns:
Deletes Attribute metadata.
Input fields:
Returns:
Adds a MultiSelectAttribute option.
Input fields:
Returns:
Deletes a MultiSelectAttribute option.
Input fields:
Returns:
Sets a MultiSelectAttribute option name.
Input fields:
Returns:
Sets a MultiSelectAttribute options.
Input fields:
Returns:
Adds a custom field to OptionAttribute.
Input fields:
Returns:
Adds a custom field to OptionAttribute.
Input fields:
Returns:
Adds a custom field to OptionAttribute.
Input fields:
Returns:
Adds a custom field to OptionAttribute.
Input fields:
Returns:
Adds custom field value translations to an Option.
Input fields:
Returns:
Adds custom field value translations to an Option.
Input fields:
Returns:
Adds custom field value translations to an Option.
Input fields:
Returns:
Adds custom field value translations to an Option.
Input fields:
Returns:
Deletes custom field from an OptionAttribute.
Input fields:
Returns:
Deletes custom field value translations from a Option.
Input fields:
Returns:
Sets a PriceAttribute currency.
Input fields:
Returns:
Adds a SelectAttribute option.
Input fields:
Returns:
Deletes a SelectAttribute option.
Input fields:
Returns:
Sets a SelectAttribute option name.
Input fields:
Returns:
Sets a SelectAttribute options.
Input fields:
Returns:
Sets Attribute name.
Input fields:
Returns:
Sets a TextareaAttribute richEdit.
Input fields:
Returns:
Sets an UnitAttribute unit.
Input fields:
Returns:
Adds a DateAttribute value translations to a category.
Input fields:
Returns:
Adds a FileAttribute value translations to a category.
Input fields:
Returns:
Adds a GalleryAttribute value translations to a category.
Input fields:
Returns:
Adds a ImageAttribute value translations to a category.
Input fields:
Returns:
Adds a MultiSelectAttribute value translations to a category.
Input fields:
Returns:
Adds a NumericAttribute value translations to a category.
Input fields:
Returns:
Adds a PriceAttribute value translations to a category.
Input fields:
Returns:
Adds a ProductRelationAttribute value translations to a category.
Input fields:
Returns:
Adds a SelectAttribute value translations to a category.
Input fields:
Returns:
Adds a TextareaAttribute value translations to a category.
Input fields:
Returns:
Adds a TextAttribute value translations to a category.
Input fields:
Returns:
Adds a UnitAttribute value translations to a category.
Input fields:
Returns:
Adds an Attribute as allowed to be used in Category.
Input fields:
Returns:
Removes an Attribute as allowed to be used in Category.
Input fields:
Returns:
Creates a Category.
Input fields:
Returns:
Deletes an attribute value translations from a Category.
Input fields:
Returns:
Deletes a Category.
Input fields:
Returns:
Sets a Category name.
Input fields:
Returns:
Creates a Multimedia.
Input fields:
Returns:
Deletes a Multimedia.
Input fields:
Returns:
Creates a MultimediaFolder.
Input fields:
Returns:
Deletes a MultimediaFolder.
Input fields:
Returns:
Moves a Multimedia to MultimediaFolder. Multimedia.path identifier is changed as a result.
Input fields:
Returns:
Replaces a Multimedia with given MultimediaPath. As a result new Multimedia is created, all relations to it are replaced with a new resource, and the existing one is deleted.
Input fields:
Returns:
Sets a Multimedia alt.
Input fields:
Returns:
Sets a Multimedia name.
Input fields:
Returns:
Sets a Multimedia title.
Input fields:
Returns:
Adds a DateAttribute value translations to a product.
Input fields:
Returns:
Adds a FileAttribute value translations to a product.
Input fields:
Returns:
Adds a GalleryAttribute value translations to a product.
Input fields:
Returns:
Adds a ImageAttribute value translations to a product.
Input fields:
Returns:
Adds a MultiSelectAttribute value translations to a product.
Input fields:
Returns:
Adds a NumericAttribute value translations to a product.
Input fields:
Returns:
Adds a PriceAttribute value translations to a product.
Input fields:
Returns:
Adds a ProductRelationAttribute value translations to a product.
Input fields:
Returns:
Adds a SelectAttribute value translations to a product.
Input fields:
Returns:
Adds a TextareaAttribute value translations to a product.
Input fields:
Returns:
Adds a TextAttribute value translations to a product.
Input fields:
Returns:
Adds a UnitAttribute value translations to a product.
Input fields:
Returns:
Adds a product to categories.
Input fields:
Returns:
Creates a GroupingProduct.
Input fields:
Returns:
Creates a SimpleProduct.
Input fields:
Returns:
Creates a VariableProduct.
Input fields:
Returns:
Deletes an attribute value translations from a Product.
Input fields:
Returns:
Deletes a product.
Input fields:
Returns:
Adds a child product to a GroupingProduct.
Input fields:
Returns:
Removes a child product from a GroupingProduct.
Input fields:
Returns:
Set a child product quantity of a GroupingProduct.
Input fields:
Returns:
Removes a product from categories.
Input fields:
Returns:
Sets a product status.
Input fields:
Returns:
Sets a product Template.
Input fields:
Returns:
Adds a variant product to a VariableProduct.
Input fields:
Returns:
Removes a variant product from a VariableProduct.
Input fields:
Returns:
Sets binding attributes to VariableProduct.
Input fields:
Returns:
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
Input objects represent a set of fields allowing describing mutation.
Input fields:
code
The code of Attribute the mutation to be performed on.
metadata
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Metadata to be set.
code
Code of Attribute.
scope
Scope of Attribute.
name
Name of Attribute.
format
Format of Attribute.
code
Code of Attribute.
scope
Scope of Attribute.
name
Name of Attribute.
code
Code of Attribute.
scope
Scope of Attribute.
name
Name of Attribute.
code
Code of Attribute.
scope
Scope of Attribute.
name
Name of Attribute.
code
Code of Attribute.
scope
Scope of Attribute.
name
Name of Attribute.
options
Options of Attribute.
code
Code of Attribute.
scope
Scope of Attribute.
name
Name of Attribute.
code
Code of Attribute.
scope
Scope of Attribute.
name
Name of Attribute.
currency
Currency of Attribute.
code
Code of Attribute.
scope
Scope of Attribute.
name
Name of Attribute.
code
Code of Attribute.
scope
Scope of Attribute.
name
Name of Attribute.
options
Options of Attribute.
code
Code of Attribute.
scope
Scope of Attribute.
name
Name of Attribute.
richEdit
Is rich edit enabled.
code
Code of Attribute.
scope
Scope of Attribute.
name
Name of Attribute.
code
Code of Attribute.
scope
Scope of Attribute.
name
Name of Attribute.
unitName
Unit name for Attribute.
code
The code of Attribute the mutation to be performed on.
format
Format of Attribute.
code
The code of Attribute the mutation to be performed on.
code
The code of Attribute the mutation to be performed on.
metadataKeys
Metadata keys to be deleted.
code
The code of Attribute the mutation to be performed on.
option
Option to be added.
code
The code of Attribute the mutation to be performed on.
optionCode
Option to be deleted.
code
The code of Attribute the mutation to be performed on.
optionCode
Option to be changed.
optionName
Option name to be set.
code
The code of Attribute the mutation to be performed on.
options
Options to be set.
code
The code of Attribute the mutation to be performed on.
customFieldCode
Code of the custom field to be configured.
code
The code of Attribute the mutation to be performed on.
customFieldCode
Code of the custom field to be configured.
code
The code of Attribute the mutation to be performed on.
customFieldCode
Code of the custom field to be configured.
code
The code of Attribute the mutation to be performed on.
customFieldCode
Code of the custom field to be configured.
code
The code of Attribute the mutation to be performed on.
optionCode
Option to be changed.
customFieldCode
Code of the custom field to be configured.
translations
Translations of the value to be added.
code
The code of Attribute the mutation to be performed on.
optionCode
Option to be changed.
customFieldCode
Code of the custom field to be configured.
translations
Translations of the value to be added.
code
The code of Attribute the mutation to be performed on.
optionCode
Option to be changed.
customFieldCode
Code of the custom field to be configured.
translations
Translations of the value to be added.
code
The code of Attribute the mutation to be performed on.
optionCode
Option to be changed.
customFieldCode
Code of the custom field to be configured.
translations
Translations of the value to be added.
code
The code of Attribute the mutation to be performed on.
customFieldCode
Code of the custom field to be deleted.
code
The code of Attribute the mutation to be performed on.
optionCode
Option to be changed.
customFieldCode
Code of the custom field changed.
languages
Languages the translations to be deleted in.
optionCodes
Option codes to be filtered by.
optionNames
Option names to be filtered by.
code
The code of Attribute the mutation to be performed on.
currency
Currency to be set.
code
The code of Attribute the mutation to be performed on.
option
Option to be added.
code
The code of Attribute the mutation to be performed on.
optionCode
Option to be deleted.
code
The code of Attribute the mutation to be performed on.
optionCode
Option to be changed.
optionName
Option name to be set.
code
The code of Attribute the mutation to be performed on.
options
Options to be set.
code
The code of Attribute the mutation to be performed on.
name
Name to be set.
code
The code of Attribute the mutation to be performed on.
richEdit
Is rich edit enabled.
code
The code of Attribute the mutation to be performed on.
unitName
Unit to be set.
categoryCode
The code of Category the mutation to be performed on.
attributeCode
The code of Attribute adding value to.
translations
Translations of the value to be added.
categoryCode
The code of Category the mutation to be performed on.
attributeCode
The code of Attribute adding value to.
translations
Translations of the value to be added.
categoryCode
The code of Category the mutation to be performed on.
attributeCode
The code of Attribute adding value to.
translations
Translations of the value to be added.
categoryCode
The code of Category the mutation to be performed on.
attributeCode
The code of Attribute adding value to.
translations
Translations of the value to be added.
categoryCode
The code of Category the mutation to be performed on.
attributeCode
The code of Attribute adding value to.
translations
Translations of the value to be added.
categoryCode
The code of Category the mutation to be performed on.
attributeCode
The code of Attribute adding value to.
translations
Translations of the value to be added.
categoryCode
The code of Category the mutation to be performed on.
attributeCode
The code of Attribute adding value to.
translations
Translations of the value to be added.
categoryCode
The code of Category the mutation to be performed on.
attributeCode
The code of Attribute adding value to.
translations
Translations of the value to be added.
categoryCode
The code of Category the mutation to be performed on.
attributeCode
The code of Attribute adding value to.
translations
Translations of the value to be added.
categoryCode
The code of Category the mutation to be performed on.
attributeCode
The code of Attribute adding value to.
translations
Translations of the value to be added.
categoryCode
The code of Category the mutation to be performed on.
attributeCode
The code of Attribute adding value to.
translations
Translations of the value to be added.
categoryCode
The code of Category the mutation to be performed on.
attributeCode
The code of Attribute adding value to.
translations
Translations of the value to be added.
attributeCode
The code of Attribute to be added.
attributeCode
The code of Attribute to be removed.
code
The code of Category.
name
The name of Category.
code
The code of Category the mutation to be performed on.
attributeCode
The code of Attribute deleting value from.
languages
Languages the translations to be deleted in.
code
The code of Category the mutation to be performed on.
code
The code of Category the mutation to be performed on.
name
Name to be set.
language
Language the translation to be added in. Allowed empty only in case of GLOBAL scope.
value
Translation value to be set.
language
Language the translation to be added in. Allowed empty only in case of GLOBAL scope.
value
Translation value to be set.
language
Language the translation to be added in. Allowed empty only in case of GLOBAL scope.
value
Translation value to be set.
language
Language the translation to be added in.
value
Translation value to be set.
language
Language the translation to be added in. Allowed empty only in case of GLOBAL scope.
value
Translation value to be set.
key
Key of the metadata value to be set on.
value
Value to be set.
name
The name of Multimedia.
folderPath
Folder Multimedia to be put in.
path
The path of Multimedia the mutation to be performed on.
name
The name of MultimediaFolder.
folderPath
Folder MultimediaFolder to be put in.
createFolderPath
Creates folderPath if does not exist. Defaults to false.
path
The path of MultimediaFolder the mutation to be performed on.
path
The path of Multimedia the mutation to be performed on.
folderPath
Folder Multimedia to be put in.
path
The path of Multimedia the mutation to be performed on.
path
The path of Multimedia the mutation to be performed on.
alt
Alt to be set.
path
The path of Multimedia the mutation to be performed on.
name
Name to be set.
path
The path of Multimedia the mutation to be performed on.
title
Title to be set.
language
Language the translation to be added in. Allowed empty only in case of GLOBAL scope.
value
Translation value to be set.
language
Language the translation to be added in. Allowed empty only in case of GLOBAL scope.
value
Translation value to be set.
code
Code of the Option to be used.
name
Name to be set.
language
Language the translation to be added in. Allowed empty only in case of GLOBAL scope.
value
Translation value to be set.
sku
The sku of Product the mutation to be performed on.
attributeCode
The code of Attribute adding value to.
translations
Translations of the value to be added.
sku
The sku of Product the mutation to be performed on.
attributeCode
The code of Attribute adding value to.
translations
Translations of the value to be added.
sku
The sku of Product the mutation to be performed on.
attributeCode
The code of Attribute adding value to.
translations
Translations of the value to be added.
sku
The sku of Product the mutation to be performed on.
attributeCode
The code of Attribute adding value to.
translations
Translations of the value to be added.
sku
The sku of Product the mutation to be performed on.
attributeCode
The code of Attribute adding value to.
translations
Translations of the value to be added.
sku
The sku of Product the mutation to be performed on.
attributeCode
The code of Attribute adding value to.
translations
Translations of the value to be added.
sku
The sku of Product the mutation to be performed on.
attributeCode
The code of Attribute adding value to.
translations
Translations of the value to be added.
sku
The sku of Product the mutation to be performed on.
attributeCode
The code of Attribute adding value to.
translations
Translations of the value to be added.
twoWayRelation
Determines behavior of the value. Defaults to None
sku
The sku of Product the mutation to be performed on.
attributeCode
The code of Attribute adding value to.
translations
Translations of the value to be added.
sku
The sku of Product the mutation to be performed on.
attributeCode
The code of Attribute adding value to.
translations
Translations of the value to be added.
sku
The sku of Product the mutation to be performed on.
attributeCode
The code of Attribute adding value to.
translations
Translations of the value to be added.
sku
The sku of Product the mutation to be performed on.
attributeCode
The code of Attribute adding value to.
translations
Translations of the value to be added.
sku
The sku of Product the mutation to be performed on.
categoryCodes
Categories to be added.
sku
Sku of Product.
templateCode
Template of Product.
categoryCode
Categories of Product.
sku
Sku of Product.
templateCode
Template of Product.
categoryCode
Categories of Product.
sku
Sku of Product.
templateCode
Template of Product.
categoryCode
Categories of Product.
sku
The sku of Product the mutation to be performed on.
attributeCode
The code of Attribute deleting value from.
languages
Languages the translations to be deleted in.
sku
The sku of Product the mutation to be performed on.
sku
The sku of Product the mutation to be performed on.
childSku
Child to be added.
quantity
Quantity the child to be added in.
sku
The sku of Product the mutation to be performed on.
childSku
Child to be removed.
sku
The sku of Product the mutation to be performed on.
childSku
Child quantity to be modified.
quantity
Quantity to be set.
language
Language the translation to be added in. Allowed empty only in case of GLOBAL scope.
value
Translation value to be set.
sku
The sku of Product the mutation to be performed on.
categoryCodes
Categories to be removed.
sku
The sku of Product the mutation to be performed on.
statusCode
Status to be set.
language
Language the status to be set in.
sku
The sku of Product the mutation to be performed on.
template
Template to be set.
sku
The sku of Product the mutation to be performed on.
variantSku
Variant to be added.
sku
The sku of Product the mutation to be performed on.
variantSku
Variant to be removed.
sku
The sku of Product the mutation to be performed on.
bindingCodes
Binding attributes to be set.
language
Language the translation to be added in. Allowed empty only in case of GLOBAL scope.
value
Translation value to be set.
language
Language the translation to be added in.
value
Translation value to be set.
language
Language the translation to be added in.
value
Translation value to be set.
language
Language the translation to be added in. Allowed empty only in case of GLOBAL scope.
value
Translation value to be set.
Accepts Attribute Variables in format {{#attribute_code}}.
language
Language the translation to be added in.
value
Translation value to be set.
language
Language the translation to be added in. Allowed empty only in case of GLOBAL scope.
value
Translation value to be set.
language
Language the translation to be filtered in.
value
Translation value to be filtered by.
language
Language the translation to be added in.
value
Translation value to be set.
language
Language the translation to be added in. Allowed empty only in case of GLOBAL scope.
value
Translation value to be set.
Objects represent the resources you can access.
A payload for a mutation.
Fields:
attribute
Changed Attribute.
The connection for
Fields:
An edge in a connection.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
The connection for
Fields:
An edge in a connection.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
The connection for
Fields:
An edge in a connection.
Fields:
Represents a category.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
The connection for
Fields:
An edge in a connection.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
The connection for
Fields:
An edge in a connection.
Fields:
A payload for a mutation.
Fields:
Represent a tree of categories.
Fields:
The connection for
Fields:
The connection for
Fields:
An edge in a connection.
Fields:
An edge in a connection.
Fields:
Represents a leaf (node) of a category tree.
Fields:
The connection for
Fields:
An edge in a connection.
Fields:
Represents a date.
Implements:
Fields:
An attribute value.
Implements:
Fields:
Translation of an attribute value.
Implements:
Fields:
Represents a collection of multimedia files of any type.
Implements:
An attribute value.
Implements:
Fields:
Translation of an attribute value.
Implements:
Fields:
Represents a collection of images.
Implements:
An attribute value.
Implements:
Fields:
Translation of an attribute value.
Implements:
Fields:
Represents a product grouped in with a specific quantity for the set.
Fields:
The connection for
Fields:
An edge in a connection.
Fields:
A product grouping other products. Can represent products like the ones with common features or promotional packages.
Implements:
Fields:
Represents an image.
Implements:
An attribute value.
Implements:
Fields:
Translation of an attribute value.
Implements:
Fields:
Represents an image.
Implements:
Represents an image translated value.
Implements:
Fields:
A custom field value.
Implements:
Fields:
Translation of a custom field value.
Implements:
Fields:
The connection for
Fields:
An edge in a connection.
Fields:
Represents a metadatum of an attribute.
Fields:
Represents a multimedia file. The multimedia can be a text file, image, document file, etc.
Fields:
The connection for
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
An edge in a connection.
Fields:
Represents a filesystem-like folder allowing to organize multimedia. Does not correspond to the physical file path or its URL.
Fields:
The connection for
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
An edge in a connection.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
Represents a set of options allowing multiple choices.
Implements:
An attribute value.
Implements:
Fields:
Translation of an attribute value.
Implements:
Fields:
Represents a number.
Implements:
An attribute value.
Implements:
Fields:
Translation of an attribute value.
Implements:
Fields:
Represents an option of a select and multi-select attribute.
Fields:
The connection for
Fields:
An edge in a connection.
Fields:
Represents an option of a select and multi-select attribute.
Fields:
Simple representation of an Option of select and multi-select attributes with the name in a specific language only.
Fields:
Information about pagination in a connection.
Fields:
Represents a positive price of a specific currency.
Implements:
Fields:
An attribute value.
Implements:
Fields:
Translation of an attribute value.
Implements:
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
The connection for
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
The connection for
Fields:
A payload for a mutation.
Fields:
An edge in a connection.
Fields:
A payload for a mutation.
Fields:
An edge in a connection.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
Represents a relation to the collection of products.
Implements:
An attribute value.
Implements:
Fields:
Translation of an attribute value.
Implements:
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A product status.
Fields:
A product status translation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
Represents a set of common attributes - technical data, SEO-related parameters, etc.
Fields:
The connection for
Fields:
An edge in a connection.
Fields:
Represents a set of options allowing single choice.
Implements:
An attribute value.
Implements:
Fields:
Translation of an attribute value.
Implements:
Fields:
A simple product.
Implements:
Represents a set of attributes specific to a market segment.
Fields:
The connection for
Fields:
An edge in a connection.
Fields:
Represents a text.
Implements:
Fields:
An attribute value.
Implements:
Fields:
Translation of an attribute value.
Implements:
Fields:
Represents a text.
Implements:
Represents a text translated value.
Implements:
Fields:
A custom field value.
Implements:
Fields:
Translation of a custom field value.
Implements:
Fields:
Represents a text with RTE enabled.
Implements:
Represents a text with RTE translated value.
Implements:
Fields:
A custom field value.
Implements:
Fields:
Translation of a custom field value.
Implements:
Fields:
Represents a short text of up to 255 chars.
Implements:
An attribute value.
Implements:
Fields:
Translation of an attribute value.
Implements:
Fields:
Represents a short text of up to 255 chars.
Implements:
Represents a text translated value.
Implements:
Fields:
A custom field value.
Implements:
Fields:
Translation of a custom field value.
Implements:
Fields:
Represents a translated value.
Fields:
Represents a unit. Can be used to define specific scalar types like a Meter.
Fields:
Represents a numeric scalar unit.
Implements:
Fields:
An attribute value.
Implements:
Fields:
Translation of an attribute value.
Implements:
Fields:
A product representing multiple variants i.e. products of different sizes or colors.
Fields:
File size in bytes.
alt (languages: )
Represents the alternate text for an image if it cannot be displayed.
title (languages: )
Represents the title tooltip value.
url
URL to download binary multimedia file.
folder
Folder where multimedia is stored.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
node
Node of the Edge.
cursor
The Edge cursor.
attribute
Created Attribute.
attribute
Created Attribute.
attribute
Created Attribute.
attribute
Created Attribute.
attribute
Created Attribute.
attribute
Created Attribute.
attribute
Created Attribute.
attribute
Created Attribute.
attribute
Created Attribute.
attribute
Created Attribute.
attribute
Created Attribute.
attribute
Created Attribute.
attribute
Changed Attribute.
attribute
Changed Attribute.
code
Deleted AttributeCode.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
node
Node of the Edge.
cursor
The Edge cursor.
attribute
Changed Attribute.
attribute
Changed Attribute.
attribute
Changed Attribute.
attribute
Changed Attribute.
attribute
Changed Attribute.
attribute
Changed Attribute.
attribute
Changed Attribute.
attribute
Changed Attribute.
attribute
Changed Attribute.
attribute
Changed Attribute.
attribute
Changed Attribute.
attribute
Changed Attribute.
attribute
Changed Attribute.
attribute
Changed Attribute.
attribute
Changed Attribute.
attribute
Changed Attribute.
attribute
Changed Attribute.
attribute
Changed Attribute.
attribute
Changed Attribute.
attribute
Changed Attribute.
attribute
Changed Attribute.
attribute
Changed Attribute.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
node
Node of the Edge.
cursor
The Edge cursor.
code
Readable id of Category.
name (languages: [Language!])
Translatable name allowing to set different values in every active language.
attributeList (after: String, first: Int, codes: [AttributeCode!])
A list of attribute values.
first argument cannot be lesser than 0 and its default value is 50.
category
Changed Category.
category
Changed Category.
category
Changed Category.
category
Changed Category.
category
Changed Category.
category
Changed Category.
category
Changed Category.
category
Changed Category.
category
Changed Category.
category
Changed Category.
category
Changed Category.
category
Changed Category.
categoryAttributeList
Updated list of attributes.
categoryAttributeList
Updated list of attributes.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
node
Node of the Edge.
cursor
The Edge cursor.
category
Created Category.
category
Changed Category.
code
Deleted CategoryCode.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
node
Node of the Edge.
cursor
The Edge cursor.
category
Changed Category.
code
Readable id of CategoryTree.
name (languages: [Language!])
Translatable name allowing to set different values in every active language.
A list of categories belonging to the CategoryTree.
first argument cannot be lesser than 0, higher than 1000 and its default value is 50.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
node
Node of the Edge.
cursor
The Edge cursor.
node
Node of the Edge.
cursor
The Edge cursor.
category
A leaf of the tree.
parentCategory
Parent leaf of to leaf.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
node
Node of the Edge.
cursor
The Edge cursor.
format
Represented date format.
attribute
An Attribute describing the value.
translations (languages: [Language!])
A value translations.
value
A translation value of an Attribute.
attribute
An Attribute describing the value.
translations (languages: [Language!])
A value translations.
value
A translation value of an Attribute.
attribute
An Attribute describing the value.
translations (languages: [Language!])
A value translations.
value
A translation value of an Attribute.
quantity
Quantity of a grouped Product.
product
Grouped Product.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
node
Node of the Edge.
cursor
The Edge cursor.
A list of children.
first argument cannot be lesser than 0 and its default value is 50.
attribute
An Attribute describing the value.
translations (languages: [Language!])
A value translations.
value
A translation value of an Attribute.
customField
A CustomField describing the value.
value
A value in the context language.
customField
A CustomField describing the value.
translations (languages: [Language!])
A value translations.
value
A translation value of a CustomField.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
node
Node of the Edge.
cursor
The Edge cursor.
key
A key of metadatum.
value
Metadata value.
path
Readable id of Multimedia.
name
Given file name.
extension
File extension.
mime
Mime type of the file.
size
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
multimedia
Created Multimedia.
path
Deleted MultimediaPath.
node
Node of the Edge.
cursor
The Edge cursor.
path
Readable id of MultimediaFolder.
name
Name of MultimediaFolder.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
multimediaFolder
Changed MultimediaFolder.
path
Deleted MultimediaFolderPath.
node
Node of the Edge.
cursor
The Edge cursor.
multimedia
Changed Multimedia.
multimedia
Replacing Multimedia.
multimedia
Changed Multimedia.
multimedia
Changed Multimedia.
multimedia
Changed Multimedia.
multimedia
Changed Multimedia.
attribute
An Attribute describing the value/
translations (languages: [Language!])
A value translations.
translatedValue
Represents simplified translated value containing scalar names in context language only.
value
A translation value of an Attribute.
attribute
An Attribute describing the value.
translations (languages: [Language!])
A value translations.
value
A translation value of an Attribute.
code
Readable id of Option.
name (languages: [Language!])
Translatable name allowing to set different values in every active language.
customFields
CustomField values.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
node
Node of the Edge.
cursor
The Edge cursor.
code
Readable id of Option.
name (languages: [Language!])
Translatable name allowing to set different values in every active language.
code
Code of Option.
name
Option name in the context language.
startCursor
When paginating backwards, the cursor to continue.
endCursor
When paginating forwards, the cursor to continue.
hasPreviousPage
When paginating backwards, are there more items?
hasNextPage
When paginating forwards, are there more items?
currency
The currency price is in.
attribute
An Attribute describing the value.
translations (languages: [Language!])
A value translations.
value
A translation value of an Attribute.
product
Changed Product.
product
Changed Product.
product
Changed Product.
product
Changed Product.
product
Changed Product.
product
Changed Product.
product
Changed Product.
product
Changed Product.
product
Changed Product.
product
Changed Product.
product
Changed Product.
product
Changed Product.
product
Changed Product.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
product
Created Product.
product
Created Product.
product
Created Product.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
product
Changed Product.
node
Node of the Edge.
cursor
The Edge cursor.
sku
Deleted Sku.
node
Node of the Edge.
cursor
The Edge cursor.
product
Changed Product.
product
Changed Product.
product
Changed Product.
attribute
An Attribute describing the value.
translations (languages: [Language!])
A value translations.
value
A translation value of an Attribute.
product
Changed Product.
product
Changed Product.
product
Changed Product.
code
Readable id of ProductStatus.
translatedName
Represents translated name in the context language.
language
Language of status.
value
Status value.
product
Changed Product.
product
Changed Product.
product
Changed Product.
code
Readable id of Section.
A list of attributes used in the Section.
first argument cannot be lesser than 0 and its default value is 50.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
node
Node of the Edge.
cursor
The Edge cursor.
attribute
An Attribute describing the value.
translations (languages: [Language!])
A value translations.
translatedValue
Represents simplified translated value containing scalar names in context language only.
value
A translation value of an Attribute.
code
Readable id of Template.
A list of attributes used in the Template.
first argument cannot be lesser than 0 and its default value is 50.
A list of sections used in the Template.
first argument cannot be lesser than 0 and its default value is 50.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
node
Node of the Edge.
cursor
The Edge cursor.
richEdit
Is rich text editor enabled.
attribute
An Attribute describing the value.
translations (languages: [Language!])
A value translations.
value
A translation value of an Attribute.
rawValue
Represents raw textarea value translation with attribute variables unresolved in form of {{#attribute_code}}.
customField
A CustomField describing the value.
value
A value in the context language.
customField
A CustomField describing the value.
translations (languages: [Language!])
A value translations.
value
A translation value of a CustomField.
customField
A CustomField describing the value.
value
A value in the context language.
customField
A CustomField describing the value.
translations (languages: [Language!])
A value translations.
value
A translation value of a CustomField.
attribute
An Attribute describing the value.
translations (languages: [Language!])
A value translations.
value
A translation value of an Attribute.
customField
A CustomField describing the value.
value
A value in the context language.
customField
A CustomField describing the value.
translations (languages: [Language!])
A value translations.
value
A translation value of a CustomField.
value
Tranlated value.
language
Language of translation.
name
Name o Unit.
symbol
Symbol of Unit.
unit
Unit of Attribute.
attribute
An Attribute describing the value.
translations (languages: [Language!])
A value translations.
value
A translation value of an Attribute.
bindings
A list of attributes by which variants are bonded.
A list of variants in VariableProduct.
first argument cannot be lesser than 0 and its default value is 50.