RUNNING
Source
A Source as RunningLake's configuration repository declares it, at sources/<name>.yaml. Generated from the Go types the control plane decodes this file into, so it checks the shape the gate reads — field names and types, and which fields may exist. The gate also applies rules no schema can express — required fields inside spec among them — so a file this schema accepts can still be refused by `rl diff`. Take #/properties/spec for the spec alone.
Recorded, and little else. Nothing runs a sync yet: the control plane checks a Source and records it, and no plane reads from it. The one thing done on its account is that a table it lands in is created with the platform’s eight columns. Where a field below says what a Source reads, copies, lands or does, it says what the Source is meant to do.
File: sources/<name>.yaml
Fields
| Field | Type | Required | Meaning |
|---|---|---|---|
apiVersion |
string | Yes |
The config schema's version, which is independent of the HTTP API's (rule unsupported-api-version). Values: |
kind |
string | Yes |
The kind this file declares. A kind that disagrees with the file's path is refused (rule kind-mismatch). Values: |
metadata |
object | Yes |
No description
|
metadata. |
string | Yes |
The resource's name, which is also its path segment. It must be the name this file's path gives it (rule name-mismatch). |
metadata. |
map of string | No |
No description
|
metadata. |
map of string | No |
No description
|
spec |
object | No |
SourceSpec says what a Source reads and where it lands. Nothing runs a sync yet: this declares the shape a connector will read once ingestion exists. |
spec. |
string | No |
Type is the connection's kind: postgres_ |
spec. |
string | No |
Host is the database's address. Required for postgres_ |
spec. |
integer | No |
Port is the database's port. Required alongside Host. |
spec. |
string | No |
Database is the database's name. Required alongside Host. |
spec. |
string | No |
Engine is the database a jdbc Source reads: postgres or mysql. SQL Server and Oracle are not offered yet; they join with the connector runtime. Required for jdbc, which reads tables by SQL the engine decides the dialect of; refused for every other type (change capture names its database by its type, and the others do not connect to one). It is checked and recorded, and nothing reads a Source yet. |
spec. |
object | No |
Credentials says where this Source's credentials live, by reference. A Source has no field for a secret value, and none belongs in git. |
spec. |
string | No |
SecretRef is the name of a SecretReference in this project, which says where the credentials live in your own store. |
spec. |
string | No |
User is the database user the connector is meant to sign in as, for a Source that connects to a database (postgres_ |
spec. |
object | No |
Read names what this Source reads: the one list matching Type (tables for postgres_ |
spec. |
array of string | No |
Tables is the tables a postgres_ |
spec. |
array of string | No |
Endpoints is the endpoints an api Source reads, as its connector names them. |
spec. |
array of string | No |
Objects is the object key prefixes an object_ |
spec. |
array of string | No |
Topics is the topics a stream Source reads. |
spec. |
object | No |
Land names where this Source's rows are meant to arrive: Schema, a declared Schema (meant to be in the bronze layer; the gate does not check it), for every type but object_ |
spec. |
string | No |
Schema is a declared Schema, such as bronze. |
spec. |
string | No |
Volume is a declared Volume. Only object_ |
spec. |
object | No |
Apply names a declared silver Schema this Source's changes are meant to be applied to. It is checked and recorded, and nothing applies changes to it yet. Optional: a Source may land in bronze alone. Each table in it declares its own key as its Iceberg schema's identifier fields. |
spec. |
string | No |
Schema is a declared Schema in the silver layer, such as silver. |
spec. |
object | No |
Schedule is when a batch Source is meant to sync by itself, reusing a pipeline's schedule mapping. It is checked and recorded, and nothing syncs a Source on it yet. A continuous Source (postgres_ |
spec. |
string | No |
Cron is when it runs: five fields (minute, hour, day of month, month, day of week), or @hourly, @daily, @weekly, @monthly or @yearly. A seconds field and Quartz's L, W, # and ? are refused. |
spec. |
string | No |
Timezone is the IANA zone the cron is read in, such as Europe/ |
spec. |
boolean | No |
Paused stops the schedule from starting runs. Resuming does not replay the paused period. A run started by hand still runs. |
spec. |
string | No |
Catchup is what happens to runs missed while the platform could not start them: latest (default) runs the newest one, all runs the newest 5, none runs none. |
spec. |
string | No |
Overlap is what a scheduled start does while a run is still active: skip (default) records it skipped, queue waits up to maxQueuedRuns, cancel_ |
spec. |
integer | No |
MaxConcurrentRuns is how many runs may be active at once. Default 1, and only a partitioned pipeline may say more: two runs of one table would write it twice. |
spec. |
integer | No |
MaxQueuedRuns is how many runs overlap: queue may hold waiting. Default 20. |
spec. |
string | No |
Jitter delays each scheduled start by up to this long, such as 30s or 2m, at most 5m; the same delay every time for one pipeline. Default none. |
spec. |
string | No |
Mode is continuous (postgres_ |
spec. |
object | No |
Incremental is meant to read only the rows newer than the last sync, by Cursor, a column such as updated_ |
spec. |
string | No |
Cursor is the column an incremental sync orders by, such as updated_ |
spec. |
string | No |
Lookback re-reads this far behind the cursor's own maximum, such as 10m, to catch rows committed out of order. Leave it out for none. |
spec. |
object | No |
Drift is what a Source is meant to do when its own schema changes underneath it. It is checked and recorded, and nothing detects a schema change yet. Leave it out for the default, additive. |
spec. |
string | No |
Policy is additive (the default: added or widened columns are meant to apply; anything else is meant to be rescued, never blocking the sync), propose_ |
spec. |
object | No |
Network is meant to name the addresses this Source's pods may reach INSTEAD of whatever Host resolves to, for when resolving Host at connection time is not to be trusted. It is checked and recorded, and nothing enforces it yet. |
spec. |
array of string | No |
Allow lists the addresses to trust in place of Host's own resolution, each a single host: a. |
spec. |
string | No |
Connector is meant to be the catalogue id of an api Source's connector, such as stripe; no catalogue exists yet. Only api may set it. |
spec. |
string | No |
URL is an object_ |
spec. |
string | No |
HostKeyFingerprint pins the SSH host key of an sftp address, written as ssh-keygen -l prints it: the word SHA256, a colon, and the 43 characters of unpadded base64 that follow it. Asked for every sftp address: a Source declared without one is warned about, and a change that declares one without it is refused. Any other address refuses it. It is meant to be the only host key the plane accepts: a server whose key differs is meant to be refused, and the plane is meant never to trust the first key it sees. An MD5 fingerprint is not accepted. Nothing connects to the server yet. Only object_ |
spec. |
string | No |
FilePattern says which files under each folder of read. |
spec. |
array of string | No |
Brokers lists a stream Source's broker addresses. Only stream may set it, alongside Format. |
spec. |
string | No |
Format is a stream Source's message encoding, such as avro or json. Only stream may set it, alongside Brokers. |
spec. |
boolean | No |
Paused says this Source is meant to be stopped, and is changed through a change set, the way a pipeline's own Paused is. The control plane records it as the state paused, and nothing is stopped by it yet, because nothing reads a Source. |
A nested field is written with its parents, spec.a.b; an item of a list is
[] and a value of a map is *. Required means the
parent object must carry the field; the rules a schema cannot express, such as a field that
is required only inside spec, are checked by rl diff.
The schema
This page is read from the kind’s published schema, at
https://runninglake.com/schema/v1alpha1/source.json. An editor that follows it checks a file of this kind as you
type. To see the fields of a kind’s spec from the command line, run rl schema
with the kind’s name: it works offline and prints what the gate accepts. The
command reference has the rest.