Skip to content

Webhook payloads

HMAC is over the raw JSON bytes. Field names below are stable enough to write a receiver against.

{
"id": "uuid",
"name": "my-repo",
"full_name": "demo/my-repo",
"default_branch": "main",
"html_url": "https://amendable.io/r/demo/my-repo",
"clone_url": "https://amendable.io/r/demo/my-repo.git",
"owner": { "id": "user-uuid", "username": "demo" }
}
FieldMeaning
idEvent UUID
typepush, create, or delete
refrefs/heads/main or refs/tags/v1.0.0
ref_namemain / v1.0.0
ref_typebranch, tag, or other
before / after40-char hex. Null SHA is 40 zeros
created / deletedbooleans
commitsCommits introduced by the push (authors, message, parents, timestamp)
head_commitTip commit object, or { "id": "<after>" } if needed
tagTag object on tag refs that are not deletes, else null
repositoryObject above

create is emitted with before all zeros. delete has after all zeros and no useful head_commit.

{
"id": "event-uuid",
"type": "ping",
"zen": "Clone the tip, run your pipeline, report your own status.",
"hook_id": "webhook-uuid",
"repository": null
}

repository is null when the ping is not tied to a specific repo.

See Webhooks. Signature header is hex HMAC-SHA256, not GitHub’s sha256= prefix.