This is a html view of the json schema please take the json schema as reference DOWNLOAD THE JSON SCHEMA

Product Feedback


Represent a feedback following an action processed on the spark product collection

Success

Type: object

Success feedback

No Additional Properties
Example:

{
    "context": {
        "correlationId": "24d3e879-5104-4fcd-92e3-dd0e3041147f",
        "intent": "addMarketplaceProductPostMvp",
        "sourceFileName": "product-assets.json"
    },
    "action": "PATCH",
    "found": false,
    "product": {
        "productId": "8c4c0ee7-1c09-4824-b991-a9524b371605",
        "opcoId": "WEB_CONNECT",
        "identifier": {
            "gtin": "GTIN-12345678",
            "productTitle": {
                "fr-FR": "Example mirakl product 1"
            },
            "manufacturerRefId": "515091",
            "manufacturerReference": "Spark",
            "manufacturerName": "Spark",
            "brandName": "Spark"
        },
        "marketplace": {
            "miraklProductId": "8c4c0ee7-1c09-4824-b991-a9524b371605",
            "sellers": {
                "Schneider": {
                    "miraklSellerId": "2002",
                    "sku": "SELLER2002_PRODUCT_ID_1_SKU"
                }
            }
        }
    }
}

EventHeader

Type: object

This object is used to describe some technical meta information related to the event

Type: enum (of string)

The application source of this event

Must be one of:

  • "SPARK"
  • "OPCO"
  • "MARKETPLACE"

Type: enum (of string)

The version of the json format event

Must be one of:

  • "v1"

Type: object

Type: object

Example:

{
    "correlationId": "a4b9f576-bdf8-45b6-82cf-62831c9e1b2e",
    "intent": "upsertAProduct",
    "sourceFileName": "product-assets.json"
}

Type: string

An identifier of this command request, will be echoed back in the related product-feedbacks event. It should be a uuid and shall be different each new request. It may be used by the implementation as an idempotency key and should be used in structured logs.

Type: string

A human readable description of the intent of this request. It is used for logging and monitoring purpose and should not be relied upon by product-feedbacks topic consumers

Type: string

It's a source product file name where error is originated. It is used to maintain the same file name for source and error file which is created as part of product-feedbacks task

Source property

Type: object

Type: enum (of string)

source of the command request. This attribute is only be set by SPARK following the processing of a product-command request.

Must be one of:

  • "OPCO"
  • "MARKETPLACE"

Example:

"OPCO"

Type: enum (of string) Default: "UPSERT"

Defines the type of command to be processed

Must be one of:

  • "UPSERT"
  • "DELETE"
  • "INSERT"
  • "PATCH"
  • "INSERT_DRY_RUN"

Examples:

"UPSERT"
"DELETE"


Result of the command processed if no error occured

Full Product

Type: object
No Additional Properties

Product

Type: object

a product object description

No Additional Properties

Type: string

The unique product identifier depending on each opcos backend system (like ERP product ID)

Must match regular expression: ^[a-zA-Z0-9_-]+$
Examples:

"000428"
"az_000428"
"000428-TY"

Type: string

tenant identifier for an Opco in SPARK multitenant platform


Example:

"BEL-CEBEO"

Price

Type: object

gross price of the product

Type: integer

the actual unscaled amount based on list or customer


Example:

205987

Type: integer

the scale to be applied on the unscaled amount


Example:

2

Type: string

the currency code following the ISO 4217 standard 3 letter in which the prices are being displayed


Example:

"EUR"

Type: object

product identifier attributes


Example:

{
    "gtin": "4012196097579",
    "opcoProductId": "65",
    "productTitle": [
        {
            "fr-BE": "PIQUETS DE TERRE EN CROIX 213/1.",
            "nl-BE": "Aardstaaf 1,5m 50x50x3"
        }
    ],
    "manufacturerRefId": "1360167",
    "manufacturerName": "HUPPERTZ",
    "manufacturerReference": "2742037 12-20 LGR638",
    "brandName": "Jokari",
    "tags": [
        "NEW",
        "END_OF_LIFE"
    ],
    "stockIndicator": "A",
    "keywords": [
        {
            "fr-BE": "Tige de mise à la terre",
            "nl-BE": "Aardingsstaaf"
        },
        {
            "fr-BE": "Mise à la terre / profondeur de la tige",
            "nl-BE": "Staafaarding/diepteaarding"
        }
    ]
}

Type: string

global trade identifier number e.g EAN, UPC etc


Example:

"4012196097579"

Type: string

This is the local product id could be specific to opcos, most cases it is same as manufacturer id but could be different as well


Example:

"732D16"

Type: string

This is the equivalent of manufacturer PID and used for search and identifying the product


Example:

"1360167"

Multilingual Object

Type: object

short description of the product


Example:

{
    "fr-BE": "PIQUETS DE TERRE EN CROIX 213/1.",
    "nl-BE": "Aardstaaf 1,5m 50x50x3"
}

Each additional property must conform to the following schema

Type: string

Type: string

manufacturer name, one manufacturer could have one or multiple brands


Example:

"HUPPERTZ"

Type: string

manufacturer type description identifier, represents the references


Example:

"2037 12-20 LGR"

Type: string

brand name of the product


Example:

"Jokari"

Type: string

A custom product id that will be searchable and Facetable. A label should be configured into CMS to give meaningful display to the user


Example:

"0001"

Type: string

A custom product id that will be searchable and Facetable. A label should be configured into CMS to give meaningful display to the user


Example:

"0002"

Type: string

A custom product id that will be searchable and Facetable. A label should be configured into CMS to give meaningful display to the user


Example:

"0003"

Type: string

A custom product id that will be searchable and Facetable. A label should be configured into CMS to give meaningful display to the user


Example:

"0004"

Type: string

A custom product id that will be searchable and Facetable. A label should be configured into CMS to give meaningful display to the user


Example:

"0005"

Type: enum (of string)

a classification for availability of stocks at branch, CDC. A= branch (+CDC), B= CDC, C= OnDemand L = Liquidation (product is sold until our stock runs out, no backorders allowed, no longer available from the supplier)

Must be one of:

  • "A"
  • "B"
  • "C"
  • "L"

Type: array of enum (of string)

The tags for the product to represent the combination of associated labels

No Additional Items

Each item of this array must be:

Type: enum (of string)

The possible tags for the product are
- NEW: for new product.
- ENDOFLIFE: for end of life product
- SUSTAINABLE: related to green offer
- CIRCULAR: the product is made of recycled materials or reused materials
- OUTLET: for Damaged (aesthetically) goods but fully functional products with very limited quantity

Must be one of:

  • "NEW"
  • "END_OF_LIFE"
  • "SUSTAINABLE"
  • "CIRCULAR"
  • "OUTLET"

Type: array

array of keywords used for seo and search readiness

No Additional Items

Each item of this array must be:

Multilingual Object

Type: object

This is object used to describe the translation of text field. the locale use the IETF BCP 47 language tag of the locale (language and country)


Example:

{
    "de-CH": "ein Text in Schweizerdeutsch",
    "fr-CH": "un texte en français suisse"
}

Each additional property must conform to the following schema

Type: string

Example:

[
    {
        "fr-BE": "Tige de mise à la terre",
        "nl-BE": "Aardingsstaaf"
    },
    {
        "fr-BE": "Mise à la terre / profondeur de la tige",
        "nl-BE": "Staafaarding/diepteaarding"
    }
]

Type: object

ordering details comprising units,packing steps and quantity details


Example:

{
    "orderUnit": "TN",
    "contentUnit": "MLT",
    "packingQuantity": 200,
    "minQuantity": 6,
    "isSoldLoose": true,
    "quantitySteps": 6
}

Type: enum (of string)

order unit are the units in which a product is being sold, e.g TN - tin, This must comply with GS1 unit of measure as on stocks

Must be one of:

  • "FOT"
  • "PCE"
  • "MTR"
  • "KGM"
  • "CMT"
  • "LTR"
  • "EA"
  • "MTK"
  • "PK"
  • "MTQ"
  • "TN"
  • "MLT"
  • "BG"
  • "PR"
  • "RO"
  • "SET"
  • "LN"
  • "ST"
  • "RL"
  • "BX"
  • "CS"
  • "JR"
  • "LBR"
  • "INH"
  • "DZN"
  • "SO"
  • "CL"
  • "CG"
  • "CT"

Example:

"TN"

Type: enum (of string)

content unit is the exact measurable unit e.g MLT - milliliter, This must comply with GS1 unit of measure as on stocks

Must be one of:

  • "FOT"
  • "PCE"
  • "MTR"
  • "KGM"
  • "CMT"
  • "LTR"
  • "EA"
  • "MTK"
  • "MTQ"
  • "MLT"
  • "BG"
  • "PR"
  • "RO"
  • "SET"
  • "PK"
  • "LN"
  • "ST"
  • "RL"
  • "BX"
  • "CS"
  • "JR"
  • "LBR"
  • "INH"
  • "DZN"
  • "SO"
  • "CL"
  • "CG"
  • "CT"

Example:

"MLT"

Type: integer

It is number of content unit per order unit e.g 200 (Spray tin 200 ML)


Example:

200

Type: integer

minimum quantity that the customer can add to cart and order.


Example:

6

Type: boolean

Is it sold in loose apart from packing


Example:

true

Type: integer

sold in steps or quantity intervals


Example:

6

Type: object

This object contains all available informations of the product


Example:

{
    "additionalInfo": [
        {
            "en-US": "The product shall be shipped with extra care (e.g horizontal aligned)",
            "fr-FR": "Le produit doit être expédié avec un soin particulier (par exemple aligné horizontalement)"
        }
    ],
    "erpShortDescription": {
        "en-US": "pressure clamp nylon",
        "fr-FR": "pince de pression en nylon"
    },
    "longDescription": {
        "en-US": "High performance, Long life and Superior light quality A compact, energy efficient metal halide lamp that provides crisp, sparkling light with long life and high efficiency.",
        "fr-FR": "Haute performance, longue durée de vie et qualité de lumière supérieure Une lampe aux halogénures métalliques compacte et économe en énergie qui fournit une lumière vive et étincelante avec une longue durée de vie et un rendement élevé."
    },
    "specialInstructions": [
        {
            "en-US": "MSDS or ECCN info",
            "fr-FR": "Informations MSDS ou ECCN"
        },
        {
            "en-US": "MSDS or ECCN info",
            "fr-FR": "Informations MSDS ou ECCN"
        }
    ],
    "legalDisclaimer": [
        {
            "en-US": "WARNING: Certain home improvement projects are inherently dangerous, and even the most benign tool can cause serious injury or death if not used properly",
            "fr-FR": "AVERTISSEMENT: certains projets de rénovation résidentielle sont intrinsèquement dangereux, et même l'outil le plus bénin peut causer des blessures graves ou la mort s'il n'est pas utilisé correctement"
        }
    ]
}

Type: array

contains any additional remarks or info for the product

No Additional Items

Each item of this array must be:

Multilingual Object

Type: object

This is object used to describe the translation of text field. the locale use the IETF BCP 47 language tag of the locale (language and country)


Example:

{
    "de-CH": "ein Text in Schweizerdeutsch",
    "fr-CH": "un texte en français suisse"
}

Each additional property must conform to the following schema

Type: string

Example:

[
    {
        "en-US": "The product shall be shipped with extra care (e.g horizontal aligned)",
        "fr-FR": "Le produit doit être expédié avec un soin particulier (par exemple aligné horizontalement)"
    }
]

Multilingual Object

Type: object

A very short ERP description to be shown on PDP and also used while generating invoices


Example:

{
    "en-US": "iC60a 3P 25A  C",
    "fr-FR": "iC60a 3P 25A  C"
}

Each additional property must conform to the following schema

Type: string

Multilingual Object

Type: object

contains detailed 1-2 lines of description for the product


Example:

{
    "en-US": "High performance, Long life and Superior light quality A compact, energy efficient metal halide lamp that provides crisp, sparkling light with long life and high efficiency.",
    "fr-FR": "Haute performance, longue durée de vie et qualité de lumière supérieure Une lampe aux halogénures métalliques compacte et économe en énergie qui fournit une lumière vive et étincelante avec une longue durée de vie et un rendement élevé."
}

Each additional property must conform to the following schema

Type: string

Type: array

contains any special instructions based on special treatment class such as hazardous goods

No Additional Items

Each item of this array must be:

Multilingual Object

Type: object

This is object used to describe the translation of text field. the locale use the IETF BCP 47 language tag of the locale (language and country)


Example:

{
    "de-CH": "ein Text in Schweizerdeutsch",
    "fr-CH": "un texte en français suisse"
}

Each additional property must conform to the following schema

Type: string

Example:

[
    {
        "en-US": "MSDS or ECCN info",
        "fr-FR": "Informations MSDS ou ECCN"
    }
]

Type: array

contains the list of legal disclaimers associated with a product

No Additional Items

Each item of this array must be:

Multilingual Object

Type: object

This is object used to describe the translation of text field. the locale use the IETF BCP 47 language tag of the locale (language and country)


Example:

[
    {
        "en-US": "WARNING: Certain home improvement projects are inherently dangerous, and even the most benign tool can cause serious injury or death if not used properly",
        "fr-FR": "AVERTISSEMENT: certains projets de rénovation résidentielle sont intrinsèquement dangereux, et même l'outil le plus bénin peut causer des blessures graves ou la mort s'il n'est pas utilisé correctement"
    }
]

Each additional property must conform to the following schema

Type: string

Type: array of string

References to the categorisation leaf nodes on the full categories tree, where the product resides. We suppose that the meganav is a sub set of the full categories, so

No Additional Items

Each item of this array must be:


Example:

[
    "S07SF070301",
    "S06SF0611"
]

Type: string

Reference to the local product categorisation leaf node, where the product resides in Spark AX for the OpCo.


Examples:

"S07SF070301_local"
"S06SF0611_local"

Type: array

Associated technical features for the product

No Additional Items

Each item of this array must be:

Type: object

Multilingual Object

Type: object

name of the feature


Example:

{
    "fr-BE": "Désignation de lampe",
    "nl-BE": "Lampaanduiding"
}

Each additional property must conform to the following schema

Type: string

Multilingual Object

Type: object

value for the feature


Example:

{
    "fr-BE": "Autre",
    "nl-BE": "Overig"
}

Each additional property must conform to the following schema

Type: string

Multilingual Object

Type: object

unit for the feature


Example:

{
    "fr-BE": "Pouce",
    "nl-BE": "Duim"
}

Each additional property must conform to the following schema

Type: string

Multilingual Object

Type: object

additional details of the feature


Example:

{
    "fr-BE": "Autre",
    "nl-BE": "Overig"
}

Each additional property must conform to the following schema

Type: string

Type: integer

Rank for showing the top essential specifications of the product, 1 being the best and shown on top on PLP: Must be a distinct value for all features


Example:

2

Type: boolean

The boolean if true for a feature then feature can be used to choose variants if false then feature can not be used to choose variants


Example:

true

Type: integer

In Pilot: A numeric value that specifies the sorting order of product variations in ascending order. This value is applicable only when 'isUsedForVariation' is set to true.


Example:

30

Type: string

Unique identifier of this feature.
Mandatory when marketplace is enabled (or when relying on a taxonomy). It corresponds to the feature code on the taxonomy model.


Example:

"feature1uniquecode"

Type: array of string

Unique identifier of this feature value(s).
It is only used for features which have a fixed list of possible values (enum, called valueList in the product-taxonomy model).

As an example, a feature which represents the color of a product could have the feature code EF000007, be declared of type valueList with the code VL_EF000007 and have as an actual list of possible values VL_EF000007_BLACK, VL_EF000007_WHITE, VL_EF000007_BLUE, VL_EF000007_ORANGE.
In such case:
- a product with the color blue would have its value set to 'fr-FR': 'Bleu','en-GB': 'Blue' and its valueCodes set to ['VL_EF000007_BLUE'].
- a product with more than one color (say black and blue) would have its value set to 'fr-FR': 'Noir, Bleu','en-GB': 'Black, Blue' and its valueCodes would be ['VL_EF000007_BLACK','VL_EF000007_BLUE']

No Additional Items

Each item of this array must be:

Type: string

Must be at least 1 characters long


Example:

[
    "VL_EF000007_BLACK",
    "VL_EF000007_BLUE"
]

Example:

[
    {
        "name": {
            "fr-BE": "Hélices axialles",
            "nl-BE": "Axiaal filament"
        },
        "value": {
            "fr-BE": "Oui",
            "nl-BE": "Ja"
        },
        "unit": {
            "fr-BE": "Pouce",
            "nl-BE": "Duim"
        },
        "detail": {
            "fr-BE": "bleu",
            "nl-BE": "blauw"
        },
        "rank": 2
    },
    {
        "name": {
            "fr-BE": "Désignation de lampe",
            "nl-BE": "Lampaanduiding"
        },
        "value": {
            "fr-BE": "autre",
            "nl-BE": "Overig"
        },
        "unit": {
            "fr-BE": "kilogramme",
            "nl-BE": "Kilogram"
        },
        "detail": {
            "fr-BE": "autre",
            "nl-BE": "Overig"
        },
        "rank": 1
    }
]

Type: array

References to similar products, accessories, spare parts, mandatory essentials, component parts, successors, variants etc Used in cases of cross and up sell

No Additional Items

Each item of this array must be:

References

Type: object

references to the current product e.g accessories, followup and similar

Type: enum (of string)

the reference type of the product such as accessories, followup and similar

Must be one of:

  • "accessories"
  • "followup"
  • "similar"
  • "variation"

Type: string

the reference product id to which this product belongs


Example:

"000236"

Example:

[
    {
        "type": "accessories",
        "productIdTo": "000428"
    },
    {
        "type": "similar",
        "productIdTo": "000653"
    },
    {
        "type": "similar",
        "productIdTo": "002354"
    },
    {
        "type": "followup",
        "productIdTo": "000987"
    }
]

Type: array

detailed information for various format of packing the product

No Additional Items

Each item of this array must be:

Packing Details

Type: object

packing details of various formats in which the product could be packed and delivered

Type: enum (of string)

packing type of the product such as box or carton

Must be one of:

  • "UNIT"
  • "BOX"
  • "CARTON"
  • "PALLET"
  • "CONTAINER"
  • "CARD"
  • "REEL"
  • "PACK"
  • "BAG"
  • "PIECE"
  • "JUG"
  • "JAR"
  • "EACH"
  • "CASE"
  • "LENGTH"
  • "PAIR"
  • "BLISTER"

Example:

"BOX"

Type: string

[Deprecated - Use type instead]


Example:

"box"

Type: string

The units in which the dimensions are computed and displayed in e.g cm, mm, inch etc applicable for length, width, height, diameter


Example:

"mm"

Type: string

The units in which the weights are computed and displayed in e.g gm,kg etc


Example:

"kg"

Type: string

The units in which the volumes are computed and displayed in e.g mm^3


Example:

"cm^3"

Type: integer

no of products being packaged in a packing


Example:

6

Type: integer

min quantity which is compliant to packing units (crate or box). This only a display information about the packing


Example:

2

Type: integer

max quantity which is compliant to packing units (crate or box). This only a display information about the packing


Example:

12

Type: boolean

This determines if the packing is mandatory or not based on min-max quantity


Example:

true

Type: number

length of packing object


Example:

2.4

Type: number

width of packing object


Example:

1.2

Type: number

depth of packing object


Example:

3.5

Type: number

weight of packing object


Example:

2.2

Type: number

diameter of packing object


Example:

5.2

Type: number

volume of packing object


Example:

1.2

Type: string

unique identifier of the packing


Example:

"4012196097545"

Example:

[
    {
        "code": "box",
        "count": 6,
        "dimensionUnit": "mm",
        "weightUnit": "kg",
        "volumeUnit": "mm^3",
        "minQuantity": 2,
        "maxQuantity": 12,
        "isPackageBreak": true,
        "length": 2.4,
        "width": 1.2,
        "depth": 3.5,
        "weight": 2.2,
        "diameter": 5.2,
        "volume": 1.2,
        "packingGtin": "4012196097545"
    },
    {
        "code": "carton",
        "count": 36,
        "dimensionUnit": "cm",
        "weightUnit": "g",
        "volumeUnit": "cm^3",
        "minQuantity": 18,
        "maxQuantity": 36,
        "isPackageBreak": true,
        "length": 12.4,
        "width": 11.2,
        "depth": 13.5,
        "weight": 12.2,
        "diameter": 15.2,
        "volume": 11.2,
        "packingGtin": "4012196097522"
    }
]

Type: object

product validity range when it became active and when it expires


Example:

{
    "manufactureDate": "2020-10-14T10:22:00.116Z",
    "expireDate": "2020-10-14T10:22:00.116Z"
}

Type: stringFormat: date-time

date when the product is manufactured and is active (All date formats follow ISO 8601 standard)


Example:

"2020-10-14T10:22:00.116Z"

Type: stringFormat: date-time

date until when the product is active or when it is due to expire


Example:

"2020-10-14T10:22:00.116Z"

Type: integer

the expected time of delivery in days from the date of order, specially in cases of non stocked products


Example:

2

Type: integer

warranty of a product in years by manufacturer


Example:

2

Type: string

The series to which the product belongs to depending on opco


Example:

"JUSSI"

Type: boolean

Is the current product commerce ready. To be used for analytics to prioritise enriching the product data based on its demand and make it ready for e-commerce


Example:

true

Type: boolean Default: false

If true the product is considered a cuttable product that allows the customer to add multiple cuts in multiple lengths from the PLP and PDP.


Example:

true

Type: object

When customers select cables to be cut to length, the customer can have the option to choose to receive the cable in different reel options: Spooled or Coiled.


Example:

{
    "values": [
        "COILED",
        "SPOOLED"
    ],
    "defaultValue": "COILED"
}

Type: array

array of possible reelOption

No Additional Items

Each item of this array must be:

ReelOption

Type: enum (of string)

Reel option for cuttable cables

Must be one of:

  • "COILED"
  • "SPOOLED"

Example:

"SPOOLED"

ReelOption

Type: enum (of string) Default: "COILED"

Reel option for cuttable cables

Must be one of:

  • "COILED"
  • "SPOOLED"

Example:

"SPOOLED"

Type: boolean Default: true

If true then the product is considered returnable and if false the product is considered non-returnable


Example:

false

Type: boolean Default: true
  • When true then the product is considered part of the open catalog and can be searchable and viewed when not logged in and all accounts.
  • When false the product will be visible only for allowed accounts, the opco can configure that using the inclusion feed.

Example:

false

Type: boolean Default: false

In Pilot If true then the product is considered offline. Offline products are:
- not indexed in spark search engine
- their PDP accessibility follows the inclusion/exclusion rules (accessible by default, isPartOfOpenCatalog: false hides it)
- they are available in SOA


Example:

true

Type: array of object

Array containing for each organistion the list of product properties overriden for this organisation

No Additional Items

Each item of this array must be:

Type: object

Type: string

This is the identifier for commercial orgnanisation

Type: object

This object list all product fields that can be override by an organisation. Needed by OpCo organised with a regional model or commercial organisation

Type: enum (of string)

a classification for availability of stocks at branch, CDC. A= branch (+CDC), B= CDC, C= OnDemand L = Liquidation (product is sold until our stock runs out, no backorders allowed, no longer available from the supplier)

Must be one of:

  • "A"
  • "B"
  • "C"
  • "L"

Type: array of enum (of string)

The tags for the product to represent the combination of associated labels

No Additional Items

Each item of this array must be:

Type: enum (of string)

The possible tags for the product are
- NEW: for new product.
- ENDOFLIFE: for end of life product
- SUSTAINABLE: related to green offer
- CIRCULAR: the product is made of recycled materials or reused materials
- OUTLET: for Damaged (aesthetically) goods but fully functional products with very limited quantity

Must be one of:

  • "NEW"
  • "END_OF_LIFE"
  • "SUSTAINABLE"
  • "CIRCULAR"
  • "OUTLET"

Type: object

ordering details comprising units,packing steps and quantity details


Example:

{
    "orderUnit": "TN",
    "contentUnit": "MLT",
    "packingQuantity": 200,
    "minQuantity": 6,
    "isSoldLoose": true,
    "quantitySteps": 6
}

Type: enum (of string)

order unit are the units in which a product is being sold, e.g TN - tin, This must comply with GS1 unit of measure as on stocks

Must be one of:

  • "FOT"
  • "PCE"
  • "MTR"
  • "KGM"
  • "CMT"
  • "LTR"
  • "EA"
  • "MTK"
  • "PK"
  • "MTQ"
  • "TN"
  • "MLT"
  • "BG"
  • "PR"
  • "RO"
  • "SET"
  • "LN"
  • "ST"
  • "RL"
  • "BX"
  • "CS"
  • "JR"
  • "LBR"
  • "INH"
  • "DZN"
  • "SO"
  • "CL"
  • "CG"
  • "CT"

Example:

"TN"

Type: enum (of string)

content unit is the exact measurable unit e.g MLT - milliliter, This must comply with GS1 unit of measure as on stocks

Must be one of:

  • "FOT"
  • "PCE"
  • "MTR"
  • "KGM"
  • "CMT"
  • "LTR"
  • "EA"
  • "MTK"
  • "MTQ"
  • "MLT"
  • "BG"
  • "PR"
  • "RO"
  • "SET"
  • "PK"
  • "LN"
  • "ST"
  • "RL"
  • "BX"
  • "CS"
  • "JR"
  • "LBR"
  • "INH"
  • "DZN"
  • "SO"
  • "CL"
  • "CG"
  • "CT"

Example:

"MLT"

Type: integer

It is number of content unit per order unit e.g 200 (Spray tin 200 ML)


Example:

200

Type: integer

minimum quantity that the customer can add to cart and order.


Example:

6

Type: boolean

Is it sold in loose apart from packing


Example:

true

Type: array of enum (of string)

Array of icon codes to be displayed on the product. Allowed icon codes could be found here https://sonepardigital.atlassian.net/wiki/spaces/DFSP/pages/2967044168/SPM-5296+Attribute+based+icons

No Additional Items

Each item of this array must be:

Type: enum (of string)

Must be one of:

  • "CPREN50575"
  • "SINGLE_CABLE"
  • "MULTI_CABLE"
  • "LS0H"
  • "FIRE_RES0H30"
  • "FIRE_RES1H"
  • "FIRE_RES1H30"
  • "FIRE_RES2H"
  • "REEL"
  • "DRUM"
  • "ENERGY_A"
  • "ENERGY_B"
  • "ENERGY_C"
  • "ENERGY_D"
  • "ENERGY_E"
  • "ENERGY_F"
  • "ENERGY_G"
  • "RETHINK"
  • "REUSE"
  • "RECYCLE"
  • "PROP65"
  • "ENERGY_STAR"
  • "GREEN_PRODUCT"

Example:

[
    "CPREN50575",
    "FIRE_RES2H",
    "REEL"
]

Type: object

This object contains the attributes related to green offer details associated with the product


Examples:

{
    "carbonFootprint": {
        "value": 34.9,
        "unit": "KGM"
    },
    "rating": "B"
}
{
    "carbonFootprint": {
        "value": 0.9,
        "unit": "GRM"
    },
    "rating": "A"
}

Type: object

the carbon footprint of the product.

Type: number

the carbon footprint value.

Type: enum (of string)

the carbon footprint unit.

Must be one of:

  • "GRM"
  • "KGM"
  • "MTR"
  • "KMT"

Type: enum (of string)

the green rating of this product.

Must be one of:

  • "A"
  • "B"
  • "C"
  • "X"

Type: object

In Pilot This object contains the attributes related to product carbon footprint details


Examples:

{
    "supplier": {
        "value": 34.9
    },
    "sonepar": {
        "value": 0.9,
        "range": 0.5
    }
}
{
    "supplier": {
        "value": 34.9,
        "unit": "KgCO2eq/Km"
    }
}

Type: object

Carbon footprint data as provided by the supplier

Type: number

The carbon footprint value

KgCO2EqUnit

Type: enum (of string) Default: "KgCO2eq"

The carbon footprint unit.

Must be one of:

  • "KgCO2eq"
  • "KgCO2eq/Km"


Carbon footprint data as estimated by the sonepar

Type: object

the carbon footprint of the product.

Type: number

The carbon footprint value

KgCO2EqUnit

Type: enum (of string) Default: "KgCO2eq"

The carbon footprint unit.

Must be one of:

  • "KgCO2eq"
  • "KgCO2eq/Km"

Type: number

The range of the carbon footprint value (+ or - the value)

Type: object

The following properties are required:

  • value
  • range

Type: object

Property containing all marketplace related data for this product.
It also acts as a hint telling spark if this product is synchronised on the marketplace.

This property is only intended to be used in the event based product integration and not expected in the file based product ingestion flow.


Example:

{
    "sellers": {
        "Seller1OpcoId": {
            "opcoProductId": "SEL1_1234567890",
            "sku": "0987654321"
        },
        "Seller2OpcoId": {
            "opcoProductId": "SEL2_1234567890",
            "taxCode": "TAX_5_5",
            "ecoTaxes": [
                {
                    "code": "FR-DEEE",
                    "taxAmount": {
                        "amount": 100,
                        "scale": 2,
                        "currency": "EUR"
                    }
                }
            ]
        }
    }
}

Type: object

This object properties key is the opcoSellerId


Example:

{
    "Seller1OpcoId": {
        "opcoProductId": "SEL1_1234567890",
        "sku": "0987654321"
    },
    "Seller2OpcoId": {
        "opcoProductId": "SEL2_1234567890",
        "taxCode": "TAX_5_5",
        "ecoTaxes": [
            {
                "code": "FR-DEEE",
                "taxAmount": {
                    "amount": 100,
                    "scale": 2,
                    "currency": "EUR"
                }
            }
        ]
    }
}

Each additional property must conform to the following schema

Type: object

Marketplace information for this product for this seller

Type: string

Product identifier defined by the opco when sold by this seller. This field is optional and if defined it overrides identifier.opcoProductId.

Type: string

Unique product id for this product as used by this seller, provided by the seller through the marketplace platform

Type: string

Product tax code, as received from mirakl per seller. Its value is a label defined by the OpCo, not an actual amount

Type: array

List of eco-contribution amounts and corresponding producer identifiers, if applicable.

No Additional Items

Each item of this array must be:

EcoTax

Type: object

Eco-contribution code and amount

Type: string

Code of the eco tax


Example:

"FR-DEEE"

Price

Type: object

Amount of the eco tax

Type: integer

the actual unscaled amount based on list or customer


Example:

205987

Type: integer

the scale to be applied on the unscaled amount


Example:

2

Type: string

the currency code following the ISO 4217 standard 3 letter in which the prices are being displayed


Example:

"EUR"

Type: string

Id of the seller as known by the marketplace platform

Type: string

Product identifier as referenced by mirakl


Example:

"5aea55dd-8671-406d-9dbe-093d626e40ee"

Type: object

A bag of values for marketplace product features which don't have any direct mapping to spark data model. Used for the opco to retrieve/store product features which are hidden from spark. It should only be used in the context of marketplace integration.


Example:

{
    "etimclass": "EC000011",
    "gtin": [
        "11111111",
        "11111112"
    ]
}

Only Product Id

Type: object
No Additional Properties

Type: object
No Additional Properties

Type: string

The unique product identifier depending on each opcos backend system (like ERP product ID)

Must match regular expression: ^[a-zA-Z0-9_-]+$
Examples:

"000428"
"az_000428"
"000428-TY"

Type: boolean

Tells whether the search criteria found a match or not

List of categories hierarchies to which this product belongs

Type: array of array
No Additional Items

Each item of this array must be:

Type: array of string

One of the hiereachy of categories where this product resides. Order matters, provided from top (root) to bottom (child) categories.

No Additional Items

Each item of this array must be:


Examples:

[
    "6953",
    "SCC06",
    "SCC0601",
    "SCC060106"
]
[
    "6953",
    "SCC07",
    "SCC0703",
    "SCC070302"
]

Error

Type: object

Error feedback

No Additional Properties
Examples:

{
    "context": {
        "correlationId": "800d8aea-8b25-47c7-96a0-cd72377fb3d8",
        "intent": "doSomethingCool",
        "sourceFileName": "product-assets.json"
    },
    "action": "INSERT",
    "error": {
        "internal": {
            "reason": "DATABASE",
            "message": "Failed to connect to our database (..)"
        }
    }
}
{
    "context": {
        "correlationId": "800d8aea-8b25-47c7-96a0-cd72377fb3d8"
    },
    "action": "INSERT",
    "error": {
        "mirakl": {
            "reason": "MCM-02032",
            "message": "'null' is an unknown status. The possible values are [ACCEPTED, REJECTED, CHANGES_REQUESTED, TO_REVIEW].",
            "payload": {
                "status": "FAILURE",
                "mirakl_product_id": "c742cdaf-87b3-4e7a-80a0-4ab45d2716f9",
                "acceptance": {
                    "message": "Category(ies) with id(s) [0000] does not exist in DB for the product with Gtin 8889890888888",
                    "reason_code": "GENERIC_INTEGRATION_ERROR"
                },
                "product_urls": [],
                "synchronization_errors": [
                    {
                        "code": "MCM-02032",
                        "message": "'null' is an unknown status. The possible values are [ACCEPTED, REJECTED, CHANGES_REQUESTED, TO_REVIEW]."
                    }
                ]
            }
        }
    }
}

EventHeader

Type: object

This object is used to describe some technical meta information related to the event

Type: enum (of string)

The application source of this event

Must be one of:

  • "SPARK"
  • "OPCO"
  • "MARKETPLACE"

Type: enum (of string)

The version of the json format event

Must be one of:

  • "v1"

Type: object

Type: object

Example:

{
    "correlationId": "a4b9f576-bdf8-45b6-82cf-62831c9e1b2e",
    "intent": "upsertAProduct",
    "sourceFileName": "product-assets.json"
}

Type: string

An identifier of this command request, will be echoed back in the related product-feedbacks event. It should be a uuid and shall be different each new request. It may be used by the implementation as an idempotency key and should be used in structured logs.

Type: string

A human readable description of the intent of this request. It is used for logging and monitoring purpose and should not be relied upon by product-feedbacks topic consumers

Type: string

It's a source product file name where error is originated. It is used to maintain the same file name for source and error file which is created as part of product-feedbacks task

Source property

Type: object

Type: enum (of string)

source of the command request. This attribute is only be set by SPARK following the processing of a product-command request.

Must be one of:

  • "OPCO"
  • "MARKETPLACE"

Example:

"OPCO"

Type: enum (of string) Default: "UPSERT"

Defines the type of command to be processed

Must be one of:

  • "UPSERT"
  • "DELETE"
  • "INSERT"
  • "PATCH"
  • "INSERT_DRY_RUN"

Examples:

"UPSERT"
"DELETE"

Type: object

Provide details on what went wrong

Functional

Type: object
No Additional Properties

Type: object

Provides details on the functional error.
Consumers should usually not retry without fixing first the error reported here.

No Additional Properties

Type: string

A human readable description of the error

Type: enum (of string)

The reason code for the error.
- INVALIDPAYLOAD: An error occured while parsing the command payload such as incoherent parameters provided or missing fields.
- CATEGORY
NOTFOUND: One of the provided product categories doesn't exist.
- MULTIPLE
PRODUCT_MATCH: More than one product matched the provided criteria.

Must be one of:

  • "INVALID_PAYLOAD"
  • "CATEGORY_NOT_FOUND"
  • "MULTIPLE_PRODUCT_MATCH"
  • "ALREADY_EXISTS"

Type: object

The invalid payload source of the errors

Internal

Type: object
No Additional Properties

Type: object

Provides details on the technical error.
DThe initial producer should retry with exponential backoff.

No Additional Properties

Type: string

A human readable description of the error

Type: enum (of string)

The reason code for the error

Must be one of:

  • "DATABASE"

Mirakl

Type: object
No Additional Properties

Type: object

Provides details on the Mirakl synchronisation error.
DThe initial producer should never retry this error as it will mainly be used for reporting.

No Additional Properties

Type: string

A human readable description of the error

Type: string

The reason code for the error

Type: object

The raw data provided by the Mirakl report for this product

If the conditions in the "If" tab are respected, then the conditions in the "Then" tab should be respected. Otherwise, the conditions in the "Else" tab should be respected.

Type: object

eventHeader.source is SPARK

Type: object

Type: const
Specific value: "SPARK"
Type: object

context.source is required

Type: object

Type: object

Example:

{
    "correlationId": "a4b9f576-bdf8-45b6-82cf-62831c9e1b2e",
    "intent": "upsertAProduct",
    "sourceFileName": "product-assets.json"
}

Type: string

An identifier of this command request, will be echoed back in the related product-feedbacks event. It should be a uuid and shall be different each new request. It may be used by the implementation as an idempotency key and should be used in structured logs.

Type: string

A human readable description of the intent of this request. It is used for logging and monitoring purpose and should not be relied upon by product-feedbacks topic consumers

Type: string

It's a source product file name where error is originated. It is used to maintain the same file name for source and error file which is created as part of product-feedbacks task

Source property

Type: object

Type: enum (of string)

source of the command request. This attribute is only be set by SPARK following the processing of a product-command request.

Must be one of:

  • "OPCO"
  • "MARKETPLACE"

Example:

"OPCO"
Type: object

context.source is not allowed

Type: object

Example:

{
    "correlationId": "a4b9f576-bdf8-45b6-82cf-62831c9e1b2e",
    "intent": "upsertAProduct",
    "sourceFileName": "product-assets.json"
}

Type: string

An identifier of this command request, will be echoed back in the related product-feedbacks event. It should be a uuid and shall be different each new request. It may be used by the implementation as an idempotency key and should be used in structured logs.

Type: string

A human readable description of the intent of this request. It is used for logging and monitoring purpose and should not be relied upon by product-feedbacks topic consumers

Type: string

It's a source product file name where error is originated. It is used to maintain the same file name for source and error file which is created as part of product-feedbacks task