pubsub | Yes | A constructed PubSub client, or a ClientConfig passed to new PubSub(...). Authentication is ADC, or the Pub/Sub emulator when PUBSUB_EMULATOR_HOST is set. |
state | Yes | { path } opens the built-in SqlitePubsubState at that file; pass a PubsubState implementation directly for a different store. Holds the cursor, rollback manifest, outbox, and sequence counter. |
topics | No | One TopicRoute per pipe output stream, keyed by the stream’s name in outputs. |
attributes | No | Attributes constant for this producer (for example chain, table). They ride every message; a route’s per-draft attributes add to these. |
sequenceBarrier | No | Default true. Keeps the change sequence gap-free, which in practice also limits the producer to one route: operations are sequenced in map order, and a second route feeding the same topic is refused (E2429) on any batch spanning more than one block. Set false only when no consumer relies on the sequence being contiguous; this is what allows several routes or several topics from one producer. |
allowColdStart | No | Default false. A run that finds empty state is refused, because restarting the sequence under a namespace that already published makes every affected row freeze downstream with no symptom. Set true only to bootstrap a namespace that has never published. |
settings.id | No | Cursor key inside the state file. Defaults to the pipe’s own id. |
publish.messageOrdering | No | Default false. Enables Pub/Sub ordered publishing; each topic’s name is the default ordering key, overridable per draft via MessageDraft.orderingKey. The subscription must also have message ordering enabled. |
publish.uidAttribute | No | Default false. Adds a stable _uid attribute to every message, for pipelines that need a publisher-supplied unique id (for example Dataflow’s idAttribute). Costs one attribute per message. |
publish.batching / publish.flowControl | No | Passed straight through to the underlying @google-cloud/pubsub publisher. |
assumeNoForks | No | Default false. Without it, a dataset that never reports a finalized head is refused at start (E2407): no watermark means no rollback manifest, and this medium cannot retract what it already published. A fork reported anyway is still fatal (E2408). |
publishFrom | No | Default 'latest', resolved to the current head on first start and persisted so restarts keep the same go-live block. The pipe may read from earlier for warm-up, but nothing below this block is published. |
namespace | No | Producer namespace baked into every generated id. Defaults to the pipe id. Pin it explicitly to decouple feed identity from pipe naming, since with the default a pipe rename is a breaking change for consumers. |
topicSetup | No | 'validate' (default) fails fast at start if a topic is missing. 'create' creates missing topics (dev convenience; needs admin IAM). 'none' skips topic administration entirely. |