Skip to content
SetuसेतुSDK

Build on the open records

Two ways in: the data API, for every dataset in the catalogue, and Sangam, the open record schemas and Python SDK for sensor fusion. Sangam's public data is simulated and labelled as such.

Sangam sensor fusion

A sensor maker writes one adapter that turns its output into Detection records. A command system reads Track and Alert records. Between them sits the fusion engine: gating, assignment, Kalman filtering and track lifecycle. The records are JSON Schema (draft 2020-12); the SDK needs Python 3.11 with numpy and scipy and runs air-gapped.

Sangam detects, tracks, classifies and alerts. It does not compute firing solutions or give weapon-targeting guidance. No record type holds personal identity: a track is an object and its motion.

SchemasSix JSON Schema files, public: docs/sangam/schema/, and all six in one file at /api/v1/sangam/schemas.json.
SDK guideAdapters, the engine, northbound integration and validation, in the console's SDK page. The console's sign-in is a demo gate that runs in your browser.
Sample streamSimulated records in the open schema, one per line: sangam/sample_stream.jsonl.
ProductWhat Sangam is for, its users and its limits: Sangam product page.

Record schemas

Every record carries type and schema_version, so one stream can mix all of them. Minor versions only add optional fields, so a reader that knows 1.0 can read any 1.x record.

RecordWhat it holdsRequired fieldsIn the sampleSchema
Loading the schemas.

Validate the sample stream

Checks every record in the sample stream against its schema, with the public schema bundle. It uses the third-party jsonschema package; the Sangam SDK itself validates with no third-party packages.

A small client for the data API

Finds a dataset in the catalogue by its id and fetches it, filling a family's placeholders. Both versions were run against the current exports.

Keep the credit line with the data: dataset(id).attribution in either version.

Conventions in Sangam records

  • Positions are WGS84 decimal degrees, 6 decimal places in records; geometry arrays are [lat, lon].
  • Covariance is [[ee, en], [ne, nn]] in square metres, in an east-north frame centred on the reported point.
  • Bearings are degrees clockwise from true north. Velocity is metres per second, east and north components.
  • Times are ISO 8601 UTC with a trailing Z, at the moment of measurement.
  • Every synthetic record carries "simulated": true. Keep the flag visible.

The same contract applies to every Trinetra export; see conventions.