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...
Loading...
List of factors resulting in resource cursor update
Note that some updates though potentially could be interpreted as other resource updates as well, i.e. category name changes could result in updates of both product and category tree cursors, are limited to the specific resource to limit the overall amount of updates.
This is by design since a potentially small change could cause a snowball effect - one, simple category name change, could cause the need to reimport all products in the system, etc.
product created
product property updated
attribute value
product added or removed from a category
template assignment
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.
Note if you have an API key created with Segment products are also transferred to the end of the stream once are added to a Segment.
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.
This doc provides an overview of our GraphQL API which is designed specifically with data integration in mind.
The API is available at /api/graphql/
URL path of your instance.
API returns data in JSON format.
contains Queries and Mutations.
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 value for local scope Attribute.
786446ad-32b8-40a9-9bb5-e5445196ffd5
Value is not unique for given 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.
6406a966-10e9-4096-abfd-bf6764909fd2
Product does not have given child.
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:
Types reference:
Mutations allow modifing data on the server.
Adds Attribute
metadata.
Input fields:
Returns: AttributeAddMetadataPayload
Creates DateAttribute
Input fields:
Returns: AttributeCreateDatePayload
Creates FileAttribute
Input fields:
Returns: AttributeCreateFilePayload
Creates GalleryAttribute
Input fields:
Returns: AttributeCreateGalleryPayload
Creates ImageAttribute
Input fields:
Returns: AttributeCreateImagePayload
Creates MultiSelectAttribute
Input fields:
Returns: AttributeCreateMultiSelectPayload
Creates NumericAttribute
Input fields:
Returns: AttributeCreateNumericPayload
Creates PriceAttribute
Input fields:
Returns: AttributeCreatePricePayload
Creates ProductRelationAttribute
Input fields:
Returns: AttributeCreateProductRelationPayload
Creates SelectAttribute
Input fields:
Returns: AttributeCreateSelectPayload
Creates TextareaAttribute
Input fields:
Returns: AttributeCreateTextareaPayload
Creates TextAttribute
Input fields:
Returns: AttributeCreateTextPayload
Creates UnitAttribute
Input fields:
Returns: AttributeCreateUnitPayload
Sets a DateAttribute
format.
Input fields:
Returns: AttributeDateSetFormatPayload
Deletes Attribute
.
Input fields:
Returns: AttributeDeletePayload
Deletes Attribute
metadata.
Input fields:
Returns: AttributeDeleteMetadataPayload
Adds a MultiSelectAttribute
option.
Input fields:
Returns: AttributeMultiSelectAddOptionPayload
Deletes a MultiSelectAttribute
option.
Input fields:
Returns: AttributeMultiSelectDeleteOptionPayload
Sets a MultiSelectAttribute
option name.
Input fields:
Returns: AttributeMultiSelectSetOptionNamePayload
Sets a MultiSelectAttribute
options.
Input fields:
Returns: AttributeMultiSelectSetOptionsPayload
Adds a custom field to OptionAttribute
.
Input fields:
Returns: AttributeOptionAddCustomFieldImagePayload
Adds a custom field to OptionAttribute
.
Input fields:
Returns: AttributeOptionAddCustomFieldTextareaPayload
Adds a custom field to OptionAttribute
.
Input fields:
Returns: AttributeOptionAddCustomFieldTextareaRTEPayload
Adds a custom field to OptionAttribute
.
Input fields:
Returns: AttributeOptionAddCustomFieldTextPayload
Deletes custom field value translations from a Option
.
Input fields:
Returns: AttributeOptionAddOptionCustomFieldValueTranslationsImagePayload
Deletes custom field value translations from a Option
.
Input fields:
Returns: AttributeOptionAddOptionCustomFieldValueTranslationsTextareaPayload
Deletes custom field value translations from a Option
.
Input fields:
Returns: AttributeOptionAddOptionCustomFieldValueTranslationsTextareaRTEPayload
Deletes custom field value translations from a Option
.
Input fields:
Returns: AttributeOptionAddOptionCustomFieldValueTranslationsTextPayload
Deletes custom field from an OptionAttribute
.
Input fields:
Returns: AttributeOptionDeleteCustomFieldPayload
Deletes custom field value translations from a Option
.
Input fields:
Returns: AttributeOptionDeleteOptionCustomFieldValueTranslationsPayload
Sets a PriceAttribute
currency.
Input fields:
Returns: AttributePriceSetCurrencyPayload
Adds a SelectAttribute
option.
Input fields:
Returns: AttributeSelectAddOptionPayload
Deletes a SelectAttribute
option.
Input fields:
Returns: AttributeSelectDeleteOptionPayload
Sets a SelectAttribute
option name.
Input fields:
Returns: AttributeSelectSetOptionNamePayload
Sets a SelectAttribute
options.
Input fields:
Returns: AttributeSelectSetOptionsPayload
Sets Attribute
name.
Input fields:
Returns: AttributeSetNamePayload
Sets a TextareaAttribute
richEdit.
Input fields:
Returns: AttributeTextareaSetRichEditPayload
Sets an UnitAttribute
unit.
Input fields:
Returns: AttributeUnitSetUnitPayload
Adds a DateAttribute
value translations to a category.
Input fields:
Returns: CategoryAddAttributeValueTranslationsDatePayload
Adds a FileAttribute
value translations to a category.
Input fields:
Returns: CategoryAddAttributeValueTranslationsFilePayload
Adds a GalleryAttribute
value translations to a category.
Input fields:
Returns: CategoryAddAttributeValueTranslationsGalleryPayload
Adds a ImageAttribute
value translations to a category.
Input fields:
Returns: CategoryAddAttributeValueTranslationsImagePayload
Adds a MultiSelectAttribute
value translations to a category.
Input fields:
Returns: CategoryAddAttributeValueTranslationsMultiSelectPayload
Adds a NumericAttribute
value translations to a category.
Input fields:
Returns: CategoryAddAttributeValueTranslationsNumericPayload
Adds a PriceAttribute
value translations to a category.
Input fields:
Returns: CategoryAddAttributeValueTranslationsPricePayload
Adds a ProductRelationAttribute
value translations to a category.
Input fields:
Returns: CategoryAddAttributeValueTranslationsProductRelationPayload
Adds a SelectAttribute
value translations to a category.
Input fields:
Returns: CategoryAddAttributeValueTranslationsSelectPayload
Adds a TextareaAttribute
value translations to a category.
Input fields:
Returns: CategoryAddAttributeValueTranslationsTextareaPayload
Adds a TextAttribute
value translations to a category.
Input fields:
Returns: CategoryAddAttributeValueTranslationsTextPayload
Adds a UnitAttribute
value translations to a category.
Input fields:
Returns: CategoryAddAttributeValueTranslationsUnitPayload
Adds an Attribute
as allowed to be used in Category
.
Input fields:
Returns: CategoryAttributeAddAttributePayload
Removes an Attribute
as allowed to be used in Category
.
Input fields:
Returns: CategoryAttributeRemoveAttributePayload
Creates a Category
.
Input fields:
Returns: CategoryCreatePayload
Deletes an attribute value translations from a Category
.
Input fields:
Returns: CategoryDeleteAttributeValueTranslationsPayload
Deletes a Category
.
Input fields:
Returns: CategoryDeletePayload
Sets a Category
name.
Input fields:
Returns: CategorySetNamePayload
Creates a Multimedia
.
Input fields:
Returns: MultimediaCreatePayload
Deletes a Multimedia
.
Input fields:
Returns: MultimediaDeletePayload
Creates a MultimediaFolder
.
Input fields:
Returns: MultimediaFolderCreatePayload
Moves a Multimedia
to MultimediaFolder
. Multimedia.path
identifier is changed as a result.
Input fields:
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:
Returns: MultimediaReplacePayload
Sets a Multimedia
alt.
Input fields:
Returns: MultimediaSetAltPayload
Sets a Multimedia
name.
Input fields:
Returns: MultimediaSetNamePayload
Sets a Multimedia
title.
Input fields:
Returns: MultimediaSetTitlePayload
Adds a DateAttribute
value translations to a product.
Input fields:
Returns: ProductAddAttributeValueTranslationsDatePayload
Adds a FileAttribute
value translations to a product.
Input fields:
Returns: ProductAddAttributeValueTranslationsFilePayload
Adds a GalleryAttribute
value translations to a product.
Input fields:
Returns: ProductAddAttributeValueTranslationsGalleryPayload
Adds a ImageAttribute
value translations to a product.
Input fields:
Returns: ProductAddAttributeValueTranslationsImagePayload
Adds a MultiSelectAttribute
value translations to a product.
Input fields:
Returns: ProductAddAttributeValueTranslationsMultiSelectPayload
Adds a NumericAttribute
value translations to a product.
Input fields:
Returns: ProductAddAttributeValueTranslationsNumericPayload
Adds a PriceAttribute
value translations to a product.
Input fields:
Returns: ProductAddAttributeValueTranslationsPricePayload
Adds a ProductRelationAttribute
value translations to a product.
Input fields:
Returns: ProductAddAttributeValueTranslationsProductRelationPayload
Adds a SelectAttribute
value translations to a product.
Input fields:
Returns: ProductAddAttributeValueTranslationsSelectPayload
Adds a TextareaAttribute
value translations to a product.
Input fields:
Returns: ProductAddAttributeValueTranslationsTextareaPayload
Adds a TextAttribute
value translations to a product.
Input fields:
Returns: ProductAddAttributeValueTranslationsTextPayload
Adds a UnitAttribute
value translations to a product.
Input fields:
Returns: ProductAddAttributeValueTranslationsUnitPayload
Adds a product to categories.
Input fields:
Returns: ProductAddCategoriesPayload
Creates a GroupingProduct
.
Input fields:
Returns: ProductCreateGroupingPayload
Creates a SimpleProduct
.
Input fields:
Returns: ProductCreateSimplePayload
Creates a VariableProduct
.
Input fields:
Returns: ProductCreateVariablePayload
Deletes an attribute value translations from a Product
.
Input fields:
Returns: ProductDeleteAttributeValueTranslationsPayload
Deletes a product.
Input fields:
Returns: ProductDeletePayload
Adds a child product to a GroupingProduct
.
Input fields:
Returns: ProductGroupingAddChildPayload
Removes a child product from a GroupingProduct
.
Input fields:
Returns: ProductGroupingRemoveChildPayload
Set a child product quantity of a GroupingProduct
.
Input fields:
Returns: ProductGroupingSetChildQuantityPayload
Removes a product from categories.
Input fields:
Returns: ProductRemoveCategoriesPayload
Sets a product Template
.
Input fields:
Returns: ProductSetTemplatePayload
Adds a variant product to a VariableProduct
.
Input fields:
Returns: ProductVariableAddVariantPayload
Removes a variant product from a VariableProduct
.
Input fields:
Returns: ProductVariableRemoveVariantPayload
Sets binding attributes to VariableProduct
.
Input fields:
Returns: ProductVariableSetBindingsPayload
Input objects represent a set of fields allowing describing mutation.
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
Input fields:
The changelog is a list of recent changes to GraphQL API schema.
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
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
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
.
Keys can be created in Ergonode System Settings in the API keys tab.
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.
API keys, due to security reasons, cannot be changed. If you require a different key just generate a new one in Ergonode settings.
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
Please check AttributeValue migration guide.
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
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.
Batch mutations are executed synchronously which also means their order does matter. You need to create the product first in order to assign values to it.
All mutations in the batch are performed one after another and if one or more fails all the others will still be tried to execute. The batch result will contain requested data from each mutation as well as specific errors which occurred for those which failed.
Note that each mutation has an alias (create: (...)
) - which means a custom name is assigned to it.
Aliasing is required if there are at least two same mutations in one batch - productAddAttributeValueTranslationsTextarea
in this case - this behavior allows differentiation of the data in the result which in another case would not be possible.
In the above example for simplicity, all mutations have been aliased in the example but it'd also suffice to only alias duplicates.
As tempting as it may sound to make one update of all data in the system bear in mind the fact of synchronicity of the batch process - it means that the process will last as long as there are some mutations left to be executed.
In practice, it means that too-long running processes are usually more faulty and also it's harder to handle potential errors. In most extreme cases, you can even reach timeout from your HTTP client or the server can drop the handling of the request as it takes too long to process.
A usually recommended approach would be to limit the batch to a single resource(product, attribute, multimedia) or with a similar intention in mind.
Queries in GraphQL are created by opening curly brackets.
If we have more than one query, we need to name them and specify that this is the query, we do it as follows.
An example of a simple query that will return the value of "pageInfo" from the "productStream" branch, and from there provide the value of "endCursor". Additionally, from the "productStream" branch, it will return the value "totalCount". Think of it as a tree, a branch, and a leaf. To get information from a leaf, you must first reach it by going through all the steps one by one. Each subsequent indentation must be called using the next curly bracket. Until it's closed, we are constantly working within the same space.
For better understanding, I've stretched the code below to reflect these indents.
The query can also use arguments. The list of available parameters can be found in the API schema(documentation). Here, we will use the "first" argument.
Without using this argument, the system would return all the data it finds, here we want to limit ourselves to the first 2 results.
It is also possible, to refer to the same place with several arguments, in this example we wanted to get the first 2 results and the then results after something.
However, the above query will not work without a slight modification. If to a given object we refer more than once, we must use aliases. Below I used two aliases: "firstTwo" and "dataAfter". Remember to use a colon after the alias.
Remember that in this case, the "after" filter refers to the cursor, which in this case is "YXJyYXljb25uZWN0aW9uOjM0Mw==". In your case, it will be a completely different string.
Check available cursors with a query:
Note that in the query (the previous one, not the one about available cursors) we call the same "totalCount" data 2 times unnecessarily. We can simplify this by using fragments.
The following query will return us exactly the same data as the previous one.
Of course, if I'm querying only one thing, there's no point in throwing it into a fragment.
However, if there were more objects or the query was more complicated, fragments allow us to optimize it.
In GraphQL it is also possible to use variables, variables are usually passed on by programming languages, but for the sake of completeness, I will show you how to use them.
Before the first curly bracket, I open a round bracket and define ( with the $ sign ) a variable named x in it, then I make a colon and a space and define the type of the variable, in this example, it will be Int (Integer). I could be done here, but I still would like to define a default value, so I put an equals sign followed by "2".
Then in the place where the variable should be passed I simply call it bt $x:
Queries can also use directives. In other words, conditional statements.
I'm going to add a second variable to my query named condition and set its type to Boolean, with the default value true.
Then after pageInfo I placed @include(if: $condition) directive.
Since I have previously set the default value of the $condition variable to true, the condition will be met and the data will show up, but if I change it to false, the data will not.
code | The code of |
metadata | Metadata to be set. |
code | Code of |
scope | Scope of |
name | Name of |
format | Format of |
code | Code of |
scope | Scope of |
name | Name of |
code | Code of |
scope | Scope of |
name | Name of |
code | Code of |
scope | Scope of |
name | Name of |
code | Code of |
scope | Scope of |
name | Name of |
options | Options of |
code | Code of |
scope | Scope of |
name | Name of |
code | Code of |
scope | Scope of |
name | Name of |
currency | Currency of |
code | Code of |
scope | Scope of |
name | Name of |
code | Code of |
scope | Scope of |
name | Name of |
options | Options of |
code | Code of |
scope | Scope of |
name | Name of |
richEdit | Is rich edit enabled. |
code | Code of |
scope | Scope of |
name | Name of |
code | Code of |
scope | Scope of |
name | Name of |
unitName | Unit name for |
code | The code of |
format | Format of |
code | The code of |
code | The code of |
metadataKeys | Metadata keys to be deleted. |
code | The code of |
option | Option to be added. |
code | The code of |
optionCode | Option to be deleted. |
code | The code of |
optionCode | Option to be changed. |
optionName | Option name to be set. |
code | The code of |
options | Options to be set. |
code | The code of |
customFieldCode | Code of the custom field to be configured. |
code | The code of |
customFieldCode | Code of the custom field to be configured. |
code | The code of |
customFieldCode | Code of the custom field to be configured. |
code | The code of |
customFieldCode | Code of the custom field to be configured. |
code | The code of |
optionCode | Option to be changed. |
customFieldCode | Code of the custom field to be configured. |
translations | Translations of the value to be added. |
code | The code of |
optionCode | Option to be changed. |
customFieldCode | Code of the custom field to be configured. |
translations | Translations of the value to be added. |
code | The code of |
optionCode | Option to be changed. |
customFieldCode | Code of the custom field to be configured. |
translations | Translations of the value to be added. |
code | The code of |
optionCode | Option to be changed. |
customFieldCode | Code of the custom field to be configured. |
translations | Translations of the value to be added. |
code | The code of |
customFieldCode | Code of the custom field to be deleted. |
code | The code of |
optionCode | Option to be changed. |
customFieldCode | Code of the custom field changed. |
languages | Languages the translations to be deleted in. |
code | The code of |
currency | Currency to be set. |
code | The code of |
option | Option to be added. |
code | The code of |
optionCode | Option to be deleted. |
code | The code of |
optionCode | Option to be changed. |
optionName | Option name to be set. |
code | The code of |
options | Options to be set. |
code | The code of |
name | Name to be set. |
code | The code of |
richEdit | Is rich edit enabled. |
code | The code of |
unitName | Unit to be set. |
categoryCode | The code of |
attributeCode | The code of |
translations | Translations of the value to be added. |
categoryCode | The code of |
attributeCode | The code of |
translations | Translations of the value to be added. |
categoryCode | The code of |
attributeCode | The code of |
translations | Translations of the value to be added. |
categoryCode | The code of |
attributeCode | The code of |
translations | Translations of the value to be added. |
categoryCode | The code of |
attributeCode | The code of |
translations | Translations of the value to be added. |
categoryCode | The code of |
attributeCode | The code of |
translations | Translations of the value to be added. |
categoryCode | The code of |
attributeCode | The code of |
translations | Translations of the value to be added. |
categoryCode | The code of |
attributeCode | The code of |
translations | Translations of the value to be added. |
categoryCode | The code of |
attributeCode | The code of |
translations | Translations of the value to be added. |
categoryCode | The code of |
attributeCode | The code of |
translations | Translations of the value to be added. |
categoryCode | The code of |
attributeCode | The code of |
translations | Translations of the value to be added. |
categoryCode | The code of |
attributeCode | The code of |
translations | Translations of the value to be added. |
attributeCode | The code of |
attributeCode | The code of |
code | The code of |
name | The name of |
code | The code of |
attributeCode | The code of |
languages | Languages the translations to be deleted in. |
code | The code of |
code | The code of |
name | Name to be set. |
language |
value | Translation value to be set. |
language |
value | Translation value to be set. |
language |
value | Translation value to be set. |
language | Language the translation to be added in. |
value | Translation value to be set. |
language |
value | Translation value to be set. |
key | Key of the metadata value to be set on. |
value | Value to be set. |
name | The name of |
folderPath | Folder |
path | The path of |
name | The name of |
folderPath | Folder |
createFolderPath | Creates folderPath if does not exist. Defaults to |
path | The path of |
folderPath | Folder |
path | The path of |
path | The path of |
alt | Alt to be set. |
path | The path of |
name | Name to be set. |
path | The path of |
title | Title to be set. |
language |
value | Translation value to be set. |
language |
value | Translation value to be set. |
code | Code of the |
name | Name to be set. |
language |
value | Translation value to be set. |
sku | The sku of |
attributeCode | The code of |
translations | Translations of the value to be added. |
sku | The sku of |
attributeCode | The code of |
translations | Translations of the value to be added. |
sku | The sku of |
attributeCode | The code of |
translations | Translations of the value to be added. |
sku | The sku of |
attributeCode | The code of |
translations | Translations of the value to be added. |
sku | The sku of |
attributeCode | The code of |
translations | Translations of the value to be added. |
sku | The sku of |
attributeCode | The code of |
translations | Translations of the value to be added. |
sku | The sku of |
attributeCode | The code of |
translations | Translations of the value to be added. |
sku | The sku of |
attributeCode | The code of |
translations | Translations of the value to be added. |
sku | The sku of |
attributeCode | The code of |
translations | Translations of the value to be added. |
sku | The sku of |
attributeCode | The code of |
translations | Translations of the value to be added. |
sku | The sku of |
attributeCode | The code of |
translations | Translations of the value to be added. |
sku | The sku of |
attributeCode | The code of |
translations | Translations of the value to be added. |
sku | The sku of |
categoryCodes | Categories to be added. |
sku | Sku of |
templateCode | Template of |
categoryCode | Categories of |
sku | Sku of |
templateCode | Template of |
categoryCode | Categories of |
sku | Sku of |
templateCode | Template of |
categoryCode | Categories of |
sku | The sku of |
attributeCode | The code of |
languages | Languages the translations to be deleted in. |
sku | The sku of |
sku | The sku of |
childSku | Child to be added. |
quantity | Quantity the child to be added in. |
sku | The sku of |
childSku | Child to be removed. |
sku | The sku of |
childSku | Child quantity to be modified. |
quantity | Quantity to be set. |
language |
value | Translation value to be set. |
sku | The sku of |
categoryCodes | Categories to be removed. |
sku | The sku of |
template | Template to be set. |
sku | The sku of |
variantSku | Variant to be added. |
sku | The sku of |
variantSku | Variant to be removed. |
sku | The sku of |
bindingCodes | Binding attributes to be set. |
language |
value | Translation value to be set. |
language | Language the translation to be added in. |
value | Translation value to be set. |
language | Language the translation to be added in. |
value | Translation value to be set. |
language |
value | Translation value to be set.
Accepts Attribute Variables in format |
language | Language the translation to be added in. |
value | Translation value to be set. |
language |
value | Translation value to be set. |
language | Language the translation to be added in. |
value | Translation value to be set. |
language |
value | Translation value to be set. |
first
parameter put on limit how many categories are fetched in one result
example response:
Since we received information that the next page exists data.categoryStream.pageInfo.hasNextPage=true
we should request the next resource. The query is very similar to the previous one except we are passing the appropriate cursor
with the request:
After
the parameter represents the appropriate cursor that identifies a last-fetched resource. Available as either cursor
field of the node or the endCursor
of PageInfo
object.
example response:
we do know that there is no next page, therefore, nothing to fetch at the very moment. We can retry the next request(for the retrieved cursor) with i.e. increased interval not to waste resources.
Alternatively in some systems, we will want to only fetch the identifier of the resource using some sort of queueing system in order to distribute the consumption processes. In that case, we can just fetch our resource id(code in the case of categories) and the PageInfo
object:
and fetch it in the separate consuming process via a single resource query:
The rest of the process looks the same for the paginating over the stream.
Though given above content provides an example of handling categories you can use the same approach for every other resource available via streams like products, multimedia, and attributes.
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
Keeping in mind future extendibility we came to the conclusion that the current API schema does not support the attribute values best. It bases on attribute value type which basically comes down to string, numeric representations shared among different attribute types.
Whenever a change is required it touches all other attribute types with the same value type.
Your current query looked probably something like this
With the new schema, you can write the query with a very similar result in mind - grouping the values by the represented value type.
Since the option attributes are represented in a different way - now representing entire options rather than their codes the output in those types is a bit different those values will have to be returned differentely
The new schema also grants you the possibility of easier unpacking of specific attribute types. Since AttributeValue
type also recevided specific per attribute type you can write queries with conditional on this level - note unit and price attributes - there's no need to make separate unpacking of attribute list and values.
Wrapping things up the new value schema allows you not only to write a query providing a very similar result to the previous approach but also we trust is much more flexible and resistant to future changes.
Language the translation to be added in. Allowed empty only in case of scope.
Language the translation to be added in. Allowed empty only in case of scope.
Language the translation to be added in. Allowed empty only in case of scope.
Language the translation to be added in. Allowed empty only in case of scope.
Language the translation to be added in. Allowed empty only in case of scope.
Language the translation to be added in. Allowed empty only in case of scope.
Language the translation to be added in. Allowed empty only in case of scope.
Language the translation to be added in. Allowed empty only in case of scope.
Language the translation to be added in. Allowed empty only in case of scope.
Language the translation to be added in. Allowed empty only in case of scope.
Language the translation to be added in. Allowed empty only in case of scope.
Language the translation to be added in. Allowed empty only in case of scope.
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 to understand the approach.
This will allow you to get list of first 100 product no matter if they're simple or variable.
By default query would return the first 50 products, so using "first" argument is necessary.
Please remember that limit for "first" is 200
This is how you can get data after some cursor via API.
This approach can be helpful if you do not use the "first" argument or records in a stream that exceeded 200.
Please take note that the cursor is a string, therefore needs to be put in quotes.
To understand what streams and cursors are, please refer to the "Query types" article in the "Overview" section on this page.
It's also possible to use both "after" and "first" arguments in one query. Example below will return 100 records (if they exist), that are after endCursor in productStream.
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.
This query will return all multimedia in PIM and extra info about them.
This is how you can create a simple product via API.
Please note that for this to work, you need to create a template beforehand. This mutation can only assign products to an already existing template, and will NOT create a new one.
You can also assign a category to the newly created product in the same query.
While templateCode is required, categoryCodes is not. But if used, also needed to be created beforehand.
Example query on how to get values of custom fields options
In this example, we're using a specific product with SKU47.
For your query please use your own.
Here's how you can set child product quantity via API.
That's how you add child product to grouping one.
Please bear in mind, that quantity isn't required and if used, cannot be a string - must be Integer (so there's no quotation mark)
Both products must exist before this operation.
This is how you can create a simple product via API.
Please note that for this to work, you need to create a template beforehand. This mutation can only assign products to an already existing template, and will NOT create a new one.
You can also assign a category to the newly created product in the same query.
While templateCode is required, categoryCodes is not. But if used, also needed to be created beforehand.
This is how you can create variable product via API.
Please note that for this to work, you need to create a template beforehand. This mutation can only assign the product to an already existing template, and will NOT create a new one.
While templateCode is required, categoryCodes is not. But if used, also needed to be created beforehand.
This is how you remove child product from grouping one via API.
This is how you can remove variant product from variable one via API
Here's how to add variant to variable product via API.
Both products must exist before this operation.
This is how you can create multimedia via API.
To create multimedia via API you need to send the data by a multipart request with upload
and query
headers.
The folder to which multimedia will be uploaded must already exist.
folderPath parameter is optional, if not included multimedia will be uploaded to the main folder.
Max allowed file size is 100 MB
The MultimediaPath
scalar type represents a textual combination of MultimediaFolderPath,
and MultimediaName
joined with '/' Multimedia
identifier pointing to its exact location. If the file is in the root folder you need to skip MultimediaFolderPath in path.
This is how you can change the name of single multimedia via API.
The MultimediaPath
scalar type represents a textual combination of MultimediaFolderPath,
and MultimediaName
joined with '/' Multimedia
identifier pointing to its exact location. If the file is in the root folder you need to skip MultimediaFolderPath in path.
Product, attribute, and file must already exist
value - path to the file
The MultimediaPath
scalar type represents a textual combination of MultimediaFolderName
, and MultimediaName
joined with '/' Multimedia
identifier pointing to its exact location.
This is how you can query GraphQL API on product attributes by SKU
The path to the file can be found with this .
Both sku and template must already exist.
code - system name of the category
language - language code ex: pl_PL
value - translated name of the category (string)
Remember to change "buty" with your own category code (system name)
This mutation assumes that below already exists in the system:
template with code template
textarea attribute with code description
textarea attribute with code short_description
text attribute with code text
pl_PL
language is active
Note that each mutation is aliased (create: (...)
).
Aliasing is required if there are at least two same mutations in one batch - productAddAttributeValueTranslationsTextarea
in this case.
For simplicity, all mutations have been aliased in the example but it'd also suffice to only alias duplicates.
Please keep in mind that to add the option attribute "Model" must first exist.
Scalars represent primitive values like Integer or String.
Represents true
or false
.
Represents a currency code in ISO 4217 format. Example: PLN
.
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 textual data, represented as UTF-8 character sequences. The String
type is most often used by GraphQL to represent free-form human-readable text.
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:
Implemented by:
Represents a value defining a specific attribute.
Fields:
Implemented by:
Represents a translated attribute value for language.
Fields:
Implemented by:
A custom field represents a type of value that can be assigned to an attribute option.
Fields:
Implemented by:
Represents a value defining a specific CustomField
in specific language only.
Fields:
Implemented by:
Represents a value defining a specific CustomField
.
Fields:
Implemented by:
Represents a translated custom field value for language.
Fields:
Implemented by:
An attribute with a predefined set of values(options).
Implements:
Fields:
Implemented by:
Fields:
Implemented by:
Queries allow retrieving data from the server.
Finds an Attribute
.
Arguments:
Arguments:
Arguments:
Finds a Category
.
Arguments:
Provides a list of attributes allowed to use in a category.
Arguments:
Arguments:
Arguments:
Finds a CategoryTree
.
Arguments:
Arguments:
Arguments:
Provides a list of active languages.
Arguments:
Finds a Multimedia
.
Arguments:
Finds a MultimediaFolder
.
Arguments:
Provides a list of multimedia folders.
Arguments:
Arguments:
Finds a Product
.
Arguments:
Arguments:
Arguments:
Finds a Section
.
Arguments:
Provides a list of sections.
Arguments:
Finds a Template
.
Arguments:
Provides a list of templates.
Arguments:
Represents the behavior of language translation of values.
Represents a lowercased, alphanumerical, and _
textual identifier of 1-128 chars in length. It cannot be id
or start with esa_
.
Represents a lowercased, alphanumerical, and _
textual identifier of 1-128 chars in length.
Represents a textual identifier of 1-128 chars in length.
Represents a lowercased, alphanumerical, and _
textual identifier in a single context of 1-128 chars in length.
Represents an alphanumeric and _
key of 1-128 chars in length.
Represents an alphanumeric, \
, -
and _
textual name of 1-255 chars in length.
Represents a textual combination of scalars joined with /
identifier pointing to its exact location.
Represents a not containing /
textual name of 1-128 chars in length.
Represents a textual combination of , and joined with /
identifier pointing to its exact location.
Represents a textual identifier in a single context of 1-128 chars in length.
Represents a textual identifier of 3-32 chars in length.
Represents a textual identifier of 1-255 chars in length.
Represents a textual identifier of 3-32 chars in length.
Represents a textual name of 1-255 chars in length.
Returns:
Provides a of deleted attribute codes.
Returns:
Provides a of attributes.
Returns:
Returns:
Returns:
Provides a of deleted category codes.
Returns:
Provides a of categories.
Returns:
Returns:
Provides a of deleted category tree codes.
Returns:
Provides a of category trees.
Returns:
Returns:
Returns:
Returns:
Returns:
Provides a of multimedia.
Returns:
Returns:
Provides a of deleted product SKUs.
Returns:
Provides a of products.
Returns:
Returns:
Returns:
Returns:
Returns:
Unions represent possible many types.
Represents a product grouped in GroupingProduct
.
Types:
code | Readable id of |
Translatable name allowing to set different values in every active language. |
scope | Scope of |
metadata | Metadata allows describing the |
A value translations. |
attribute | An |
language | A language of a translation. |
code | Readable id of |
customField | A |
customField | A |
A value translations. |
language | A language of a translation. |
A list of options of an |
customFields | Configured attribute custom fields. |
sku | sku |
A list of categories |
template | Template of |
A list of |
createdAt | Creation date. |
editedAt | Last edition date. |
code | The code of a searched |
after | Provides elements after the specified cursor. |
first | Provides up to first |
after | Provides elements after the specified cursor. |
first | Provides up to first |
code | The code of a searched |
after | Provides elements after the specified cursor. |
first | Provides up to first |
after | Provides elements after the specified cursor. |
first | Provides up to first |
after | Provides elements after the specified cursor. |
first | Provides up to first |
code | The code of a searched |
after | Provides elements after the specified cursor. |
first | Provides up to first |
after | Provides elements after the specified cursor. |
first | Provides up to first |
after | Provides elements after the specified cursor. |
first | Provides up to first |
path | The path of a searched |
path | The path of a searched |
after | Provides elements after the specified cursor. |
first | Provides up to first |
after | Provides elements after the specified cursor. |
first | Provides up to first |
sku | The sku of a searched |
after | Provides elements after the specified cursor. |
first | Provides up to first |
after | Provides elements after the specified cursor. |
first | Provides up to first |
code | The code of a searched |
after | Provides elements after the specified cursor. |
first | Provides up to first |
code | The code of a searched |
after | Provides elements after the specified cursor. |
first | Provides up to first |
name (languages: )
translations (languages: )
translations (languages: )
optionList (after: , first: )
categoryList (after: , first: )
attributeList (after: , first: , codes: )
Objects represent the resources you can access.
A payload for a mutation.
Fields:
The connection for Attribute
Fields:
An edge in a connection.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
The connection for AttributeCode
Fields:
An edge in a connection.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
The connection for AttributeValue
Fields:
An edge in a connection.
Fields:
Represents a category.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
The connection for Category
Fields:
An edge in a connection.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
The connection for CategoryCode
Fields:
An edge in a connection.
Fields:
A payload for a mutation.
Fields:
Represent a tree of categories.
Fields:
The connection for CategoryTree
Fields:
The connection for #categorytreecode
Fields:
An edge in a connection.
Fields:
An edge in a connection.
Fields:
Represents a leaf (node) of a category tree.
Fields:
The connection for #categorytreeleaf
Fields:
An edge in a connection.
Fields:
Represents a date.
Implements:
Fields:
An attribute value.
Implements:
Fields:
Translation of an attribute value.
Implements:
Fields:
Represents a collection of multimedia files of any type.
Implements:
An attribute value.
Implements:
Fields:
Translation of an attribute value.
Implements:
Fields:
Represents a collection of images.
Implements:
An attribute value.
Implements:
Fields:
Translation of an attribute value.
Implements:
Fields:
Represents a product grouped in GroupingProduct with a specific quantity for the set.
Fields:
The connection for GroupedProduct
Fields:
An edge in a connection.
Fields:
A product grouping other products. Can represent products like the ones with common features or promotional packages.
Implements:
Fields:
Represents an image.
Implements:
An attribute value.
Implements:
Fields:
Translation of an attribute value.
Implements:
Fields:
Represents an image.
Implements:
Represents an image translated value.
Implements:
Fields:
A custom field value.
Implements:
Fields:
Translation of a custom field value.
Implements:
Fields:
The connection for Language
Fields:
An edge in a connection.
Fields:
Represents a metadatum of an attribute.
Fields:
Represents a multimedia file. The multimedia can be a text file, image, document file, etc.
Fields:
The connection for Multimedia
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
An edge in a connection.
Fields:
Represents a filesystem-like folder allowing to organize multimedia. Does not correspond to the physical file path or its URL.
Fields:
The connection for MultimediaFolder
Fields:
A payload for a mutation.
Fields:
An edge in a connection.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
Represents a set of options allowing multiple choices.
Implements:
An attribute value.
Implements:
Fields:
Translation of an attribute value.
Implements:
Fields:
Represents a number.
Implements:
An attribute value.
Implements:
Fields:
Translation of an attribute value.
Implements:
Fields:
Represents an option of a select and multi-select attribute.
Fields:
The connection for Option
Fields:
An edge in a connection.
Fields:
Represents an option of a select and multi-select attribute.
Fields:
Simple representation of an Option of select and multi-select attributes with the name in a specific language only.
Fields:
Information about pagination in a connection.
Fields:
Represents a positive price of a specific currency.
Implements:
Fields:
An attribute value.
Implements:
Fields:
Translation of an attribute value.
Implements:
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
The connection for Product
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
The connection for Sku
Fields:
A payload for a mutation.
Fields:
An edge in a connection.
Fields:
A payload for a mutation.
Fields:
An edge in a connection.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
Represents a relation to the collection of products.
Implements:
An attribute value.
Implements:
Fields:
Translation of an attribute value.
Implements:
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
Represents a set of common attributes - technical data, SEO-related parameters, etc.
Fields:
The connection for Section
Fields:
An edge in a connection.
Fields:
Represents a set of options allowing single choice.
Implements:
An attribute value.
Implements:
Fields:
Translation of an attribute value.
Implements:
Fields:
A simple product.
Implements:
Represents a set of attributes specific to a market segment.
Fields:
The connection for Template
Fields:
An edge in a connection.
Fields:
Represents a text.
Implements:
Fields:
An attribute value.
Implements:
Fields:
Translation of an attribute value.
Implements:
Fields:
Represents a text.
Implements:
Represents a text translated value.
Implements:
Fields:
A custom field value.
Implements:
Fields:
Translation of a custom field value.
Implements:
Fields:
Represents a text with RTE enabled.
Implements:
Represents a text with RTE translated value.
Implements:
Fields:
A custom field value.
Implements:
Fields:
Translation of a custom field value.
Implements:
Fields:
Represents a short text of up to 255 chars.
Implements:
An attribute value.
Implements:
Fields:
Translation of an attribute value.
Implements:
Fields:
Represents a short text of up to 255 chars.
Implements:
Represents a text translated value.
Implements:
Fields:
A custom field value.
Implements:
Fields:
Translation of a custom field value.
Implements:
Fields:
Represents a translated value.
Fields:
Represents a unit. Can be used to define specific scalar types like a Meter.
Fields:
Represents a numeric scalar unit.
Implements:
Fields:
An attribute value.
Implements:
Fields:
Translation of an attribute value.
Implements:
Fields:
A product representing multiple variants i.e. products of different sizes or colors.
Fields:
This is how you can set alternative value to a single multimedia via API.
The MultimediaPath
scalar type represents a textual combination of MultimediaFolderPath,
and MultimediaName
joined with '/' Multimedia
identifier pointing to its exact location. If the file is in the root folder you need to skip MultimediaFolderPath in path.
Attribute Gallery and Product identified with SKU must already exist.
value: is the path to an image, you can get it with query "multimediaStream"
attribute
Changed Attribute
.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
node
Node of the Edge.
cursor
The Edge cursor.
attribute
Created Attribute
.
attribute
Created Attribute
.
attribute
Created Attribute
.
attribute
Created Attribute
.
attribute
Created Attribute
.
attribute
Created Attribute
.
attribute
Created Attribute
.
attribute
Created Attribute
.
attribute
Created Attribute
.
attribute
Created Attribute
.
attribute
Created Attribute
.
attribute
Created Attribute
.
attribute
Changed Attribute
.
attribute
Changed Attribute
.
code
Deleted AttributeCode
.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
node
Node of the Edge.
cursor
The Edge cursor.
attribute
Changed Attribute
.
attribute
Changed Attribute
.
attribute
Changed Attribute
.
attribute
Changed Attribute
.
attribute
Changed Attribute
.
attribute
Changed Attribute
.
attribute
Changed Attribute
.
attribute
Changed Attribute
.
attribute
Changed Attribute
.
attribute
Changed Attribute
.
attribute
Changed Attribute
.
attribute
Changed Attribute
.
attribute
Changed Attribute
.
attribute
Changed Attribute
.
attribute
Changed Attribute
.
attribute
Changed Attribute
.
attribute
Changed Attribute
.
attribute
Changed Attribute
.
attribute
Changed Attribute
.
attribute
Changed Attribute
.
attribute
Changed Attribute
.
attribute
Changed Attribute
.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
node
Node of the Edge.
cursor
The Edge cursor.
code
Readable id of Category
.
name (languages: [Language!])
Translatable name allowing to set different values in every active language.
attributeList (after: String, first: Int, codes: [AttributeCode!])
A list of attribute values.
first
argument cannot be lesser than 0 and its default value is 50.
category
Changed Category
.
category
Changed Category
.
category
Changed Category
.
category
Changed Category
.
category
Changed Category
.
category
Changed Category
.
category
Changed Category
.
category
Changed Category
.
category
Changed Category
.
category
Changed Category
.
category
Changed Category
.
category
Changed Category
.
categoryAttributeList
Updated list of attributes.
categoryAttributeList
Updated list of attributes.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
node
Node of the Edge.
cursor
The Edge cursor.
category
Created Category
.
category
Changed Category
.
code
Deleted CategoryCode
.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
node
Node of the Edge.
cursor
The Edge cursor.
category
Changed Category
.
code
Readable id of CategoryTree
.
name (languages: [Language!])
Translatable name allowing to set different values in every active language.
A list of categories belonging to the CategoryTree
.
first
argument cannot be lesser than 0, higher than 1000 and its default value is 50.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
node
Node of the Edge.
cursor
The Edge cursor.
node
Node of the Edge.
cursor
The Edge cursor.
category
A leaf of the tree.
parentCategory
Parent leaf of to leaf.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
node
Node of the Edge.
cursor
The Edge cursor.
format
Represented date format.
attribute
An Attribute
describing the value.
translations (languages: [Language!])
A value translations.
value
A translation value of an Attribute
.
attribute
An Attribute
describing the value.
translations (languages: [Language!])
A value translations.
value
A translation value of an Attribute
.
attribute
An Attribute
describing the value.
translations (languages: [Language!])
A value translations.
value
A translation value of an Attribute
.
quantity
Quantity of a grouped Product
.
product
Grouped Product
.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
node
Node of the Edge.
cursor
The Edge cursor.
A list of children.
first
argument cannot be lesser than 0 and its default value is 50.
attribute
An Attribute
describing the value.
translations (languages: [Language!])
A value translations.
value
A translation value of an Attribute
.
customField
A CustomField
describing the value.
value
A value in the context language.
customField
A CustomField
describing the value.
translations (languages: [Language!])
A value translations.
value
A translation value of a CustomField
.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
node
Node of the Edge.
cursor
The Edge cursor.
key
A key of metadatum.
value
Metadata value.
path
Readable id of Multimedia
.
name
Given file name.
extension
File extension.
mime
Mime type of the file.
size
File size in bytes.
alt (languages: [Language!])
Represents the alternate text for an image if it cannot be displayed.
title (languages: [Language!])
Represents the title tooltip value.
url
URL to download binary multimedia file.
folder
Folder where multimedia is stored.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
multimedia
Created Multimedia
.
path
Deleted MultimediaPath
.
node
Node of the Edge.
cursor
The Edge cursor.
path
Readable id of MultimediaFolder
.
name
Name of MultimediaFolder
.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
multimediaFolder
Changed MultimediaFolder
.
node
Node of the Edge.
cursor
The Edge cursor.
multimedia
Changed Multimedia
.
multimedia
Replacing Multimedia
.
multimedia
Changed Multimedia
.
multimedia
Changed Multimedia
.
multimedia
Changed Multimedia
.
multimedia
Changed Multimedia
.
attribute
An Attribute
describing the value/
translations (languages: [Language!])
A value translations.
translatedValue
Represents simplified translated value containing scalar names in context language only.
value
A translation value of an Attribute
.
attribute
An Attribute
describing the value.
translations (languages: [Language!])
A value translations.
value
A translation value of an Attribute
.
code
Readable id of Option
.
name (languages: [Language!])
Translatable name allowing to set different values in every active language.
customFields
CustomField
values.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
node
Node of the Edge.
cursor
The Edge cursor.
code
Readable id of Option
.
name (languages: [Language!])
Translatable name allowing to set different values in every active language.
code
Code of Option
.
name
Option
name in the context language.
startCursor
When paginating backwards, the cursor to continue.
endCursor
When paginating forwards, the cursor to continue.
hasPreviousPage
When paginating backwards, are there more items?
hasNextPage
When paginating forwards, are there more items?
currency
The currency price is in.
attribute
An Attribute
describing the value.
translations (languages: [Language!])
A value translations.
value
A translation value of an Attribute
.
product
Changed Product
.
product
Changed Product
.
product
Changed Product
.
product
Changed Product
.
product
Changed Product
.
product
Changed Product
.
product
Changed Product
.
product
Changed Product
.
product
Changed Product
.
product
Changed Product
.
product
Changed Product
.
product
Changed Product
.
product
Changed Product
.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
product
Created Product
.
product
Created Product
.
product
Created Product
.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
product
Changed Product
.
node
Node of the Edge.
cursor
The Edge cursor.
sku
Deleted Sku
.
node
Node of the Edge.
cursor
The Edge cursor.
product
Changed Product
.
product
Changed Product
.
product
Changed Product
.
attribute
An Attribute
describing the value.
translations (languages: [Language!])
A value translations.
value
A translation value of an Attribute
.
product
Changed Product
.
product
Changed Product
.
product
Changed Product
.
product
Changed Product
.
product
Changed Product
.
code
Readable id of Section
.
A list of attributes used in the Section
.
first
argument cannot be lesser than 0 and its default value is 50.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
node
Node of the Edge.
cursor
The Edge cursor.
attribute
An Attribute
describing the value.
translations (languages: [Language!])
A value translations.
translatedValue
Represents simplified translated value containing scalar names in context language only.
value
A translation value of an Attribute
.
code
Readable id of Template
.
A list of attributes used in the Template
.
first
argument cannot be lesser than 0 and its default value is 50.
A list of sections used in the Template
.
first
argument cannot be lesser than 0 and its default value is 50.
edges
Edges of the connection.
pageInfo
Page info of the connection.
totalCount
Count of all edges in connection.
node
Node of the Edge.
cursor
The Edge cursor.
richEdit
Is rich text editor enabled.
attribute
An Attribute
describing the value.
translations (languages: [Language!])
A value translations.
value
A translation value of an Attribute
.
rawValue
Represents raw textarea value translation with attribute variables unresolved in form of {{#attribute_code}}
.
customField
A CustomField
describing the value.
value
A value in the context language.
customField
A CustomField
describing the value.
translations (languages: [Language!])
A value translations.
value
A translation value of a CustomField
.
customField
A CustomField
describing the value.
value
A value in the context language.
customField
A CustomField
describing the value.
translations (languages: [Language!])
A value translations.
value
A translation value of a CustomField
.
attribute
An Attribute
describing the value.
translations (languages: [Language!])
A value translations.
value
A translation value of an Attribute
.
customField
A CustomField
describing the value.
value
A value in the context language.
customField
A CustomField
describing the value.
translations (languages: [Language!])
A value translations.
value
A translation value of a CustomField
.
value
Tranlated value.
language
Language of translation.
name
Name o Unit
.
symbol
Symbol of Unit
.
unit
Unit of Attribute
.
attribute
An Attribute
describing the value.
translations (languages: [Language!])
A value translations.
value
A translation value of an Attribute
.
bindings
A list of attributes by which variants are bonded.
A list of variants in VariableProduct
.
first
argument cannot be lesser than 0 and its default value is 50.