Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.cula.tech/llms.txt

Use this file to discover all available pages before exploring further.

Configurable fields in the Cula Tracking API are data points. Each data point is identified by config_id, the stable root ID of its data point config.

Input format

When creating or updating a resource, you send data points as an array of DataPointInput objects:
{
  "data_points": [
    { "config_id": "dpc_01abc...", "input_value": 42 },
    { "config_id": "dpc_01def...", "input_value": { "value": 500, "unit": "kg" } }
  ]
}

Response format

Responses return each data point as a DataPoint object with server-resolved fields:
{
  "data_points": [
    {
      "config_id": "dpc_01abc...",
      "config_version_id": "dpc_01abc_v2...",
      "name": "Moisture content",
      "input_value": 42,
      "value": 42
    },
    {
      "config_id": "dpc_01def...",
      "config_version_id": "dpc_01def_v1...",
      "name": "Weight",
      "input_value": { "value": 500, "unit": "lb" },
      "value": { "value": 226.796, "unit": "kg" }
    }
  ]
}
  • name — human-readable label from the config.
  • input_value — the value you submitted.
  • value — the server-normalized result (e.g. unit conversion from lb to kg).

Data point types

Typeinput_value typeNotes
short_textstringSingle-line text
long_textstringMulti-line text
multi_textstring[]Array of strings
numbernumberNumeric value
percentagenumber0–100
durationnumberDuration in seconds
booleanboolean
amount{ value, unit }Amount object with numeric value and unit string
timestampstringISO-8601 datetime
material_idResourceRef{ id } or { external_id }
container_type_idResourceRef{ id } or { external_id }

Computed data points

Data point configs with a dependencies field are server-computed and read-only. Do not send them on POST or PUT; the server calculates them from other data points.
Submitting a value for a computed data point returns a validation error.

Nesting structure

Data points are nested at the level of the entity that owns them:
  • Step executions — step-level data points, plus container-level data points on input and output containers.
  • Deliveries — delivery-level, leg-level, and payload container-level data points.
  • Emission logs — flat list of data points at the log level.
// Step execution example
{
  "data_points": [...],
  "input_containers": [
    { "data_points": [...] }
  ],
  "output_containers": [
    { "data_points": [...] }
  ]
}

// Delivery example
{
  "data_points": [...],
  "legs": [
    {
      "data_points": [...],
      "payload_containers": [
        { "data_points": [...] }
      ]
    }
  ]
}