Skip to content

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 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 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 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 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 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