{
"$type": "com.atproto.lexicon.schema",
"defs": {
"main": {
"description": "Roster entry for an approved sensor-network operator. Our attestation that an operator was admitted, under a stated open licence, at a stated time. Held in a central registry repo we control, not in the operator's own data repo, so a sovereign operator cannot rewrite their own admission status. Carries org-level facts only; contact details and operational configuration are kept in the private moderation store, not on this public record.",
"key": "any",
"record": {
"properties": {
"account": {
"description": "DID of the operator's data-publishing account, where their Things/Datastreams/Observations live.",
"format": "did",
"type": "string"
},
"approvedAt": {
"description": "When the operator was admitted. This record is created at admission, so this is also the record's creation time.",
"format": "datetime",
"type": "string"
},
"description": {
"maxLength": 2048,
"type": "string"
},
"handle": {
"description": "Handle of the data-publishing account, e.g. examplewater.sensorthings.dev",
"format": "handle",
"type": "string"
},
"ingestionMode": {
"description": "How the operator's data reaches the PDS: poller (we pull their OGC SensorThings server), push (they POST to the ingest gateway), or ogc (the OGC write facade).",
"knownValues": [
"poller",
"push",
"ogc"
],
"type": "string"
},
"licence": {
"description": "Open-data licence the operator publishes under. SPDX identifier (e.g. CC-BY-4.0) or a licence URL. A compatible open licence is a precondition of admission.",
"maxLength": 256,
"type": "string"
},
"onboardedAt": {
"description": "When the operator's data first went live. Absent until go-live.",
"format": "datetime",
"type": "string"
},
"operatorName": {
"maxLength": 256,
"type": "string"
},
"parameters": {
"description": "Human-readable summary of the phenomena the operator measures, for display. Authoritative mapping is on the operator's ObservedProperty records.",
"items": {
"maxLength": 256,
"type": "string"
},
"maxLength": 64,
"type": "array"
},
"region": {
"description": "ISO 3166 country or region code, or a human-readable area name.",
"maxLength": 128,
"type": "string"
},
"stationCountApprox": {
"description": "Approximate number of stations, for display. Not authoritative.",
"minimum": 0,
"type": "integer"
},
"status": {
"description": "active: ingesting. suspended: admitted but ingestion paused. migrated: the operator has moved to their own PDS and left the gateway.",
"knownValues": [
"active",
"suspended",
"migrated"
],
"type": "string"
},
"website": {
"format": "uri",
"type": "string"
}
},
"required": [
"operatorName",
"licence",
"ingestionMode",
"account",
"handle",
"status",
"approvedAt"
],
"type": "object"
},
"type": "record"
}
},
"id": "dev.sensorthings.operator",
"lexicon": 1,
"revision": 1
}