Download OpenAPI specification:Download
This documentation describes the data resources and technical details available for the RELEX Data API.
In short:
⚠️ All API requests must be made over HTTPS
Calls made over plain HTTP fail and return HTTP Status Code 400 Bad Request.
REST stands for Representational State Transfer which is an architectural pattern describing how distributed systems can expose a consistent interface through the web. When people use the term REST API, they are generally referring to an API accessed via HTTP protocol at a predefined set of URLs.
The RELEX Data API is built around these concepts and has predictable resource-oriented URLs, accepts JSON-encoded requests, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and HTTP verbs.
The biggest difference to traditional record-oriented REST APIs is that the RELEX Data API can ingest multiple records into a single HTTP request. This allows the clients to bundle individual changes into small batches and send them in one request.
This typically increases performance and reduces the overhead of handling individual requests. This style is prevalent in the RELEX Data API regardless of the HTTP verb used.
⚠️ We strongly recommend using micro-batches (small batches of records) whenever possible.
Micro-batches provide significantly better throughput, reduce request overhead, and help avoid hitting rate limits during high-volume updates.
The API is documented in OpenAPI format and is based on the Data API provided by RELEX. For more information on OpenAPI format, refer to the OpenAPI Specification. This documentation is created by using the ReDoc tool.
The RELEX Data API is designed to receive data as a continuous stream. The API allows the clients to send the data whenever changes happen, either one record at a time or in batches of records. Hence, there are no explicit start and end notions for a set of data.
Instead, data is processed as it arrives, whenever the backend systems deem it appropriate. While typically the data is processed in the order it arrives, due to the nature of distributed systems, RELEX may process data received in subsequent requests in a different order than originally sent.
⚠️ Avoid making immediate subsequent updates to the same record
We discourage making numerous mutative API calls to the same records in rapid succession, in other words, POST and DELETE requests.
Instead, we recommend batching the same records into one request. Making quick consecutive updates for the same record may cause a race condition that can cause the data to get out of sync between the client and RELEX.
⚠️ Using micro-batches is the preferred pattern for continuous data streams.
Sending multiple small updates in one batch reduces the number of API calls, minimizes the chance of race conditions, and significantly lowers the likelihood of hitting rate limits during heavy traffic.
Single-record requests should be reserved for low-volume or exceptional cases only.
The RELEX Data API does not coordinate supplied records across endpoints. This means that if two records are supplied to two distinct endpoints, the API might make them available for target applications to consume in either order (records within one endpoint will always be made available in the order they were supplied to the API). If the two records are somehow related to each other and no additional steps were taken, the end result could depend on which record is consumed first. To prevent this, target applications might take additional steps to guarantee identical results regardless of inter-topic consumption order. Using UPSERT logic (i.e. update if exists, otherwise create) is a common way to accomplish this.
Many endpoints are connected to each other in the data models of target applications. For example, the Product Locations endpoint expects both a product code and a location code. The given codes are typically used to link the supplied record to the corresponding product and location in the target application. Such links are only possible if the referenced records exist. To remove the dependency on consumption order, an incoming product-location record might result in automatic creation of the referenced product and location if they do not already exist so that the needed references are in place. The same principle applies to many other endpoints. When automatic reference creation creates an entry, typically only the required fields and fields with default values are populated.
The RELEX Data API uses JSON as the format for data serialization. The JSON payload of the API has a root-level object that contains a meta-object and data array element. Requests need to define a Content-Type header and be set to application/json.
All resources have a defined schema, and the details of each resource can be examined in the resource specifications in this document.
Dates, times and timestamps in RELEX Data API generlly follows the Date and Times JSON Schema format which is based on RFC 3339 standard, unless otherwise specified (for example endpoints with time fields are usually accepting only hh:mm).
If the consumer application supports localization of names, the corresponding name for a specific language can be set by adding one of the following fields to the schema.
| Language | Endonym | field_name |
|---|---|---|
| Czech | Čeština | name_cs |
| Danish | Dansk | name_da |
| German | Deutsch | name_de |
| Greek | Ελληνικά | name_el |
| English | English | name_en |
| Spanish | Español | name_es |
| Estonian | Eesti keel | name_et |
| Finnish | Suomeksi | name_fi |
| French | Français | name_fr |
| Croatian | Hrvatski | name_hr |
| Hungarian | Magyar nyelv | name_hu |
| Italian | Italiano | name_it |
| Japanese | 日本語 | name_ja |
| Korean | 한국어 | name_ko |
| Lithuanian | Lietuvių | name_lt |
| Latvian | Latviski | name_lv |
| Dutch | Nederlands | name_nl |
| Norwegian | Norsk | name_no |
| Polish | Polski | name_pl |
| Portuguese (Brazil) | Português (Brazil) | name_pt_BR |
| Portuguese | Português | name_pt |
| Romanian | Română | name_ro |
| Russian | Русский | name_ru |
| Slovenian | Slovenščina | name_sl |
| Slovak | Slovenčina | name_sk |
| Serbian | Српски (Srpski) | name_sr |
| Swedish | Svenska | name_sv |
| Thai | ไทย | name_th |
| Turkish | Türkçe | name_tr |
| English (UK) | English (UK) | name_uk |
| Vietnamese | Tiếng Việt | name_vi |
| Chinese | 简体中文 | name_zh |
All inbound API resources work in the same way: they consist of synchronous and asynchronous parts.
The Data API also includes a feature called Error API that the client can use to check for errors. For more information, see the asynchronous section.
The RELEX Data API does not support payload compression. Requests must omit the Content-Encoding header or define it as none.
The RELEX Data API uses all-or-nothing semantics. For a given payload, either all records are accepted or none are. In other words, one invalid record in an otherwise valid set makes the whole set invalid.
The invalid record must be fixed or removed, and the payload sent again to allow the valid records to be processed.
On the other hand, the downstream applications handle records individually. This means that once the Data API has accepted the records, the later parts of the processing behave differently with invalid records.
Problematic records are put aside and logged (see Event API), and processing continues from the next record.
The RELEX Data API supports bespoke data models. To facilitate receiving custom data via standard API, the API provides bespoke resources for custom fields and resources.
The customer-specific API document includes all the resources in full, containing both standard and custom fields and resources, and their schemas.
Custom resources follow the same concepts and patterns as standard resources, including the following patterns:
Custom resources are added to a dedicated namespace. This is done to prevent a naming collision when new resources are added to the standard RELEX Data API interface. The namespace for custom resources is custom. This makes the resource path look like/data/custom/resource.
Similarly to custom resources, customer-specific fields can also be added to standard REST interfaces.
Custom fields follow the same concepts as standard fields:
As with resources, custom fields are also namespaced. The namespacing is done by prefixing each custom field name. The prefix is custom_. The resource remains otherwise the same, and all existing resources are not affected.
As an example, when a color field is added to the products resource, the corresponding attribute in the JSON payload is named custom_colour and is available at the /data/master/products resource.
You can also remove optional fields from the standard resources, but there is rarely a need for that because they can be freely omitted from the request payload.
It is not possible to add arbitrary fields to the resources. Each field, standard and custom, must be declared in the resource schema.
ℹ️ Custom resources do not use field prefixes
The fields in custom resources do not need to have the prefix since they are already under a distinct namespace. Thus, the fields in custom resources have no special naming requirements.
To support the managed evolution of the Data API, we version its public interfaces. We have one version number that communicates all the changes to the API. This is simply called the API version.
Under the hood, the API version is a combination of the following:
The API version is an abstraction over the two separate version concepts. For an API client, it is enough just to follow the API version.
All our version identifiers follow semantic versioning principles. Each change to the semantics of the API increments one of the three parts of the API version number: MAJOR, MINOR, or PATCH.
The following changes guarantee an increment in the API version number:
Additional labels for pre-release and build metadata can be used as extensions to the MAJOR.MINOR.PATCH format. For instance, 4.2.2-beta is an allowed version specifier.
The versioning policy guarantees that only a MAJOR version upgrade can require the client to make changes.
One environment can host only one version at a time: it is not possible to have more than one version of the API running simultaneously in, for example, a production environment.
However, different environments may run different versions concurrently. For example, a user-acceptance-test version can have a more recent version running than the production API.
RELEX strives to the utmost to maintain API compatibility between versions by introducing changes in a non-breaking manner whenever possible.
When the API evolves, new features are typically added as additional resources, new fields, or new features. We avoid removing or changing existing functionality in a breaking way unless there is a very compelling reason, such as a security improvement.
With this approach, the API remains compatible even in the case of new or improved features, and the API clients can mostly remain the same. The clients may simply ignore the elements that are introduced without any adverse consequences. Only when a client explicitly takes a new feature into use, must it be adapted.
In the rare event of a breaking change, a new MAJOR core version is introduced. In that case, the feature is put behind a feature flag. The flag by default is set to follow the existing behavior.
The customer has three (3) months to adapt to the upcoming version change before the feature flag is automatically made to follow the new behavior. Upgrade instructions are provided.
There are two exceptions to this rule: A critical security-related issue is fixed immediately. If we discover a critical security issue in the API, we do whatever is necessary to mitigate the issue as soon as possible. The fix may include disabling the vulnerable functionality until a proper solution is available. In that case, the clients need to adapt to the changes quickly. Changes to customer data models are visible immediately and are not behind feature flags.
The core version is derived from the changes in the system behavior, features, or other non-customer-specific changes.
Changes to the core version can be; for example:
The core version is not affected by changes to the data model or internal changes that do not affect the functional behavior of the system, such as updates to internal dependencies or performance improvements.
Data API supports customer-specific bespoke fields and resources, and, commonly, customers use this powerful feature to tailor the API to their needs.
During the project phase, it is customary that the APIs evolve rapidly. The changes may be small but breaking; for instance, changing a field data type. Or the change can be big but non-breaking, such as adding two new resources to the data model. Because the pace and nature of these changes are unrelated to API behavioral changes, the data model and the core version are versioned separately.
The exact version for the API combines both the core version and the data model version. It is formed by summing each semantic version number. For instance, core version 1.2.3 and data model version 4.3.2 creates an API version 5.5.5. Possible suffixes are concatenated.
All version numbers can be queried through the API using a corresponding resource.
Under REST principles, a URL identifies a resource. The following URL design patterns are considered REST best practices, which the RELEX Data API also follows.
For consistency, we have also defined the following practices for resource URIs:
-)The URL for the API is PROTOCOL://ENV-GEOGRAPHY.rest.HOST/CUSTOMER, which consists of the following parts:
PROTOCOL always HTTPSENV denoting the environment, for example, prodGEOGRAPHY denoting the geography or region, for example, usHOST denoting the hostname for the service, always relexsolutions.combigretailerThe API base URL, therefore, could be; for example:
uat-eu.rest.relexsolutions.comeu.rest.relexsolutions.comThe RELEX Data API exposes the following top-level resource namespaces:
This section describes how data operations (List, Upsert, and Delete) are mapped to HTTP verbs.
| Operations | HTTP Mapping | Request Body | Response Body |
|---|---|---|---|
| List | GET | N/A | List of records |
| Delete | DELETE | List of records to be deleted | Operation success or error status |
| Upsert | POST | List of records to be created or updated | Operation success or error status |
The RELEX Data API deviates slightly from the traditional REST approach by commonly treating the data as collections of records instead of singular records. In practice, the API accepts and returns multiple records in one request. The other notable deviation is the usage of POST for both creating new records and updating existing records.
As RELEX operates with big datasets, the number of records sent and received through the API can be fairly large. Encoding multiple records in one request increases the API throughput as it dramatically reduces the number of individual requests that clients need to make.
This pattern applies to most of the resources regardless of the used verb. A client may create several records in a single request using the POST verb, or delete one or more records using the DELETE verb.
An important concept closely related to HTTP verbs is idempotency. An idempotent method means that the result of a successfully performed request is independent of the number of times the request is executed. Non-idempotent is the opposite: It means that the result may change if the request is performed more than once, even if the data remains the same.
HTTP POST is used for sending records to the API in a maximum of one (1) megabyte-sized chunks per single request. A single POST request may contain one or more records that are ingested into RELEX systems.
Data API POST interfaces are based on the colloquial upsert model: new records are created for the payload items that have no matching counterparts in the RELEX database. Records that have matching database records are updated. A single request may simultaneously create new records and update existing records.
POST requests to data resources are idempotent. Resending the same payload is safe and produces the same result. In practice, this means that if you are uncertain whether a request was received, for example due to a network failure before the response arrived, you can resend the same request without risk of creating duplicate records.
When sending data using RELEX Data API we recommend that the customer provide a batch_id along with each request. It is useful for the customer and RELEX to correlate processing output artifacts such as logs to the request payload.
Together within the batch_id we recommend sending a timestamp within each request. This is used internally for logging, and telemetry purposes.
These attributes are submitted in the request body meta section. Both items are optional but highly recommended to guarantee efficient operation.
batch_id is a customer-specified identifier for the logical batch that is being sent. The format is UUID. Each logically separate request must have a different batch_id. Retries of the same request must use the same batch_id.timestamp is a value RELEX uses internally. The format of the value must be a monotonically increasing integer. If the data is sent from multiple different sources to a single resource, the clients must ensure that the different systems use the same source for the timestamp value.HTTP DELETE is used for deleting records in RELEX. A DELETE request may delete one or more records at a time.
DELETE request is idempotent. This practice means that the first request deletes the specified rows, and subsequent retries are ignored.
Deleting records is possible from master data tables. The full list of resources supporting the DELETE method can be seen in the resources section of this document.
HTTP GET is used for fetching records from RELEX. A GET response contains zero or more records stored in RELEX databases.
GET request is idempotent and causes no side effects.
The RELEX Data API imposes limits on incoming web requests to ensure performance, reliability, and efficiency. The API sets the following limits:
In case the limits are exceeded, a corresponding HTTP status code is returned with an error message detailing the issue.
⚠️ Exceeding payload sizes
In the event that the payload size exceeds 1 MB, the data needs to be split into smaller chunks and sent in multiple independent requests. Each chunk is then processed separately by RELEX.
ℹ️ API limits are subject to change and appropriate values are determined during the implementation project.
The RELEX Data API imposes no limits on return payloads. The payload size can be arbitrarily large.
In the event of exceeding the rate-limit and receiving an HTTP status code 429, the error payload is the following:
{
"type": "https://example.com/probs/rate-limit-exceeded",
"title": "You have exceeded rate limit",
"status": 429,
"detail": "Your rate limit has been exceeded. Please retry later."
}
In the event of exceeding the request payload size-limit and receiving an HTTP status code 413, the error payload is the following:
{
"type": "https://example.com/probs/size-limit-exceeded",
"title": "Payload Too Large",
"status": 413,
"detail": "Payload was larger than 1mb"
}
The RELEX Data API uses regular HTTP response codes to indicate the various failures an API request can return. Codes in the 4xx range indicate an error on the client side, for example, the resource name was incorrect. Codes in the 5xx range indicate an error within RELEX services.
To convey details about errors to clients in JSON responses, the RELEX Data API uses the RFC 7807 standard.
| Error code | Description |
|---|---|
| 400 Bad Request | The request was unacceptable, for example, due to a missing parameter |
| 401 Unauthorized | The client is unauthorized. The bearer token provided might be invalid, expired, or revoked |
| 403 Forbidden | The client is forbidden. This might be due to connectivity restriction |
| 404 Page Not Found | Resource was not found |
| 413 Content Too Large | Size limits exceeded. See more in the rate limits section |
| 429 Too many requests | Rate limits exceeded. See more in the rate limits section |
| 500 Internal server error | Generic server error indicating an unexpected problem. A client may retry |
| 503 Service unavailable | The service is temporarily unavailable, for example, due to a system upgrade. A client may retry later |
The RELEX Data API provides a resource that can be used to query errors emitted during the asynchronous processing; that is, after the data has been successfully ingested by the RELEX Data API.
The nature of asynchronous processing is such that errors can appear at any moment until the data processing finishes. For this reason, the response to the request might be different over time. Hence, the resource needs to be queried periodically to get the full result.
There are two mutually exclusive ways of fetching errors: either by request or by time.
For fetching errors for a particular request, the client must supply a request_id. The request_id parameter is an identifier that is returned in the response for all POST and DELETE requests. The identifier can then be used later to track the ingestion errors for that particular request. Think of it as a handle for an asynchronous background processing job.
For fetching errors by time, a start_timestamp (inclusive) and end_timestamp (exclusive) pair must be supplied. Timestamps can be used for fetching all ingestion errors that occurred during the specified time window.
Fetching by request and timestamp are mutually exclusive. They cannot be used simultaneously.
To limit the potential response size, the number of errors returned in one response is capped.
The following optional query parameters must be used when the number of errors exceeds the amount one response can return.
page is used to define the desired set of all available sets when the amount of errors in the response is more than the limit.per_page is used to define the maximum amount of items one response can hold. There is an upper maximum (10000) for the parameter that cannot be exceeded.To be able to traverse between pages more easily, the RELEX Data API also provides links to the subsequent pages. Each error response contains the following structure:
"_links": {
"self": {
"href": "/errors?request_id=2eb6aceb-731c-45f9-8427-41d6087c0983"
},
"next": {
"href": "/errors?request_id=2eb6aceb-731c-45f9-8427-41d6087c0983&page=2"
}
},
The href attribute under the _links.next attribute in the response body contains a relative URL for the next batch. When the next attribute is missing, there are no more batches available at present. However, asynchronicity means that there can be new items available in the next moment.
If there are no errors that meet the given query, the response is 200 OK with empty data array.
Disaster recovery (DR) is an organization’s ability to restore access and functionality to IT infrastructure after a disastrous event. These can range from natural disasters to human errors.
RELEX Data API uses active/hot-standby approach with a DNS-based traffic load balancer.
Our approach involves two environments located in different geographical regions. Traffic is directed to a primary environment while the other is reserved for disaster recovery purposes. It utilises an active/hot-standby configuration, meaning that only one region is actively used to direct user traffic, while the other region remains ready but mostly inactive.
During normal operations the load balancer routes the incoming traffic to the primary environment. In the event of a disaster the load balancer switches to the hot-standby environment.
In order to have a fast and optimal recovery from a disaster, it is crucial for clients to respect the ttl (time-to-live) sent by the DNS server. If the client caches the records too long, it can generate a long delay in the detection of the failover initiated by the load balancer. It is recommended to read through documentation for the programming language and the libraries that are used to access RELEX Data API to ensure expected behaviour.
The failover to secondary environment can take up to two minutes to avoid any unnecessary region switch-overs. If the disaster is generating failing requests (non-2xx status code returned), the clients must be ready to retry the failing requests as mentioned in Data processing and asynchronicity section
RELEX reserves the right to perform basic disaster recovery testing when necessary (approximately once a year). This is done to ensure that the best possible service is provided even during a disaster. These operations are designed not generate any traffic outage for clients, but there is a small risk due to the nature of the tests. Customers are always informed in advance before any DR practice takes place.
The same level of recovery existing for inbound will be reflected to outbound too, but due to the endpoints to be at the time of writing under active implementation, the DR actions might not work as expected.
This section describes the authentication methods and security-related requirements for the RELEX Data API.
The RELEX Data API utilizes Oauth 2.0 and OpenID Connect (OIDC) for authentication and authorization. OIDC is an authentication layer on top of OAuth 2.0 and JSON Web Tokens (JWT).
The API is secured via a JWT access token, which must be present in each request. The JWT is fetched from a token endpoint of RELEX Identity (an Identity Provider) using a Client ID and a Client Secret.
The RELEX Data API implements authorization using Client Credentials Grant. It is an authorization flow defined in the OAuth 2.0 specification, which is typically used for allowing access to resources in an automated context; that is, in a context with no human input.
The general steps involved are as follows:
To authenticate with RELEX Identity, the client needs:
These are provided by RELEX during the implementation process. After this information has been provided, it needs to be configured into the client application according to the application's specific needs.
application/x-www-form-urlencodedclient_credentials grant type must be included in the POST body as URL-encoded key-value pairs.
An example body:
client_id=my_client&client_secret=ZWFzdGVyZWdnCg&grant_type=client_credentials"access_token": the JWT token that needs to be used for accessing the RELEX Data API"expires_in": the access token's time to live in seconds"token_type": information of how the token needs to be used, in this case, always set to "Bearer"."scope": The scope that a token grants access to.Whenever the client accesses any RELEX Data API endpoint, the client must provide the following:
Authorization -header, preceded by Bearer. An example header is Authorization: Bearer eyJ[...]jw.When an Access Token expires, RELEX Data API calls respond with 401 Unauthorized
The client application has two options to keep it authenticated:
Note The Client Credentials grant type is not compatible with a construct such as refresh tokens, as mentioned in the protocol specification.
In our example flow, we have the following client-specific information:
hello-worldZWFzdGVyZWdnCghttps://identity.prod-eu.prod.cc.relexsolutions.com/login/restapi_uat/connect/token For demonstration purposes, we'll use curl as a client.
% curl --location 'https://identity.prod-eu.prod.cc.relexsolutions.com/login/restapi_uat/connect/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'client_id=hello-world' \
--data-urlencode 'client_secret=ZWFzdGVyZWdnCg'
[...]
> POST /login/restapi_uat/connect/token HTTP/1.1
> Host: identity.prod-eu.prod.cc.relexsolutions.com
> Accept: */*
> Content-Type: application/x-www-form-urlencoded
[...]
< HTTP/1.1 200 OK
< Content-Type: application/json; charset=UTF-8
[...]
As a response body, we get the following:
{"access_token":"eyJ[...]jw","expires_in":3600,"token_type":"Bearer","scope":"example-scope"}
"access_token"./data/master/locations:% curl -vd "{ data: [...location objects...] }" -H "Content-Type: application/json" -H "Authorization: Bearer eyJ[...]jw" https://eu.rest.relexsolutions.com/example-customer/data/master/locations
> POST /example-customer/data/master/locations HTTP/1.1
> Host: eu.rest.relexsolutions.com
> Content-Type: application/json
> Authorization: Bearer eyJ[...]jw
[...]
< HTTP/1.1 202 Accepted
[...]
As an additional layer of security, the RELEX Data API can be configured to allow requests from only certain IP addresses or ranges. The recommendation is to always have an IP allowlist in place.
The API does not support an explicit blocklist.
Webhooks provide a push based way to get information about certain system events, e. g. about available data.
At the core webhooks are a POST request to a client-provided endpoint
in contrast to polling the service endpoints with GET method.
The way to indicate that a webhook has been processed successfully is by returning a 2xx (status code 200-299) response to the webhook message within a reasonable time-frame (15s). If the endpoint does not respond in 15s then the retries will occur according to a predefined schedule (see the "Retry mechanism" section).
It's also important to disable CSRF protection for this endpoint since CSRF only works in client initiated requests and webhooks are by design initiated by the server.
Another important aspect of handling webhooks is to verify the signature and timestamp when processing them. You can learn more about it in the why "Verifying signature" section.
ℹ️ Only the
metadatais sent to the endpoint. To get the actualdatasubsequent request to therest-apishould be executed.
Webhooks that did not get a 2xx response are retried according to an exponential backoff strategy as follows:
For example, an attempt that fails three times before eventually succeeding will be delivered roughly 35 minutes and 5 seconds following the first attempt.
ℹ️ The verification process could be omitted while developing and testing but the general advise is to implement validation from the start.
The reasons to verify incoming webhooks explained in this article by Svix - our webhook service provider:
To ensure the authenticity of incoming webhook the signature should be verified.
Type of the signature is HMAC where SHA-256 used as a hash function.
Every webhook contains following headers:
SVIX-ID - the unique message identifier for the webhook messageSVIX-TIMESTAMP - timestamp in seconds since epochSVIX-SIGNATURE - the Base64 encoded list of signatures (space delimited)To verify the webhook signature, use the preferred method:
Using the Svix SDK (Recommended)
The recommended approach is to use the Svix SDK, as detailed in the official documentation:
How to Verify Webhooks with the Svix Libraries.
Manual Verification (If SDK is Not an Option)
If using the SDK is not possible, the signature can be verified manually by following these steps:
Verifying Webhooks Manually.
The verification process requires the webhook headers, the webhook body, and an encoding secret provided by RELEX.
Here is an example of a request body sent with a webhook:
{
"data": [
{
"id": "a123b456-c789-d012-e345-6789fghijk01",
"resource": "sales_forecasts",
"timestamp": "2024-04-03T07:15:22.567Z",
"url": "/data/transactions/sales_forecasts/a123b456-c789-d012-e345-6789fghijk01"
},
{
"id": "fefa31ba-ec6a-3f60-bdc2-3f10a6afc55f",
"resource": "sales_forecasts",
"timestamp": "2024-04-03T08:20:39.123Z",
"url": "/data/transactions/sales_forecasts/fefa31ba-ec6a-3f60-bdc2-3f10a6afc55f"
}
],
"meta": {
"created_at": "2024-04-03T09:10:19.821Z",
"type": "data.transactions.notify"
}
}
where:
data (array of resources): Each object represents an available data resource.
id → Unique identifier for the resource. resource → Resource name (e.g., sales_forecasts). timestamp → When the data was made available (ISO 8601 format). url → Relative path to the resource.meta (Webhook Metadata): Provides context for the webhook event.
created_at → When the webhook message was created. type → Type of event in the format data.<namespace>.notify. The <namespace> is related to the resource category and can be, for example, custom.Webhooks from RELEX are delivered through Svix, which operates using a predefined set of static IP address ranges. If your webhook receiving endpoint is protected by a firewall or subject to network-level filtering, ensure that traffic from RELEX’s webhook delivery service is explicitly allowed.
The up-to-date list of source IPs used by Svix is maintained at the following location:
HTTP GET handler for errors endpoint
| request_id | string <uuid> Example: request_id=c88ca2da-5e77-4f63-bbee-61df9edf591f Request ID, required unless timestamp parameters are specified |
| start_timestamp | string <date-time> Example: start_timestamp=2023-06-13T00:00:00.000Z Start timestamp (inclusive), required unless request_id is specified |
| end_timestamp | string <date-time> Example: end_timestamp=2023-06-14T12:34:56.999Z End timestamp (inclusive), required unless request_id is specified |
| page | integer Default: 1 Example: page=1 Page number, 1-based |
| per_page | integer <= 10000 Default: 500 Example: per_page=5 Number of records per page |
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
{- "data": [
- {
- "id": "377f84f0-2f74-11ed-a261-0242ac120002",
- "model": "product-location",
- "identifier": {
- "product_code": "foo",
- "location_code": "bar"
}, - "record": {
- "product_code": "foo",
- "location_code": "bar"
}, - "error": {
- "type": "EnricherError",
- "description": "Could not find a match for product_code 'FOO2'"
}, - "event_timestamp": "2022-08-21T09:11:08+00:00",
- "ingestion_timestamp": "2022-08-21T09:11:08+00:00",
- "source": "RELEX Plan",
- "batch_id": "d64be281-3470-411a-9235-9e15c7b500b8",
- "request_id": "c88ca2da-5e77-4f63-bbee-61df9edf591f"
}
], - "_links": {
- "self": {
- "href": "/errors?request_id=d64be281-3470-411a-9235-9e15c7b500b8"
}, - "next": {
- "href": "/errors?request_id=d64be281-3470-411a-9235-9e15c7b500b8&page=2"
}
}
}HTTP GET handler for health endpoint
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
{- "meta": {
- "code": 200,
- "message": "OK"
}, - "data": { }
}HTTP GET handler for version endpoint
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
{- "meta": {
- "code": 200,
- "message": "OK"
}, - "data": {
- "api_version": "v2.7.7-prelease",
- "core_version": "v1.2.3",
- "data_version": "v3.2.1"
}
}The namespace for master data contains the different endpoints for transferring master data.
Product list for building planograms.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_assortment) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "code": "105040",
- "name": "Breakfast Cereal Urban",
- "merchandising_product_group_5": "102009",
- "assortment_type": "CLUSTER",
- "cluster_group": "ABC",
- "cluster": "XYZ",
- "start_date": "2021-06-21",
- "end_date": "2021-06-22",
- "min_number_of_bays": 3
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Maintenance of EANs.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_barcode) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "code": "4740050002116",
- "product": "58974",
- "ean_batch_size_label": "10101001",
- "primary_ean": true
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Batch sizes.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_batch_size) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "code": "5789/BOX",
- "product": "5789",
- "batch_size": 10,
- "price": 5,
- "dc_product_code": "1001",
- "description": "BOX.",
- "batch_size_label": "PC",
- "length": 2,
- "width": 4,
- "height": 1,
- "dimension_unit": "CM",
- "weight": 1,
- "weight_unit": "KG"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Delete one or more batch sizes records. Each record is uniquely identified by the code and product attributes
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_delete_batch_size) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "code": "PRODUCT1/Box",
- "product": "PRODUCT1"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Information on bill-of-material -products.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_bill_of_materials) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "end_product_code": "PRODUCT1",
- "component_product_code": "COMPONENT1",
- "end_location_code": "LOCATION1",
- "component_location_code": "LOCATION2",
- "quantity": 2,
- "start_date": "2018-01-01",
- "end_date": "2018-12-31",
- "active": true,
- "yield_percentage": 2,
- "yield_quantity": 1
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Automated maintenance of brackets for coordination groups or supplier-locations.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_bracket) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "code": "BR1",
- "bracket_limit": 12,
- "bracket_discount": 0.03,
- "bracket_type": "CURRENT"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Campaign master data that describes the high-level information of campaigns.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_campaign) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "code": "SHIRTS-2018-Q1",
- "name": "Shirt sale",
- "start_date": "2018-01-01",
- "end_date": "2018-03-31",
- "campaign_class": "PROMOTION",
- "category": "Promotion leaflet",
- "campaign_group": "CG258",
- "campaign_group_name": "Midsummer campaign",
- "minimum_purchase_quantity": 2,
- "maximum_purchase_quantity": 3,
- "reward_quantity": 1,
- "multiple_quantity": 3,
- "price_modification_method_code": "AMT_OFF",
- "price_modification_value": 0.2,
- "state": "DELETE"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Delete one or more campaign records. Each campaign is uniquely identified by the code attribute
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_delete_campaign) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "code": "SHIRTS-2018-Q1"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Chain data for locations, can be used to group locations under chains.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_chain) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "code": "EAST-MEDIUM",
- "name": "Grocery stores inc.",
- "country": "COUNTRY1"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Closed dates for forecasting, ordering, or delivery of stores.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_closed_date) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "location": "LOCATION1",
- "date": "2018-09-25",
- "closed_for_ordering": true,
- "closed_for_forecasting": true,
- "closed_for_deliveries": false
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Cluster group cluster data useful in planogram assignments and calculating product performance.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_cluster_group_cluster) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "cluster_group": "BREAKFAST CEREAL 2021",
- "cluster": "URBAN"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Cluster group data useful in planogram assignments and calculating product performance.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_cluster_group) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "code": "BREAKFAST CEREAL 2021",
- "name": "Breakfast Cereal 2021",
- "start_date": "2021-01-01",
- "end_date": "2021-03-31"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Cluster data useful in planogram assignments and calculating product performance.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_cluster) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "code": "URBAN",
- "name": "Urban"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Automated maintenance of date-specific constraints.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_constraint_group_constraint) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "constraint_group": "GROUP_1",
- "date": "2018-01-01",
- "static_minimum": 25,
- "static_maximum": 50,
- "exact": 25,
- "reserved_amount": 5
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Automated maintenance of constraint groups.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_constraint_group) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "code": "GROUP_1",
- "active": true,
- "name": "SUPPLY_LIMIT_1",
- "constraint_date_type": "ORDER_DATE",
- "level": "SUPPLY",
- "multiple_constraints": true,
- "multiples_max": 3,
- "trigger_level": 0.25,
- "priority": 100,
- "use_dynamic_limits": true,
- "product": "PROD1",
- "supplier": "SUPP1",
- "unit": "PALLET_LAYERS"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}To link brackets to supplier-locations.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_coordination_group_bracket) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "bracket": "BR1",
- "coordination_group": "FRESH123"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Groups for coordinated ordering if the coordination is done on other groupings than supplier-location level.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_coordination_group) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "code": "FRESH123",
- "value_max": 15,
- "value_min": 2,
- "pallets_max": 1,
- "pallets_min": 1,
- "volume_max": 500,
- "volume_min": 30,
- "batches_max": 22,
- "batches_min": 12,
- "boxes_max": 5,
- "boxes_min": 1,
- "pallet_layers_max": 22,
- "pallet_layers_min": 8,
- "unique_products_max": 15,
- "unique_products_min": 8,
- "units_max": 200,
- "units_min": 100,
- "weight_max": 1200,
- "weight_min": 140,
- "bracket_price_limit_unit": "VALUE",
- "next_bracket_start_date": "2017-01-01"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Country data to group chains under countries.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_country) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "code": "COUNTRY1",
- "name": "Finland"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Date-specific deliveries for product-locations, can be connected to delivery schedules to derive information.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_date_specific_delivery) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "date": "2018-01-01",
- "product": "PRODUCT1",
- "location": "LOCATION1",
- "lead_time": 3,
- "delivery_schedule_code": "2017-01-01-2019-01-01_ABCDE",
- "main_delivery_date": true
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Delivery schedule data as their own data set.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_delivery_schedule) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "code": "2017-01-01-2019-01-01_ABCDE",
- "name": "Schedule ABCDE",
- "start_date": "2017-01-01",
- "end_date": "2019-01-01",
- "delivery_schedule": "EVEN_WEEKS",
- "delivery_time": "OPEN_DAYS",
- "start_and_end_date_type": "ORDERS",
- "order_0": true,
- "order_1": false,
- "order_2": false,
- "order_3": false,
- "order_4": false,
- "order_5": false,
- "order_6": false,
- "delivery_all": 7,
- "delivery_0": 4,
- "delivery_1": 3,
- "delivery_2": 7,
- "delivery_3": 5,
- "delivery_4": 2,
- "delivery_5": 2,
- "delivery_6": 2,
- "main_delivery_date_0": true,
- "main_delivery_date_1": false,
- "main_delivery_date_2": false,
- "main_delivery_date_3": false,
- "main_delivery_date_4": false,
- "main_delivery_date_5": false,
- "main_delivery_date_6": false
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Maintenance of end customer data.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_end_customer) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "code": "5500",
- "address": "Postinaival 7",
- "currency": "EUR",
- "city": "Albany",
- "state_name": "New York",
- "timezone": "Europe/Helsinki"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Maintenance of floor plans.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_floor_plan) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "code": "101234",
- "start_date": "2021-01-01",
- "end_date": "2021-03-31",
- "status": "LIVE"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Maintenace of location category cluster group cluster data. This endpoint is in development and not yet supported.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_location_category_cluster_group_cluster) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "location": "LOCATION1",
- "merchandising_product_group_5": "102009",
- "cluster_group": "BREAKFAST CEREAL 2021",
- "cluster": "URBAN"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Maintenace of location category space bay component data. This endpoint is in development and not yet supported.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_location_category_space_bay_component) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "code": "ABC10234",
- "bay_index": "3",
- "component_index": "456",
- "depth": 0.1,
- "height": 0.1,
- "width": 0.1
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Maintenace of location category space bay data. This endpoint is in development and not yet supported.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_location_category_space_bay) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "code": "ABC10234",
- "location": "LOCATION1",
- "merchandising_product_group_5": "105040",
- "bay_index": "3",
- "floor_plan": "101234",
- "location_category_space": "101234",
- "base_depth": 0.1,
- "base_height": 0.1,
- "base_width": 0.1,
- "depth": 0.1,
- "height": 0.1,
- "width": 0.1,
- "notch_gap": 0.1,
- "notch_height": 0.1,
- "notch_number": 0.1
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Maintenace of location category space data. This endpoint is in development and not yet supported.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_location_category_space) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "code": "ABC10234",
- "location": "LOCATION1",
- "merchandising_product_group_5": "105040",
- "floor_plan": "101234",
- "start_date": "2021-01-01",
- "end_date": "2021-03-31",
- "base_depth": 0.1,
- "base_height": 0.1,
- "base_width": 0.1,
- "planogram_depth": 0.1,
- "planogram_height": 0.1,
- "planogram_width": 0.1,
- "number_of_bays": 3,
- "number_of_times_in_floor_plan": 2
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Location-supplier delivery schedules, used to connect individual location-suppliers to delivery schedules according to codes.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_location_supplier_delivery_schedule) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "location": "LOCATION1",
- "supplier": "SUPPLIER1",
- "delivery_schedule": "2017-01-01-2019-01-01_ABCDE"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Delete one or more Location-supplier delivery schedule records. Each record is uniquely identified by the delivery_schedule, location and supplier attributes
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_delete_location_supplier_delivery_schedule) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "location": "LOCATION1",
- "supplier": "SUPPLIER1",
- "delivery_schedule": "2017-01-01-2019-01-01_ABCDE"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Location master data for locations.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_location) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "code": "5500",
- "name": "Helsinki",
- "location_type": "DC",
- "chain": "CHAIN1",
- "country": "FI",
- "country_name": "Finland",
- "longitude": 24.938379,
- "latitude": 60.169857,
- "city": "Albany",
- "currency": "USD",
- "buying_forbidden": false,
- "state_name": "New York",
- "region": "North East",
- "location_opening_date": "2022-01-01",
- "location_closing_date": "2022-01-02",
- "reference_code": "5591",
- "number_of_checkouts": 8,
- "store_net_sales_area": 1500,
- "store_size": 1700,
- "timezone": "Europe/Helsinki",
- "postal_code": "27301",
- "block_start_date": "2024-12-01",
- "block_end_date": "2024-12-15"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Merchandising product group data for products, the deepest level of merchandising product group hierarchy needs to be agreed with RELEX.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_merchandising_product_group) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "code1": "10",
- "name1": "Grocery",
- "type1": "Standard",
- "active1": true,
- "code2": "1050",
- "name2": "Dairy",
- "type2": "Standard",
- "active2": true,
- "code3": "105010",
- "name3": "Yogurt",
- "type3": "Standard",
- "active3": true,
- "code4": "10501011",
- "name4": "string",
- "type4": "Standard",
- "active4": false,
- "code5": "1050101120",
- "name5": "string",
- "type5": "Standard",
- "active5": false
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Used to maintain store opening time.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_opening_time) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "location": "DC10001",
- "date": "2018-09-25",
- "opening_time": "15:05",
- "closing_time": "15:05"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Maintenance of prepack variants.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_pre_pack_variant) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "pre_pack_product_code": "72681",
- "variant_product_code": "57843",
- "variant_quantity": 3
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Delete one or more prepack variants. Each record is uniquely identified by the pre_pack_product_code and variant_product_code attributes
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_delete_pre_pack_variant) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "pre_pack_product_code": "72681",
- "variant_product_code": "57843"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Demand AI forecasting to define pricing effect to sales, but also useful for reporting purposes.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_price_calendar) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "code": "100100100",
- "name": "Prices 2021",
- "start_date": "2018-01-01",
- "end_date": "2018-03-31",
- "sales_price": 1.99,
- "sales_price_with_vat": 1.99,
- "price_type": "NORMAL"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Product class data to classify products under classes.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_product_class) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "code": "SEGMENT_1_ABC_SPRING",
- "name": "Product class 1, segment ABC, spring",
- "season_start_date": "2000-01-01",
- "season_end_date": "2000-05-31"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Maintenance of product-end customer data.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_product_end_customer) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "end_customer": "5500",
- "product": "80980"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Product group data for products, the deepest level of group hierarchy needs to be agreed with RELEX.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_product_group) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "code1": "A1",
- "name1": "Dairy products",
- "code2": "A12",
- "name2": "Drinkable milk",
- "code3": "A123",
- "name3": "Organic milk",
- "code4": "A1234",
- "name4": "Level 4 name",
- "code5": "A12345",
- "name5": "Level 5 name",
- "code6": "A123456",
- "name6": "Level 6 name",
- "code7": "A1234567",
- "name7": "Level 7 name",
- "code8": "A12345678",
- "name8": "Level 8 name",
- "code9": "A123456789",
- "name9": "Level 9 name",
- "code10": "A123456789",
- "name10": "Level 10 name",
- "code11": "A123456789",
- "name11": "Level 11 name",
- "code12": "A123456789",
- "name12": "Level 12 name",
- "code13": "A123456789",
- "name13": "Level 13 name",
- "code14": "A123456789",
- "name14": "Level 14 name",
- "code15": "A123456789",
- "name15": "Level 15 name"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Product-location batch sizes.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_product_location_batch_size) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "product_batch_size": "PRODUCT1/Box",
- "product": "PRODUCT1",
- "location": "LOCATION1",
- "valid": true,
- "validity_date_type": "ORDERS",
- "validity_start_date": "2019-01-01",
- "validity_end_date": "2019-12-31",
- "batch_trigger_level": 50.1,
- "percentage_limit": 0.5,
- "supplier_code": "SUPPLIER1"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Delete one or more Product-location batch size records. Each record is uniquely identified by the product_batch_size, product and location attributes
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_delete_product_location_batch_size) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "product_batch_size": "PRODUCT1/Box",
- "product": "PRODUCT1",
- "location": "LOCATION1"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Product-location-campaign data for detailed campaign information per product-location.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_product_location_campaign) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "campaign": "CAMPAIGN1",
- "product": "PRODUCT1",
- "location": "LOCATION1",
- "campaign_price": 5.99,
- "secondary_space": true
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Delete one or more product-location-campaign records. Each record is uniquely identified by the product, location and campaign attributes
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_delete_product_location_campaign) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "product": "SHIRTS-2018-Q1",
- "location": "LOCATION1",
- "campaign": "PRODUCT1"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Merchandising Product catalogue. This endpoint is in development and not yet supported.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_product_location_category) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "product": "PRODUCT1",
- "location": "LOCATION1",
- "merchandising_product_group_5": "102009"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Product lists to work from when building planograms. This endpoint is in development and not yet supported.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_product_location_category_assortment) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "assortment": "105040",
- "product": "578364",
- "merchandising_product_group_5": "102009",
- "location": "340",
- "is_ranged": true,
- "product_treatment_type": "NORMAL",
- "rank": 1,
- "units": 15,
- "max_units": 30,
- "facings": 5,
- "local_product": true,
- "product_localization": "REGIONAL"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Product-location constraint groups, used to connect individual product-locations to constraint groups according to codes.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_product_location_constraint_group) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "product": "PRODUCT1",
- "location": "LOCATION1",
- "constraint_group": "GROUP_1"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Product-location coordination groups, used to connect individual product-locations to coordination groups according to codes.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_product_location_coordination_group) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "product": "ITEM1",
- "location": "LOCATION1",
- "coordination_group": "FRESH123"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Product-location delivery schedules, used to connect individual product-locations to delivery schedules according to codes.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_product_location_delivery_schedule) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "product": "PRODUCT1",
- "location": "LOCATION1",
- "delivery_schedule": "2017-01-01-2019-01-01_ABCDE"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Delete one or more product-location delivery schedule records. Each record is uniquely identified by the delivery_schedule, location and product attributes
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_delete_product_location_delivery_schedule) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "product": "PRODUCT1",
- "location": "LOCATION1",
- "delivery_schedule": "2017-01-01-2019-01-01_ABCDE"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Demand AI forecasting, but also useful for reporting purposes.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_product_location_price_calendar) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "price_calendar": "100100100",
- "product": "PRODUCT1",
- "location": "LOCATION1"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Information on PLS replenishment agreements.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_product_location_supplier_replenishment_agreement) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "product": "PRODUCT1",
- "location": "LOCATION1",
- "supplier": "SUPPLIER1",
- "replenishment_agreement": "529173",
- "active": true,
- "quota": 200,
- "split_percentage": 0.5
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Product-location supplier -data for information specific to certain product-location-supplier combinations.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_product_location_supplier) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "product": "5789",
- "location": "DC001",
- "supplier": "S1400",
- "batch_size": 10,
- "preferred": true,
- "minimum_delivery_batch": 150,
- "erp_reference": "20004567",
- "purchase_batch_unit": "BOX",
- "supplier_subcategory": "Cold cuts",
- "alternative_product_code": "P1111",
- "availability_start": "2025-01-01",
- "availability_end": "2025-09-09",
- "manufacturer": "Coca Cola",
- "standard_delivery_batch": 5,
- "max_lot_size": 10,
- "delivery_all": 3,
- "purchase_price": 10,
- "currency": "EUR",
- "coordination_group": "CG100001",
- "box_size": 12,
- "pallet_size": 500,
- "pallet_layer_size": 1000,
- "space_size": 1,
- "space_unit": "M3",
- "volume": 0.001,
- "volume_unit": "M3",
- "weight": 0.1,
- "weight_unit": "KG"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Product-location specific data.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_product_location) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "product": "PRODUCT1",
- "location": "LOCATION1",
- "supplier": "SUPPLIER1",
- "purchase_price": 1.99,
- "book_value": 1.02,
- "sales_price": 7.99,
- "sales_tax_rate": 0.24,
- "order_quantity": 12,
- "minimum_delivery_batch": 24,
- "max_lot_size": 10,
- "ugly_shelf_point": 2,
- "shelf_space": 4,
- "introduction_date": "2017-01-01",
- "termination_date": "2019-12-31",
- "reference_spoiling_time": 7,
- "required_remaining_shelf_life": 7,
- "production_lead_time": 7,
- "box_size": 12,
- "pallet_size": 7,
- "inventory_unit_in_consumer_units": 10,
- "assortment_status": "Live assortment",
- "shelving_delay": 2,
- "legal_for_merchandising": true,
- "illegal_for_merchandising": true,
- "reference_code": "420",
- "reference_location_code": "8192"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Replacement and reference data for products, locations and product-locations.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_product_replacement_and_reference) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "is_replacement": true,
- "new_location_code": "LOCATION11",
- "old_location_code": "LOCATION1",
- "new_product_code": "PRODUCT11",
- "old_product_code": "PRODUCT1",
- "scaling_factor": 0.75
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Delete one or more replacements and references records. Each record is uniquely identified by the new_location_code, old_location_code, new_product_code and old_product_code attributes or a combination of those depending on how the records have initally been created.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_delete_product_replacement_and_reference) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "is_replacement": true,
- "new_location_code": "LOCATION11",
- "old_location_code": "LOCATION1",
- "new_product_code": "PRODUCT11",
- "old_product_code": "PRODUCT1"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Data to tie product classes to products.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_product_product_class) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "product_class": "SEGMENT_1_ABC_SPRING",
- "product": "PRODUCT1"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Product/item specific master data.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_product) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "code": "PRODUCT1",
- "name": "Spring shirt, unisex",
- "group": "A123",
- "weight": 0.9,
- "weight_unit": "KG",
- "ean": "4740050002116",
- "alternative_code": "4740",
- "order_quantity": 12,
- "introduction_date": "2017-01-01",
- "termination_date": "2018-12-31",
- "required_remaining_shelf_life": 7,
- "reference_spoiling_time": 7,
- "inventory_unit": "PC",
- "height": 25,
- "depth": 0.1,
- "width": 15.5,
- "dimension_unit": "CM",
- "volume_unit": "M3",
- "volume": 0.001,
- "box_size": 12,
- "pallet_size": 100,
- "variant_type": "MASTER",
- "brand": "Nestle",
- "is_private_label": true,
- "brand_tier": "Nesquik",
- "price_family": "Family 1",
- "line_group": "Group 1",
- "is_kvi": true,
- "kvi_group": "KVI group 1",
- "supplier": "A100",
- "manufacturer": "Nestle",
- "merchandising_style": "TRAY",
- "case_height": 0.1,
- "case_depth": 0.1,
- "case_width": 0.1,
- "case_units_high": 3,
- "case_units_deep": 3,
- "case_units_wide": 3,
- "case_pack_units": 3,
- "nesting_height": 0.1,
- "nesting_depth": 0.1,
- "nesting_width": 0.1,
- "squeeze_height": 0.1,
- "squeeze_depth": 0.1,
- "squeeze_width": 0.1,
- "tray_height": 0.1,
- "tray_depth": 0.1,
- "tray_width": 0.1,
- "tray_units_high": 1,
- "tray_units_deep": 1,
- "tray_units_wide": 1,
- "tray_pack_units": 1,
- "length": 35,
- "brand_code": "1234",
- "shape": "BOX",
- "peg_x": 24.938379,
- "peg_y": 60.169857,
- "number_of_peg_holes": 0,
- "peg_depth": 0.1,
- "max_stack": 3,
- "max_top_cap": 3,
- "max_right_cap": 3,
- "max_deep_cap": 3,
- "min_deep": 1,
- "max_deep": 3,
- "front_overhang": 0.1,
- "finger_space_above": 0.1,
- "finger_space_to_the_side": 0.1,
- "orientation_type": "FRONT_0",
- "can_break_tray_up": true,
- "can_break_tray_down": true,
- "can_break_tray_top": true,
- "can_break_tray_back": true,
- "merchandising_size": "20",
- "merchandising_net_content": 1980,
- "merchandising_unit_of_measure": "cm",
- "sell_pack_count": 5,
- "sell_pack_description": "Descriptive text",
- "sell_pack_product": "57494",
- "reference_code": "37228",
- "space_unit": "Pallet places"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Information on replenishment agreements.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_replenishment_agreement) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "code": "529173",
- "name": "March 2021 purchase contract with vendor A",
- "type": "SPLIT_PERCENTAGE",
- "quota": 200,
- "split_percentage": 0.5,
- "split_percentage_or_quota_unit": "BATCHES",
- "active": true,
- "contract_fulfillment_period": "RELATIVE",
- "contract_fulfillment_period_considered_for": "ORDERS",
- "start_date": "2017-01-01",
- "end_date": "2017-12-01",
- "relative_contract_fulfillment_period_days_before": 15,
- "relative_contract_fulfillment_period_days_after": 1
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Closure data for suppliers, is used to signal closures.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_supplier_closure) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "supplier": "SUPPLIER1",
- "date": "2018-01-01",
- "closed": true
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}To link brackets to supplier-locations.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_supplier_location_bracket) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "bracket": "BR1",
- "location": "LOCATION1",
- "supplier": "SUPPLIER1"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Date-specific closure data for suppliers.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_supplier_location_closure) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "location": "LOCATION1",
- "supplier": "SUPPLIER1",
- "date": "2024-09-23",
- "closed": true
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Location supplier data for location specific supplier information.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_supplier_location) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "location": "LOCATION1",
- "supplier": "SUPPLIER1",
- "delivery_schedule": "EVEN_WEEKS",
- "delivery_time": "SEVEN_DAYS_WEEK",
- "order_0": true,
- "order_1": false,
- "order_2": false,
- "order_3": false,
- "order_4": false,
- "order_5": false,
- "order_6": false,
- "delivery_all": 5,
- "delivery_0": 2,
- "delivery_1": 2,
- "delivery_2": 3,
- "delivery_3": 4,
- "delivery_4": 2,
- "delivery_5": 2,
- "delivery_6": 1,
- "value_max": 6000,
- "value_min": 1000,
- "pallets_max": 20,
- "pallets_min": 2,
- "volume_max": 40,
- "volume_min": 5,
- "bracket_price_limit_unit": "VALUE",
- "next_bracket_start_date": "2018-07-01"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Supplier specific master data.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (retail_supplier) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "code": "SUPPLIER1",
- "name": "A shirt supplier",
- "safety_lead_time": 5,
- "supplier_type": "DC",
- "purchase_block": true,
- "incoterms": "CIF",
- "currency": "EUR"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}The namespace for transaction data contains the different endpoints for inventory transactions, balance and open order information.
Inventory balance correction, similar to inventory check transaction.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (adjustment) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "type": "ADJUSTMENT",
- "product": "PRODUCT1",
- "location": "LOCATION1",
- "date": "2018-09-16",
- "quantity": 1,
- "transaction_uid": "TID12345",
- "value": 1.99,
- "time": "15:05",
- "partner_code": "SUPPLIER1",
- "reference": "ORDER_12345",
- "order_row": "1",
- "order_type": "DC",
- "expiration_date": "2018-06-01"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Current physical stock level.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (balance) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "type": "BALANCE",
- "product": "PRODUCT1",
- "location": "LOCATION1",
- "date": "2018-09-30",
- "balance": 15,
- "value": 29.85,
- "time": "15:05"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Current physical stock divided to batches based on spoiling date.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (batch_balance) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "type": "BATCH_BALANCE",
- "product": "PRODUCT1",
- "location": "LOCATION1",
- "date": "2018-09-30",
- "balance": 3,
- "value": 5.97,
- "time": "15:05",
- "estimated_date": "2018-10-05",
- "batch_manufacturing_date": "2018-10-05",
- "batch_code": "MB103938485",
- "production_date": "2025-03-01",
- "available_date": "2025-09-09"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Daily aggregates of sales transactions. Alternative to Point-of-Sales (POS) data.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (daily_sale) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "date": "2020-12-15",
- "location": "LOCATION1",
- "product": "PRODUCT1",
- "quantity": -1,
- "type": "SALE",
- "transaction_uid": "TID12345",
- "value": 15
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Transactions when separated for DC-locations
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (dc_transaction) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "product": "PRODUCT1",
- "location": "LOCATION1",
- "date": "2018-07-01",
- "sales_orders_quantity": -2,
- "sales_orders_value": 3.98,
- "balance": 50,
- "estimated_date": "2018-07-01",
- "type": "BALANCE",
- "time": "15:05"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Goods received into stock (or good returned to supplier -->reversal).
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (delivery) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "type": "DELIVERY",
- "product": "PRODUCT1",
- "location": "LOCATION1",
- "date": "2018-06-01",
- "quantity": 24,
- "transaction_uid": "TID12345",
- "value": 47.76,
- "reference": "ORDER_12345",
- "order_row": "1",
- "partner_code": "SUPPLIER1",
- "time": "15:05",
- "order_type": "DC",
- "purchase_price": 24,
- "expiration_date": "2018-06-01"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Maintenance of end customer transactions data.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (end_customer_transaction) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "date": "2024-09-23",
- "product": "80903",
- "end_customer": "5500",
- "type": "SALE",
- "sales_quantity": 1.99,
- "transaction_uid": "TID12345",
- "picking_date": "2025-03-03",
- "time": "15:05",
- "source_location": "DC123",
- "sales_value": 230,
- "currency": "USD",
- "reference": "S1234567",
- "order_row": "10",
- "batch_code": "B1234",
- "cost_of_goods_sold": 200
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Information on footfall counts for stores
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (footfall_count) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "date": "2018-01-01",
- "location": "LOCATION1",
- "quantity": 50,
- "time": "15:05"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Multi-transaction endpoint for received goods
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (goods_received) [ items ] |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- [
- {
- "product": "PRODUCT1",
- "location": "LOCATION1",
- "balances": [
- {
- "type": "BALANCE",
- "date": "2018-09-30",
- "balance": 15,
- "value": 29.85,
- "time": "15:05"
}
], - "deliveries": [
- {
- "type": "DELIVERY",
- "date": "2018-06-01",
- "quantity": 6,
- "transaction_uid": "TID12345",
- "value": 47.76,
- "reference": "ORDER_12345",
- "order_row": "1",
- "partner_code": "SUPPLIER1",
- "time": "15:05",
- "order_type": "DC",
- "purchase_price": 24,
- "expiration_date": "2018-06-01"
}
], - "open_purchase_orders": [
- {
- "type": "ORDER",
- "date": "2018-05-25",
- "quantity": 0,
- "value": 47.76,
- "estimated_date": "2018-06-01",
- "order_requested_date": "2019-07-03",
- "reference": "ORDER_12345",
- "order_row": "1",
- "order_proposal_reference": 5314130,
- "transaction_uid": "TID12345",
- "order_type": "SPECIAL_PURCHASE_ORDER",
- "partner_code": "SUPPLIER1",
- "estimated_delivery_time": "15:05",
- "expiration_date": "2020-09-18"
}
]
}
]
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Inventory balance correction based on inventory checking.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (inventory_check) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "type": "INVENTORY_CHECK",
- "product": "PRODUCT1",
- "location": "LOCATION1",
- "date": "2018-09-15",
- "quantity": 17,
- "transaction_uid": "TID12345",
- "value": 33.83,
- "partner_code": "SUPPLIER1",
- "reference": "ORDER_12345",
- "order_row": "1",
- "order_type": "DC",
- "time": "15:05",
- "expiration_date": "2018-06-01"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Multi-transaction endpoint for all transaction types. This endpoint requires the same keys for all transaction types.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (inventory_event) [ items ] |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- [
- {
- "product": "PRODUCT1",
- "location": "LOCATION1",
- "balances": [
- {
- "type": "BALANCE",
- "date": "2018-09-30",
- "balance": 15,
- "value": 29.85,
- "time": "15:05"
}
], - "sales": [
- {
- "type": "SALE",
- "date": "2018-05-01",
- "quantity": -1,
- "value": 7.99,
- "time": "15:05"
}
], - "open_sales_orders": [
- {
- "type": "SALES_ORDER",
- "date": "2018-07-02",
- "quantity": -2,
- "value": 17.98,
- "transaction_uid": "TID12345",
- "estimated_date": "2018-07-04",
- "order_requested_date": "2019-07-03",
- "reference": "SO_12345",
- "order_row": "2",
- "order_type": "SPECIAL_SALES_ORDER",
- "partner_code": "C01234",
- "estimated_delivery_time": "15:05"
}
], - "deliveries": [
- {
- "type": "DELIVERY",
- "date": "2018-06-01",
- "quantity": 24,
- "transaction_uid": "TID12345",
- "value": 47.76,
- "reference": "ORDER_12345",
- "order_row": "1",
- "partner_code": "SUPPLIER1",
- "time": "15:05",
- "order_type": "DC",
- "purchase_price": 24,
- "expiration_date": "2018-06-01"
}
], - "open_purchase_orders": [
- {
- "type": "ORDER",
- "date": "2018-05-25",
- "quantity": 24,
- "value": 47.76,
- "estimated_date": "2018-06-01",
- "order_requested_date": "2019-07-03",
- "reference": "ORDER_12345",
- "order_row": "1",
- "order_proposal_reference": 5314130,
- "transaction_uid": "TID12345",
- "order_type": "SPECIAL_PURCHASE_ORDER",
- "partner_code": "SUPPLIER1",
- "estimated_delivery_time": "15:05",
- "expiration_date": "2020-09-18"
}
], - "adjustments": [
- {
- "type": "ADJUSTMENT",
- "date": "2018-09-16",
- "quantity": 1,
- "transaction_uid": "TID12345",
- "value": 1.99,
- "time": "15:05",
- "partner_code": "SUPPLIER1",
- "reference": "ORDER_12345",
- "order_row": "1",
- "order_type": "DC",
- "expiration_date": "2018-06-01"
}
]
}
]
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Lost sale transactions.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (lost_sale) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "type": "LOST_SALE",
- "product": "PRODUCT1",
- "location": "LOCATION1",
- "date": "2018-09-05",
- "quantity": 5,
- "transaction_uid": "TID12345",
- "value": 44.95,
- "purchase_price": 9.95,
- "partner_code": "SUPPLIER1",
- "reference": "ORDER_12345",
- "order_row": "1",
- "order_type": "DC",
- "time": "15:05",
- "expiration_date": "2018-06-01"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Open purchase orders, can be linked to DELIVERY with a reference number.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (open_purchase_order) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "type": "ORDER",
- "product": "PRODUCT1",
- "location": "LOCATION1",
- "date": "2018-05-25",
- "quantity": 24,
- "value": 47.76,
- "estimated_date": "2018-06-01",
- "order_requested_date": "2019-07-03",
- "reference": "ORDER_12345",
- "order_row": "1",
- "order_proposal_reference": 5314130,
- "transaction_uid": "TID12345",
- "order_type": "SPECIAL_PURCHASE_ORDER",
- "partner_code": "SUPPLIER1",
- "estimated_delivery_time": "15:05",
- "expiration_date": "2020-09-18"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Open sales orders, can be linked to SALE with a reference number.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (open_sales_order) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "type": "SALES_ORDER",
- "product": "PRODUCT1",
- "location": "LOCATION1",
- "date": "2018-07-02",
- "quantity": -2,
- "value": 17.98,
- "transaction_uid": "TID12345",
- "estimated_date": "2018-07-04",
- "order_requested_date": "2019-07-03",
- "reference": "SO_12345",
- "order_row": "2",
- "order_type": "SPECIAL_SALES_ORDER",
- "partner_code": "C01234",
- "estimated_delivery_time": "15:05"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Download a batch of Order Proposals.
| id required | string Example: 12345678-abcd-efgh-4321-787878787878 Identifier of data to download. |
{- "meta": { },
- "data": [
- {
- "order_number": 90100,
- "send_run_id": 1213,
- "product_code": "abc_5648489057",
- "location_code": "abc_3712470314",
- "supplier_code": "abc_2648891291",
- "effective_quantity": 125,
- "date": "2024-05-29",
- "delivery_date": "2024-05-29",
- "second_delivery_date": "2024-06-29",
- "order_type": "NORMAL",
- "comment_1": "comment 1",
- "comment_2": "comment 2"
}
]
}List all the Order Proposals available for download. Use query parameter download_status to include downloaded data. Filtered out by default.
| download_status | string Enum: "all" "downloaded" Example: download_status=all Filters out data based on their download status. |
{- "meta": {
- "type": "data.namespace.custom_export_resource.available",
- "requested_at": "2024-06-12T07:03:41+00:00"
}, - "data": [
- {
- "id": "43ee6e0c-6341-418f-a4e9-4029ec86f16a",
- "timestamp": "2024-05-29T04:12:16.102371Z",
- "downloaded": "false",
- "url": "/data/namespace/custom_export_resource/43ee6e0c-6341-418f-a4e9-4029ec86f16a",
- "resource": "custom_export_resource"
}
]
}This interface is alternative to Open purchase order- interface. With this interface each Purchase order row is created only once in RELEX.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (order) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "product": "PRODUCT1",
- "location": "LOCATION1",
- "date": "2022-11-08",
- "quantity": 100,
- "requested_quantity": 100,
- "confirmed_date": "2022-12-12",
- "delivered_quantity": 80,
- "reference": "PO4233",
- "order_row": "1",
- "estimated_date": "2022-12-17",
- "requested_date": "2022-12-10",
- "estimated_delivery_time": "15:05",
- "time": "15:05",
- "confirmed_quantity": 100,
- "partner_code": "SU4320",
- "order_type": "DC_ORDER",
- "value": 200,
- "delivered_date": "2022-12-14",
- "status": "OPEN",
- "expiration_date": "2023-06-06"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Goods sold from stock (or customer returned the goods --> reversal), required for calculating forecast.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (sale) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "receipt_timestamp": "2024-05-29T04:12:15.267Z",
- "receipt_code": "6547321564",
- "date": "2018-05-01",
- "time": "15:05",
- "location": "LOCATION1",
- "product": "PRODUCT1",
- "quantity": -1,
- "receipt_row_number": 1234,
- "value": 7.99,
- "sales_value_with_tax": 17,
- "tax_amount": 2,
- "sales_tax_rate": 0.12,
- "purchase_price": 1.99,
- "loyalty_customer_type": "Platinum",
- "fulfillment_type": "Home delivery",
- "delivery_zip_code": "12345",
- "loyalty_customer_zip_code": "12345",
- "campaign_code": "May_discount",
- "transaction_campaign_code": "May_discount",
- "original_sales_value": 17,
- "original_sales_value_with_tax": 20,
- "promotion_discount": 0.21,
- "transaction_promotion_discount": 0.21,
- "discount": 0.12,
- "discount_reason": "Markdown",
- "checkout_code": "1",
- "checkout_type": "Self-service",
- "partner_code": "C01234",
- "order_type": "SPECIAL_SALE",
- "row_timestamp": "2024-05-29T04:12:15.267Z"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Download a batch of Sales Forecasts.
| id required | string Example: 12345678-abcd-efgh-4321-787878787878 Identifier of data to download. |
{- "meta": { },
- "data": [
- {
- "product_code": "abc_7593485671",
- "product_name": "name abc",
- "location_code": "abc_5673485990",
- "supplier_code": "DC1",
- "date": "2024-05-29",
- "effective_quantity": "1.23",
- "comment": "comment"
}
]
}List all the Sales Forecasts available for download. Use query parameter download_status to include downloaded data. Filtered out by default.
| download_status | string Enum: "all" "downloaded" Example: download_status=all Filters out data based on their download status. |
{- "meta": {
- "type": "data.namespace.custom_export_resource.available",
- "requested_at": "2024-06-12T07:03:41+00:00"
}, - "data": [
- {
- "id": "43ee6e0c-6341-418f-a4e9-4029ec86f16a",
- "timestamp": "2024-05-29T04:12:16.102371Z",
- "downloaded": "false",
- "url": "/data/namespace/custom_export_resource/43ee6e0c-6341-418f-a4e9-4029ec86f16a",
- "resource": "custom_export_resource"
}
]
}Used to separate fast, special deliveries from normal deliveries.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (special_delivery) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "type": "SPECIAL_DELIVERY",
- "product": "PRODUCT1",
- "location": "LOCATION1",
- "date": "2018-07-14",
- "quantity": 1,
- "value": 1.99,
- "partner_code": "SUPPLIER1",
- "reference": "ORDER_12345",
- "order_row": "1",
- "order_type": "DC",
- "time": "15:05",
- "expiration_date": "2018-06-01"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Scrapped or spoiled from inventory, most relevant with fresh products.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (spoilage) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "type": "SPOILAGE",
- "product": "PRODUCT1",
- "location": "LOCATION1",
- "date": "2018-09-01",
- "quantity": -1,
- "transaction_uid": "TID12345",
- "value": 1.99,
- "time": "15:05",
- "expiration_date": "2018-06-01"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Stock transfer from one inventory location to another.
| Content-Type required | string Example: application/json The media type in the Content-Type header must be specified and must be application/json. The character encoding of the data is expected to be UTF-8. |
object (inbound_meta) | |
required | Array of objects (transfer) |
{- "meta": {
- "timestamp": 1624437035,
- "batch_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": [
- {
- "type": "TRANSFER",
- "product": "PRODUCT1",
- "location": "LOCATION1",
- "date": "2018-07-01",
- "quantity": -2,
- "transaction_uid": "TID12345",
- "value": 3.98,
- "partner_code": "DC1",
- "reference": "ORDER_12345",
- "order_row": "1",
- "time": "15:05",
- "order_type": "DC",
- "purchase_price": 24,
- "expiration_date": "2018-06-01"
}
]
}{- "meta": {
- "code": 200,
- "message": "OK",
- "request_id": "1692c610-6d26-11eb-9439-0242ac130002"
}, - "data": { }
}Download a batch of Workload Driver Forecasts Day.
| id required | string Example: 12345678-abcd-efgh-4321-787878787878 Identifier of data to download. |
{- "meta": { },
- "data": [
- {
- "workload_driver_type_code": "string",
- "location_code": "string",
- "effective_quantity": 0,
- "date": "2019-08-24"
}
]
}List all the Workload Driver Forecasts Day available for download. Use query parameter download_status to include downloaded data. Filtered out by default.
| download_status | string Enum: "all" "downloaded" Example: download_status=all Filters out data based on their download status. |
{- "meta": {
- "type": "data.namespace.custom_export_resource.available",
- "requested_at": "2024-06-12T07:03:41+00:00"
}, - "data": [
- {
- "id": "43ee6e0c-6341-418f-a4e9-4029ec86f16a",
- "timestamp": "2024-05-29T04:12:16.102371Z",
- "downloaded": "false",
- "url": "/data/namespace/custom_export_resource/43ee6e0c-6341-418f-a4e9-4029ec86f16a",
- "resource": "custom_export_resource"
}
]
}Download a batch of Workload Driver Forecasts Quarter.
| id required | string Example: 12345678-abcd-efgh-4321-787878787878 Identifier of data to download. |
{- "meta": { },
- "data": [
- {
- "workload_driver_type_code": "string",
- "location_code": "string",
- "effective_quantity": 0,
- "date": "2019-08-24",
- "time": "14:15"
}
]
}List all the Workload Driver Forecasts Quarter available for download. Use query parameter download_status to include downloaded data. Filtered out by default.
| download_status | string Enum: "all" "downloaded" Example: download_status=all Filters out data based on their download status. |
{- "meta": {
- "type": "data.namespace.custom_export_resource.available",
- "requested_at": "2024-06-12T07:03:41+00:00"
}, - "data": [
- {
- "id": "43ee6e0c-6341-418f-a4e9-4029ec86f16a",
- "timestamp": "2024-05-29T04:12:16.102371Z",
- "downloaded": "false",
- "url": "/data/namespace/custom_export_resource/43ee6e0c-6341-418f-a4e9-4029ec86f16a",
- "resource": "custom_export_resource"
}
]
}The namespace for custom data contains data that does not conform to the RELEX Data API standard dimensions.