# Data Submission Request

The **Data Submission Request** enables you to send tracking events directly to JENTIS via HTTP. It is the primary interface for transmitting event-based data from external systems into the JENTIS processing pipeline.

This endpoint should be used whenever a measurable tracking event occurs outside the standard JENTIS Base Code environment. Typical examples include backend purchase confirmations, cancelled orders, CRM-triggered events, POS transactions, or server-side interactions.

Once submitted, the event is processed by JENTIS and forwarded to the configured connectors according to your setup.

In short:

* Use this interface to send **tracking data**
* Events are processed through the JENTIS pipeline
* Configured connectors can be triggered
* Designed for server-side and external system integrations

To use the JENTIS HTTP API, you must obtain a dedicated **API Key**.

> ⚠️ Important\
> You must create a **Helpdesk ticket in JENTIS** to request access and receive your API key for this endpoint.

Without a valid API key, requests will be rejected.

### API - Definition

## POST /

> Submit data

```json
{"openapi":"3.0.1","info":{"title":"JENTIS Custom API","version":"1.0.0"},"servers":[{"url":"https://hash.customer.com"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"DataSubmission":{"type":"object","required":["version"],"properties":{"version":{"type":"string","description":"The version of the current API definition."},"system":{"type":"object","description":"The property \"system\" includes information provided by the device or platform that sends data to JENTIS.","required":["type","timestamp","navigator-userAgent","initiator"],"properties":{"type":{"type":"string","description":"The type should be a keyword referencing the device platform, such as web, app, smart TV, etc."},"timestamp":{"type":"integer","description":"The number of milliseconds since midnight January 1, 1970 00:00:00 UTC."},"navigator-userAgent":{"type":"string","description":"The Navigator UserAgent is a string identifying the browser and operating system to the web server, enabling detection of the client's environment for optimization or compatibility purposes."},"initiator":{"type":"string","description":"The \"initiator\" property is the ID of the JENTIS state that was executed by calling this API request."},"href":{"type":"string","description":"The value of the href property is passed to the HTTP header field \"Referer\" on outgoing JENTIS requests. For proper tracking, set a value."},"requestType":{"type":"string","description":"When using the type \"web\", it is possible to send data via the sendBeacon method to the API endpoint. When this is done, you must add the requestType \"sendBeacon\" here."},"domain":{"type":"string","description":"When using the type \"web,\" this is a required field for setting the server-side first-party cookie domain for storing the JENTIS user ID."}}},"consent":{"type":"object","properties":{"<vendorId>":{"description":"The <vendorId> should be replaced with the JENTIS Vendor-ID found in the JENTIS DCP.","type":"object","required":["status"],"properties":{"status":{"description":"The property \"status\" describes the consent status of the specified JENTIS Vendor-ID. It can be true, false, or \"ncm\" (Essential Mode).","oneOf":[{"type":"string","enum":["ncm"]},{"type":"boolean"}]},"execute":{"description":"The property \"execute\" allows you to override the consent and deactivate tracking for the vendor with the data request. This can be useful when cached data is sent from a platform and you want to avoid tracking the dataset again for the specified vendor.","type":"boolean"}}}}},"configuration":{"type":"object","required":["container","environment"],"properties":{"container":{"description":"The container short name is provided by the JENTIS DCP and can be found in the container settings.","type":"string"},"environment":{"description":"The environment for each container can be distinguished between live and stage, allowing for separate configurations and testing scenarios.","type":"string"},"version":{"description":"The property \"version\" is required when debugging. Enter the specific container version you want to test in this field.","type":"string"},"debugcode":{"description":"The property \"debugcode\" is required for debugging a version. Enter the debug code provided by the JENTIS Preview/Debug Monitor in this field.","type":"string"},"jtsAutomationId":{"description":"The property \"jtsAutomationId\" is optional and used for internal automation tests.","type":"string"}}},"data":{"type":"object","required":["identifier","variables"],"properties":{"identifier":{"type":"object","required":["user","session"],"properties":{"user":{"type":"object","description":"The property \"user\" stores the identifier and indicates whether the user is new or existing.","properties":{"id":{"type":"string","description":"The property \"id\" is a unique identifier for the user. This value should be stored and maintained for as long as possible on the corresponding platform."},"action":{"type":"string","enum":["new","update"],"description":"The property \"action\" indicates whether it is the user's first request or if the user is already existing. If it is the first request, the value should be \"new\" Otherwise, it should be \"update\"."}}},"session":{"type":"object","description":"The property \"session\" stores the identifier and indicates whether the session is new or existing.","properties":{"id":{"type":"string","description":"The property \"id\" stores the session ID. A session should be defined by the platform itself and should last as long as the session is intended to remain active on the corresponding platform."},"action":{"type":"string","enum":["new","update"],"description":"The property \"action\" indicates whether it is a new session's first request or if the session is already existing. If it is the first request, the value should be \"new\" Otherwise, it should be \"update\"."}}}}},"variables":{"type":"object","description":"The property \"variables\" is used to pass variable information to the JENTIS DCP. The key of the property corresponds to the client-side variable ID defined in the JENTIS DCP.","properties":{"document_location_href":{"type":"string"},"fb_browser_id":{"type":"string"},"jtspushedcommands":{"type":"array","items":{"type":"string"}},"product_id":{"type":"array","items":{"type":"string"}}}},"enrichment":{"type":"object","description":"The property \"enrichment\" is used to activate data enrichment for the API call, utilizing the enrichment plugin ID provided by JENTIS.","properties":{"enrichment_testplugin":{"type":"object","required":["arguments","variables"],"properties":{"arguments":{"type":"object","description":"The property \"arguments\" contains a list of required key-value pairs that serve as input for the enrichment plugin to generate the output values.","properties":{"account":{"type":"string"},"productId":{"type":"array","items":{"type":"string"}},"baseProductId":{"type":"array","items":{"type":"string"}}}},"variables":{"type":"array","description":"The property \"variables\" is a list of variable IDs provided by the enrichment plugin that you want to retrieve from this enrichment call.","items":{"type":"string"}}}}}}}}}}}},"paths":{"/":{"post":{"summary":"Submit data","requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/DataSubmission"}]}}}},"responses":{"200":{"description":"Data submitted successfully"}}}}}}
```

## The DataSubmission object

```json
{"openapi":"3.0.1","info":{"title":"JENTIS Custom API","version":"1.0.0"},"components":{"schemas":{"DataSubmission":{"type":"object","required":["version"],"properties":{"version":{"type":"string","description":"The version of the current API definition."},"system":{"type":"object","description":"The property \"system\" includes information provided by the device or platform that sends data to JENTIS.","required":["type","timestamp","navigator-userAgent","initiator"],"properties":{"type":{"type":"string","description":"The type should be a keyword referencing the device platform, such as web, app, smart TV, etc."},"timestamp":{"type":"integer","description":"The number of milliseconds since midnight January 1, 1970 00:00:00 UTC."},"navigator-userAgent":{"type":"string","description":"The Navigator UserAgent is a string identifying the browser and operating system to the web server, enabling detection of the client's environment for optimization or compatibility purposes."},"initiator":{"type":"string","description":"The \"initiator\" property is the ID of the JENTIS state that was executed by calling this API request."},"href":{"type":"string","description":"The value of the href property is passed to the HTTP header field \"Referer\" on outgoing JENTIS requests. For proper tracking, set a value."},"requestType":{"type":"string","description":"When using the type \"web\", it is possible to send data via the sendBeacon method to the API endpoint. When this is done, you must add the requestType \"sendBeacon\" here."},"domain":{"type":"string","description":"When using the type \"web,\" this is a required field for setting the server-side first-party cookie domain for storing the JENTIS user ID."}}},"consent":{"type":"object","properties":{"<vendorId>":{"description":"The <vendorId> should be replaced with the JENTIS Vendor-ID found in the JENTIS DCP.","type":"object","required":["status"],"properties":{"status":{"description":"The property \"status\" describes the consent status of the specified JENTIS Vendor-ID. It can be true, false, or \"ncm\" (Essential Mode).","oneOf":[{"type":"string","enum":["ncm"]},{"type":"boolean"}]},"execute":{"description":"The property \"execute\" allows you to override the consent and deactivate tracking for the vendor with the data request. This can be useful when cached data is sent from a platform and you want to avoid tracking the dataset again for the specified vendor.","type":"boolean"}}}}},"configuration":{"type":"object","required":["container","environment"],"properties":{"container":{"description":"The container short name is provided by the JENTIS DCP and can be found in the container settings.","type":"string"},"environment":{"description":"The environment for each container can be distinguished between live and stage, allowing for separate configurations and testing scenarios.","type":"string"},"version":{"description":"The property \"version\" is required when debugging. Enter the specific container version you want to test in this field.","type":"string"},"debugcode":{"description":"The property \"debugcode\" is required for debugging a version. Enter the debug code provided by the JENTIS Preview/Debug Monitor in this field.","type":"string"},"jtsAutomationId":{"description":"The property \"jtsAutomationId\" is optional and used for internal automation tests.","type":"string"}}},"data":{"type":"object","required":["identifier","variables"],"properties":{"identifier":{"type":"object","required":["user","session"],"properties":{"user":{"type":"object","description":"The property \"user\" stores the identifier and indicates whether the user is new or existing.","properties":{"id":{"type":"string","description":"The property \"id\" is a unique identifier for the user. This value should be stored and maintained for as long as possible on the corresponding platform."},"action":{"type":"string","enum":["new","update"],"description":"The property \"action\" indicates whether it is the user's first request or if the user is already existing. If it is the first request, the value should be \"new\" Otherwise, it should be \"update\"."}}},"session":{"type":"object","description":"The property \"session\" stores the identifier and indicates whether the session is new or existing.","properties":{"id":{"type":"string","description":"The property \"id\" stores the session ID. A session should be defined by the platform itself and should last as long as the session is intended to remain active on the corresponding platform."},"action":{"type":"string","enum":["new","update"],"description":"The property \"action\" indicates whether it is a new session's first request or if the session is already existing. If it is the first request, the value should be \"new\" Otherwise, it should be \"update\"."}}}}},"variables":{"type":"object","description":"The property \"variables\" is used to pass variable information to the JENTIS DCP. The key of the property corresponds to the client-side variable ID defined in the JENTIS DCP.","properties":{"document_location_href":{"type":"string"},"fb_browser_id":{"type":"string"},"jtspushedcommands":{"type":"array","items":{"type":"string"}},"product_id":{"type":"array","items":{"type":"string"}}}},"enrichment":{"type":"object","description":"The property \"enrichment\" is used to activate data enrichment for the API call, utilizing the enrichment plugin ID provided by JENTIS.","properties":{"enrichment_testplugin":{"type":"object","required":["arguments","variables"],"properties":{"arguments":{"type":"object","description":"The property \"arguments\" contains a list of required key-value pairs that serve as input for the enrichment plugin to generate the output values.","properties":{"account":{"type":"string"},"productId":{"type":"array","items":{"type":"string"}},"baseProductId":{"type":"array","items":{"type":"string"}}}},"variables":{"type":"array","description":"The property \"variables\" is a list of variable IDs provided by the enrichment plugin that you want to retrieve from this enrichment call.","items":{"type":"string"}}}}}}}}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.jentis.com/http-api-tracking/submission-interfaces/data-submission-request.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
