API / handle-origin-pull-request-reviewer-webhooks

API

Handle Origin pull request reviewer webhooks

Subscribe to pull_request.reviewer.added, pull_request.reviewer.removed, and pull_request.reviewer.rerequested. Official payload: OpenAPI PullRequestReviewerWebhookPayload and llms-full.txt → Events.

Origin is in Early Beta and subject to change. Subscribe when you configure the app's webhook events list. Delivery uses the same signed envelope as other Origin webhooks. Reading pending reviewers requires repository:pull_requests:reviews:read.

Events

event.type When it fires
pull_request.reviewer.added A reviewer is requested.
pull_request.reviewer.removed A reviewer request is removed.
pull_request.reviewer.rerequested A reviewer is requested again (for example after they already submitted).

Payload fields

Field Meaning
pullRequest Pull request reference (id, number, repository)
reviewer Typed reviewer: exactly one of reviewer.user or reviewer.group
reviewer.user.id / reviewer.user.email User reviewer public id and email when present
reviewer.group Group reviewer when the request targets a group
createdVia manual or codeowners
createdBy Principal that created the request, when known
createdAt When the review request was created

Sample event.payload (user reviewer via CODEOWNERS):

{
  "pullRequest": {
    "id": "pr_01k2ja2000e0080000000000d4",
    "number": "17",
    "repository": {
      "id": "repo_01k2ja2000e0080000000000q4",
      "name": "rocket",
      "owner": {
        "slug": "acme",
        "id": "ns_01k2ja2000e0080000000000p3",
        "type": "team"
      }
    }
  },
  "reviewer": {
    "user": {
      "id": "user_01k2ja2000e0080000000000c3",
      "email": "jane@acme.dev"
    }
  },
  "createdVia": "codeowners",
  "createdAt": "2026-08-02T14:45:00Z"
}

Receiver tips

  1. Branch on event.type. Match users on reviewer.user.id (user_…); match groups on reviewer.group.id (grp_…).
  2. After any of the three events, refresh the pending set with List Pull Request Requested Reviewers when you need the full outstanding list.
  3. A direct user request clears when that user submits a review; a group request clears when any current member submits. An unsubmitted draft leaves the request pending.
  4. Keep the receiver answering within the 10-second delivery deadline.

Pitfalls

  • Do not read a flat reviewer.kind / reviewer.id pair — use the typed user or group member (breaking change from August 26, 2026).
  • Display names do not resolve on the REST request endpoints; store public ids from these payloads.