Manifests
Manifest
An object that wraps the metadata resources providing versioning and type identification. All root-level resources are wrapped with a manifest when serialized to disk.
DatasetSnapshot
Represents a projection of the dataset metadata at a single point in time.
This type is typically used for defining new datasets and changing the existing ones.
An individual block in the metadata chain that captures the history of modifications of a dataset.
Metadata Events
Represents a transaction that occurred on a dataset.
AddData
Indicates that data has been ingested into a root dataset.
AddPushSource
Describes how to ingest data into a root dataset from a certain logical source.
DisablePollingSource
Disables the previously defined polling source.
DisablePushSource
Disables the previously defined source.
Indicates that derivative transformation has been performed.
Seed
Establishes the identity of the dataset. Always the first metadata event in the chain.
SetAttachments
Associates a set of files with this dataset.
SetDataSchema
Specifies the complete schema of Data Slices added to the Dataset following this event.
SetInfo
Provides basic human-readable information about a dataset.
SetLicense
Defines a license that applies to this dataset.
SetPollingSource
Contains information on how externally-hosted data can be ingested into the root dataset.
Defines a transformation that produces data in a derivative dataset.
SetVocab
Lets you manipulate names of the system columns to avoid conflicts.
Data Schema
DataSchema
This schema aims to be a human-friendly variant of Arrow. Arrow currently specifies only the flatbuffer format which has many legacy to it and is not suited to be defined by humans, so we had to define our own schema format. While inspired by Arrow - this format makes a clear separation between logical data types and encoding (physical layout) of data in the chunks.
DataField
Represents a named field (column) in a root or nested struct schema
DataType
Defines a logical type of the field. Logical type determines the semantics and boudaries of a type and how it can be operated on, without a concern about encoding and physical layout of the data in chunks.
DataType::Binary
A sequence of bytes. Used for arbitrary binary data.
DataType::Bool
A boolean value representing true or false.
DataType::Date
A calendar date.
DataType::Decimal
A fixed-point decimal number with a specified precision and scale.
DataType::Duration
An elapsed time interval with a specified time unit.
DataType::Float16
A floating-point number.
DataType::Float32
A floating-point number.
DataType::Float64
A floating-point number.
DataType::Int8
An integer value.
DataType::Int16
An integer value.
DataType::Int32
An integer value.
DataType::Int64
An integer value.
DataType::UInt8
An integer value.
DataType::UInt16
An integer value.
DataType::UInt32
An integer value.
DataType::UInt64
An integer value.
DataType::List
A list of values, all having the same data type.
DataType::Map
A map of key-value pairs, represented as a list of entries (structs with key and value fields).
DataType::Null
A type representing the absence of a value (null).
DataType::Option
A type representing an optional (nullable) value of another data type.
DataType::Struct
A collection of named fields, each with its own data type.
DataType::Time
A time of day value, without a date, with a specified unit of granularity.
DataType::Timestamp
A point in time, represented as an offset from the Unix epoch in a specific timezone.
DataType::String
A Unicode string.
TimeUnit
Defines the unit of measurement of time
Engine Protocol
RawQueryRequest
Sent by the coordinator to an engine to perform query on raw input data, usually as part of ingest preprocessing step
RawQueryResponse
Sent by an engine to coordinator when performing the raw query operation
RawQueryResponse::Progress
Reports query progress
RawQueryResponse::Success
Query executed successfully
RawQueryResponse::InvalidQuery
Query did not pass validation
RawQueryResponse::InternalError
Internal error during query execution
Sent by the coordinator to an engine to perform the next step of data transformation
Sent as part of the engine transform request operation to describe the input
Sent by an engine to coordinator when performing the data transformation
Reports query progress
Query executed successfully
Query did not pass validation
Internal error during query execution
Fragments
AttachmentEmbedded
Embedded attachment item.
Attachments
Defines the source of attachment files.
Attachments::Embedded
For attachments that are specified inline and are embedded in the metadata.
Checkpoint
Describes a checkpoint produced by an engine
Defines a compression algorithm.
DataSlice
Describes a slice of data added to a dataset or produced via transformation
DatasetKind
Represents type of the dataset.
DatasetVocabulary
Specifies the mapping of system columns onto dataset schema.
EnvVar
Defines an environment variable passed into some job.
EventTimeSource
Defines the external source of data.
Extracts event time from the source’s metadata.
EventTimeSource::FromSystemTime
Assigns event time from the system time source.
EventTimeSource::FromPath
Extracts event time from the path component of the source.
Describes a slice of the input dataset used during a transformation
Container for custom key-value extension attributes. Every key must be in the form of <domain>/<path> (e.g. kamu.dev/archetype) in order to fully disambiguate the value in the face of multiple extensions. Values may be any valid JSON including nested objects.
Known Extensions
Known Extended Types
FetchStep
Defines the external source of data.
FetchStep::Url
Pulls data from one of the supported sources by its URL.
FetchStep::FilesGlob
Uses glob operator to match files on the local file system.
FetchStep::Container
Runs the specified OCI container to fetch data from an arbitrary source.
FetchStep::Mqtt
Connects to an MQTT broker to fetch events from the specified topic.
FetchStep::EthereumLogs
Connects to an Ethereum node to stream transaction logs.
MergeStrategy
Merge strategy determines how newly ingested data should be combined with the data that already exists in the dataset.
MergeStrategy::Append
Append merge strategy.
Under this strategy new data will be appended to the dataset in its entirety, without any deduplication.
MergeStrategy::ChangelogStream
Changelog stream merge strategy.
This is the native stream format for ODF that accurately describes the evolution of all event records including appends, retractions, and corrections as per RFC-015. No pre-processing except for format validation is done.
MergeStrategy::Ledger
Ledger merge strategy.
This strategy should be used for data sources containing ledgers of events. Currently this strategy will only perform deduplication of events using user-specified primary key columns. This means that the source data can contain partially overlapping set of records and only those records that were not previously seen will be appended.
MergeStrategy::Snapshot
Snapshot merge strategy.
This strategy can be used for data state snapshots that are taken periodically and contain only the latest state of the observed entity or system. Over time such snapshots can have new rows added, and old rows either removed or modified.
This strategy transforms snapshot data into an append-only event stream where data already added is immutable. It does so by performing Change Data Capture - essentially diffing the current state of data against the reconstructed previous state and recording differences as retractions or corrections. The Operation Type “op” column will contain:
- append (
+A) when a row appears for the first time
- retraction (
-D) when row disappears
- correction (
-C, +C) when row data has changed, with -C event carrying the old value of the row and +C carrying the new value.
To correctly associate rows between old and new snapshots this strategy relies on user-specified primary key columns.
To identify whether a row has changed this strategy will compare all other columns one by one. If the data contains a column that is guaranteed to change whenever any of the data columns changes (for example a last modification timestamp, an incremental version, or a data hash), then it can be specified in compareColumns property to speed up the detection of modified rows.
MergeStrategy::UpsertStream
Upsert stream merge strategy.
This strategy should be used for data sources containing ledgers of insert-or-update and delete events. Unlike ChangelogStream the insert-or-update events only carry the new values, so this strategy will use primary key to re-classify the events into an append or a correction from/to pair, looking up the previous values.
MqttQos
MQTT quality of service class.
MqttTopicSubscription
MQTT topic subscription parameters.
OffsetInterval
Describes a range of data as a closed arithmetic interval of offsets
PrepStep
Defines the steps to prepare raw data for ingestion.
PrepStep::Decompress
Pulls data from one of the supported sources by its URL.
PrepStep::Pipe
Executes external command to process the data using piped input/output.
ReadStep
Defines how raw data should be read into the structured form.
ReadStep::Csv
Reader for comma-separated files.
ReadStep::Json
Reader for JSON files that contain an array of objects within them.
ReadStep::NdJson
Reader for files containing multiple newline-delimited JSON objects with the same schema.
ReadStep::GeoJson
Reader for GeoJSON files. It expects one FeatureCollection object in the root and will create a record per each Feature inside it extracting the properties into individual columns and leaving the feature geometry in its own column.
ReadStep::NdGeoJson
Reader for Newline-delimited GeoJSON files. It is similar to GeoJson format but instead of FeatureCollection object in the root it expects every individual feature object to appear on its own line.
ReadStep::EsriShapefile
Reader for ESRI Shapefile format.
ReadStep::Parquet
Reader for Apache Parquet format.
Defines a header (e.g. HTTP) to be passed into some request.
SourceCaching
Defines how external data should be cached.
SourceCaching::Forever
After source was processed once it will never be ingested again.
SourceOrdering
Specifies how input files should be ordered before ingestion.
SourceState
The state of the source the data was added from to allow fast resuming.
SqlQueryStep
Defines a query in a multi-step SQL transformation.
TemporalTable
Temporary Flink-specific extension for creating temporal tables from streams.
Engine-specific processing queries that shape the resulting data.
Transform using one of the SQL dialects.
Describes a derivative transformation input
Watermark
Represents a watermark in the event stream.

Last modified on May 16, 2026