IngestionConfigService.CreateIngestionConfig to register the schema of your telemetry, then streams compact structured messages to Sift over gRPC. This approach reduces packet size and improves throughput compared to schemaless methods.
CreateIngestionConfigRequest
| Field | Description |
|---|---|
asset_name | The name of the asset to create. Required. |
flows | One or more flow configurations defining the schema. See FlowConfig. |
organization_id | Your organization ID. Only required if you belong to multiple organizations. |
client_key | An arbitrary string you choose to uniquely identify this ingestion config. Optional but strongly recommended; it simplifies lookups. |
FlowConfig
A flow is a named group of channels whose values are sent together in one request.ChannelConfig
| Field | Description |
|---|---|
name | The channel name. Required. |
component | Optional component label. |
unit | Optional unit string (for example, km/hr). |
description | Optional human-readable description. |
data_type | The data type of the channel. Required. |
enum_types | Enum type definitions for enum-typed channels. |
bit_field_elements | Bit field element definitions for bit-field-typed channels. |
Channel ordering
The order of channels in aFlowConfig must be preserved exactly when sending values in an IngestWithConfigDataStreamRequest. Sift attributes each value to a channel by its position in the list.
If data is available for some channels in a flow but not others, send google.protobuf.Empty in the position of the missing channel to maintain correct ordering.
Example
Given a flowreading with two channels—a double channel followed by a string channel:
IngestWithConfigDataStreamRequest
| Field | Description |
|---|---|
ingestion_config_id | The ID returned when you created the ingestion config. |
flow | The name of the flow this request sends data for. |
timestamp | The timestamp for all channel values in this request. |
channel_values | Ordered list of values. Order must match the channel order in the flow definition. |
run_id | Optional. Must be included if this data belongs to a Run. |
end_stream_on_validation_error | When true, the stream terminates if a server-side error occurs. Use only during development; this flag severely impacts production performance. |
organization_id | Optional unless your user belongs to multiple organizations. |
end_stream_on_validation_error is false appear in Sift’s Data Processing dashboard (https://app.siftstack.com/manage/data-processing).
Retrieving an ingestion config by client key
Updating an ingestion config
To add new flows after creation, send aCreateIngestionConfigFlowRequest to IngestionConfigService. Adding flows and channels is backwards compatible. Modifying or removing existing flows or channels is not.