Platform API
This module defines the RPC API contract for the Dendra platform. It models the core system domains used by the main app and integrations, including auth, metadata, datastream configuration, file handling, metrics, checklists, and timeseries access.
These schemas describe how Dendra clients and backend services exchange data for querying environmental observations and managing operational metadata.
Auth defines how Dendra callers authenticate and establish session context for API access. It includes token issuance, API key lifecycle operations, and session identity lookups.
classDiagram class KeyInfo class Session class Profile Session *-- Profile : profile
Checklist
Section titled “Checklist”Checklist defines readiness checks for stations so operators can identify setup gaps and operational blockers when deploying new stations.
classDiagram
class Checklist
class ChecklistScope
class ChecklistItem
class Rule {
RulePriority priority
}
class Organization
class Station
Checklist *-- ChecklistScope : scope
Checklist *-- ChecklistItem : items
ChecklistItem o-- Rule : rule
ChecklistScope --> Organization : organization_id
ChecklistScope --> Station : station_id
Data Integration
Section titled “Data Integration”Data Integration covers configuration management for inbound and outbound integrations, as well as workflow management for file import operations.
classDiagram
class IntegrationConfig {
IntegrationDirection direction
IntegrationScope scope
OperationMode operation_mode
}
class IntegrationType {
IntegrationDirection direction
IntegrationScope scope
}
class LogEntry {
IntegrationStatus status
LogLevel level
}
class Organization
class Station
class TableInfo
class FileImportManifest {
FileImportMethod method
FileImportState state
}
class FileImportResults
IntegrationConfig --> IntegrationType : type_id
IntegrationConfig --> Organization : organization_id
IntegrationConfig --> Station : station_id
FileImportManifest --> Organization : organization_id
FileImportManifest --> Station : station_id
FileImportManifest --> TableInfo : table_id
FileImportManifest *-- FileImportResults : results
Event defines change-events that are emitted when system activity occurs. Workers can subscribe to these events to react to changes in the system.
classDiagram class ChangeEvent class Organization ChangeEvent --> Organization : organization_id
File defines file metadata and URL workflows used to upload and retrieve assets such as photos and logos across Dendra resources.
classDiagram class FileInfo class FilePurpose class Company class Organization class Place class Site class Station class Datastream class ThingType FileInfo *-- FilePurpose : file_purpose FilePurpose --> Company : company_id FilePurpose --> Organization : organization_id FilePurpose --> Place : place_id FilePurpose --> Site : site_id FilePurpose --> Station : station_id FilePurpose --> Datastream : datastream_id FilePurpose --> ThingType : thing_type_id
Metadata
Section titled “Metadata”Metadata defines Dendra’s core entity model for organizations, stations, sites, datastreams, tables, and controlled terms. These types are used across several API domains.
classDiagram
class Organization
class Site
class Station
class Deployment
class Datastream {
DatastreamStatus status
map~string, DatastreamAttribute~ attributes
OutputFields output_fields
}
class TableInfo
class Unit
class ThingType
Organization --> Site : owns
Organization --> Station : owns
Station o-- Deployment : deployments
Datastream o-- Deployment : deployments
Deployment --> Site : site_id
Station --> Datastream : parent_of
Station --> ThingType : primary_secondary_ids
Datastream --> TableInfo : sources_from
Datastream --> Unit : unit_id
Datastream --> ThingType : thing_type_id
Metrics
Section titled “Metrics”Metrics provides simple station-level counts (such as datastreams, table infos, and integration configs) across key dimensions for quick operational visibility. Used during checklist generation to ensure stations are configured correctly.
classDiagram class GetStationMetricsResponse class DatastreamRow class TableInfoRow class IntegrationConfigRow GetStationMetricsResponse *-- DatastreamRow : datastream_rows GetStationMetricsResponse *-- TableInfoRow : table_info_rows GetStationMetricsResponse *-- IntegrationConfigRow : integration_config_rows
Timeseries
Section titled “Timeseries”Timeseries provides a uniform mechanism for querying and streaming time-series data from tables and datastreams. It also supports table discovery and schema retrieval.
classDiagram
class ListRecordsRequest
class RecordsQuerySpec
class QueryConstraints
class ListRecordsResponse
class TableRecord {
FieldValue[] values
}
class FieldSpec
class DiscoverTablesRequest
class DiscoverTablesResponse
class TableInfo
ListRecordsRequest *-- RecordsQuerySpec : spec
ListRecordsRequest *-- QueryConstraints : constraints
ListRecordsRequest --> ListRecordsResponse : list_records
ListRecordsResponse *-- TableRecord : records
ListRecordsResponse *-- FieldSpec : fields
DiscoverTablesRequest --> DiscoverTablesResponse : discover_tables
DiscoverTablesResponse *-- TableInfo : details