Source Schema Reference
Complete YAML schema for source definitions -- every field, type, and default
This page documents every field in a source definition YAML file (sources.d/*.yaml). Fields are grouped by section. For transport-specific fields, see Transports.
Top-level
schema_version
integer
required2 for new sources. Version 2 adds support for filtering, geo_cache, spatial crawling, entity_cache, on_demand_url, and advanced parser options. Allowed values: 1, 2.name
string
required^[a-z][a-z0-9_]{0,63}$.source_type
string
requiredname unless you have a reason to differ. Same naming rules as name.layer_type
string
requiredname.display_name
string
requiredlayer_display_name
stringlayer_type (FormatLayerName, e.g. traffic_stations -> Traffic Stations). Set it when the title-cased layer_type loses meaning – for example a country qualifier: "Traffic Stations (Mexico)". Distinct from display_name, which names the source.entity_type
string
default: geo_entitygeo_entity has lat/lon coordinates. global_indicator has no coordinates and is rendered as a HUD overlay panel. Allowed values: geo_entity, global_indicator.enabled
boolean
default: truefalse to disable this source without deleting the file. When omitted or null, defaults to true.dry_run
boolean
default: falsetrue, the source fetches and parses data but does not persist to the database or cache. Useful for testing new sources.labels
map[string]stringcategory, priority.filtering
stringviewport sends camera bounds and uses GEOSEARCH. all explicitly fetches all entities. When omitted, the frontend subscribes in global mode. Allowed values: viewport, all.Transport
transport.type
string
requiredhttp_poll, websocket, sse, mqtt, webhook, pubsub, grpc_stream, kafka, amqp, tcp_udp, ftp_sftp, s3_poll, nats.transport.url
string${VAR} for environment variable substitution (resolved from RESPONDENT_VAR). For spatial sources, use {lat} and {lon} placeholders.transport.on_demand_url
string{lat} and {lon} placeholders. Must be a valid URL.transport.method
string
default: GETGET, POST.transport.headers
map[string]stringtransport.timeout
duration"15s").transport.interval
duration"60s").transport.max_response_bytes
integer1, max: 104857600 (100 MB).Auth
transport.auth.type
string
requiredbearer, api_key, oauth2.transport.auth.header
stringapi_key auth type.transport.auth.env_var
stringRESPONDENT_ prefix). Resolved from RESPONDENT_<env_var> at runtime. Required for bearer and api_key types.transport.auth.oauth2
objecttype is oauth2. See the Transports page for full OAuth2 field reference.Retry
transport.retry.max_attempts
integer0-10. Total attempts = max_attempts + 1.transport.retry.backoff
stringexponential, fixed.transport.retry.initial_delay
duration"2s").transport.retry.max_delay
duration"30s").Pagination
transport.pagination.type
string
requiredpage_number, offset, cursor.transport.pagination.page_param
string
requiredtransport.pagination.size_param
stringtransport.pagination.size
integer
required1-10000.transport.pagination.max_pages
integer
required1-1000.transport.pagination.stop_when
stringrecords variable is bound to the current page array. When true, pagination stops early.transport.pagination.cursor_path
stringcursor type).Parser
parser.format
string
requiredjson, json_table, geojson, csv, tle, xml, rss.parser.records_path
string^[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+){0,7}$. Omit when the response is already the array.parser.max_records
integer1-100000.CSV Options
parser.csv_options.delimiter
string
default: ,parser.csv_options.has_header
boolean
default: falseparser.csv_options.skip_lines
integer
default: 0parser.csv_options.collapse_whitespace
boolean
default: falseparser.csv_options.comment_prefix
stringJSON Reshaping (schema_version 2)
parser.array_columns
string[][icao24, callsign, ...]). The Nth entry becomes the field name for index N.parser.object_to_records
boolean
default: false{"key": {...}, ...} into an array of its values [{...}, ...]. Useful for dictionary-keyed APIs (e.g., SondeHub).parser.object_key_field
stringobject_to_records is true, inject the object key into each record under this field name.parser.array_of_arrays
boolean
default: falseFilter
filter
stringtrue for a record to be processed. The record variable is bound to each parsed record. Use has() to guard optional fields. See CEL Functions for available functions.Entity
entity.external_id
string (CEL)
requiredrecord.id, string(record.eventid), record.lat + "_" + record.lon.entity.name
string (CEL)
requiredentity.metadata
map[string]string (CEL)Observation
observation.latitude
string (CEL)
requireddouble. Required for geo_entity, omit for global_indicator.observation.longitude
string (CEL)
requireddouble. Required for geo_entity, omit for global_indicator.observation.altitude
string (CEL)
default: 0.0double.observation.timestamp
string (CEL)
requiredtimestamp. See time functions in CEL Functions.observation.event_time
string (CEL)observation.event_end
string (CEL)observation.velocity
map[string]string (CEL)speed, heading, climb.observation.metadata
map[string]string (CEL)observation.content_hash
string (CEL)recording.mode is dedupe.Recording
recording.mode
string
requiredHow observations are persisted. Allowed values:
append– always insert a new row (time-series style)upsert– insert or update based on entity_id (latest-only)dedupe– insert only ifcontent_hashdiffers from the latest observation (requiresobservation.content_hash)
Cache
cache.ttl
duration
requiredtransport.interval to survive missed polls.Entity Cache (schema_version 2)
Accumulates entities across spatial batches. Different from cache.ttl – this controls in-memory accumulation for cross-batch deduplication.
entity_cache.enabled
boolean
default: falseentity_cache.key
string (CEL)
requiredentity_cache.ttl
duration
requiredentity_cache.accumulate
boolean
default: falseGeo Cache
Controls geo sorted set maintenance for viewport-filtered layers. Required alongside filtering: viewport.
geo_cache.overfetch_ratio
float1.0-10.0.geo_cache.alive_ratio_threshold
float0.1-1.0.geo_cache.gc_batch_size
integer10-10000.Backfill (schema_version 2)
backfill.threshold
integer1-10000.Display
Icon
display.icon.shape
string
requireddisplay.icon.rotatable
boolean
default: falsedisplay.icon.interpolation
boolean
default: falsedisplay.icon.scale
float
default: 1.00.1-5.0. 1.0 is the standard size.Trail
display.trail.color
string
required"#ffffff"). Must be a valid hex color.display.trail.width
float0.5-10.0.display.trail.opacity
float0.0-1.0.Style
display.style.color
string
required"#ffffff"). Must be a valid hex color.display.style.point_size
integer
required1-32. 8 is the standard size.Field Renderers
An array defining how metadata fields are displayed in the entity detail panel. Renderers are sorted by priority (lower = shown first).
display.field_renderers[].keys
string[]
requiredentity.metadata or observation.metadata.display.field_renderers[].label
string
requireddisplay.field_renderers[].format.type
string
requiredstring, float, integer, raw.display.field_renderers[].format.precision
integerfloat format type.display.field_renderers[].format.prefix
stringdisplay.field_renderers[].format.suffix
stringdisplay.field_renderers[].format.transform
stringstring format type. Allowed values: upper, lower.display.field_renderers[].priority
integer
default: 0Color By
Colors entities by the value of a metadata field. Overrides display.style.color per entity based on the matched value. When present, the client reads this map instead of applying a single base color to every entity.
display.color_by.field
string
requireddisplay.color_by.values
map[string]string
requiredoperational: "#00ff9d"). Min 1 entry. Each value must be a valid hex color.display.color_by.default_color
stringvalues. Must be a valid hex color.History
Per-layer time range limits for historical exploration. When present, overrides the server defaults (48h lookback, 24h span).
history.max_lookback
duration"8760h" for 1 year).history.max_range_span
duration"168h" for 1 week).Indicator
Maps a global indicator entity’s metadata fields to structured indicator values for HUD rendering. Only meaningful when entity_type is global_indicator.
indicator.summary_expr
string (CEL)level (int), metadata (map[string]string). When omitted, a default severity scale (Quiet -> Extreme) is used.Values (array)
indicator.values[].key
stringindicator.values[].label
stringindicator.values[].source_field
stringindicator.values[].unit
stringindicator.values[].max_level
integerindicator.values[].level_thresholds
float[]level_expr is omitted).indicator.values[].level_expr
string (CEL)value (string), change_pct (string). Must return an int. When omitted, the level is computed from level_thresholds/max_level.indicator.values[].change_source_field
stringindicator.values[].format
stringscale, number, currency, percent.indicator.values[].precision
integerindicator.values[].prefix
string"$").Field Mappings
A top-level array of generalized CEL mappings from source data to domain structures.
field_mappings[].source
string (CEL)
requiredfield_mappings[].target
string
requiredfield_mappings[].type
string
requiredtimestamp, string, integer, float, boolean.Lookup Tables
An array of static lookup tables for CEL enrichment. Loaded and indexed at config time.
lookup_tables[].name
string
requiredname.lookup_tables[].key_field
string
requiredlookup_tables[].entries
arrayentries or file, not both.lookup_tables[].file
stringentries or file, not both.lookup_tables[].format
stringfile. Allowed values: json, csv.AI
AI enrichment configuration. Optional. Requires ai.enabled: true in the server config and a configured LLM provider.
ai.enabled
boolean
default: falseOperations (array)
ai.operations[].name
string
requiredai.operations[].tags
string[]ai.operations[].filter
stringai.operations[].prompt
string
required.Entity and .Observation variables.ai.operations[].output_schema
objectai.operations[].output_mapping
map[string]stringai.operations[].output_target
string
default: entityentity, observation.ai.operations[].max_tokens
integer1-128000.ai.operations[].temperature
float0.0-2.0.ai.operations[].cache_ttl
string"24h").ai.operations[].priority
integer
default: 0Operation Output
ai.operations[].output.store_insights
boolean
default: falseai.operations[].output.insight_type
stringai.operations[].output.websocket_push
boolean
default: falseai.operations[].output.retention
string"720h").ai.operations[].output.results_path
string