Skip to content

openregs feed

The outbound release feed: subscriptions, webhooks, JSON and RSS.

Tell downstream systems about a release without making them watch git. A publication fans out only the atom changes each subscription’s filter asks for — jurisdiction, regime, topic, entity type — as an HMAC-signed webhook POST retried until it lands, and serves the same entries as a JSON Feed and an RSS feed per filter. Nothing here contacts a regulator: the inbound discovery feeds are openregs ingest.

openregs feed [-h] <command> ...

Run the feed service.

Run the feed service HTTP server.

openregs feed serve [-h] [--host <host>] [--port <port>] [--base-url <url>]
[--store <path>] [--now <timestamp>] [--root <path>]
Option
--host <host>address to bind (default 127.0.0.1)
--port <port>port to bind (default 8787)
--base-url <url>what links in the feeds are written against; defaults to the bound address
--store <path>the subscription database; defaults to state/feed/subscriptions.sqlite
--now <timestamp>the moment to stamp delivery attempts with, instead of the wall clock — the one value in this plane that a commit cannot derive
--root <path>repo root

Register a webhook subscription.

Register one endpoint, the secret its payloads are signed with, and the filter it wants. A dimension left unnamed matches everything.

openregs feed subscribe [-h] --endpoint <url> --secret <secret> [--name <name>] [--id <id>]
[--jurisdiction <term>] [--regime <term>] [--topic <term>]
[--entity-type <term>] [--store <path>] [--now <timestamp>]
[--root <path>]
Option
--endpoint <url>where payloads are POSTed (required)
--secret <secret>the HMAC key payloads are signed with (required)
--name <name>a readable label
--id <id>the subscription id, instead of a minted one
--jurisdiction <term>a jurisdiction to filter on, repeatable (repeatable)
--regime <term>a regime to filter on, repeatable (repeatable)
--topic <term>a topic tag to filter on, repeatable (repeatable)
--entity-type <term>an entity type to filter on, repeatable (repeatable)
--store <path>the subscription database; defaults to state/feed/subscriptions.sqlite
--now <timestamp>the moment to stamp delivery attempts with, instead of the wall clock — the one value in this plane that a commit cannot derive
--root <path>repo root

What is subscribed.

List the registered subscriptions. Secrets are never printed.

openregs feed list [-h] [--store <path>] [--now <timestamp>] [--root <path>]
Option
--store <path>the subscription database; defaults to state/feed/subscriptions.sqlite
--now <timestamp>the moment to stamp delivery attempts with, instead of the wall clock — the one value in this plane that a commit cannot derive
--root <path>repo root

Announce a built release and fan it out.

Read a built release’s diff manifest, record its atom changes as feed entries, and owe one signed payload to every subscription whose filter matches at least one of them. Exits 1 while a delivery is still owed.

openregs feed publish [-h] --regime <regime> --tag <YYYY.MM> [--store <path>]
[--now <timestamp>] [--root <path>]
Option
--regime <regime>the regime (required)
--tag <YYYY.MM>the release tag (required)
--store <path>the subscription database; defaults to state/feed/subscriptions.sqlite
--now <timestamp>the moment to stamp delivery attempts with, instead of the wall clock — the one value in this plane that a commit cannot derive
--root <path>repo root

Retry every delivery now due.

One retry pass. A delivery that failed becomes due again after its backoff; this attempts everything whose backoff has expired.

openregs feed drain [-h] [--store <path>] [--now <timestamp>] [--root <path>]
Option
--store <path>the subscription database; defaults to state/feed/subscriptions.sqlite
--now <timestamp>the moment to stamp delivery attempts with, instead of the wall clock — the one value in this plane that a commit cannot derive
--root <path>repo root

The delivery log.

Every attempt at every delivery, oldest first — retries included.

openregs feed log [-h] [--delivery <id>] [--store <path>] [--now <timestamp>]
[--root <path>]
Option
--delivery <id>only this delivery’s attempts
--store <path>the subscription database; defaults to state/feed/subscriptions.sqlite
--now <timestamp>the moment to stamp delivery attempts with, instead of the wall clock — the one value in this plane that a commit cannot derive
--root <path>repo root

Rendered from openregs/openregs@cbe9615:tooling/openregs/cli/main.py