Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
This doc provides an overview of our GraphQL API which is designed specifically with data integration in mind.
query {
productStream (first:10, after:"") {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
... on VariableProduct {
sku
bindings {
code
__typename
}
variantList {
edges {
node {
sku
}
}
}
}
}
}
}
}Here's how to add variant to variable product via API.
mutation {
productVariableAddVariant(input: { sku: "SKU_VAR_PRODUCT", variantSku: "SKU_test2" }) {
__typename
}
}query {
languageList {
edges {
node
}
}
}Example query on how to get values of custom fields options
fragment Option on Option {
code
name(languages: ["en_US"]) {
value
language
}
customFields {
__typename
customField {
code
}
translations(languages: ["en_US"]) {
language
... on ImageCustomFieldValueTranslation {
imageCustomFieldValue: value {
path
}
}
... on TextCustomFieldValueTranslation {
textCustomFieldValue: value
}
... on TextareaCustomFieldValueTranslation {
textareaCustomFieldValue: value
}
... on TextareaRTECustomFieldValueTranslation {
textareaRTECustomFieldValue: value
}
}
}
}This is how you can create variable product via API.
mutation {
productCreateVariable(
input: {
sku: "SKU_VAR_PRODUCT"
templateCode: "Tshirts"
categoryCodes: "DELL"
}
) {
__typename
}
}This is how you can create a simple product via API.
This query will return all multimedia in PIM and extra info about them.
This is how you can remove variant product from variable one via API
This is how you can set alternative value to a single multimedia via API.
This is how you can change the name of single multimedia via API.
That's how you add child product to grouping one.
This is how you remove child product from grouping one via API.
Here's how you can set child product quantity via API.
query {
templateList {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
code
attributeList {
edges {
node {
scope
code
name {
value
language
}
}
}
}
}
}
}
}mutation {
productCreateGrouping(
input: { sku: "SKU_GR_PRODUCT", templateCode: "Tshirts"}
) {
__typename
}
}mutation {
productCreateGrouping(
input: { sku: "SKU_GR_PRODUCT", templateCode: "Tshirts", categoryCodes: "DELL"}
) {
__typename
}
}query multimedia {
multimediaStream {
pageInfo {
hasNextPage
endCursor
}
edges {
__typename
node {
name
path
alt {
value
language
}
extension
mime
size
folder {
name
}
url
}
}
}
}mutation {
productVariableRemoveVariant(input: { sku: "SKU_VAR_PRODUCT", variantSku: "SKU_test2" }
) {
__typename
}
}mutation {
productAddAttributeValueTranslationsMultiSelect(
input: {
sku: "product_2" # SKU of a product we want to set attribute options in
attributeCode: "labels" # attribute code
translations: [
{ value: ["test1", "test2"], language: "en_GB" } # options to set in a specific language
]
}
) {
__typename
}
}mutation {
productAddAttributeValueTranslationsGallery(
input: {
sku: "1"
attributeCode: "gallery"
translations: [
{ language: "pl_PL", value: ["1.jpg", "2.jpg", "3.jpg"] }
]
}
) {
__typename
}
}mutation {
multimediaSetAlt(
input: {
path: "multimedia.jpg"
alt: { language: "en_GB", value: "Alternative value" }
}
) {
__typename
}
}query product {
product(sku: "SKU72") {
sku
attributeList {
edges {
node {
attribute {
code
scope
name {
value
language
}
}
}
}
}
}
}mutation {
multimediaDelete(input: { path: "multimedia.jpg" }) {
__typename
}
}mutation {
multimediaSetName(
input: {
path: "multimedia.jpg"
name: "multimedia_2.jpg"
}
) {
__typename
}
}mutation {
productGroupingAddChild(
input: { sku: "SKU_GR_PRODUCT", childSku: "SKU_test2", quantity: 1 }
) {
__typename
}
}mutation {
productGroupingRemoveChild(input: { sku: "SKU_GR_PRODUCT", childSku: "SKU_test2" }
) {
__typename
}
}mutation {
productSetTemplate(input: { sku: "SKU78", template: "template" }) {
__typename
}
}mutation {
productGroupingSetChildQuantity(
input: { sku: "SKU_GR_PRODUCT", childSku: "SKU_test2", quantity: 2 }
) {
__typename
}
}mutation {
categoryCreate(
input:{
code: "category_name"
name: {
language:"pl_PL"
value:"nazwa_kategorii"
}
}
) {
__typename
}
}query productRelation {
product(sku: "001") {
sku
createdAt
editedAt
attributeList {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
attribute {
code
}
translations {
... on ProductRelationAttributeValueTranslation {
language
value {
sku
}
}
}
}
}
}
}
}
This is how you can create a simple product via API.
mutation {
productCreateSimple(
input: { sku: "SKU_test2", templateCode: "Tshirts"}
) {
__typename
}
}mutation {
productCreateSimple(
input: { sku: "SKU_test2", templateCode: "Tshirts", categoryCodes: "DELL" }
) {
__typename
}
}query {
categoryTree(code: "<code_of_the_category_tree>") {
code
categoryTreeLeafList {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
category {
code
}
parentCategory {
code
}
}
}
}
}
}mutation {
attributeSelectAddOption(
input: {
code: "Model"
option: {
code: "eve_1011"
name: { language: "pl_PL", value: "eve_1011" }
}
}
) {
__typename
}
}mutation {
productAddAttributeValueTranslationsFile(input: {
sku:"SKU77"
attributeCode:"file_test"
translations:{
language:"pl_PL"
value:"bike-1.jpg"
}
})
{__typename}
}This will allow you to get list of first 100 product no matter if they're simple or variable.
mutation {
multimediaCreate(
input: { name: "file_name.extension", folderPath: "folder_path" }
) {
__typename
}
}$client = new \GuzzleHttp\Client(); // Guzzle version 6
$resp = $client->post(
$url,
[
'multipart' => [
[
'name' => 'upload',
'contents' => fopen(__DIR__ . '/test.png', 'r'),
],
[
'name' => 'query',
'contents' => '
mutation {
multimediaCreate(input: {name: "new.png", folderPath: null}) {__typename}
}
',
],
],
'headers' => [
'X-API-KEY' => $apiKey,
],
],
);from urllib import response
import requests
url = "https://marcin.ergonode.app/api/graphql/"
data = {
'upload': open('C:\\temp\\temp.png', 'rb'),
'query': (None, 'mutation{multimediaCreate(input:{name:"<choose_a_name>",folderPath: "<some_folder_path>"}){__typename}}')
}
headers = {
'X-API-KEY': '<some_api_key>',
}
response = requests.post(url, files=data, headers=headers)
print (response.text)
mutation {
create: productCreateSimple(input: {sku: "new_product", templateCode: "template"}) {
__typename
}
assignDescription: productAddAttributeValueTranslationsTextarea(
input: {
sku: "new_product"
attributeCode: "description"
translations: [{ value: "Long description", language: "en_GB" }]
}
) {
__typename
}
assignShortDescription: productAddAttributeValueTranslationsTextarea(
input: {
sku: "new_product"
attributeCode: "short_description"
translations: [{ value: "Short description", language: "en_GB" }]
}
) {
__typename
}
}mutation {
create: productCreateSimple(input: {sku: "new_product", templateCode: "template"}) {
__typename
}
assignDescription: productAddAttributeValueTranslationsTextarea(
input: {
sku: "new_product"
attributeCode: "description"
translations: [{ value: "Długi opis", language: "pl_PL" }]
}
) {
__typename
}
assignShortDescription: productAddAttributeValueTranslationsTextarea(
input: {
sku: "new_product"
attributeCode: "short_description"
translations: [{ value: "KrĂłtki opis", language: "pl_PL" }]
}
) {
__typename
}
assignText: productAddAttributeValueTranslationsText(
input: {
sku: "new_product"
attributeCode: "text"
translations: [{ value: "wartość", language: "pl_PL" }]
}
) {
__typename
}
}query groupingProduct {
productStream(first: 100) {
...ProductConnection
edges {
node {
... on GroupingProduct {
...Product
childrenList {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
quantity
product {
...SimpleProduct
...VariableProduct
}
}
}
}
}
template {
code
}
}
}
}
}
fragment SimpleProduct on SimpleProduct {
...Product
attributeList {
...AttributeValueConnection
}
}
fragment VariableProduct on VariableProduct {
...Product
attributeList {
...AttributeValueConnection
}
bindings {
...Attribute
optionList(first: 10, after: "") {
edges {
node {
code
customFields {
customField {
code
}
}
name(languages: ["en_US"]) {
value
language
}
}
}
}
}
variantList {
...ProductConnection
}
}
fragment AttributeValueConnection on AttributeValueConnection {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
attribute {
...Attribute
}
translations {
language
}
}
}
}
fragment Attribute on Attribute {
code
name(languages: ["en_US"]) {
value
language
}
scope
}
fragment Product on Product {
__typename
sku
createdAt
editedAt
}
fragment ProductConnection on ProductConnection {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
...Product
}
}
}Scalars represent primitive values like Integer or String.
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
25f77355-4443-4850-b8cd-7d3ec7ef5a7a Attribute already has Option with given OptionCode.b2943d95-24e6-4b0c-9f09-f86ea635d8cb Categories do not have Attribute enabled in configuration.9670b62d-5db8-4de8-81bd-7d6119625df0 Multimedia file should be an image.c63cc7a9-1298-4520-a5ad-6c0a9c478a00 Product with given Sku exists already.query {
productStream {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
sku
attributeList {
edges {
node {
...AttributeValue
}
}
}
}
}
}
}
fragment AttributeValue on AttributeValue {
__typename
attribute {
code
name {
language
value
}
}
... on TextAttributeValue {
textAttributeValueTranslations: translations {
value
language
}
}
... on TextareaAttributeValue {
textareaAttributeValueTranslations: translations {
value
language
}
}
... on DateAttributeValue {
dateAttributeValueTranslations: translations {
value
language
}
}
... on UnitAttributeValue {
unitAttribute: attribute {
# unit might be useful in the value context
unit {
name
symbol
}
}
unitAttributeValueTranslations: translations {
value
language
}
}
... on PriceAttributeValue {
priceAttribute: attribute {
# currency might be useful in the price context
currency
}
priceAttributeValueTranslations: translations {
value
language
}
}
... on NumberAttributeValue {
numericAttributeValueTranslations: translations {
value
language
}
}
... on ProductRelationAttributeValue {
productRelationAttributeValueTranslations: translations {
value {
sku
}
language
}
}
... on FileAttributeValue {
fileAttributeValueTranslations: translations {
value {
...Multimedia
}
language
}
}
... on GalleryAttributeValue {
galleryAttributeValueTranslations: translations {
value {
...Multimedia
}
language
}
}
... on ImageAttributeValue {
imageAttributeValueTranslations: translations {
value {
...Multimedia
}
language
}
}
... on MultiSelectAttributeValue {
multiSelectAttributeValueTranslations: translations {
translatedValue {
...OptionTranslatedValue
}
language
}
}
... on SelectAttributeValue {
selectAttributeValueTranslations: translations {
translatedValue {
...OptionTranslatedValue
}
language
}
}
}
fragment Multimedia on Multimedia {
path
name
extension
mime
size
alt {
value
language
}
title {
value
language
}
url
}
fragment OptionTranslatedValue on OptionTranslatedValue {
code
name
customFields {
... on ImageCustomFieldTranslatedValue {
customField {
code
}
image: value {
path
name
extension
mime
size
alt {
language
value
}
title {
language
value
}
url
folder {
name
path
}
}
}
... on TextCustomFieldTranslatedValue {
customField {
code
}
value
}
... on TextareaCustomFieldTranslatedValue {
customField {
code
}
value
}
... on TextareaRTECustomFieldTranslatedValue {
customField {
code
}
value
}
}
}
{
__schema {
queryType {
name
}
mutationType {
name
}
subscriptionType {
name
}
types {
...FullType
}
directives {
name
description
locations
args {
...InputValue
}
}
}
}
fragment FullType on __Type {
kind
name
description
fields(includeDeprecated: true) {
name
description
args {
...InputValue
}
type {
...TypeRef
}
isDeprecated
deprecationReason
}
inputFields {
...InputValue
}
interfaces {
...TypeRef
}
enumValues(includeDeprecated: true) {
name
description
isDeprecated
deprecationReason
}
possibleTypes {
...TypeRef
}
}
fragment InputValue on __InputValue {
name
description
type {
...TypeRef
}
defaultValue
}
fragment TypeRef on __Type {
kind
name
ofType {
kind
name
ofType {
kind
name
ofType {
kind
name
ofType
{
kind
name
ofType {
kind
name
ofType {
kind
name
ofType {
kind
name
}
}
}
}
}
}
}
}query catWithAttVal {
category(code: "buty") {
code
attributeList {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
...AttributeValue
}
}
}
}
}
fragment AttributeValue on AttributeValue {
__typename
attribute {
code
name {
language
value
}
}
... on TextAttributeValue {
textAttributeValueTranslations: translations {
value
language
}
}
... on TextareaAttributeValue {
textareaAttributeValueTranslations: translations {
value
language
}
}
... on DateAttributeValue {
dateAttributeValueTranslations: translations {
value
language
}
}
... on UnitAttributeValue {
unitAttribute: attribute {
# unit might be useful in the value context
unit {
name
symbol
}
}
unitAttributeValueTranslations: translations {
value
language
}
}
... on PriceAttributeValue {
priceAttribute: attribute {
# currency might be useful in the price context
currency
}
priceAttributeValueTranslations: translations {
value
language
}
}
... on NumberAttributeValue {
numericAttributeValueTranslations: translations {
value
language
}
}
... on ProductRelationAttributeValue {
productRelationAttributeValueTranslations: translations {
value {
sku
}
language
}
}
... on FileAttributeValue {
fileAttributeValueTranslations: translations {
value {
...Multimedia
}
language
}
}
... on GalleryAttributeValue {
galleryAttributeValueTranslations: translations {
value {
...Multimedia
}
language
}
}
... on ImageAttributeValue {
imageAttributeValueTranslations: translations {
value {
...Multimedia
}
language
}
}
... on MultiSelectAttributeValue {
multiSelectAttributeValueTranslations: translations {
translatedValue {
...OptionTranslatedValue
}
language
}
}
... on SelectAttributeValue {
selectAttributeValueTranslations: translations {
translatedValue {
...OptionTranslatedValue
}
language
}
}
}
fragment Multimedia on Multimedia {
path
name
extension
mime
size
alt {
value
language
}
title {
value
language
}
url
}
fragment OptionTranslatedValue on OptionTranslatedValue {
code
name
}{
categoryStream(first: 1) {
pageInfo {
endCursor
hasNextPage
}
edges {
node {
code
name {
value
language
}
}
cursor
}
}
}{
"data": {
"categoryStream": {
"pageInfo": {
"endCursor": "YXJyYXljb25uZWN0aW9uOjQ5",
"hasNextPage": true
},
"edges": [
{
"node": {
"code": "category_name_clothing",
"name": [
{
"value": "Clothing",
"language": "en_GB"
},
{
"value": "OdzieĹĽ",
"language": "pl_PL"
}
]
},
"cursor": "YXJyYXljb25uZWN0aW9uOjQ5"
}
]
}
}
}{
categoryStream(first: 1, after: "YXJyYXljb25uZWN0aW9uOjQ5") {
...
}{
"data": {
"categoryStream": {
"pageInfo": {
"endCursor": "YXJyYXljb25uZWN0aW9uOjUw",
"hasNextPage": false
}
...
}
}
}{
categoryStream(first: 1) {
pageInfo {
endCursor
hasNextPage
}
edges {
node {
code
}
}
}
}{
category(code: "category_name_clothing") {
name {
value
language
}
code
}
}This is how you can get data after some cursor via API.
query groupingProduct {
productStream(after: "YXJyYXljb25uZWN0aW9uOjM2MTE=") {
...ProductConnection
edges {
node {
... on GroupingProduct {
...Product
childrenList {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
quantity
product {
...SimpleProduct
...VariableProduct
}
}
}
}
}
template {
code
}
}
}
}
}
fragment SimpleProduct on SimpleProduct {
...Product
attributeList {
...AttributeValueConnection
}
}
fragment VariableProduct on VariableProduct {
...Product
attributeList {
...AttributeValueConnection
}
bindings {
...Attribute
optionList(first: 10) {
edges {
node {
code
name(languages: ["en_US"]) {
value
language
}
}
}
}
}
variantList {
...ProductConnection
}
}
fragment AttributeValueConnection on AttributeValueConnection {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
attribute {
...Attribute
}
translations {
language
}
}
}
}
fragment Attribute on Attribute {
code
name(languages: ["en_US"]) {
value
language
}
scope
}
fragment Product on Product {
__typename
sku
createdAt
editedAt
}
fragment ProductConnection on ProductConnection {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
...Product
}
}
}query groupingProduct {
productStream(after: "YXJyYXljb25uZWN0aW9uOjM2MTE=", first: 100) {
... ProductConnection
edges {
node {
... on GroupingProduct {
... Product
childrenList {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
quantity
product {
... SimpleProduct
... VariableProduct
}
}
}
}
}
template {
code
}
}
}
}
}
fragment SimpleProduct on SimpleProduct {
... Product
attributeList {
... AttributeValueConnection
}
}
fragment VariableProduct on VariableProduct {
... Product
attributeList {
... AttributeValueConnection
}
bindings {
... Attribute
options {
code
name {
value
language
}
}
}
variantList {
... ProductConnection
}
}
fragment AttributeValueConnection on AttributeValueConnection {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
attribute {
... Attribute
}
translations {
language
}
}
}
}
fragment Attribute on Attribute {
code
name {
value
language
}
scope
}
fragment Product on Product {
__typename
sku
createdAt
editedAt
}
fragment ProductConnection on ProductConnection {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
... Product
}
}
}{
}query queryName {
}query queryName {
productStream {
pageInfo {
endCursor
}
totalCount
}
}query queryName {
productStream (first: 2) {
pageInfo {
endCursor
}
totalCount
}
}query queryName {
productStream(first: 2) {
pageInfo {
endCursor
}
totalCount
}
productStream(after: "YXJyYXljb25uZWN0aW9uOjM0Mw==") {
pageInfo {
endCursor
}
totalCount
}
}query queryName {
firstTwo: productStream(first: 2) {
pageInfo {
endCursor
}
totalCount
}
dataAfter: productStream(after: "YXJyYXljb25uZWN0aW9uOjM0Mw==") {
pageInfo {
endCursor
}
totalCount
}
}query x {
productStream {
pageInfo {
endCursor
}
}
}query queryName {
firstTwo: productStream(first: 2) {
pageInfo {
endCursor
}
...fragmentName
}
dataAfter: productStream(after: "YXJyYXljb25uZWN0aW9uOjM0Mw==") {
pageInfo {
endCursor
}
...fragmentName
}
}
fragment fragmentName on ProductConnection {
totalCount
}query queryName ($x: Int = 2) {
firstTwo: productStream(first: $x) {
pageInfo {
endCursor
}
...fragmentName
}
dataAfter: productStream(after: "YXJyYXljb25uZWN0aW9uOjM0Mw==") {
pageInfo {
endCursor
}
...fragmentName
}
}
fragment fragmentName on ProductConnection {
totalCount
}query queryName ($x: Int = 2, $condition: Boolean = true) {
firstTwo: productStream(first: $x) {
pageInfo @include(if: $condition) {
endCursor
}
...fragmentName
}
dataAfter: productStream(after: "YXJyYXljb25uZWN0aW9uOjM0Mw==") {
pageInfo {
endCursor
}
...fragmentName
}
}
fragment fragmentName on ProductConnection {
totalCount
}query queryName ($x: Int = 2, $condition: Boolean = true) {
firstTwo: productStream(first: $x) {
pageInfo @include(if: $condition) {
endCursor
}
...fragmentName
}
dataAfter: productStream(after: "YXJyYXljb25uZWN0aW9uOjM0Mw==") {
pageInfo {
endCursor
}
...fragmentName
}
}
fragment fragmentName on ProductConnection {
totalCount
}query getAttValues {
product(sku: "
{
"data": {
"product": {
"sku": "0123456789",
"createdAt": "2024-04-04T11:44:54+00:00",
"editedAt": "2024-04-04T13:33:46+00:00",
"template": {
"code": "GraphQL"
},
"attributeList": {
"pageInfo": {
"hasNextPage": false,
"endCursor": "YXJyYXljb25uZWN0aW9uOjQ="
},
"edges": [
{
"node": {
"SelectAttributeValue": [
{
"language": "en_GB",
"translatedValue": {
"code": "blk",
"name": "Black"
}
},
{
"language": "pl_PL",
"translatedValue": {
"code": "blk",
"name": "Czarny"
}
}
]
}
},
{
"node": {
"attribute": {
"name": [
{
"language": "en_GB",
"value": "Short description"
},
{
"language": "pl_PL",
"value": "KrĂłtki opis"
}
]
},
"TextareaAttributeValue": [
{
"language": "en_GB",
"value": "Short countertop description"
},
{
"language": "pl_PL",
"value": "KrĂłtki opis blatu"
}
]
}
},
{
"node": {
"priceAttribute": {
"currency": "EUR"
},
"priceAttributeValue": [
{
"language": "en_GB",
"value": 10.1
},
{
"language": "pl_PL",
"value": 9.99
}
]
}
},
{
"node": {
"GalleryAttributeValue": [
{
"language": "en_GB",
"value": [
{
"path": "semir-beige-kapinos-stopnica-narozna-33x33-g1.webp",
"name": "semir-beige-kapinos-stopnica-narozna-33x33-g1.webp",
"extension": "webp",
"mime": "image\/webp",
"sizeInBytes": 46116,
"alt": [
{
"language": "en_GB",
"value": null
},
{
"language": "pl_PL",
"value": null
}
],
"title": [
{
"language": "en_GB",
"value": null
},
{
"language": "pl_PL",
"value": null
}
]
},
{
"path": "[email protected]",
"name": "[email protected]",
"extension": "webp",
"mime": "image\/webp",
"sizeInBytes": 158884,
"alt": [
{
"language": "en_GB",
"value": null
},
{
"language": "pl_PL",
"value": null
}
],
"title": [
{
"language": "en_GB",
"value": null
},
{
"language": "pl_PL",
"value": null
}
]
}
]
},
{
"language": "pl_PL",
"value": [
{
"path": "semir-beige-kapinos-stopnica-narozna-33x33-g1.webp",
"name": "semir-beige-kapinos-stopnica-narozna-33x33-g1.webp",
"extension": "webp",
"mime": "image\/webp",
"sizeInBytes": 46116,
"alt": [
{
"language": "en_GB",
"value": null
},
{
"language": "pl_PL",
"value": null
}
],
"title": [
{
"language": "en_GB",
"value": null
},
{
"language": "pl_PL",
"value": null
}
]
},
{
"path": "[email protected]",
"name": "[email protected]",
"extension": "webp",
"mime": "image\/webp",
"sizeInBytes": 158884,
"alt": [
{
"language": "en_GB",
"value": null
},
{
"language": "pl_PL",
"value": null
}
],
"title": [
{
"language": "en_GB",
"value": null
},
{
"language": "pl_PL",
"value": null
}
]
}
]
},
{
"language": "de_DE",
"value": [
{
"path": "semir-beige-kapinos-stopnica-narozna-33x33-g1.webp",
"name": "semir-beige-kapinos-stopnica-narozna-33x33-g1.webp",
"extension": "webp",
"mime": "image\/webp",
"sizeInBytes": 46116,
"alt": [
{
"language": "en_GB",
"value": null
},
{
"language": "pl_PL",
"value": null
}
],
"title": [
{
"language": "en_GB",
"value": null
},
{
"language": "pl_PL",
"value": null
}
]
},
{
"path": "[email protected]",
"name": "[email protected]",
"extension": "webp",
"mime": "image\/webp",
"sizeInBytes": 158884,
"alt": [
{
"language": "en_GB",
"value": null
},
{
"language": "pl_PL",
"value": null
}
],
"title": [
{
"language": "en_GB",
"value": null
},
{
"language": "pl_PL",
"value": null
}
]
}
]
}
]
}
}
]
},
"__typename": "SimpleProduct"
}
}
}The changelog is a list of recent changes to GraphQL API schema.
Query.sectionOptionAttributeSelectAttribute.optionList addedAttributeValue.valueTranslationsAttribute.labelQueries allow retrieving data from the server.
Mutations allow modifing data on the server.
Input objects represent a set of fields allowing describing mutation.
Objects represent the resources you can access.