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...
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.
6406a966-10e9-4096-abfd-bf6764909fd2
Product does not have given child.
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
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 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.
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.
API schema contains Queries and Mutations.
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.
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
The changelog is a list of recent changes to GraphQL API schema.
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:
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:
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:
Queries allow retrieving data from the server.
Finds an Attribute
.
Returns: Attribute
Arguments:
Provides a stream of deleted attribute codes.
Returns: AttributeDeletedConnection
Arguments:
Provides a list of attribute options.
Returns: OptionConnection
Arguments:
Provides a stream of attributes.
Returns: AttributeConnection
Arguments:
Finds a Category
.
Returns: Category
Arguments:
Provides a list of attributes allowed to be used in a category.
Returns: AttributeConnection
Arguments:
Provides a stream of deleted category codes.
Returns: CategoryDeletedConnection
Arguments:
Provides a stream of categories.
Returns: CategoryConnection
Arguments:
Finds a CategoryTree
.
Returns: CategoryTree
Arguments:
Provides a stream of deleted category tree codes.
Returns: CategoryTreeDeletedConnection
Arguments:
Provides a stream of category trees.
Returns: CategoryTreeConnection
Arguments:
Provides a list of active languages.
Returns: LanguageConnection
Arguments:
Finds a Multimedia
.
Returns: Multimedia
Arguments:
Finds a MultimediaFolder
.
Returns: MultimediaFolder
Arguments:
Provides a list of multimedia folders.
Returns: MultimediaFolderConnection
Arguments:
Provides a stream of multimedia.
Returns: MultimediaConnection
Arguments:
Finds a Product
.
Returns: Product
Arguments:
Finds a Product
by unique attribute value.
Returns: Product
Arguments:
Provides a stream of deleted product SKUs.
Returns: ProductDeletedConnection
Arguments:
Provides a stream of products.
Returns: ProductConnection
Arguments:
Finds a Section
.
Returns: Section
Arguments:
Provides a list of sections.
Returns: SectionConnection
Arguments:
Finds a Template
.
Returns: Template
Arguments:
Provides a list of templates.
Returns: TemplateConnection
Arguments:
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:
Input fields:
Input fields:
Input fields:
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.
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
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.
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
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, there is nothing to fetch at the very moment. We can retry the next request(for the retrieved cursor) with i.e., an increased interval not to waste resources.
Alternatively in some systems, we will want only to fetch the identifier of the resource using some sort of queueing system in order to distribute the consumption processes. In that case, we can just fetch our resource ID (code in the case of categories) and the PageInfo
object:
and fetch it in the separate consuming process via a single resource query:
The rest of the process looks the same for the paginating over the stream.
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.
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.
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 .
Mutations allow modifing data on the server.
Adds Attribute
metadata.
Input fields:
Returns:
Creates DateAttribute
Input fields:
Returns:
Creates FileAttribute
Input fields:
Returns:
Creates GalleryAttribute
Input fields:
Creates ImageAttribute
Input fields:
Creates MultiSelectAttribute
Input fields:
Creates NumericAttribute
Input fields:
Creates PriceAttribute
Input fields:
Creates ProductRelationAttribute
Input fields:
Creates SelectAttribute
Input fields:
Creates TextareaAttribute
Input fields:
Creates TextAttribute
Input fields:
Creates UnitAttribute
Input fields:
Sets a DateAttribute
format.
Input fields:
Deletes Attribute
.
Input fields:
Deletes Attribute
metadata.
Input fields:
Adds a MultiSelectAttribute
option.
Input fields:
Deletes a MultiSelectAttribute
option.
Input fields:
Sets a MultiSelectAttribute
option name.
Input fields:
Sets a MultiSelectAttribute
options.
Input fields:
Adds a custom field to OptionAttribute
.
Input fields:
Adds a custom field to OptionAttribute
.
Input fields:
Adds a custom field to OptionAttribute
.
Input fields:
Adds a custom field to OptionAttribute
.
Input fields:
Adds custom field value translations to an Option
.
Input fields:
Adds custom field value translations to an Option
.
Input fields:
Adds custom field value translations to an Option
.
Input fields:
Adds custom field value translations to an Option
.
Input fields:
Deletes custom field from an OptionAttribute
.
Input fields:
Deletes custom field value translations from a Option
.
Input fields:
Sets a PriceAttribute
currency.
Input fields:
Adds a SelectAttribute
option.
Input fields:
Deletes a SelectAttribute
option.
Input fields:
Sets a SelectAttribute
option name.
Input fields:
Sets a SelectAttribute
options.
Input fields:
Sets Attribute
name.
Input fields:
Sets a TextareaAttribute
richEdit.
Input fields:
Sets an UnitAttribute
unit.
Input fields:
Adds a DateAttribute
value translations to a category.
Input fields:
Adds a FileAttribute
value translations to a category.
Input fields:
Adds a GalleryAttribute
value translations to a category.
Input fields:
Adds a ImageAttribute
value translations to a category.
Input fields:
Adds a MultiSelectAttribute
value translations to a category.
Input fields:
Adds a NumericAttribute
value translations to a category.
Input fields:
Adds a PriceAttribute
value translations to a category.
Input fields:
Adds a ProductRelationAttribute
value translations to a category.
Input fields:
Adds a SelectAttribute
value translations to a category.
Input fields:
Adds a TextareaAttribute
value translations to a category.
Input fields:
Adds a TextAttribute
value translations to a category.
Input fields:
Adds a UnitAttribute
value translations to a category.
Input fields:
Adds an Attribute
as allowed to be used in Category
.
Input fields:
Removes an Attribute
as allowed to be used in Category
.
Input fields:
Creates a Category
.
Input fields:
Deletes an attribute value translations from a Category
.
Input fields:
Deletes a Category
.
Input fields:
Sets a Category
name.
Input fields:
Creates a Multimedia
.
Input fields:
Deletes a Multimedia
.
Input fields:
Creates a MultimediaFolder
.
Input fields:
Deletes a MultimediaFolder
.
Input fields:
Moves a Multimedia
to MultimediaFolder
. Multimedia.path
identifier is changed as a result.
Input fields:
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:
Sets a Multimedia
alt.
Input fields:
Sets a Multimedia
name.
Input fields:
Sets a Multimedia
title.
Input fields:
Adds a DateAttribute
value translations to a product.
Input fields:
Adds a FileAttribute
value translations to a product.
Input fields:
Adds a GalleryAttribute
value translations to a product.
Input fields:
Adds a ImageAttribute
value translations to a product.
Input fields:
Adds a MultiSelectAttribute
value translations to a product.
Input fields:
Adds a NumericAttribute
value translations to a product.
Input fields:
Adds a PriceAttribute
value translations to a product.
Input fields:
Adds a ProductRelationAttribute
value translations to a product.
Input fields:
Adds a SelectAttribute
value translations to a product.
Input fields:
Adds a TextareaAttribute
value translations to a product.
Input fields:
Adds a TextAttribute
value translations to a product.
Input fields:
Adds a UnitAttribute
value translations to a product.
Input fields:
Adds a product to categories.
Input fields:
Creates a GroupingProduct
.
Input fields:
Creates a SimpleProduct
.
Input fields:
Creates a VariableProduct
.
Input fields:
Deletes an attribute value translations from a Product
.
Input fields:
Deletes a product.
Input fields:
Adds a child product to a GroupingProduct
.
Input fields:
Removes a child product from a GroupingProduct
.
Input fields:
Set a child product quantity of a GroupingProduct
.
Input fields:
Removes a product from categories.
Input fields:
Sets a product Template
.
Input fields:
Adds a variant product to a VariableProduct
.
Input fields:
Removes a variant product from a VariableProduct
.
Input fields:
Sets binding attributes to VariableProduct
.
Input fields:
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.
This query will return all multimedia in PIM and extra info about them.
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.
Objects represent the resources you can access.
A payload for a mutation.
Fields:
The connection for
Fields:
An edge in a connection.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
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:
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:
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:
Fields:
An edge in a connection.
Fields:
A payload for a mutation.
Fields:
Represent a tree of categories.
Fields:
Fields:
Fields:
An edge in a connection.
Fields:
An edge in a connection.
Fields:
Represents a leaf (node) of a category tree.
Fields:
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:
Fields:
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:
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:
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:
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
An edge in a connection.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
Represents a set of options allowing multiple choices.
Implements:
An attribute value.
Implements:
Fields:
Translation of an attribute value.
Implements:
Fields:
Represents a number.
Implements:
An attribute value.
Implements:
Fields:
Translation of an attribute value.
Implements:
Fields:
Represents an option of a select and multi-select attribute.
Fields:
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:
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
A payload for a mutation.
Fields:
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:
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:
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 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 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 .
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
Returns:
The connection for
The connection for
The connection for
The connection for
The connection for
The connection for
The connection for
Represents a product grouped in with a specific quantity for the set.
The connection for
The connection for
The connection for
The connection for
The connection for
The connection for
The connection for
The connection for
The connection for
code
Readable id of Attribute
.
name (languages: [Language!])
Translatable name allowing to set different values in every active language.
scope
Scope of Attribute
determining its values behavior.
metadata
Metadata allows describing the Attribute
in an enhanced, custom way.
translations (languages: [Language!])
A value translations.
attribute
An Attribute
describing the type of value.
language
A language of a translation.
code
Readable id of CustomField
.
customField
A CustomField
describing the type of value.
customField
A CustomField
describing the type of value.
translations (languages: [Language!])
A value translations.
language
A language of a translation.
A list of options of an Attribute
.
first
argument cannot be lesser than 0 and higher than 200. The default value is 50.
customFields
Configured attribute custom fields.
sku
sku
A list of categories Product
belongs to.
first
argument cannot be lesser than 0 and its default value is 50.
template
Template of Product
.
attributeList (after: String, first: Int, codes: [AttributeCode!])
A list of Attribute
values.
first
argument cannot be lesser than 0 and its default value is 50.
createdAt
Creation date.
editedAt
Last edition date.
code
The code of a searched Attribute
.
after
Provides elements after the specified cursor.
first
Provides up to first n
results. Value cannot be less than 0 and higher than 200.
The default value is 50.
code
The code of a searched Attribute
.
filters
Filters for the query.
after
Provides elements after the specified cursor.
first
Provides up to first n
results. Value cannot be less than 0 and higher than 200.
The default value is 50.
after
Provides elements after the specified cursor.
first
Provides up to first n
results. Value cannot be less than 0 and higher than 200.
The default value is 50.
code
The code of a searched Category
.
after
Provides elements after the specified cursor.
first
Provides up to first n
results. Value cannot be less than 0 and higher than 500.
The default value is 50.
after
Provides elements after the specified cursor.
first
Provides up to first n
results. Value cannot be less than 0 and higher than 200.
The default value is 50.
after
Provides elements after the specified cursor.
first
Provides up to first n
results. Value cannot be less than 0 and higher than 200.
The default value is 50.
code
The code of a searched CategoryTree
.
after
Provides elements after the specified cursor.
first
Provides up to first n
results. Value cannot be less than 0 and higher than 200.
The default value is 50.
after
Provides elements after the specified cursor.
first
Provides up to first n
results. Value cannot be less than 0 and higher than 200.
The default value is 50.
after
Provides elements after the specified cursor.
first
Provides up to first n
results. Value cannot be less than 0 and higher than 1000.
The default value is 50.
path
The path of a searched Multimedia
.
path
The path of a searched MultimediaFolder
.
after
Provides elements after the specified cursor.
first
Provides up to first n
results. Value cannot be less than 0 and higher than 300.
The default value is 50.
after
Provides elements after the specified cursor.
first
Provides up to first n
results. Value cannot be less than 0 and higher than 200.
The default value is 50.
sku
The sku of a searched Product
.
attributeCode
The code of unique attribute Product
is searched by.
value
The value of unique attribute Product
is searched by.
after
Provides elements after the specified cursor.
first
Provides up to first n
results. Value cannot be less than 0 and higher than 200.
The default value is 50.
after
Provides elements after the specified cursor.
first
Provides up to first n
results. Value cannot be less than 0 and higher than 200.
The default value is 50.
code
The code of a searched Section
.
after
Provides elements after the specified cursor.
first
Provides up to first n
results. Value cannot be less than 0 and higher than 100.
The default value is 50.
code
The code of a searched Template
.
after
Provides elements after the specified cursor.
first
Provides up to first n
results. Value cannot be less than 0 and higher than 100.
The default value is 50.
code
The code of Attribute
the mutation to be performed on.
metadata
Metadata to be set.
code
Code of Attribute
.
scope
Scope of Attribute
.
name
Name of Attribute
.
format
Format of Attribute
.
code
Code of Attribute
.
scope
Scope of Attribute
.
name
Name of Attribute
.
code
Code of Attribute
.
scope
Scope of Attribute
.
name
Name of Attribute
.
code
Code of Attribute
.
scope
Scope of Attribute
.
name
Name of Attribute
.
code
Code of Attribute
.
scope
Scope of Attribute
.
name
Name of Attribute
.
options
Options of Attribute
.
code
Code of Attribute
.
scope
Scope of Attribute
.
name
Name of Attribute
.
code
Code of Attribute
.
scope
Scope of Attribute
.
name
Name of Attribute
.
currency
Currency of Attribute
.
code
Code of Attribute
.
scope
Scope of Attribute
.
name
Name of Attribute
.
code
Code of Attribute
.
scope
Scope of Attribute
.
name
Name of Attribute
.
options
Options of Attribute
.
code
Code of Attribute
.
scope
Scope of Attribute
.
name
Name of Attribute
.
richEdit
Is rich edit enabled.
code
Code of Attribute
.
scope
Scope of Attribute
.
name
Name of Attribute
.
code
Code of Attribute
.
scope
Scope of Attribute
.
name
Name of Attribute
.
unitName
Unit name for Attribute
.
code
The code of Attribute
the mutation to be performed on.
format
Format of Attribute
.
code
The code of Attribute
the mutation to be performed on.
code
The code of Attribute
the mutation to be performed on.
metadataKeys
Metadata keys to be deleted.
code
The code of Attribute
the mutation to be performed on.
option
Option to be added.
code
The code of Attribute
the mutation to be performed on.
optionCode
Option to be deleted.
code
The code of Attribute
the mutation to be performed on.
optionCode
Option to be changed.
optionName
Option name to be set.
code
The code of Attribute
the mutation to be performed on.
options
Options to be set.
code
The code of Attribute
the mutation to be performed on.
customFieldCode
Code of the custom field to be configured.
code
The code of Attribute
the mutation to be performed on.
customFieldCode
Code of the custom field to be configured.
code
The code of Attribute
the mutation to be performed on.
customFieldCode
Code of the custom field to be configured.
code
The code of Attribute
the mutation to be performed on.
customFieldCode
Code of the custom field to be configured.
code
The code of Attribute
the mutation to be performed on.
optionCode
Option to be changed.
customFieldCode
Code of the custom field to be configured.
translations
Translations of the value to be added.
code
The code of Attribute
the mutation to be performed on.
optionCode
Option to be changed.
customFieldCode
Code of the custom field to be configured.
translations
Translations of the value to be added.
code
The code of Attribute
the mutation to be performed on.
optionCode
Option to be changed.
customFieldCode
Code of the custom field to be configured.
translations
Translations of the value to be added.
code
The code of Attribute
the mutation to be performed on.
optionCode
Option to be changed.
customFieldCode
Code of the custom field to be configured.
translations
Translations of the value to be added.
code
The code of Attribute
the mutation to be performed on.
customFieldCode
Code of the custom field to be deleted.
code
The code of Attribute
the mutation to be performed on.
optionCode
Option to be changed.
customFieldCode
Code of the custom field changed.
languages
Languages the translations to be deleted in.
optionCodes
Option codes to be filtered by.
optionNames
Option names to be filtered by.
code
The code of Attribute
the mutation to be performed on.
currency
Currency to be set.
code
The code of Attribute
the mutation to be performed on.
option
Option to be added.
code
The code of Attribute
the mutation to be performed on.
optionCode
Option to be deleted.
code
The code of Attribute
the mutation to be performed on.
optionCode
Option to be changed.
optionName
Option name to be set.
code
The code of Attribute
the mutation to be performed on.
options
Options to be set.
code
The code of Attribute
the mutation to be performed on.
name
Name to be set.
code
The code of Attribute
the mutation to be performed on.
richEdit
Is rich edit enabled.
code
The code of Attribute
the mutation to be performed on.
unitName
Unit to be set.
categoryCode
The code of Category
the mutation to be performed on.
attributeCode
The code of Attribute
adding value to.
translations
Translations of the value to be added.
categoryCode
The code of Category
the mutation to be performed on.
attributeCode
The code of Attribute
adding value to.
translations
Translations of the value to be added.
categoryCode
The code of Category
the mutation to be performed on.
attributeCode
The code of Attribute
adding value to.
translations
Translations of the value to be added.
categoryCode
The code of Category
the mutation to be performed on.
attributeCode
The code of Attribute
adding value to.
translations
Translations of the value to be added.
categoryCode
The code of Category
the mutation to be performed on.
attributeCode
The code of Attribute
adding value to.
translations
Translations of the value to be added.
categoryCode
The code of Category
the mutation to be performed on.
attributeCode
The code of Attribute
adding value to.
translations
Translations of the value to be added.
categoryCode
The code of Category
the mutation to be performed on.
attributeCode
The code of Attribute
adding value to.
translations
Translations of the value to be added.
categoryCode
The code of Category
the mutation to be performed on.
attributeCode
The code of Attribute
adding value to.
translations
Translations of the value to be added.
categoryCode
The code of Category
the mutation to be performed on.
attributeCode
The code of Attribute
adding value to.
translations
Translations of the value to be added.
categoryCode
The code of Category
the mutation to be performed on.
attributeCode
The code of Attribute
adding value to.
translations
Translations of the value to be added.
categoryCode
The code of Category
the mutation to be performed on.
attributeCode
The code of Attribute
adding value to.
translations
Translations of the value to be added.
categoryCode
The code of Category
the mutation to be performed on.
attributeCode
The code of Attribute
adding value to.
translations
Translations of the value to be added.
attributeCode
The code of Attribute
to be added.
attributeCode
The code of Attribute
to be removed.
code
The code of Category
.
name
The name of Category
.
code
The code of Category
the mutation to be performed on.
attributeCode
The code of Attribute
deleting value from.
languages
Languages the translations to be deleted in.
code
The code of Category
the mutation to be performed on.
code
The code of Category
the mutation to be performed on.
name
Name to be set.
language
Language the translation to be added in. Allowed empty only in case of GLOBAL scope.
value
Translation value to be set.
language
Language the translation to be added in. Allowed empty only in case of GLOBAL scope.
value
Translation value to be set.
language
Language the translation to be added in. Allowed empty only in case of GLOBAL scope.
value
Translation value to be set.
language
Language the translation to be added in.
value
Translation value to be set.
language
Language the translation to be added in. Allowed empty only in case of GLOBAL scope.
value
Translation value to be set.
key
Key of the metadata value to be set on.
value
Value to be set.
name
The name of Multimedia
.
folderPath
Folder Multimedia
to be put in.
path
The path of Multimedia
the mutation to be performed on.
name
The name of MultimediaFolder
.
folderPath
Folder MultimediaFolder
to be put in.
createFolderPath
Creates folderPath if does not exist. Defaults to false
.
path
The path of MultimediaFolder
the mutation to be performed on.
path
The path of Multimedia
the mutation to be performed on.
folderPath
Folder Multimedia
to be put in.
path
The path of Multimedia
the mutation to be performed on.
path
The path of Multimedia
the mutation to be performed on.
alt
Alt to be set.
path
The path of Multimedia
the mutation to be performed on.
name
Name to be set.
path
The path of Multimedia
the mutation to be performed on.
title
Title to be set.
language
Language the translation to be added in. Allowed empty only in case of GLOBAL scope.
value
Translation value to be set.
language
Language the translation to be added in. Allowed empty only in case of GLOBAL scope.
value
Translation value to be set.
code
Code of the Option
to be used.
name
Name to be set.
language
Language the translation to be added in. Allowed empty only in case of GLOBAL scope.
value
Translation value to be set.
sku
The sku of Product
the mutation to be performed on.
attributeCode
The code of Attribute
adding value to.
translations
Translations of the value to be added.
sku
The sku of Product
the mutation to be performed on.
attributeCode
The code of Attribute
adding value to.
translations
Translations of the value to be added.
sku
The sku of Product
the mutation to be performed on.
attributeCode
The code of Attribute
adding value to.
translations
Translations of the value to be added.
sku
The sku of Product
the mutation to be performed on.
attributeCode
The code of Attribute
adding value to.
translations
Translations of the value to be added.
sku
The sku of Product
the mutation to be performed on.
attributeCode
The code of Attribute
adding value to.
translations
Translations of the value to be added.
sku
The sku of Product
the mutation to be performed on.
attributeCode
The code of Attribute
adding value to.
translations
Translations of the value to be added.
sku
The sku of Product
the mutation to be performed on.
attributeCode
The code of Attribute
adding value to.
translations
Translations of the value to be added.
sku
The sku of Product
the mutation to be performed on.
attributeCode
The code of Attribute
adding value to.
translations
Translations of the value to be added.
twoWayRelation
Determines behavior of the value. Defaults to None
sku
The sku of Product
the mutation to be performed on.
attributeCode
The code of Attribute
adding value to.
translations
Translations of the value to be added.
sku
The sku of Product
the mutation to be performed on.
attributeCode
The code of Attribute
adding value to.
translations
Translations of the value to be added.
sku
The sku of Product
the mutation to be performed on.
attributeCode
The code of Attribute
adding value to.
translations
Translations of the value to be added.
sku
The sku of Product
the mutation to be performed on.
attributeCode
The code of Attribute
adding value to.
translations
Translations of the value to be added.
sku
The sku of Product
the mutation to be performed on.
categoryCodes
Categories to be added.
sku
Sku of Product
.
templateCode
Template of Product
.
categoryCode
Categories of Product
.
sku
Sku of Product
.
templateCode
Template of Product
.
categoryCode
Categories of Product
.
sku
Sku of Product
.
templateCode
Template of Product
.
categoryCode
Categories of Product
.
sku
The sku of Product
the mutation to be performed on.
attributeCode
The code of Attribute
deleting value from.
languages
Languages the translations to be deleted in.
sku
The sku of Product
the mutation to be performed on.
sku
The sku of Product
the mutation to be performed on.
childSku
Child to be added.
quantity
Quantity the child to be added in.
sku
The sku of Product
the mutation to be performed on.
childSku
Child to be removed.
sku
The sku of Product
the mutation to be performed on.
childSku
Child quantity to be modified.
quantity
Quantity to be set.
language
Language the translation to be added in. Allowed empty only in case of GLOBAL scope.
value
Translation value to be set.
sku
The sku of Product
the mutation to be performed on.
categoryCodes
Categories to be removed.
sku
The sku of Product
the mutation to be performed on.
template
Template to be set.
sku
The sku of Product
the mutation to be performed on.
variantSku
Variant to be added.
sku
The sku of Product
the mutation to be performed on.
variantSku
Variant to be removed.
sku
The sku of Product
the mutation to be performed on.
bindingCodes
Binding attributes to be set.
language
Language the translation to be added in. Allowed empty only in case of GLOBAL scope.
value
Translation value to be set.
language
Language the translation to be added in.
value
Translation value to be set.
language
Language the translation to be added in.
value
Translation value to be set.
language
Language the translation to be added in. Allowed empty only in case of GLOBAL scope.
value
Translation value to be set.
Accepts Attribute Variables in format {{#attribute_code}}
.
language
Language the translation to be added in.
value
Translation value to be set.
language
Language the translation to be added in. Allowed empty only in case of GLOBAL scope.
value
Translation value to be set.
language
Language the translation to be filtered in.
value
Translation value to be filtered by.
language
Language the translation to be added in.
value
Translation value to be set.
language
Language the translation to be added in. Allowed empty only in case of GLOBAL scope.
value
Translation value to be set.
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 remove child product from grouping one via API.
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.
In this example, we're using a specific product with SKU47.
For your query please use your own.
Here's how to add variant to variable product via API.
Both products must exist before this operation.
Example query on how to get values of custom fields options
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.
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
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 query GraphQL API on product attributes by SKU
Here's how you can set child product quantity via API.
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.
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"
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.
The path to the file can be found with this query.
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.
This is how you can remove variant product from variable one via API
Please keep in mind that to add the option attribute "Model" must first exist.
code - system name of the category
language - language code ex: pl_PL
value - translated name of the category (string)
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
input |
attribute | Changed |
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 | Created |
attribute | Created |
attribute | Created |
attribute | Created |
attribute | Created |
attribute | Created |
attribute | Created |
attribute | Created |
attribute | Created |
attribute | Created |
attribute | Created |
attribute | Changed |
attribute | Changed |
code | Deleted |
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 | Changed |
attribute | Changed |
attribute | Changed |
attribute | Changed |
attribute | Changed |
attribute | Changed |
attribute | Changed |
attribute | Changed |
attribute | Changed |
attribute | Changed |
attribute | Changed |
attribute | Changed |
attribute | Changed |
attribute | Changed |
attribute | Changed |
attribute | Changed |
attribute | Changed |
attribute | Changed |
attribute | Changed |
attribute | Changed |
attribute | Changed |
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 |
Translatable name allowing to set different values in every active language. |
A list of attribute values.
|
category | Changed |
category | Changed |
category | Changed |
category | Changed |
category | Changed |
category | Changed |
category | Changed |
category | Changed |
category | Changed |
category | Changed |
category | Changed |
category | Changed |
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 | Changed |
code | Deleted |
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 |
code | Readable id of |
Translatable name allowing to set different values in every active language. |
A list of categories belonging to the |
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 |
A value translations. |
value | A translation value of an |
attribute | An |
A value translations. |
value | A translation value of an |
attribute | An |
A value translations. |
value | A translation value of an |
quantity | Quantity of a grouped |
product | Grouped |
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.
|
attribute | An |
A value translations. |
value | A translation value of an |
customField | A |
value | A value in the context language. |
customField | A |
A value translations. |
value | A translation value of a |
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 |
name | Given file name. |
extension | File extension. |
mime | Mime type of the file. |
size | File size in bytes. |
Represents the alternate text for an image if it cannot be displayed. |
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 |
path | Deleted |
node | Node of the Edge. |
cursor | The Edge cursor. |
path | Readable id of |
name | Name of |
edges | Edges of the connection. |
pageInfo | Page info of the connection. |
totalCount | Count of all edges in connection. |
multimediaFolder | Changed |
path | Deleted |
node | Node of the Edge. |
cursor | The Edge cursor. |
multimedia | Changed |
multimedia | Replacing |
multimedia | Changed |
multimedia | Changed |
multimedia | Changed |
multimedia | Changed |
attribute | An |
A value translations. |
translatedValue | Represents simplified translated value containing scalar names in context language only. |
value | A translation value of an |
attribute | An |
A value translations. |
value | A translation value of an |
code | Readable id of |
Translatable name allowing to set different values in every active language. |
customFields |
|
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 |
Translatable name allowing to set different values in every active language. |
code | Code of |
name |
|
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 |
A value translations. |
value | A translation value of an |
product | Changed |
product | Changed |
product | Changed |
product | Changed |
product | Changed |
product | Changed |
product | Changed |
product | Changed |
product | Changed |
product | Changed |
product | Changed |
product | Changed |
product | Changed |
edges | Edges of the connection. |
pageInfo | Page info of the connection. |
totalCount | Count of all edges in connection. |
product | Created |
product | Created |
product | Created |
edges | Edges of the connection. |
pageInfo | Page info of the connection. |
totalCount | Count of all edges in connection. |
product | Changed |
node | Node of the Edge. |
cursor | The Edge cursor. |
sku | Deleted |
node | Node of the Edge. |
cursor | The Edge cursor. |
product | Changed |
product | Changed |
product | Changed |
attribute | An |
A value translations. |
value | A translation value of an |
product | Changed |
product | Changed |
product | Changed |
product | Changed |
product | Changed |
code | Readable id of |
A list of attributes used in the |
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 |
A value translations. |
translatedValue | Represents simplified translated value containing scalar names in context language only. |
value | A translation value of an |
code | Readable id of |
A list of attributes used in the |
A list of sections used in the |
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 |
A value translations. |
value | A translation value of an |
rawValue | Represents raw textarea value translation with attribute variables unresolved in form of |
customField | A |
value | A value in the context language. |
customField | A |
A value translations. |
value | A translation value of a |
customField | A |
value | A value in the context language. |
customField | A |
A value translations. |
value | A translation value of a |
attribute | An |
A value translations. |
value | A translation value of an |
customField | A |
value | A value in the context language. |
customField | A |
A value translations. |
value | A translation value of a |
value | Tranlated value. |
language | Language of translation. |
name | Name o |
symbol | Symbol of |
unit | Unit of |
attribute | An |
A value translations. |
value | A translation value of an |
bindings | A list of attributes by which variants are bonded. |
A list of variants in |
Remember to change "buty" with your own category code (system name)
Both sku and template must already exist.
!
name (languages: )
attributeList (after: , first: , codes: )
name (languages: )
categoryTreeLeafList (after: , first: )
translations (languages: )
translations (languages: )
translations (languages: )
childrenList (after: , first: )
translations (languages: )
translations (languages: )
alt (languages: )
title (languages: )
translations (languages: )
translations (languages: )
name (languages: )
name (languages: )
translations (languages: )
translations (languages: )
attributeList (after: , first: )
translations (languages: )
attributeList (after: , first: )
sectionList (after: , first: )
translations (languages: )
translations (languages: )
translations (languages: )
translations (languages: )
translations (languages: )
translations (languages: )
variantList (after: , first: )