Skip to content

What a `web` hook receives

Headers: X-Pando-Event (the event), X-Pando-Delivery (the delivery id), X-Pando-Signature-256: sha256=<hex> (HMAC-SHA256 of the raw body with the hook's secret; GitHub's scheme under another name).

Deliveries leave as soon as the change is recorded (no queue): at least once and not in order, like GitHub's. The body's seq is the event stream's sequence number: drop a seq you have seen, and sort by it. A try that does not get a 2xx within 10 seconds is retried after 10 s, 1 min, 5 min and 30 min (5 tries over about 36 minutes); then the delivery is dead until an owner redelivers it or replays the hook. Delivery records are kept for the latest 1,000 per hook, with each one's last 10 tries.

POST
hookDeliverywebhook

Authorisation

  • credentialoptionalHTTP
  • sessionoptionalAPI key in cookie

Request bodyJSON

  • eventpushorbranch.openedormergedortagrequired

    branch.opened: the first push of a branch. push: any push through the door that moves or deletes a branch. merged: a Pando merge landed a branch; a buildkite hook builds main's merge commit (merge_commit) on main (main_branch). tag: a tag pushed, moved or deleted (or made by publishing a release): tag is its name, head its commit (zeros when deleted).

  • delivery_idstringrequired
  • occurred_atstringrequired
    format: date-time
  • monorepostringrequired

    owner/name when the delivery was made.

  • monorepo_idstringrequired

    The monorepo's permanent id: a stable key across renames.

  • repostringrequired
  • refstringrequired

    refs/heads/<branch>

  • clone_urlstringrequired

    The git door URL. Clone it with read_token.

  • branchoptionalstring
  • headoptionalstring

    The new head; all zeros when the branch was deleted.

  • beforeoptionalstring

    The old head; all zeros for a new branch.

  • baseoptionalstring | null

    The merge base with the default branch.

  • titleoptionalstring | null
  • descriptionoptionalstring | null
  • authoroptionalstring | null

    The branch's author (a user).

  • pusheroptionalstring | null

    The user who pushed; for merged, who merged. Null only when Pando found a push in Artifacts' refs whose pusher it never learned (its record and its keep both failed).

  • seqoptionalinteger | null

    The event stream's seq for this change: drop repeats, sort by it.

  • merge_commitoptionalstring

    Only for merged.

  • diff_urloptionalstring
  • read_tokenoptionalstring

    A read-only token for this one repo, valid 30 minutes, minted for this delivery. Use it as Authorization: Bearer <read_token> against clone_url.

  • read_token_expires_atoptionalstring
    format: date-time
  • status_urloptionalstring

    POST a commit status here for head, with status_token or a member's credential.

  • status_tokenoptionalstring

    Posts statuses for head in this repo for 24 hours, stamped with the hook's app (see createStatus). Absent when the Worker secret PANDO_STATUS_SECRET is not set or the branch was deleted.

  • status_token_expires_atoptionalstring
    format: date-time

Returns

200

Any 2xx counts as delivered.

Navigation

Type to search…

↑↓ navigate↵ selectEsc close