crewship routine webhooks
Webhook commands are nested underroutine (also available through the
pipeline alias):
event input. Every webhook has an HMAC signing secret (generated when you
do not supply one) and every delivery must be signed. Which header carries
the signature, and what the public URL looks like, is the webhook’s
ingress profile, chosen once at create:
Subcommands
The full reference for every subcommand — flag tables, output columns and
the receipts pages — is in
crewship routine webhooks.
list
--slug filters locally to webhooks targeting that routine. --json is a
deprecated alias for --format json. Machine output redacts the token and
does not include the signing secret; use url when the public URL is needed.
create
The default human response prints the webhook ID, public URL (with the
/github-pull-request suffix for the github profile), and rate limit, then
the signing secret once; save it immediately. With --format json|yaml|ndjson,
the create response includes the full API row (ingress_profile included) and
public_url, including the secret returned by the server.
update
--name, --slug, --rate-limit, --inputs-template, --enabled
/ --enabled=false, --pin-version, --unpin, --rotate-secret. At least
one is required. The URL never changes; the profile cannot be changed (the
server answers 400) — create a new webhook for a different sender format.
url and delete
url accepts only the exact webhook ID and has one flag, --base-url, which
overrides the server URL; it prints <base-url>/api/v1/webhooks/<token> for a
crewship webhook and <base-url>/api/v1/webhooks/<token>/github-pull-request
for a github one. It only works while the server still returns the token —
tokens are hashed at rest and shown once, at create. delete accepts --yes
to skip its interactive confirmation prompt. Both commands require
authentication and a workspace.
fire
Prints
Accepted (202) with the run and receipt ids, Already received (202)
for a redelivery (the original run), or Ignored (200) with the reason. Any
other status is the server’s error and a non-zero exit — 401 wrong secret,
404 unknown token or wrong profile, 409 delivery id reused with a
different body, 413 too large, 429/503 retry. The secret and token are
never echoed.
receipts
receipts list [--webhook <id>] [--source-id <id>] [--after <cursor>] and
receipts get <receipt_id> read the receipts deliveries leave behind; see
webhooks receipts list.
All webhook commands honor the global -f/--format where the command emits a
machine-readable response; list additionally supports table|json|yaml|ndjson
and --json.