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...
List of factors resulting in resource cursor update
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
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 Relay 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.
The list of possible error codes to occur in course of executing API mutations.
128f9cb0-28bd-4843-a570-d2bd4671c495 The resource is referenced from other resources.
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.
Enums represent a predefined sets o values.
Represents the behavior of language translation of Attribute values.
Values:
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.
Unions represent possible many types.
Represents a product grouped in GroupingProduct.
Types:
GraphQL API requires to be authenticated in order to process requests.
In order to obtain access to API resources, an API key is required to be sent along with the appropriate GraphQL query as an HTTP header - X-API-KEY.
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.
This is how you can change the name of single multimedia via API.
mutation {
multimediaSetName(
input: {
path: "multimedia.jpg"
name: "multimedia_2.jpg"
}
) {
__typename
}
}query {
templateList {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
code
attributeList {
edges {
node {
scope
code
name {
value
language
}
}
}
}
}
}
}
}mutation {
multimediaDelete(input: { path: "multimedia.jpg" }) {
__typename
}
}mutation {
productAddAttributeValueTranslationsGallery(
input: {
sku: "1"
attributeCode: "gallery"
translations: [
{ language: "pl_PL", value: ["1.jpg", "2.jpg", "3.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
}
}
}
}That's how you add child product to grouping one.
Here's how you can set child product quantity via API.
Here's how to add variant to variable product via API.
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.
This is how you can create variable product via API.
This is how you can query GraphQL API on product attributes by SKU
query productRelation {
product(sku: "001") {
sku
createdAt
editedAt
attributeList {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
attribute {
code
}
translations {
... on ProductRelationAttributeValueTranslation {
language
value {
sku
}
}
}
}
}
}
}
}
mutation {
productGroupingAddChild(
input: { sku: "SKU_GR_PRODUCT", childSku: "SKU_test2", quantity: 1 }
) {
__typename
}
}query {
languageList {
edges {
node
}
}
}mutation {
productGroupingSetChildQuantity(
input: { sku: "SKU_GR_PRODUCT", childSku: "SKU_test2", quantity: 2 }
) {
__typename
}
}mutation {
productVariableAddVariant(input: { sku: "SKU_VAR_PRODUCT", variantSku: "SKU_test2" }) {
__typename
}
}mutation {
productCreateGrouping(
input: { sku: "SKU_GR_PRODUCT", templateCode: "Tshirts"}
) {
__typename
}
}mutation {
productCreateGrouping(
input: { sku: "SKU_GR_PRODUCT", templateCode: "Tshirts", categoryCodes: "DELL"}
) {
__typename
}
}mutation {
productCreateVariable(
input: {
sku: "SKU_VAR_PRODUCT"
templateCode: "Tshirts"
categoryCodes: "DELL"
}
) {
__typename
}
}query product {
product(sku: "SKU72") {
sku
attributeList {
edges {
node {
attribute {
code
scope
name {
value
language
}
}
}
}
}
}
}The entire GraphQL schema is available to fetch from the API itself. It's called introspection.
As with every other query, introspection of the Ergonode API requires authentication.
The simplest way to discover the GraphQL API is to use supporting HTTP clients like Insomnia. 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:
{
__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
}
}
}
}
}
}
}
}Types reference:
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
}
}
}
}mutation {
productSetTemplate(input: { sku: "SKU78", template: "template" }) {
__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
}
}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 remove child product from grouping one via API.
mutation {
productGroupingRemoveChild(input: { sku: "SKU_GR_PRODUCT", childSku: "SKU_test2" }
) {
__typename
}
}mutation {
attributeSelectAddOption(
input: {
code: "Model"
option: {
code: "eve_1011"
name: { language: "pl_PL", value: "eve_1011" }
}
}
) {
__typename
}
}This is how you can remove variant product from variable one via API
mutation {
multimediaCreate(
input: { name: "file_name.extension", folderPath: "folder_path" }
) {
__typename
}
}$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)
mutation {
productVariableRemoveVariant(input: { sku: "SKU_VAR_PRODUCT", variantSku: "SKU_test2" }
) {
__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 {
productStream (first:10, after:"") {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
... on VariableProduct {
sku
bindings {
code
__typename
}
variantList {
edges {
node {
sku
}
}
}
}
}
}
}
}query {
categoryTree(code: "<code_of_the_category_tree>") {
code
categoryTreeLeafList {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
category {
code
}
parentCategory {
code
}
}
}
}
}
}mutation {
productAddAttributeValueTranslationsFile(input: {
sku:"SKU77"
attributeCode:"file_test"
translations:{
language:"pl_PL"
value:"bike-1.jpg"
}
})
{__typename}
}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
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
AttributeCreateGalleryInput
AttributeCreateImageInput
AttributeCreateMultiSelectInput
AttributeCreateNumericInput
AttributeCreatePriceInput
AttributeCreateProductRelationInput
AttributeCreateSelectInput
AttributeCreateTextareaInput
AttributeCreateTextInput
AttributeCreateUnitInput
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
AttributeCreateGalleryInput
AttributeCreateImageInput
AttributeCreateMultiSelectInput
AttributeCreateNumericInput
AttributeCreatePriceInput
AttributeCreateProductRelationInput
AttributeCreateSelectInput
AttributeCreateTextareaInput
AttributeCreateTextInput
AttributeCreateUnitInput
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
This will allow you to get list of first 100 product no matter if they're simple or variable.
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
}
}
}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.
{
categoryStream(first: 1) {
pageInfo {
endCursor
hasNextPage
}
edges {
node {
code
name {
value
language
}
}
cursor
}
}
}example response:
{
"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"
}
]
}
}
}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:
{
categoryStream(first: 1, after: "YXJyYXljb25uZWN0aW9uOjQ5") {
...
}example response:
{
"data": {
"categoryStream": {
"pageInfo": {
"endCursor": "YXJyYXljb25uZWN0aW9uOjUw",
"hasNextPage": false
}
...
}
}
}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:
{
categoryStream(first: 1) {
pageInfo {
endCursor
hasNextPage
}
edges {
node {
code
}
}
}
}and fetch it in the separate consuming process via a single resource query:
{
category(code: "category_name_clothing") {
name {
value
language
}
code
}
}The rest of the process looks the same for the paginating over the stream.
This is how you can get data after some cursor via API.
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
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
}
}
}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
}
}
}
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.
query queryName {
}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.
query queryName {
productStream {
pageInfo {
endCursor
}
totalCount
}
}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.
query queryName {
productStream (first: 2) {
pageInfo {
endCursor
}
totalCount
}
}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.
query queryName {
productStream(first: 2) {
pageInfo {
endCursor
}
totalCount
}
productStream(after: "YXJyYXljb25uZWN0aW9uOjM0Mw==") {
pageInfo {
endCursor
}
totalCount
}
}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.
query queryName {
firstTwo: productStream(first: 2) {
pageInfo {
endCursor
}
totalCount
}
dataAfter: productStream(after: "YXJyYXljb25uZWN0aW9uOjM0Mw==") {
pageInfo {
endCursor
}
totalCount
}
}query x {
productStream {
pageInfo {
endCursor
}
}
}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.
query queryName {
firstTwo: productStream(first: 2) {
pageInfo {
endCursor
}
...fragmentName
}
dataAfter: productStream(after: "YXJyYXljb25uZWN0aW9uOjM0Mw==") {
pageInfo {
endCursor
}
...fragmentName
}
}
fragment fragmentName on ProductConnection {
totalCount
}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:
query queryName ($x: Int = 2) {
firstTwo: productStream(first: $x) {
pageInfo {
endCursor
}
...fragmentName
}
dataAfter: productStream(after: "YXJyYXljb25uZWN0aW9uOjM0Mw==") {
pageInfo {
endCursor
}
...fragmentName
}
}
fragment fragmentName on ProductConnection {
totalCount
}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.
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
}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.
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
}This is how you can create a simple product via API.
mutation {
productCreateSimple(
input: { sku: "SKU_test2", templateCode: "Tshirts"}
) {
__typename
}
}You can also assign a category to the newly created product in the same query.
mutation {
productCreateSimple(
input: { sku: "SKU_test2", templateCode: "Tshirts", categoryCodes: "DELL" }
) {
__typename
}
}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
}
}Queries allow retrieving data from the server.
Finds an Attribute.
Returns: Attribute
Arguments:
code
The code of a searched Attribute.
Provides a stream of deleted attribute codes.
Returns: AttributeDeletedConnection
Arguments:
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.
Provides a list of attribute options.
Returns: OptionConnection
Arguments:
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.
Provides a stream of attributes.
Returns: AttributeConnection
Arguments:
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.
Finds a Category.
Returns: Category
Arguments:
code
The code of a searched Category.
Provides a list of attributes allowed to be used in a category.
Returns: AttributeConnection
Arguments:
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.
Provides a stream of deleted category codes.
Returns: CategoryDeletedConnection
Arguments:
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.
Provides a stream of categories.
Returns: CategoryConnection
Arguments:
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.
Finds a CategoryTree.
Returns: CategoryTree
Arguments:
code
The code of a searched CategoryTree.
Provides a stream of deleted category tree codes.
Returns: CategoryTreeDeletedConnection
Arguments:
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.
Provides a stream of category trees.
Returns: CategoryTreeConnection
Arguments:
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.
Provides a list of active languages.
Returns: LanguageConnection
Arguments:
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.
Finds a Multimedia.
Returns: Multimedia
Arguments:
path
The path of a searched Multimedia.
Finds a MultimediaFolder.
Returns: MultimediaFolder
Arguments:
path
The path of a searched MultimediaFolder.
Provides a list of multimedia folders.
Returns: MultimediaFolderConnection
Arguments:
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.
Provides a stream of multimedia.
Returns: MultimediaConnection
Arguments:
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.
Finds a Product.
Returns: Product
Arguments:
sku
The sku of a searched Product.
Finds a Product by unique attribute value.
Returns: Product
Arguments:
attributeCode
The code of unique attribute Product is searched by.
value
The value of unique attribute Product is searched by.
Provides a stream of deleted product SKUs.
Returns: ProductDeletedConnection
Arguments:
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.
Provides a stream of products.
Returns: ProductConnection
Arguments:
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.
Finds a parent VariableProduct identified by variant Sku.
Returns: VariableProduct
Arguments:
variantSku
The Sku of variant to find a parent VariableProduct.
Finds a Section.
Returns: Section
Arguments:
code
The code of a searched Section.
Provides a list of sections.
Returns: SectionConnection
Arguments:
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.
Finds a Template.
Returns: Template
Arguments:
code
The code of a searched Template.
Provides a list of templates.
Returns: TemplateConnection
Arguments:
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.
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
Query.sectionList added
Query.template added
OptionAttribute interface added
SelectAttribute implements OptionAttribute
MultiSelectAttribute implements OptionAttribute
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
Query.multimediaFolder added
MultimediaFolderCreateInput.createFolderPath added
MultimediaCreateInput.folderName removed
Mutation.multimediaSetFolder removed
MultiSelectAttribute.optionList added
MultiSelectAttribute.options becomes deprecated. Use MultiSelectAttribute.optionList instead
SelectAttribute.optionList added
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
Query.multimedia added
MultimediaFolder.path added
Mutation.multimediaMove added
Mutation.multimediaFolderCreate added
MultimediaCreateInput.folderPath added
MultimediaCreateInput.folderName becomes deprecated. If passed together with folderPath this argument becomes disregarded
Mutation.multimediaSetFolder becomes deprecated
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
Attribute.label removed
label removed from Attribute create mutation input objects
AttributeCreateDateInput
AttributeCreateFileInput
AttributeCreateGalleryInput
AttributeCreateImageInput
AttributeCreateMultiSelectInput
AttributeCreateNumericInput
AttributeCreatePriceInput
AttributeCreateProductRelationInput
AttributeCreateSelectInput
AttributeCreateTextareaInput
AttributeCreateTextInput
AttributeCreateUnitInput
Category.attributeList added
Mutation.categoryDeleteAttributeValueTranslations added
Mutation.categoryAddAttributeValueTranslationsText added
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
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
AttributeValue implementations per Attribute type added
TranslatedAttributeValue.inherited removed
Query.languageTreeLeafList removed
Template.attributeList added
Query.templateList added
Attribute.name added - represents the same value as Attribute.label field
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
Attribute.hint removed
Attribute.placeholder removed
Mutation.attributeSetHint removed
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
Multimedia.title added
Mutation.multimediaSetTitle added
ProductGroupingAddChildInput.quantity added
Mutation.productGroupingSetChildQuantity added
GroupingProduct.childrenList added
GroupingProduct.childList becomes deprecated
Template.name becomes deprecated
Template.defaultLabel becomes deprecated
AttributeValue.code removed
AttributeValue.value removed
Option.attribute removed
TranslatedAttributeValue.inherited becomes deprecated
Query.languageTree becomes deprecated
Query.languageList added
language field becomes nullable for(valid for global attributes only)
DateValueTranslationInput
FileValueTranslationInput
GalleryValueTranslationInput
ImageValueTranslationInput
MultiSelectValueTranslationInput
NumericValueTranslationInput
PriceValueTranslationInput
ProductRelationValueTranslationInput
SelectValueTranslationInput
TextareaValueTranslationInput
TextValueTranslationInput
UnitValueTranslationInput
Attribute.hint becomes deprecated
Attribute.placeholder becomes deprecated
Mutation.attributeSetHint becomes deprecated
Mutation.attributeSetPlaceholder 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
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.
name (languages: )
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.
Implemented by:
Represents a value defining a specific attribute.
Fields:
translations (languages: )
A value translations.
attribute
An Attribute describing the type of value.
Implemented by:
Represents a translated attribute value for language.
Fields:
language
A language of a translation.
Implemented by:
A custom field represents a type of value that can be assigned to an attribute option.
Fields:
code
Readable id of CustomField.
Implemented by:
Represents a value defining a specific CustomField in specific language only.
Fields:
customField
A CustomField describing the type of value.
Implemented by:
Represents a value defining a specific CustomField.
Fields:
customField
A CustomField describing the type of value.
translations (languages: )
A value translations.
Implemented by:
Represents a translated custom field value for language.
Fields:
language
A language of a translation.
Implemented by:
An attribute with a predefined set of values(options).
Implements:
Fields:
optionList (after: , first: )
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.
Implemented by:
Fields:
sku
sku
categoryList (after: , first: )
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: , first: , codes: )
A list of Attribute values.
first argument cannot be lesser than 0 and its default value is 50.
status
Status of Product.
createdAt
Creation date.
editedAt
Last edition date.
Implemented by:
mutation {
categoryCreate(
input:{
code: "category_name"
name: {
language:"pl_PL"
value:"nazwa_kategorii"
}
}
) {
__typename
}
}This doc provides an overview of our GraphQL API which is designed specifically with data integration in mind.
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)
after: "YXJyYXljb25uZWN0aW9uOjA=" # endCursor from the response to get rest of the data if "hasNextPage": true
codes: [
# attributes to get values from
"name"
"color"
"short_description"
"price_local_eur"
"galeria_zdjec"
]
) {
... on AttributeValueConnection {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
... on PriceAttributeValue {
priceAttribute: attribute {
# currency might be useful in the price context
currency
}
priceAttributeValue: translations(
languages: ["en_GB", "pl_PL"]
) {
language
value
}
}
... on SelectAttributeValue {
SelectAttributeValue: translations(
languages: ["en_GB", "pl_PL"]
) {
language
translatedValue {
...OptionTranslatedValue
}
}
}
... on TextAttributeValue {
attribute {
name(languages: ["en_GB", "pl_PL"]) {
language
value
}
}
TextAttributeValue: translations(
languages: ["en_GB", "pl_PL"]
) {
language
value
}
}
... on TextareaAttributeValue {
attribute {
name(languages: ["en_GB", "pl_PL"]) {
language
value
}
}
TextareaAttributeValue: translations(
languages: ["en_GB", "pl_PL"]
) {
language
value
}
}
... on GalleryAttributeValue {
GalleryAttributeValue: translations {
language
value {
...Multimedia
}
}
}
}
}
}
}
__typename
}
}
fragment Multimedia on Multimedia {
path
name
extension
mime
sizeInBytes: size
alt(languages: ["en_GB", "pl_PL"]) {
language
value
}
title(languages: ["en_GB", "pl_PL"]) {
language
value
}
}
fragment OptionTranslatedValue on OptionTranslatedValue {
code
name
}
{
"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"
}
}
}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
}Scalars represent primitive values like Integer or String.
Represents a lowercased, alphanumerical, and _ textual Attribute identifier of 1-128 chars in length. It cannot be id or start with esa_.
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 Option identifier in a single Attribute context of 1-128 chars in length.
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.
Mutations allow modifing data on the server.
Adds Attribute metadata.
Input fields:
input
Returns: AttributeAddMetadataPayload
Creates DateAttribute
Input fields:
input
Returns: AttributeCreateDatePayload
Creates FileAttribute
Input fields:
input
Returns: AttributeCreateFilePayload
Creates GalleryAttribute
Input fields:
input
Returns: AttributeCreateGalleryPayload
Creates ImageAttribute
Input fields:
input
Returns: AttributeCreateImagePayload
Creates MultiSelectAttribute
Input fields:
input
Returns: AttributeCreateMultiSelectPayload
Creates NumericAttribute
Input fields:
input
!
Returns: AttributeCreateNumericPayload
Creates PriceAttribute
Input fields:
input
Returns: AttributeCreatePricePayload
Creates ProductRelationAttribute
Input fields:
input
Returns: AttributeCreateProductRelationPayload
Creates SelectAttribute
Input fields:
input
Returns: AttributeCreateSelectPayload
Creates TextareaAttribute
Input fields:
input
Returns: AttributeCreateTextareaPayload
Creates TextAttribute
Input fields:
input
Returns: AttributeCreateTextPayload
Creates UnitAttribute
Input fields:
input
Returns: AttributeCreateUnitPayload
Sets a DateAttribute format.
Input fields:
input
Returns: AttributeDateSetFormatPayload
Deletes Attribute.
Input fields:
input
Returns: AttributeDeletePayload
Deletes Attribute metadata.
Input fields:
input
Returns: AttributeDeleteMetadataPayload
Adds a MultiSelectAttribute option.
Input fields:
input
Returns: AttributeMultiSelectAddOptionPayload
Deletes a MultiSelectAttribute option.
Input fields:
input
Returns: AttributeMultiSelectDeleteOptionPayload
Sets a MultiSelectAttribute option name.
Input fields:
input
Returns: AttributeMultiSelectSetOptionNamePayload
Sets a MultiSelectAttribute options.
Input fields:
input
Returns: AttributeMultiSelectSetOptionsPayload
Adds a custom field to OptionAttribute.
Input fields:
input
Returns: AttributeOptionAddCustomFieldImagePayload
Adds a custom field to OptionAttribute.
Input fields:
input
Returns: AttributeOptionAddCustomFieldTextareaPayload
Adds a custom field to OptionAttribute.
Input fields:
input
Returns: AttributeOptionAddCustomFieldTextareaRTEPayload
Adds a custom field to OptionAttribute.
Input fields:
input
Returns: AttributeOptionAddCustomFieldTextPayload
Adds custom field value translations to an Option.
Input fields:
input
Returns: AttributeOptionAddOptionCustomFieldValueTranslationsImagePayload
Adds custom field value translations to an Option.
Input fields:
input
Returns: AttributeOptionAddOptionCustomFieldValueTranslationsTextareaPayload
Adds custom field value translations to an Option.
Input fields:
input
Returns: AttributeOptionAddOptionCustomFieldValueTranslationsTextareaRTEPayload
Adds custom field value translations to an Option.
Input fields:
input
Returns: AttributeOptionAddOptionCustomFieldValueTranslationsTextPayload
Deletes custom field from an OptionAttribute.
Input fields:
input
Returns: AttributeOptionDeleteCustomFieldPayload
Deletes custom field value translations from a Option.
Input fields:
input
Returns: AttributeOptionDeleteOptionCustomFieldValueTranslationsPayload
Sets a PriceAttribute currency.
Input fields:
input
Returns: AttributePriceSetCurrencyPayload
Adds a SelectAttribute option.
Input fields:
input
Returns: AttributeSelectAddOptionPayload
Deletes a SelectAttribute option.
Input fields:
input
Returns: AttributeSelectDeleteOptionPayload
Sets a SelectAttribute option name.
Input fields:
input
Returns: AttributeSelectSetOptionNamePayload
Sets a SelectAttribute options.
Input fields:
input
Returns: AttributeSelectSetOptionsPayload
Sets Attribute name.
Input fields:
input
Returns: AttributeSetNamePayload
Sets a TextareaAttribute richEdit.
Input fields:
input
Returns: AttributeTextareaSetRichEditPayload
Sets an UnitAttribute unit.
Input fields:
input
Returns: AttributeUnitSetUnitPayload
Adds a DateAttribute value translations to a category.
Input fields:
input
Returns: CategoryAddAttributeValueTranslationsDatePayload
Adds a FileAttribute value translations to a category.
Input fields:
input
Returns: CategoryAddAttributeValueTranslationsFilePayload
Adds a GalleryAttribute value translations to a category.
Input fields:
input
Returns: CategoryAddAttributeValueTranslationsGalleryPayload
Adds a ImageAttribute value translations to a category.
Input fields:
input
Returns: CategoryAddAttributeValueTranslationsImagePayload
Adds a MultiSelectAttribute value translations to a category.
Input fields:
input
Returns: CategoryAddAttributeValueTranslationsMultiSelectPayload
Adds a NumericAttribute value translations to a category.
Input fields:
input
Returns: CategoryAddAttributeValueTranslationsNumericPayload
Adds a PriceAttribute value translations to a category.
Input fields:
input
Returns: CategoryAddAttributeValueTranslationsPricePayload
Adds a ProductRelationAttribute value translations to a category.
Input fields:
input
Returns: CategoryAddAttributeValueTranslationsProductRelationPayload
Adds a SelectAttribute value translations to a category.
Input fields:
input
Returns: CategoryAddAttributeValueTranslationsSelectPayload
Adds a TextareaAttribute value translations to a category.
Input fields:
input
Returns: CategoryAddAttributeValueTranslationsTextareaPayload
Adds a TextAttribute value translations to a category.
Input fields:
input
Returns: CategoryAddAttributeValueTranslationsTextPayload
Adds a UnitAttribute value translations to a category.
Input fields:
input
Returns: CategoryAddAttributeValueTranslationsUnitPayload
Adds an Attribute as allowed to be used in Category.
Input fields:
input
Returns: CategoryAttributeAddAttributePayload
Removes an Attribute as allowed to be used in Category.
Input fields:
input
Returns: CategoryAttributeRemoveAttributePayload
Creates a Category.
Input fields:
input
Returns: CategoryCreatePayload
Deletes an attribute value translations from a Category.
Input fields:
input
Returns: CategoryDeleteAttributeValueTranslationsPayload
Deletes a Category.
Input fields:
input
Returns: CategoryDeletePayload
Sets a Category name.
Input fields:
input
Returns: CategorySetNamePayload
Creates a Multimedia.
Input fields:
input
Returns: MultimediaCreatePayload
Deletes a Multimedia.
Input fields:
input
Returns: MultimediaDeletePayload
Creates a MultimediaFolder.
Input fields:
input
Returns: MultimediaFolderCreatePayload
Deletes a MultimediaFolder.
Input fields:
input
Returns: MultimediaFolderDeletePayload
Moves a Multimedia to MultimediaFolder. Multimedia.path identifier is changed as a result.
Input fields:
input
Returns: MultimediaMovePayload
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:
input
Returns: MultimediaReplacePayload
Sets a Multimedia alt.
Input fields:
input
Returns: MultimediaSetAltPayload
Sets a Multimedia name.
Input fields:
input
Returns: MultimediaSetNamePayload
Sets a Multimedia title.
Input fields:
input
Returns: MultimediaSetTitlePayload
Adds a DateAttribute value translations to a product.
Input fields:
input
Returns: ProductAddAttributeValueTranslationsDatePayload
Adds a FileAttribute value translations to a product.
Input fields:
input
Returns: ProductAddAttributeValueTranslationsFilePayload
Adds a GalleryAttribute value translations to a product.
Input fields:
input
Returns: ProductAddAttributeValueTranslationsGalleryPayload
Adds a ImageAttribute value translations to a product.
Input fields:
input
Returns: ProductAddAttributeValueTranslationsImagePayload
Adds a MultiSelectAttribute value translations to a product.
Input fields:
input
Returns: ProductAddAttributeValueTranslationsMultiSelectPayload
Adds a NumericAttribute value translations to a product.
Input fields:
input
Returns: ProductAddAttributeValueTranslationsNumericPayload
Adds a PriceAttribute value translations to a product.
Input fields:
input
Returns: ProductAddAttributeValueTranslationsPricePayload
Adds a ProductRelationAttribute value translations to a product.
Input fields:
input
Returns: ProductAddAttributeValueTranslationsProductRelationPayload
Adds a SelectAttribute value translations to a product.
Input fields:
input
Returns: ProductAddAttributeValueTranslationsSelectPayload
Adds a TextareaAttribute value translations to a product.
Input fields:
input
Returns: ProductAddAttributeValueTranslationsTextareaPayload
Adds a TextAttribute value translations to a product.
Input fields:
input
Returns: ProductAddAttributeValueTranslationsTextPayload
Adds a UnitAttribute value translations to a product.
Input fields:
input
Returns: ProductAddAttributeValueTranslationsUnitPayload
Adds a product to categories.
Input fields:
input
Returns: ProductAddCategoriesPayload
Creates a GroupingProduct.
Input fields:
input
Returns: ProductCreateGroupingPayload
Creates a SimpleProduct.
Input fields:
input
Returns: ProductCreateSimplePayload
Creates a VariableProduct.
Input fields:
input
Returns: ProductCreateVariablePayload
Deletes an attribute value translations from a Product.
Input fields:
input
Returns: ProductDeleteAttributeValueTranslationsPayload
Deletes a product.
Input fields:
input
Returns: ProductDeletePayload
Adds a child product to a GroupingProduct.
Input fields:
input
Returns: ProductGroupingAddChildPayload
Removes a child product from a GroupingProduct.
Input fields:
input
Returns: ProductGroupingRemoveChildPayload
Set a child product quantity of a GroupingProduct.
Input fields:
input
Returns: ProductGroupingSetChildQuantityPayload
Removes a product from categories.
Input fields:
input
Returns: ProductRemoveCategoriesPayload
Sets a product status.
Input fields:
input
Returns: ProductSetStatusPayload
Sets a product Template.
Input fields:
input
Returns: ProductSetTemplatePayload
Adds a variant product to a VariableProduct.
Input fields:
input
Returns: ProductVariableAddVariantPayload
Removes a variant product from a VariableProduct.
Input fields:
input
Returns: ProductVariableRemoveVariantPayload
Sets binding attributes to VariableProduct.
Input fields:
input
Returns: ProductVariableSetBindingsPayload
Input objects represent a set of fields allowing describing mutation.
Input fields:
code
The code of Attribute the mutation to be performed on.
metadata
Metadata to be set.
Input fields:
code
Code of Attribute.
scope
Scope of Attribute.
name
Name of Attribute.
format
Format of Attribute.
Input fields:
code
Code of Attribute.
scope
Scope of Attribute.
name
Name of Attribute.
Input fields:
code
Code of Attribute.
scope
Scope of Attribute.
name
Name of Attribute.
Input fields:
code
Code of Attribute.
scope
Scope of Attribute.
name
Name of Attribute.
Input fields:
code
Code of Attribute.
scope
Scope of Attribute.
name
Name of Attribute.
options
Options of Attribute.
Input fields:
code
Code of Attribute.
scope
Scope of Attribute.
name
Name of Attribute.
Input fields:
code
Code of Attribute.
scope
Scope of Attribute.
name
Name of Attribute.
currency
Currency of Attribute.
Input fields:
code
Code of Attribute.
scope
Scope of Attribute.
name
Name of Attribute.
Input fields:
code
Code of Attribute.
scope
Scope of Attribute.
name
Name of Attribute.
options
Options of Attribute.
Input fields:
code
Code of Attribute.
scope
Scope of Attribute.
name
Name of Attribute.
richEdit
Is rich edit enabled.
Input fields:
code
Code of Attribute.
scope
Scope of Attribute.
name
Name of Attribute.
Input fields:
code
Code of Attribute.
scope
Scope of Attribute.
name
Name of Attribute.
unitName
Unit name for Attribute.
Input fields:
code
The code of Attribute the mutation to be performed on.
format
Format of Attribute.
Input fields:
code
The code of Attribute the mutation to be performed on.
Input fields:
code
The code of Attribute the mutation to be performed on.
metadataKeys
Metadata keys to be deleted.
Input fields:
code
The code of Attribute the mutation to be performed on.
option
Option to be added.
Input fields:
code
The code of Attribute the mutation to be performed on.
optionCode
Option to be deleted.
Input fields:
code
The code of Attribute the mutation to be performed on.
optionCode
Option to be changed.
optionName
Option name to be set.
Input fields:
code
The code of Attribute the mutation to be performed on.
options
Options to be set.
Input fields:
code
The code of Attribute the mutation to be performed on.
customFieldCode
Code of the custom field to be configured.
Input fields:
code
The code of Attribute the mutation to be performed on.
customFieldCode
Code of the custom field to be configured.
Input fields:
code
The code of Attribute the mutation to be performed on.
customFieldCode
Code of the custom field to be configured.
Input fields:
code
The code of Attribute the mutation to be performed on.
customFieldCode
Code of the custom field to be configured.
Input fields:
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.
Input fields:
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.
Input fields:
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.
Input fields:
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.
Input fields:
code
The code of Attribute the mutation to be performed on.
customFieldCode
Code of the custom field to be deleted.
Input fields:
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.
Input fields:
optionCodes
Option codes to be filtered by.
optionNames
Option names to be filtered by.
Input fields:
code
The code of Attribute the mutation to be performed on.
currency
Currency to be set.
Input fields:
code
The code of Attribute the mutation to be performed on.
option
Option to be added.
Input fields:
code
The code of Attribute the mutation to be performed on.
optionCode
Option to be deleted.
Input fields:
code
The code of Attribute the mutation to be performed on.
optionCode
Option to be changed.
optionName
Option name to be set.
Input fields:
code
The code of Attribute the mutation to be performed on.
options
Options to be set.
Input fields:
code
The code of Attribute the mutation to be performed on.
name
Name to be set.
Input fields:
code
The code of Attribute the mutation to be performed on.
richEdit
Is rich edit enabled.
Input fields:
code
The code of Attribute the mutation to be performed on.
unitName
Unit to be set.
Input fields:
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.
Input fields:
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.
Input fields:
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.
Input fields:
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.
Input fields:
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.
Input fields:
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.
Input fields:
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.
Input fields:
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.
Input fields:
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.
Input fields:
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.
Input fields:
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.
Input fields:
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.
Input fields:
attributeCode
The code of Attribute to be added.
Input fields:
attributeCode
The code of Attribute to be removed.
Input fields:
code
The code of Category.
name
The name of Category.
Input fields:
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.
Input fields:
code
The code of Category the mutation to be performed on.
Input fields:
code
The code of Category the mutation to be performed on.
name
Name to be set.
Input fields:
language
Language the translation to be added in. Allowed empty only in case of scope.
value
Translation value to be set.
Input fields:
language
Language the translation to be added in. Allowed empty only in case of scope.
value
Translation value to be set.
Input fields:
language
Language the translation to be added in. Allowed empty only in case of scope.
value
Translation value to be set.
Input fields:
language
Language the translation to be added in.
value
Translation value to be set.
Input fields:
language
Language the translation to be added in. Allowed empty only in case of scope.
value
Translation value to be set.
Input fields:
key
Key of the metadata value to be set on.
value
Value to be set.
Input fields:
name
The name of Multimedia.
folderPath
Folder Multimedia to be put in.
Input fields:
path
The path of Multimedia the mutation to be performed on.
Input fields:
name
The name of MultimediaFolder.
folderPath
Folder MultimediaFolder to be put in.
createFolderPath
Creates folderPath if does not exist. Defaults to false.
Input fields:
path
The path of MultimediaFolder the mutation to be performed on.
Input fields:
path
The path of Multimedia the mutation to be performed on.
folderPath
Folder Multimedia to be put in.
Input fields:
path
The path of Multimedia the mutation to be performed on.
Input fields:
path
The path of Multimedia the mutation to be performed on.
alt
Alt to be set.
Input fields:
path
The path of Multimedia the mutation to be performed on.
name
Name to be set.
Input fields:
path
The path of Multimedia the mutation to be performed on.
title
Title to be set.
Input fields:
language
Language the translation to be added in. Allowed empty only in case of scope.
value
Translation value to be set.
Input fields:
language
Language the translation to be added in. Allowed empty only in case of scope.
value
Translation value to be set.
Input fields:
code
Code of the Option to be used.
name
Name to be set.
Input fields:
language
Language the translation to be added in. Allowed empty only in case of scope.
value
Translation value to be set.
Input fields:
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.
Input fields:
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.
Input fields:
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.
Input fields:
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.
Input fields:
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.
Input fields:
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.
Input fields:
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.
Input fields:
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
Input fields:
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.
Input fields:
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.
Input fields:
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.
Input fields:
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.
Input fields:
sku
The sku of Product the mutation to be performed on.
categoryCodes
Categories to be added.
Input fields:
sku
Sku of Product.
templateCode
Template of Product.
categoryCode
Categories of Product.
Input fields:
sku
Sku of Product.
templateCode
Template of Product.
categoryCode
Categories of Product.
Input fields:
sku
Sku of Product.
templateCode
Template of Product.
categoryCode
Categories of Product.
Input fields:
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.
Input fields:
sku
The sku of Product the mutation to be performed on.
Input fields:
sku
The sku of Product the mutation to be performed on.
childSku
Child to be added.
quantity
Quantity the child to be added in.
Input fields:
sku
The sku of Product the mutation to be performed on.
childSku
Child to be removed.
Input fields:
sku
The sku of Product the mutation to be performed on.
childSku
Child quantity to be modified.
quantity
Quantity to be set.
Input fields:
language
Language the translation to be added in. Allowed empty only in case of scope.
value
Translation value to be set.
Input fields:
sku
The sku of Product the mutation to be performed on.
categoryCodes
Categories to be removed.
Input fields:
sku
The sku of Product the mutation to be performed on.
statusCode
Status to be set.
language
Language the status to be set in.
Input fields:
sku
The sku of Product the mutation to be performed on.
template
Template to be set.
Input fields:
sku
The sku of Product the mutation to be performed on.
variantSku
Variant to be added.
Input fields:
sku
The sku of Product the mutation to be performed on.
variantSku
Variant to be removed.
Input fields:
sku
The sku of Product the mutation to be performed on.
bindingCodes
Binding attributes to be set.
Input fields:
language
Language the translation to be added in. Allowed empty only in case of scope.
value
Translation value to be set.
Input fields:
language
Language the translation to be added in.
value
Translation value to be set.
Input fields:
language
Language the translation to be added in.
value
Translation value to be set.
Input fields:
language
Language the translation to be added in. Allowed empty only in case of scope.
value
Translation value to be set.
Accepts Attribute Variables in format {{#attribute_code}}.
Input fields:
language
Language the translation to be added in.
value
Translation value to be set.
Input fields:
language
Language the translation to be added in. Allowed empty only in case of scope.
value
Translation value to be set.
Input fields:
language
Language the translation to be filtered in.
value
Translation value to be filtered by.
Input fields:
language
Language the translation to be added in.
value
Translation value to be set.
Input fields:
language
Language the translation to be added in. Allowed empty only in case of 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 Attribute
Fields:
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
An edge in a connection.
Fields:
node
Node of the Edge.
cursor
The Edge cursor.
A payload for a mutation.
Fields:
attribute
Created Attribute.
A payload for a mutation.
Fields:
attribute
Created Attribute.
A payload for a mutation.
Fields:
attribute
Created Attribute.
A payload for a mutation.
Fields:
attribute
Created Attribute.
A payload for a mutation.
Fields:
attribute
Created Attribute.
A payload for a mutation.
Fields:
attribute
Created Attribute.
A payload for a mutation.
Fields:
attribute
Created Attribute.
A payload for a mutation.
Fields:
attribute
Created Attribute.
A payload for a mutation.
Fields:
attribute
Created Attribute.
A payload for a mutation.
Fields:
attribute
Created Attribute.
A payload for a mutation.
Fields:
attribute
Created Attribute.
A payload for a mutation.
Fields:
attribute
Created Attribute.
A payload for a mutation.
Fields:
attribute
Changed Attribute.
A payload for a mutation.
Fields:
attribute
Changed Attribute.
A payload for a mutation.
Fields:
code
Deleted AttributeCode.
The connection for AttributeCode
Fields:
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
An edge in a connection.
Fields:
node
Node of the Edge.
cursor
The Edge cursor.
A payload for a mutation.
Fields:
attribute
Changed Attribute.
A payload for a mutation.
Fields:
attribute
Changed Attribute.
A payload for a mutation.
Fields:
attribute
Changed Attribute.
A payload for a mutation.
Fields:
attribute
Changed Attribute.
A payload for a mutation.
Fields:
attribute
Changed Attribute.
A payload for a mutation.
Fields:
attribute
Changed Attribute.
A payload for a mutation.
Fields:
attribute
Changed Attribute.
A payload for a mutation.
Fields:
attribute
Changed Attribute.
A payload for a mutation.
Fields:
attribute
Changed Attribute.
A payload for a mutation.
Fields:
attribute
Changed Attribute.
A payload for a mutation.
Fields:
attribute
Changed Attribute.
A payload for a mutation.
Fields:
attribute
Changed Attribute.
A payload for a mutation.
Fields:
attribute
Changed Attribute.
A payload for a mutation.
Fields:
attribute
Changed Attribute.
A payload for a mutation.
Fields:
attribute
Changed Attribute.
A payload for a mutation.
Fields:
attribute
Changed Attribute.
A payload for a mutation.
Fields:
attribute
Changed Attribute.
A payload for a mutation.
Fields:
attribute
Changed Attribute.
A payload for a mutation.
Fields:
attribute
Changed Attribute.
A payload for a mutation.
Fields:
attribute
Changed Attribute.
A payload for a mutation.
Fields:
attribute
Changed Attribute.
A payload for a mutation.
Fields:
attribute
Changed Attribute.
The connection for AttributeValue
Fields:
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
An edge in a connection.
Fields:
node
Node of the Edge.
cursor
The Edge cursor.
Represents a category.
Fields:
code
Readable id of Category.
name (languages: )
Translatable name allowing to set different values in every active language.
attributeList (after: , first: , codes: )
A list of attribute values.
first argument cannot be lesser than 0 and its default value is 50.
A payload for a mutation.
Fields:
category
Changed Category.
A payload for a mutation.
Fields:
category
Changed Category.
A payload for a mutation.
Fields:
category
Changed Category.
A payload for a mutation.
Fields:
category
Changed Category.
A payload for a mutation.
Fields:
category
Changed Category.
A payload for a mutation.
Fields:
category
Changed Category.
A payload for a mutation.
Fields:
category
Changed Category.
A payload for a mutation.
Fields:
category
Changed Category.
A payload for a mutation.
Fields:
category
Changed Category.
A payload for a mutation.
Fields:
category
Changed Category.
A payload for a mutation.
Fields:
category
Changed Category.
A payload for a mutation.
Fields:
category
Changed Category.
A payload for a mutation.
Fields:
categoryAttributeList
Updated list of attributes.
A payload for a mutation.
Fields:
categoryAttributeList
Updated list of attributes.
The connection for Category
Fields:
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
An edge in a connection.
Fields:
node
Node of the Edge.
cursor
The Edge cursor.
A payload for a mutation.
Fields:
category
Created Category.
A payload for a mutation.
Fields:
category
Changed Category.
A payload for a mutation.
Fields:
code
Deleted CategoryCode.
The connection for CategoryCode
Fields:
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
An edge in a connection.
Fields:
node
Node of the Edge.
cursor
The Edge cursor.
A payload for a mutation.
Fields:
category
Changed Category.
Represent a tree of categories.
Fields:
code
Readable id of CategoryTree.
name (languages: )
Translatable name allowing to set different values in every active language.
categoryTreeLeafList (after: , first: )
A list of categories belonging to the CategoryTree.
first argument cannot be lesser than 0, higher than 1000 and its default value is 50.
The connection for CategoryTree
Fields:
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
The connection for Scalars #CategoryTreeCode
Fields:
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
An edge in a connection.
Fields:
node
Node of the Edge.
cursor
The Edge cursor.
An edge in a connection.
Fields:
node
Node of the Edge.
cursor
The Edge cursor.
Represents a leaf (node) of a category tree.
Fields:
category
A leaf of the tree.
parentCategory
Parent leaf of to leaf.
The connection for #CategoryTreeLeaf
Fields:
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
An edge in a connection.
Fields:
node
Node of the Edge.
cursor
The Edge cursor.
Represents a date.
Implements:
Fields:
format
Represented date format.
An attribute value.
Implements:
Fields:
attribute
An Attribute describing the value.
translations (languages: )
A value translations.
Translation of an attribute value.
Implements:
Fields:
value
A translation value of an Attribute.
Represents a collection of multimedia files of any type.
Implements:
An attribute value.
Implements:
Fields:
attribute
An Attribute describing the value.
translations (languages: )
A value translations.
Translation of an attribute value.
Implements:
Fields:
value
A translation value of an Attribute.
Represents a collection of images.
Implements:
An attribute value.
Implements:
Fields:
attribute
An Attribute describing the value.
translations (languages: )
A value translations.
Translation of an attribute value.
Implements:
Fields:
value
A translation value of an Attribute.
Represents a product grouped in GroupingProduct with a specific quantity for the set.
Fields:
quantity
Quantity of a grouped Product.
product
Grouped Product.
The connection for GroupedProduct
Fields:
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
An edge in a connection.
Fields:
node
Node of the Edge.
cursor
The Edge cursor.
A product grouping other products. Can represent products like the ones with common features or promotional packages.
Implements:
Fields:
childrenList (after: , first: )
A list of children.
first argument cannot be lesser than 0 and its default value is 50.
Represents an image.
Implements:
An attribute value.
Implements:
Fields:
attribute
An Attribute describing the value.
translations (languages: )
A value translations.
Translation of an attribute value.
Implements:
Fields:
value
A translation value of an Attribute.
Represents an image.
Implements:
Represents an image translated value.
Implements:
Fields:
customField
A CustomField describing the value.
value
A value in the context language.
A custom field value.
Implements:
Fields:
customField
A CustomField describing the value.
translations (languages: )
A value translations.
Translation of a custom field value.
Implements:
Fields:
value
A translation value of a CustomField.
The connection for Language
Fields:
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
An edge in a connection.
Fields:
node
Node of the Edge.
cursor
The Edge cursor.
Represents a metadatum of an attribute.
Fields:
key
A key of metadatum.
value
Metadata value.
Represents a multimedia file. The multimedia can be a text file, image, document file, etc.
Fields:
path
Readable id of Multimedia.
name
Given file name.
extension
File extension.
mime
Mime type of the file.
size
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.
The connection for Multimedia
Fields:
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
A payload for a mutation.
Fields:
multimedia
Created Multimedia.
A payload for a mutation.
Fields:
path
Deleted MultimediaPath.
An edge in a connection.
Fields:
node
Node of the Edge.
cursor
The Edge cursor.
Represents a filesystem-like folder allowing to organize multimedia. Does not correspond to the physical file path or its URL.
Fields:
path
Readable id of MultimediaFolder.
name
Name of MultimediaFolder.
The connection for MultimediaFolder
Fields:
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
A payload for a mutation.
Fields:
multimediaFolder
Changed MultimediaFolder.
A payload for a mutation.
Fields:
path
Deleted MultimediaFolderPath.
An edge in a connection.
Fields:
node
Node of the Edge.
cursor
The Edge cursor.
A payload for a mutation.
Fields:
multimedia
Changed Multimedia.
A payload for a mutation.
Fields:
multimedia
Replacing Multimedia.
A payload for a mutation.
Fields:
multimedia
Changed Multimedia.
A payload for a mutation.
Fields:
multimedia
Changed Multimedia.
A payload for a mutation.
Fields:
multimedia
Changed Multimedia.
A payload for a mutation.
Fields:
multimedia
Changed Multimedia.
Represents a set of options allowing multiple choices.
Implements:
An attribute value.
Implements:
Fields:
attribute
An Attribute describing the value/
translations (languages: )
A value translations.
Translation of an attribute value.
Implements:
Fields:
translatedValue
Represents simplified translated value containing scalar names in context language only.
value
A translation value of an Attribute.
Represents a number.
Implements:
An attribute value.
Implements:
Fields:
attribute
An Attribute describing the value.
translations (languages: )
A value translations.
Translation of an attribute value.
Implements:
Fields:
value
A translation value of an Attribute.
Represents an option of a select and multi-select attribute.
Fields:
code
Readable id of Option.
name (languages: )
Translatable name allowing to set different values in every active language.
customFields
CustomField values.
The connection for Option
Fields:
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
An edge in a connection.
Fields:
node
Node of the Edge.
cursor
The Edge cursor.
Represents an option of a select and multi-select attribute.
Fields:
code
Readable id of Option.
name (languages: )
Translatable name allowing to set different values in every active language.
Simple representation of an Option of select and multi-select attributes with the name in a specific language only.
Fields:
code
Code of Option.
name
Option name in the context language.
Information about pagination in a connection.
Fields:
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?
Represents a positive price of a specific currency.
Implements:
Fields:
currency
The currency price is in.
An attribute value.
Implements:
Fields:
attribute
An Attribute describing the value.
translations (languages: )
A value translations.
Translation of an attribute value.
Implements:
Fields:
value
A translation value of an Attribute.
A payload for a mutation.
Fields:
product
Changed Product.
A payload for a mutation.
Fields:
product
Changed Product.
A payload for a mutation.
Fields:
product
Changed Product.
A payload for a mutation.
Fields:
product
Changed Product.
A payload for a mutation.
Fields:
product
Changed Product.
A payload for a mutation.
Fields:
product
Changed Product.
A payload for a mutation.
Fields:
product
Changed Product.
A payload for a mutation.
Fields:
product
Changed Product.
A payload for a mutation.
Fields:
product
Changed Product.
A payload for a mutation.
Fields:
product
Changed Product.
A payload for a mutation.
Fields:
product
Changed Product.
A payload for a mutation.
Fields:
product
Changed Product.
A payload for a mutation.
Fields:
product
Changed Product.
The connection for Product
Fields:
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
A payload for a mutation.
Fields:
product
Created Product.
A payload for a mutation.
Fields:
product
Created Product.
A payload for a mutation.
Fields:
product
Created Product.
The connection for Sku
Fields:
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
A payload for a mutation.
Fields:
product
Changed Product.
An edge in a connection.
Fields:
node
Node of the Edge.
cursor
The Edge cursor.
A payload for a mutation.
Fields:
sku
Deleted Sku.
An edge in a connection.
Fields:
node
Node of the Edge.
cursor
The Edge cursor.
A payload for a mutation.
Fields:
product
Changed Product.
A payload for a mutation.
Fields:
product
Changed Product.
A payload for a mutation.
Fields:
product
Changed Product.
Represents a relation to the collection of products.
Implements:
An attribute value.
Implements:
Fields:
attribute
An Attribute describing the value.
translations (languages: )
A value translations.
Translation of an attribute value.
Implements:
Fields:
value
A translation value of an Attribute.
A payload for a mutation.
Fields:
product
Changed Product.
A payload for a mutation.
Fields:
product
Changed Product.
A payload for a mutation.
Fields:
product
Changed Product.
A product status.
Fields:
code
Readable id of ProductStatus.
translatedName
Represents translated name in the context language.
A product status translation.
Fields:
language
Language of status.
value
Status value.
A payload for a mutation.
Fields:
product
Changed Product.
A payload for a mutation.
Fields:
product
Changed Product.
A payload for a mutation.
Fields:
product
Changed Product.
Represents a set of common attributes - technical data, SEO-related parameters, etc.
Fields:
code
Readable id of Section.
attributeList (after: , first: )
A list of attributes used in the Section.
first argument cannot be lesser than 0 and its default value is 50.
The connection for Section
Fields:
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
An edge in a connection.
Fields:
node
Node of the Edge.
cursor
The Edge cursor.
Represents a set of options allowing single choice.
Implements:
An attribute value.
Implements:
Fields:
attribute
An Attribute describing the value.
translations (languages: )
A value translations.
Translation of an attribute value.
Implements:
Fields:
translatedValue
Represents simplified translated value containing scalar names in context language only.
value
A translation value of an Attribute.
A simple product.
Implements:
Represents a set of attributes specific to a market segment.
Fields:
code
Readable id of Template.
attributeList (after: , first: )
A list of attributes used in the Template.
first argument cannot be lesser than 0 and its default value is 50.
sectionList (after: , first: )
A list of sections used in the Template.
first argument cannot be lesser than 0 and its default value is 50.
The connection for Template
Fields:
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
An edge in a connection.
Fields:
node
Node of the Edge.
cursor
The Edge cursor.
Represents a text.
Implements:
Fields:
richEdit
Is rich text editor enabled.
An attribute value.
Implements:
Fields:
attribute
An Attribute describing the value.
translations (languages: )
A value translations.
Translation of an attribute value.
Implements:
Fields:
value
A translation value of an Attribute.
rawValue
Represents raw textarea value translation with attribute variables unresolved in form of {{#attribute_code}}.
Represents a text.
Implements:
Represents a text translated value.
Implements:
Fields:
customField
A CustomField describing the value.
value
A value in the context language.
A custom field value.
Implements:
Fields:
customField
A CustomField describing the value.
translations (languages: )
A value translations.
Translation of a custom field value.
Implements:
Fields:
value
A translation value of a CustomField.
Represents a text with RTE enabled.
Implements:
Represents a text with RTE translated value.
Implements:
Fields:
customField
A CustomField describing the value.
value
A value in the context language.
A custom field value.
Implements:
Fields:
customField
A CustomField describing the value.
translations (languages: )
A value translations.
Translation of a custom field value.
Implements:
Fields:
value
A translation value of a CustomField.
Represents a short text of up to 255 chars.
Implements:
An attribute value.
Implements:
Fields:
attribute
An Attribute describing the value.
translations (languages: )
A value translations.
Translation of an attribute value.
Implements:
Fields:
value
A translation value of an Attribute.
Represents a short text of up to 255 chars.
Implements:
Represents a text translated value.
Implements:
Fields:
customField
A CustomField describing the value.
value
A value in the context language.
A custom field value.
Implements:
Fields:
customField
A CustomField describing the value.
translations (languages: )
A value translations.
Translation of a custom field value.
Implements:
Fields:
value
A translation value of a CustomField.
Represents a translated value.
Fields:
value
Tranlated value.
language
Language of translation.
Represents a unit. Can be used to define specific scalar types like a Meter.
Fields:
name
Name o Unit.
symbol
Symbol of Unit.
Represents a numeric scalar unit.
Implements:
Fields:
unit
Unit of Attribute.
An attribute value.
Implements:
Fields:
attribute
An Attribute describing the value.
translations (languages: )
A value translations.
Translation of an attribute value.
Implements:
Fields:
value
A translation value of an Attribute.
A product representing multiple variants i.e. products of different sizes or colors.
Fields:
bindings
A list of attributes by which variants are bonded.
variantList (after: , first: )
A list of variants in VariableProduct.
first argument cannot be lesser than 0 and its default value is 50.