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

Quote

Type: object

Schema representing a quote. The source can be a quote request originating within Spark or a quote created within OpCo back-end systems. QuoteRequest(BaseQuote and QuoteRequestExtension) is sent from Spark. OpCoQuote(BaseQuote and OpCoQuoteExtension) object is expected from the OpCo.

QuoteRequest

Type: object

The details of the quote request

BaseQuote

Type: object

Example:

{
    "eventHeader": {
        "source": "OPCO",
        "version": "v1"
    },
    "quoteName": "Site 1 quote",
    "opcoId": "BEL-CEBEO",
    "salesChannel": "TELESALES",
    "status": "READY_TO_ORDER",
    "createdDateTime": "2021-07-08T14:17:46.218772Z",
    "lastModifiedDateTime": "2021-07-11T14:17:46.218772Z",
    "accountId": "59852",
    "additionalInformation": {
        "additionalReferences": [
            {
                "name": "warehouseName",
                "value": "Z.I. Fourviere"
            }
        ]
    },
    "contributors": [
        {
            "fullName": "XXXX XXXXXX",
            "email": "xxx@xxxxxx.com",
            "creator": true
        }
    ],
    "lineItems": [
        {
            "id": "96122268053639168",
            "quantity": 5,
            "minOrderableQuantity": 1,
            "maxOrderableQuantity": 100,
            "requestedQuantity": 10,
            "type": "PRODUCT",
            "productId": "3618978",
            "prices": {
                "netPrice": {
                    "amount": 4426,
                    "scale": 2,
                    "currency": "EUR"
                },
                "totalPrice": {
                    "amount": 17130,
                    "scale": 2,
                    "currency": "EUR"
                },
                "taxes": [
                    {
                        "type": "VAT",
                        "percentage": 21,
                        "isSurcharge": false
                    },
                    {
                        "type": "ECOTAX",
                        "taxAmount": {
                            "amount": 826,
                            "scale": 4,
                            "currency": "EUR"
                        },
                        "isSurcharge": true
                    }
                ]
            }
        },
        {
            "id": "96121848778428416",
            "quantity": 5,
            "minOrderableQuantity": 1,
            "maxOrderableQuantity": 100,
            "requestedQuantity": 10,
            "productId": "4408098",
            "prices": {
                "netPrice": {
                    "amount": 1886,
                    "scale": 2,
                    "currency": "EUR"
                },
                "totalPrice": {
                    "amount": 8930,
                    "scale": 2,
                    "currency": "EUR"
                }
            }
        }
    ],
    "totalAmountIncludingTaxes": {
        "amount": 5820,
        "scale": 2,
        "currency": "EUR"
    },
    "totalAmountIncludingSurcharges": {
        "amount": 5650,
        "scale": 2,
        "currency": "EUR"
    },
    "totalByTax": [
        {
            "type": "VAT",
            "isSurcharge": false,
            "taxAmount": {
                "amount": 12000,
                "scale": 4,
                "currency": "EUR"
            }
        },
        {
            "type": "ECOTAX",
            "isSurcharge": true,
            "taxAmount": {
                "amount": 260,
                "scale": 2,
                "currency": "EUR"
            }
        }
    ],
    "logisticDetails": {
        "logisticMethod": "DELIVERY",
        "deliveryAddress": {
            "opCoAddressId": "1234567890",
            "addressLine1": "chaussee Verlinden 22",
            "addressLine2": "Apartment 2",
            "city": "Bruges",
            "country": "BEL",
            "postalCode": "0287",
            "addressName": "Building #2"
        }
    }
}

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"
  • "SPARK-AX"
  • "SALES_ORDER_AUTOMATION"

Type: enum (of string)

The version of the json format event

Must be one of:

  • "v1"

Type: string

Name of the quote if provided by the Customer. This field's value will only be used for display purposes on the Quote listing and details.
If the OpCo wishes to transfer any information from Quote to Cart to Order, then the OpCo should provide the information 'also' as part of additionalReferences field.


Example:

"Site 1 quote"

Type: string

The quote id generated by the opco back-end system. This field is named originally quoteId but it represents the Id generated by opco system.
The field quoteRequestId represent the Id when quote is firstly created on Spark side


Examples:

"4999569661752721026"
"4999569661_ORG1"

Type: string

tenant identifier for an Opco in SPARK multi-tenant platform


Example:

"BEL-CEBEO"

Type: string

Optional field, needed by OpCo organised with a regional model or commercial organisation. It can be used to filter or route based on the orgId.


Examples:

"org123"
"SNE"

Type: enum (of string)

The sales channel where the quote / quote request is created

Must be one of:

  • "ESHOP"
  • "MOBILE_APP"
  • "SYSTEM_TO_SYSTEM"
  • "STORE"
  • "BY_PHONE"
  • "SALES_ORDER_AUTOMATION"

Example:

"ESHOP"

Type: enum (of string)

The overall status of the quote / quote request. EXPIRED, ORDERED, CANCELLED and DELETED are the terminating statuses for the quote as no further updates are expected once the quote reaches to any of these statuses

Must be one of:

  • "READY_TO_ORDER"
  • "IN_REVIEW"
  • "EXPIRED"
  • "ORDERED"
  • "CANCELLED"
  • "DELETED"
  • "REQUESTED"
  • "CANCELLATION_REQUESTED"
  • "DRAFT"

Type: stringFormat: date-time

The date when the quote / quote request is created with ISO 8601 format. This date/time should not be in future.


Examples:

"2021-10-12T08:30:22.804Z"
"2021-10-12T08:30:22"

Type: stringFormat: date-time

The date when the quote / quote request was last modified with ISO 8601 format. This date/time should not be in future and should not be before the createdDateTime.


Examples:

"2021-10-23T08:30:22.804Z"
"2021-10-23T08:30:22Z"

Type: string

The opco account id of the customer.


Examples:

"12345"
"12345_SNE"

Type: array of object

The list of users that contribute on the creation and review of the quote / quote request. The creator of the quote, the validator of the quote ...

No Additional Items

Each item of this array must be:

Type: object

Example:

[
    {
        "fullName": "John Smith",
        "email": "john.smith@mycompany.com",
        "creator": true
    },
    {
        "fullName": "John Validator",
        "email": "john.validator@mycompany.com"
    }
]

Type: string

The full name of a contributor.


Example:

"John Smith"

Type: stringFormat: email

The email of a contributor. This is the identifier of the user on spark. Must be email address format.


Example:

"john.smith@mycompany.com"

Type: boolean Default: "false"

A boolean that when is true means that the current contributor is the creator/requester of the quote from where this quote is created.
In case the quote is created by the an associate on behalf of a customer, this boolean should be true for the contributor that contains the end user email and not the associate email.


Example:

"false"

LogisticDetails

Type: object

Details of the logistic preferences that apply to the quote or quote request.
If restrictions are provided, then SPARK will ignore LogisticDetails when ingesting the Quote.


Examples:

{
    "logisticMethod": "PICK_UP",
    "facilityId": "395"
}
{
    "logisticMethod": "DELIVERY",
    "deliveryAddress": {
        "opCoAddressId": "1234567890",
        "addressLine1": "chaussee Verlinden 22",
        "addressLine2": "Apartment 2",
        "city": "Bruges",
        "country": "BEL",
        "postalCode": "0287",
        "addressName": "Building #2"
    }
}

Type: enum (of string)

Logistic method restricted for the quote

Must be one of:

  • "DELIVERY"
  • "PICK_UP"

Example:

"PICK_UP"

Type: string

Unique identifier of the facility used when logistic method is PICK_UP


Example:

"395"

DeliveryAddress

Type: object

Delivery address linked with the quote

Type: string

OpCo internal system's unique identifier for the address.


Example:

"237564557868778"

Type: string

According to ISO 19060, this field contains one third of the address. In most cases this usually contains the whole addres though.


Example:

"Belleboslaan 17"

Type: string

According to ISO 19060, this field contains one third of the address. This is an optional field.

Type: string

According to ISO 19060, this field contains one third of the address. This is an optional field.

Type: string

City.


Example:

"Montesson"

Type: string

The ISO 3166-1 alpha-3 of the country


Example:

"FRA"

Type: string

Zip code.


Example:

"78360"

Type: string

department


Example:

"JURA"

Type: string

region


Example:

"Bretagne"

Type: string

address name


Example:

"Belleboslaan 17"

Type: string

Company name, it might differ from the account name

Must be at least 1 characters long


Example:

"Easy Electric"

Type: string

Address contact's Phone number

Must be at least 1 characters long


Example:

"+330287345678"

Type: string

Contact's firstname.

Must be at least 1 characters long


Example:

"John"

Type: string

Contact's middlename.

Must be at least 1 characters long


Example:

"Michael"

Type: string

Contact's lastname.

Must be at least 1 characters long


Example:

"Doe"

Type: string

Optional indications or instructions about the delivery

Must be at least 1 characters long


Example:

"Please leave the parcel next to the front door."

Type: string

Optional reference about the customer delivery

Must be at least 1 characters long


Example:

"Reference #123"

Type: object

Additional information for the quote

Type: array

Additional information associated with the quote. Any fields provided here by the OpCo, will be transferred to the Order as part of Order creation / submission to the OpCo.

No Additional Items

Each item of this array must be:

AdditionalReference

Type: object

Object representing an additional reference.

Type: string

Name of the additional reference


Example:

"projectId"

Type: string

Value of the additional reference filled by the customer


Example:

"P570629"

Example:

[
    {
        "name": "purchaseOrder",
        "value": "PO 64746362"
    },
    {
        "name": "warehouseName",
        "value": "Z.I. Fourviere"
    }
]

Type: string

Unique identifier that represents the quote request


Example:

"ref393828202"

QuoteRequestExtension

Type: object
No Additional Properties

Type: string

Unique identifier that represents the quote request


Example:

"ref393828202"

Type: array of object

Line items that are included in the quote request.

No Additional Items

Each item of this array must be:

Type: object

The line item within the quote request

Type: string

The ID of the line item in Spark, shouldn't be updated by the OpCo.

Must match regular expression: ^[0-9]+$
Example:

"4999569661752721026"

Type: string

A unique identifier of the product


Example:

"9554961192345"

Type: integer

Quantity of the item

Value must be greater or equal to 1


Example:

10

Prices

Type: object

Contains the detail of prices related to the current product and line item

Price

Type: object

This is the product unit price that the customer will pay to the OPCO, without taxes, without any quote or pre-agreement.


Example:

{
    "amount": 1000,
    "scale": 2,
    "currency": "EUR"
}

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"

Price

Type: object

This is the product list price that will be displayed to the customer if provided by OpCo.


Example:

{
    "amount": 800,
    "scale": 2,
    "currency": "EUR"
}

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"

Multilingual Object

Type: object

A short title for this price


Example:

{
    "en-GB": "Schneider contract",
    "fr-FR": "Contrat Schneider"
}

Each additional property must conform to the following schema

Type: string

Type: string

An identifier of the contract related to this price


Example:

"7575785"

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

The type of this price. Default value if not present is STANDARD.

Must be one of:

  • "STANDARD"
  • "SPECIAL_PRICE_AGREEMENT"
  • "PROJECT"

Example:

"STANDARD"

Example:

[
    {
        "id": "4999569661752721000",
        "quantity": 10,
        "productId": "4999569661752721000",
        "prices": {
            "netPrice": {
                "amount": 1000,
                "scale": 2,
                "currency": "EUR"
            },
            "listPrice": {
                "amount": 2000,
                "scale": 2,
                "currency": "EUR"
            },
            "type": "STANDARD"
        }
    },
    {
        "id": "4999569661752724322",
        "quantity": 2,
        "type": "PRODUCT",
        "productId": "4999569661752721000"
    }
]

QuoteCancellationRequest

Type: object

Type: string

The quote id generated by the opco back-end system


Examples:

"4999569661752721026"
"4999569661_ORG1"

Type: string

The email address of the sales representative who initiated the quote cancellation.


Example:

"geert@electracontractors.be"

Additional Properties of any type are allowed.

Type: object

Examples:

{
    "eventHeader": {
        "source": "SPARK",
        "version": "v1"
    },
    "quoteRequestId": "ref393828202",
    "quoteName": "Site 1 quote",
    "opcoId": "BEL-CEBEO",
    "salesChannel": "TELESALES",
    "status": "REQUESTED",
    "createdDateTime": "2021-07-08T14:17:46.218772Z",
    "accountId": "59852",
    "additionalInformation": {
        "additionalReferences": [
            {
                "name": "requestMessage",
                "value": "I need a quote.."
            },
            {
                "name": "requestMotivation",
                "value": "Better pricing"
            }
        ]
    },
    "contributors": [
        {
            "fullName": "XXXX XXXXXX",
            "email": "xxx@xxxxxx.com",
            "creator": true
        }
    ],
    "lineItems": [
        {
            "id": "96122268053639168",
            "quantity": 5,
            "productId": "3618978"
        },
        {
            "id": "96121848778428416",
            "quantity": 5,
            "productId": "4408098"
        }
    ],
    "logisticDetails": {
        "logisticMethod": "PICK_UP",
        "facilityId": "395"
    }
}
{
    "eventHeader": {
        "source": "SPARK-AX",
        "version": "v1"
    },
    "opcoQuoteId": "ref393828202",
    "opcoId": "BEL-CEBEO",
    "status": "CANCELLATION_REQUESTED",
    "quoteRequestId": "ref393828202",
    "accountId": "59852",
    "cancelledBy": "john@doe.com"
}

OpCoQuote

Type: object

Details of the quote created within OpCo back-end systems.

BaseQuote

Type: object

Example:

{
    "eventHeader": {
        "source": "OPCO",
        "version": "v1"
    },
    "quoteName": "Site 1 quote",
    "opcoId": "BEL-CEBEO",
    "salesChannel": "TELESALES",
    "status": "READY_TO_ORDER",
    "createdDateTime": "2021-07-08T14:17:46.218772Z",
    "lastModifiedDateTime": "2021-07-11T14:17:46.218772Z",
    "accountId": "59852",
    "additionalInformation": {
        "additionalReferences": [
            {
                "name": "warehouseName",
                "value": "Z.I. Fourviere"
            }
        ]
    },
    "contributors": [
        {
            "fullName": "XXXX XXXXXX",
            "email": "xxx@xxxxxx.com",
            "creator": true
        }
    ],
    "lineItems": [
        {
            "id": "96122268053639168",
            "quantity": 5,
            "minOrderableQuantity": 1,
            "maxOrderableQuantity": 100,
            "requestedQuantity": 10,
            "type": "PRODUCT",
            "productId": "3618978",
            "prices": {
                "netPrice": {
                    "amount": 4426,
                    "scale": 2,
                    "currency": "EUR"
                },
                "totalPrice": {
                    "amount": 17130,
                    "scale": 2,
                    "currency": "EUR"
                },
                "taxes": [
                    {
                        "type": "VAT",
                        "percentage": 21,
                        "isSurcharge": false
                    },
                    {
                        "type": "ECOTAX",
                        "taxAmount": {
                            "amount": 826,
                            "scale": 4,
                            "currency": "EUR"
                        },
                        "isSurcharge": true
                    }
                ]
            }
        },
        {
            "id": "96121848778428416",
            "quantity": 5,
            "minOrderableQuantity": 1,
            "maxOrderableQuantity": 100,
            "requestedQuantity": 10,
            "productId": "4408098",
            "prices": {
                "netPrice": {
                    "amount": 1886,
                    "scale": 2,
                    "currency": "EUR"
                },
                "totalPrice": {
                    "amount": 8930,
                    "scale": 2,
                    "currency": "EUR"
                }
            }
        }
    ],
    "totalAmountIncludingTaxes": {
        "amount": 5820,
        "scale": 2,
        "currency": "EUR"
    },
    "totalAmountIncludingSurcharges": {
        "amount": 5650,
        "scale": 2,
        "currency": "EUR"
    },
    "totalByTax": [
        {
            "type": "VAT",
            "isSurcharge": false,
            "taxAmount": {
                "amount": 12000,
                "scale": 4,
                "currency": "EUR"
            }
        },
        {
            "type": "ECOTAX",
            "isSurcharge": true,
            "taxAmount": {
                "amount": 260,
                "scale": 2,
                "currency": "EUR"
            }
        }
    ],
    "logisticDetails": {
        "logisticMethod": "DELIVERY",
        "deliveryAddress": {
            "opCoAddressId": "1234567890",
            "addressLine1": "chaussee Verlinden 22",
            "addressLine2": "Apartment 2",
            "city": "Bruges",
            "country": "BEL",
            "postalCode": "0287",
            "addressName": "Building #2"
        }
    }
}

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"
  • "SPARK-AX"
  • "SALES_ORDER_AUTOMATION"

Type: enum (of string)

The version of the json format event

Must be one of:

  • "v1"

Type: string

Name of the quote if provided by the Customer. This field's value will only be used for display purposes on the Quote listing and details.
If the OpCo wishes to transfer any information from Quote to Cart to Order, then the OpCo should provide the information 'also' as part of additionalReferences field.


Example:

"Site 1 quote"

Type: string

The quote id generated by the opco back-end system. This field is named originally quoteId but it represents the Id generated by opco system.
The field quoteRequestId represent the Id when quote is firstly created on Spark side


Examples:

"4999569661752721026"
"4999569661_ORG1"

Type: string

tenant identifier for an Opco in SPARK multi-tenant platform


Example:

"BEL-CEBEO"

Type: string

Optional field, needed by OpCo organised with a regional model or commercial organisation. It can be used to filter or route based on the orgId.


Examples:

"org123"
"SNE"

Type: enum (of string)

The sales channel where the quote / quote request is created

Must be one of:

  • "ESHOP"
  • "MOBILE_APP"
  • "SYSTEM_TO_SYSTEM"
  • "STORE"
  • "BY_PHONE"
  • "SALES_ORDER_AUTOMATION"

Example:

"ESHOP"

Type: enum (of string)

The overall status of the quote / quote request. EXPIRED, ORDERED, CANCELLED and DELETED are the terminating statuses for the quote as no further updates are expected once the quote reaches to any of these statuses

Must be one of:

  • "READY_TO_ORDER"
  • "IN_REVIEW"
  • "EXPIRED"
  • "ORDERED"
  • "CANCELLED"
  • "DELETED"
  • "REQUESTED"
  • "CANCELLATION_REQUESTED"
  • "DRAFT"

Type: stringFormat: date-time

The date when the quote / quote request is created with ISO 8601 format. This date/time should not be in future.


Examples:

"2021-10-12T08:30:22.804Z"
"2021-10-12T08:30:22"

Type: stringFormat: date-time

The date when the quote / quote request was last modified with ISO 8601 format. This date/time should not be in future and should not be before the createdDateTime.


Examples:

"2021-10-23T08:30:22.804Z"
"2021-10-23T08:30:22Z"

Type: string

The opco account id of the customer.


Examples:

"12345"
"12345_SNE"

Type: array of object

The list of users that contribute on the creation and review of the quote / quote request. The creator of the quote, the validator of the quote ...

No Additional Items

Each item of this array must be:

Type: object

Example:

[
    {
        "fullName": "John Smith",
        "email": "john.smith@mycompany.com",
        "creator": true
    },
    {
        "fullName": "John Validator",
        "email": "john.validator@mycompany.com"
    }
]

Type: string

The full name of a contributor.


Example:

"John Smith"

Type: stringFormat: email

The email of a contributor. This is the identifier of the user on spark. Must be email address format.


Example:

"john.smith@mycompany.com"

Type: boolean Default: "false"

A boolean that when is true means that the current contributor is the creator/requester of the quote from where this quote is created.
In case the quote is created by the an associate on behalf of a customer, this boolean should be true for the contributor that contains the end user email and not the associate email.


Example:

"false"

LogisticDetails

Type: object

Details of the logistic preferences that apply to the quote or quote request.
If restrictions are provided, then SPARK will ignore LogisticDetails when ingesting the Quote.


Examples:

{
    "logisticMethod": "PICK_UP",
    "facilityId": "395"
}
{
    "logisticMethod": "DELIVERY",
    "deliveryAddress": {
        "opCoAddressId": "1234567890",
        "addressLine1": "chaussee Verlinden 22",
        "addressLine2": "Apartment 2",
        "city": "Bruges",
        "country": "BEL",
        "postalCode": "0287",
        "addressName": "Building #2"
    }
}

Type: enum (of string)

Logistic method restricted for the quote

Must be one of:

  • "DELIVERY"
  • "PICK_UP"

Example:

"PICK_UP"

Type: string

Unique identifier of the facility used when logistic method is PICK_UP


Example:

"395"

DeliveryAddress

Type: object

Delivery address linked with the quote

Type: string

OpCo internal system's unique identifier for the address.


Example:

"237564557868778"

Type: string

According to ISO 19060, this field contains one third of the address. In most cases this usually contains the whole addres though.


Example:

"Belleboslaan 17"

Type: string

According to ISO 19060, this field contains one third of the address. This is an optional field.

Type: string

According to ISO 19060, this field contains one third of the address. This is an optional field.

Type: string

City.


Example:

"Montesson"

Type: string

The ISO 3166-1 alpha-3 of the country


Example:

"FRA"

Type: string

Zip code.


Example:

"78360"

Type: string

department


Example:

"JURA"

Type: string

region


Example:

"Bretagne"

Type: string

address name


Example:

"Belleboslaan 17"

Type: string

Company name, it might differ from the account name

Must be at least 1 characters long


Example:

"Easy Electric"

Type: string

Address contact's Phone number

Must be at least 1 characters long


Example:

"+330287345678"

Type: string

Contact's firstname.

Must be at least 1 characters long


Example:

"John"

Type: string

Contact's middlename.

Must be at least 1 characters long


Example:

"Michael"

Type: string

Contact's lastname.

Must be at least 1 characters long


Example:

"Doe"

Type: string

Optional indications or instructions about the delivery

Must be at least 1 characters long


Example:

"Please leave the parcel next to the front door."

Type: string

Optional reference about the customer delivery

Must be at least 1 characters long


Example:

"Reference #123"

Type: object

Additional information for the quote

Type: array

Additional information associated with the quote. Any fields provided here by the OpCo, will be transferred to the Order as part of Order creation / submission to the OpCo.

No Additional Items

Each item of this array must be:

AdditionalReference

Type: object

Object representing an additional reference.

Type: string

Name of the additional reference


Example:

"projectId"

Type: string

Value of the additional reference filled by the customer


Example:

"P570629"

Example:

[
    {
        "name": "purchaseOrder",
        "value": "PO 64746362"
    },
    {
        "name": "warehouseName",
        "value": "Z.I. Fourviere"
    }
]

Type: string

Unique identifier that represents the quote request


Example:

"ref393828202"

Required fields for the OpCoQuote when it is marked for Express Checkout

Type: object

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.

OpCoQuoteExtension

Type: object
No Additional Properties

Type: object

The sales representative associated with the quote

Type: string

Firstname of the sales representative


Example:

"John"

Type: string

Lastname of the sales representative


Example:

"Doe"

Type: string

Email of the sales representative


Example:

"john.doe@standelec.com"

Type: string

The quote id generated by the opco back-end system. This field is named originally quoteId but it represents the Id generated by opco system.
The field quoteRequestId represent the Id when quote is firstly created on Spark side


Examples:

"4999569661752721026"
"4999569661_ORG1"

Type: string

The quote code provided by the OpCo for the Customer. If this field is provided, spark will display it to the customer instead of the quoteId


Examples:

"49995666"
"4999569661"

Type: string

This id is used to associate a subsequent quote for an account with an existing opportunity on created on AX with his first quote

Must be at least 1 characters long


Example:

"1234567"

Type: string

The version of this quote. Used by some opco system to select the right version of the quote.


Example:

"1"

Type: string

Unique identifier that represents the quote request from the source system e.g. SPARK. MANDATORY when the quote is created based on a quote request from the customer.


Example:

"ref393828202"

Type: boolean Default: "false"

A boolean when true implies that the quote can be partially ordered by the Customer.


Example:

"false"

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

The type of the quote. STANDARD for normal quotes, BLANKET for quote representing blanket orders. Default value if not present is STANDARD.

Must be one of:

  • "STANDARD"
  • "BLANKET"

Example:

"STANDARD"

Type: stringFormat: date-time

The date when the quote will be expired with ISO 8601 format. This date/time should not be before the createdDateTime.


Examples:

"2021-10-19T08:30:22.804Z"
"2021-10-19T08:30:22Z"

Type: array of object

Line items that are included in the quote. In case the quote status is DELETED, the lineItems can be sent as an empty element without any items. In other cases, line items are required.

No Additional Items

Each item of this array must be:

Type: object

The line item within the quote / quote request

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

The following properties are required:

  • requestedQuantity

Must not be:

Type: object

The following properties are required:

  • requestedCuts

Type: string

The ID of the line item in Spark, shouldn't be updated by the OpCo.

Must match regular expression: ^[0-9]+$
Example:

"4999569661752721026"

Type: string

The identifier of the line item within the quote in the OpCo system. It can be an alpha numeric value


Examples:

"4999569661752721026"
"ITEM1"

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

The type of the line item. PRODUCT when the line item is a product known by spark, OFFLINE_PRODUCT otherwise. Default value if not present is PRODUCT.

Must be one of:

  • "PRODUCT"
  • "OFFLINE_PRODUCT"

Example:

"PRODUCT"

Type: string

A unique identifier of the product


Example:

"9554961192345"

Type: object

Product details of the product. Required for offline products but OpCos that cannot distinguish offline products can send these details for all products


Example:

{
    "productTitle": {
        "en-GB": "Light bulb",
        "fr-FR": "Ampoule"
    },
    "brandName": "Schneider"
}

Multilingual Object

Type: object

Short description of the product


Example:

{
    "en-GB": "Light bulb",
    "fr-FR": "Ampoule"
}

Each additional property must conform to the following schema

Type: string

Type: string

Brand name


Example:

"Schneider"

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


Examples:

"732D16"
"9554961192345"

Type: string

global trade identifier number e.g EAN, UPC etc


Example:

"4012196097579"

Type: string

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


Example:

"1360167"

Type: string

Manufacturer type description identifier, represents the references


Example:

"2037 12-20 LGR"

Type: string

the customer ref for the product, Supported by all special chars respecting the pattern

Must match regular expression: [a-zA-Z0-9_.+@() /$"=#,;'£\\:°*&%-]+

Type: object

DEPRECATED. TO BE REMOVED. OpCos should use productDetails field instead


Example:

{
    "productTitle": {
        "en-GB": "Light bulb",
        "fr-FR": "Ampoule"
    },
    "brandName": "Schneider"
}

Multilingual Object

Type: object

Short description of the product


Example:

{
    "en-GB": "Light bulb",
    "fr-FR": "Ampoule"
}

Each additional property must conform to the following schema

Type: string

Type: string

Brand name


Example:

"Schneider"

Type: integer

Quantity of the item

Value must be greater or equal to 1


Example:

10

Type: integer

Minimum quantity that is allowed to update for the line item by the user. This field will only be used for standard quotes

Value must be greater or equal to 1


Example:

10

Type: integer

Maximum quantity that is allowed to update for the line item by the user. This field will only be used for standard quotes


Example:

10

Type: integer

Quantity requested/updated by the user. This field should be used mutually exclusive with the requestedCuts field.
This field should be used for none cuttable product only.

Value must be greater or equal to 1


Example:

10

Type: array

In Pilot List of requested/updated cable cuts by the user. This field should be used mutually exclusive with the requestedQuantity field.
This field should be used for cuttable product only.

No Additional Items

Each item of this array must be:

RequestedCut

Type: object

Object representing a requested cable cut.

Type: integer

Index of the requested cut line. The index must be unique in the list of requested cuts per line item.

Value must be greater or equal to 0


Example:

0

Type: integer

Quantity of the cut

Value must be greater or equal to 1


Example:

10

Type: integer

Length of the cable cut in the order unit described on the product ordering details

Value must be greater or equal to 1


Example:

5

Example:

[
    {
        "index": 0,
        "quantity": 2,
        "length": 5
    },
    {
        "index": 1,
        "quantity": 3,
        "length": 3
    }
]

Type: integer

Quantity that is reserved by the OpCo for the blanket order. This field will only be used for blanket order


Example:

5

Prices

Type: object

Contains the detail of prices related to the current product and line item

Price

Type: object

This is the product unit price that the customer will pay to the OPCO, without taxes, without any quote or pre-agreement.


Example:

{
    "amount": 1000,
    "scale": 2,
    "currency": "EUR"
}

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"

Price

Type: object

This is the product unit price that the customer will pay to the OPCO, without taxes, if the quote proceeds to the order.


Example:

{
    "amount": 800,
    "scale": 2,
    "currency": "EUR"
}

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"

Price

Type: object

This is the product list price that will be displayed to the customer if provided by OpCo.


Example:

{
    "amount": 800,
    "scale": 2,
    "currency": "EUR"
}

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"

Price

Type: object

This is price that the customer will pay to the OPCO for the entire line item. Basically, it is (quote price * quantity), or (net price * quantity) if no quote price is provided.


Example:

{
    "amount": 800,
    "scale": 2,
    "currency": "EUR"
}

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"

Multilingual Object

Type: object

A short title for this price


Example:

{
    "en-GB": "Schneider contract",
    "fr-FR": "Contrat Schneider"
}

Each additional property must conform to the following schema

Type: string

Type: string

An identifier of the contract related to this price


Example:

"7575785"

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

The type of this price. Default value if not present is STANDARD.

Must be one of:

  • "STANDARD"
  • "SPECIAL_PRICE_AGREEMENT"
  • "PROJECT"

Example:

"STANDARD"

Type: array

List of taxes that will be applied to the net price or the quote price if provided

No Additional Items

Each item of this array must be:

Tax

Type: object

contains the tax information either as a percentage or exact amount. If percentage is sent by the OpCo, then the same percentage value will be displayed to the Customer instead of the tax amount.

Type: object

A tax with a fix amount

Price

Type: object

contains the amount information based on the type of prices

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

type of tax which is applicable to the underlying product.


Example:

"VAT"

Type: boolean

This flag determines if the tax is a surcharge to be added to netPrice before applying Tax. The Tax computation happens on top of netPrice + surcharges


Example:

true
Type: object

A tax represented by a percentage.

Type: number

the percentage of the net price or the quote price if applicable


Example:

20.0

Type: string

type of tax which is applicable to the underlying product.


Example:

"VAT"

Type: boolean

This flag determines if the tax is a surcharge to be added to netPrice/promotionalNetPrice before applying Tax. The Tax computation happens on top of netPrice + surcharges


Example:

true

The following properties are required:

  • type

Example:

[
    {
        "type": "VAT",
        "percentage": 21,
        "isSurcharge": false
    },
    {
        "type": "ECOTAX",
        "taxAmount": {
            "amount": 826,
            "scale": 4,
            "currency": "EUR"
        },
        "isSurcharge": true
    }
]

Type: array

Messages to be displayed to the user related to the quote line item

No Additional Items

Each item of this array must be:

Message

Type: object

Object representing a message

Type: enum (of string)

Attribute describing the type of the message

Must be one of:

  • "COMMUNICATION"

Example:

"COMMUNICATION"

Type: string

Text representing the message. The text is expected to be provided in the user's language.


Example:

"Best price for this product with availability over next 3 months"

Type: integer

Quantity of the line item that is already ordered by the Customer.
This is applicable to the Quote representing blanket order where the line item can be partially ordered by the Customer.

Value must be greater or equal to 1


Example:

10

Example:

[
    {
        "id": "4999569661752721000",
        "quantity": 10,
        "minOrderableQuantity": 1,
        "maxOrderableQuantity": 100,
        "requestedQuantity": 10,
        "type": "OFFLINE_PRODUCT",
        "productId": "4999569661752721000",
        "productDetails": {
            "productTitle": {
                "en-GB": "SIEMENS Circuit Breaker",
                "fr-FR": "Disjoncteur SIEMENS"
            },
            "brandName": "Siemens"
        },
        "prices": {
            "netPrice": {
                "amount": 1000,
                "scale": 2,
                "currency": "EUR"
            },
            "quotePrice": {
                "amount": 800,
                "scale": 2,
                "currency": "EUR"
            },
            "listPrice": {
                "amount": 900,
                "scale": 2,
                "currency": "EUR"
            },
            "totalPrice": {
                "amount": 8000,
                "scale": 2,
                "currency": "EUR"
            },
            "type": "STANDARD",
            "taxes": [
                {
                    "type": "VAT",
                    "percentage": 21,
                    "isSurcharge": false
                },
                {
                    "type": "ECOTAX",
                    "taxAmount": {
                        "amount": 826,
                        "scale": 4,
                        "currency": "EUR"
                    },
                    "isSurcharge": true
                }
            ]
        }
    },
    {
        "id": "4999569661752724322",
        "quantity": 2,
        "minOrderableQuantity": 1,
        "maxOrderableQuantity": 100,
        "requestedQuantity": 10,
        "type": "PRODUCT",
        "productId": "4999569661752721000",
        "prices": {
            "netPrice": {
                "amount": 1000,
                "scale": 2,
                "currency": "EUR"
            },
            "totalPrice": {
                "amount": 2000,
                "scale": 2,
                "currency": "EUR"
            },
            "type": "STANDARD",
            "taxes": [
                {
                    "type": "VAT",
                    "percentage": 21,
                    "isSurcharge": false
                },
                {
                    "type": "ECOTAX",
                    "taxAmount": {
                        "amount": 826,
                        "scale": 4,
                        "currency": "EUR"
                    },
                    "isSurcharge": true
                }
            ]
        }
    }
]

Price

Type: object

Total price of the quote including discounts, surcharges and taxes (VAT). Mandatory if quote status is READYTOORDER.


Example:

{
    "amount": 5400,
    "scale": 2,
    "currency": "EUR"
}

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"

Price

Type: object

Total price of the quote including discounts and surcharges, excluding taxes (VAT). Mandatory if quote status is READYTOORDER.


Example:

{
    "amount": 5100,
    "scale": 2,
    "currency": "EUR"
}

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: array

The total amount of each tax included in the line items within the quote

No Additional Items

Each item of this array must be:

Tax

Type: object

contains the tax information either as a percentage or exact amount. If percentage is sent by the OpCo, then the same percentage value will be displayed to the Customer instead of the tax amount.

Type: object

A tax with a fix amount

Price

Type: object

contains the amount information based on the type of prices

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

type of tax which is applicable to the underlying product.


Example:

"VAT"

Type: boolean

This flag determines if the tax is a surcharge to be added to netPrice before applying Tax. The Tax computation happens on top of netPrice + surcharges


Example:

true
Type: object

A tax represented by a percentage.

Type: number

the percentage of the net price or the quote price if applicable


Example:

20.0

Type: string

type of tax which is applicable to the underlying product.


Example:

"VAT"

Type: boolean

This flag determines if the tax is a surcharge to be added to netPrice/promotionalNetPrice before applying Tax. The Tax computation happens on top of netPrice + surcharges


Example:

true

The following properties are required:

  • type

Example:

[
    {
        "type": "VAT",
        "isSurcharge": false,
        "taxAmount": {
            "amount": 12000,
            "scale": 4,
            "currency": "EUR"
        }
    },
    {
        "type": "ECOTAX",
        "isSurcharge": true,
        "taxAmount": {
            "amount": 260,
            "scale": 2,
            "currency": "EUR"
        }
    }
]

Price

Type: object

Total amount of the discount included in the quote


Example:

{
    "amount": 100,
    "scale": 2,
    "currency": "EUR"
}

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: array

Document references associated with the quote

No Additional Items

Each item of this array must be:

DocumentReference

Type: object

Information identifying a document for referencing purposes.

Type: string

The id of the document


Example:

"4999569661752721026"

Multilingual Object

Type: object

Name of the document as displayed to the customer


Example:

{
    "fr-BE": "Résumé du devis",
    "nl-BE": "Offerte samenvatting"
}

Each additional property must conform to the following schema

Type: string

Type: string

The actual file name that will be shown to the user

Must be at least 1 characters long


Examples:

"Note de crédit"
"Creditnota"

Type: string

The file extension of the document

Must match regular expression: ^\.[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)*$

Must be at least 1 characters long


Examples:

".pdf"
".csv"
".txt"

Type: stringFormat: date-time

Latest date on which the document has been modified, in ISO 8601 format.


Examples:

"2022-06-22T08:30:22.804Z"
"2022-06-22T08:30:22Z"

Example:

[
    {
        "id": "4999569661752721026",
        "name": {
            "fr-BE": "Résumé du devis",
            "nl-BE": "Offerte samenvatting"
        },
        "fileName": "Quote Summary 4999569661752721026",
        "extension": ".pdf",
        "lastModifiedDateTime": "2017-07-21T17:32:28Z"
    }
]

Restriction

Type: object

Restrictions that are applied to this quote e.g. logistics method or facility


Example:

{
    "logisticDetails": {
        "logisticMethod": "PICK_UP",
        "facilityId": "395"
    }
}

RestrictedLogisticDetails

Type: object

Details of the logistic restrictions that apply to the quote


Example:

{
    "logisticDetails": {
        "logisticMethod": "PICK_UP",
        "facilityId": "395"
    }
}

Type: enum (of string)

Logistic method restricted for the quote

Must be one of:

  • "DELIVERY"
  • "PICK_UP"

Example:

"PICK_UP"

Type: string

Unique identifier of the facility used when logistic method is PICK_UP


Example:

"395"

Type: array

Groups representing the quote line items within a quote

No Additional Items

Each item of this array must be:

LineItemGroup

Type: object

Object representing a group of line items within the quote

Type: string

Unique identifier of the group within the Quote


Example:

"AD1"

Type: string

Name of the group. Name is expected to be provided in the user's language.


Example:

"Building XYZ"

Type: array of object

Line items that are included in the group.

No Additional Items

Each item of this array must be:

Type: object

The line item within the group

Type: string

The ID of the line item within the Quote. This ID should match the line item id within the quote line items

Must match regular expression: ^[0-9]+$
Example:

"4999569661752721026"

Examples:

{
    "id": "AD1",
    "name": "Building XYZ",
    "lineItems": [
        {
            "id": "96122268053639168"
        },
        {
            "id": "96121848778428416"
        }
    ]
}
{
    "id": "AD2",
    "name": "Building ABC",
    "lineItems": [
        {
            "id": "96122268053633333"
        },
        {
            "id": "96121848778422222"
        }
    ]
}

Type: boolean Default: "false"

A boolean when true implies that the quote can be opted for express checkout by the Customer.


Example:

"false"

Margin

Type: object

Margin of the total quote value


Example:

{
    "marginValue": {
        "amount": 100,
        "scale": 2,
        "currency": "EUR"
    },
    "marginPercentage": {
        "percentageValue": 25
    }
}

Margin

Type: object

The margin monetary value

Type: integer

The unscaled amount of the margin


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

Margin percentage of the total quote value

Type: number

Percentage to two decimal places

Value must be greater or equal to 0 and lesser or equal to 100 and a multiple of 0.01


Examples:

25.5
50
75.75

Example:

{
    "eventHeader": {
        "source": "OPCO",
        "version": "v1"
    },
    "quoteId": "96122368729817088",
    "quoteName": "Site 1 quote",
    "opcoId": "BEL-CEBEO",
    "salesChannel": "TELESALES",
    "status": "IN_REVIEW",
    "createdDateTime": "2021-07-08T14:17:46.218772Z",
    "expiryDateTime": "2021-07-21T14:17:46.218772Z",
    "lastModifiedDateTime": "2021-07-11T14:17:46.218772Z",
    "accountId": "59852",
    "additionalInformation": {
        "additionalReferences": [
            {
                "name": "warehouseName",
                "value": "Z.I. Fourviere"
            }
        ]
    },
    "contributors": [
        {
            "fullName": "XXXX XXXXXX",
            "email": "xxx@xxxxxx.com",
            "creator": true
        }
    ],
    "salesRepresentative": {
        "firstname": "John",
        "lastname": "Doe",
        "email": "john.doe@standelec.com"
    },
    "lineItems": [
        {
            "id": "96122268053639168",
            "quantity": 5,
            "minOrderableQuantity": 1,
            "maxOrderableQuantity": 100,
            "requestedQuantity": 10,
            "type": "PRODUCT",
            "productId": "3618978",
            "prices": {
                "netPrice": {
                    "amount": 4426,
                    "scale": 2,
                    "currency": "EUR"
                },
                "quotePrice": {
                    "amount": 3426,
                    "scale": 2,
                    "currency": "EUR"
                },
                "totalPrice": {
                    "amount": 17130,
                    "scale": 2,
                    "currency": "EUR"
                }
            }
        },
        {
            "id": "96121848778428416",
            "quantity": 5,
            "minOrderableQuantity": 1,
            "maxOrderableQuantity": 100,
            "requestedQuantity": 10,
            "type": "OFFLINE_PRODUCT",
            "productId": "4408098",
            "offlineProduct": {
                "productTitle": {
                    "en-GB": "Master Colour CDM-T 35W G12 4200K 3000lm CRI84",
                    "fr-FR": "Master Colour CDM-T 35W G12 4200K 3000lm CRI84"
                },
                "brandName": "Philips Lighting"
            },
            "prices": {
                "netPrice": {
                    "amount": 1886,
                    "scale": 2,
                    "currency": "EUR"
                },
                "quotePrice": {
                    "amount": 1786,
                    "scale": 2,
                    "currency": "EUR"
                }
            }
        },
        {
            "id": "96123759768322632",
            "quantity": 10,
            "minOrderableQuantity": 1,
            "requestedCuts": [
                {
                    "index": 0,
                    "quantity": 2,
                    "length": 5
                },
                {
                    "index": 1,
                    "quantity": 1,
                    "length": 10
                }
            ],
            "type": "PRODUCT",
            "productId": "170720241512",
            "productDetails": {
                "productTitle": {
                    "en-GB": "EAX(e)CWB middenspanning monogeleider aluminium PE 8,7/15 kV 1X240mm² B-B",
                    "fr-FR": "EAX(e)CWB câble moyenne tension monoconduteurPE 8,7/15 kV 1X240mm² B-B"
                },
                "brandName": "MIDDENSPANNNINGSKA"
            },
            "prices": {
                "netPrice": {
                    "amount": 60,
                    "scale": 2,
                    "currency": "EUR"
                },
                "quotePrice": {
                    "amount": 50,
                    "scale": 2,
                    "currency": "EUR"
                }
            }
        }
    ],
    "totalAmountIncludingTaxes": {
        "amount": 5880,
        "scale": 2,
        "currency": "EUR"
    },
    "totalAmountIncludingSurcharges": {
        "amount": 5700,
        "scale": 2,
        "currency": "EUR"
    },
    "totalDiscount": {
        "amount": 660,
        "scale": 2,
        "currency": "EUR"
    },
    "restriction": {
        "logisticDetails": {
            "logisticMethod": "PICK_UP",
            "facilityId": "395"
        }
    },
    "documents": [
        {
            "id": "112233445",
            "fileName": "Quote Document 112233445",
            "extension": ".txt"
        },
        {
            "id": "4999569661752721026",
            "name": {
                "fr-BE": "Résumé du devis",
                "nl-BE": "Offerte samenvatting"
            },
            "fileName": "Quote Summary 4999569661752721026",
            "extension": ".pdf",
            "lastModifiedDateTime": "2017-07-21T17:32:28Z"
        }
    ]
}