Use Case

Partial batch acceptance: high volume ingestion

A System Integrator (SI) submits a batch of 20.000 measurements. Due to the volume of the batch and the limit of the architectiure, the processing budget is exceeded after validating 14.000 items. The remaining 6.000 items are forcibly rejected. 

The endpoint is:

POST
https://api.ptvgroup.tech/dataprovider/ingestion/v1/detectors/data/ingest

Path parameter 

Not applicable.

Query parameters 

No query parameters are needed.

Example of request

The endpoint is:

https://api.ptvgroup.tech/dataprovider/ingestion/v1/detectors/data/ingest

Host: api.ptvgroup.tech

Authorization: apiKey YOUR_API_KEY

Accept: application/json compressed (gzip)

Example of payload

{
 "measurements": [
   {
     "detectorCode": "DET-00001",
     "measureTypeCode": "SPEED",
     "timestampFrom": "2026-06-25T10:00:00Z",
     "timestampTo": "2026-06-25T10:05:00Z",
     "value": 52.5,
     "quality": 0.93
   },
   {
     "detectorCode": "DET-00002",
     "measureTypeCode": "SPEED",
     "timestampFrom": "2026-06-25T10:00:00Z",
     "timestampTo": "2026-06-25T10:05:00Z",
     "value": 48.0,
     "quality": 0.89
   },
   {
     "detectorCode": "DET-00003",
     "measureTypeCode": "FLOW",
     "timestampFrom": "2026-06-25T10:00:00Z",
     "timestampTo": "2026-06-25T10:05:00Z",
     "value": 1100.0,
     "quality": 0.95
   },
   {
     "detectorCode": "DET-00004",
     "measureTypeCode": "SPEED",
     "timestampFrom": "2026-06-25T10:00:00Z",
     "timestampTo": "2026-06-25T10:05:00Z",
     "value": 60.0
   },
   ...
   {
     "detectorCode": "DET-13999",
     "measureTypeCode": "FLOWS",
     "timestampFrom": "2026-06-25T10:00:00Z",
     "timestampTo": "2026-06-25T10:05:00Z",
     "value": 60.0
   },
   {
     "detectorCode": "DET-14000",
     "measureTypeCode": "SPEED",
     "timestampFrom": "2026-06-25T10:00:00Z",
     "timestampTo": "2026-06-25T10:05:00Z",
     "value": 40.0
   },
   ... (6000 more items) ...
 ]
}

The payload must be compressed (gzip) before to be sent.

In the payload the mandatory information are:

  • detectorCode
  • measureTypeCode
  • timestampFrom
  • timestampTo
  • value

 

Response

HTTP 400 - Bad request. The details for each state are provided in the body of the response.

{
  "accepted": 14.000,
  "rejected": 6.000,
  "rejections": [
    {
      Here is specified the reason for the rejection
      "error": {
        "errorCode": ...,
        "description": ....,

		...
        }
      
    },
    {
    ...

    }
  ]
}

14.000 items has been accepted, 6.000 has been rejected.