# Vertical manifest v1 — `kind` selects the runtime in src/extract/vertical/.
version: 1
order: 3
name: github_pr
# api-json: one JSON HTTP request → extract ($.paths, {{captures}}, |transforms).
kind: api-json
description: GitHub pull request details, diff stats, and merge state.
urlPatterns:
  - https://github.com/:owner/:repo/pull/:number
# Runtime requirements for the scrape host.
requirements:
  requiresBrowser: false
  requiresLLM: false
  requiresCloud: false
# Declared output facets (discovery / tooling).
capabilities:
  - pr_metadata
  - diff_stats
  - merge_state
source: builtin
# HTTP request (api-json / api-xml / text-extract). {{captures}} interpolate into urlTemplate.
request:
  urlTemplate: https://api.github.com/repos/{{owner|encodeURIComponent}}/{{repo|encodeURIComponent}}/pulls/{{number|encodeURIComponent}}
# Output projection: api-json uses $.paths; aggregate/chain/workflow use @.scope and |transforms.
extract:
  owner: "{{owner}}"
  repo: "{{repo}}"
  number: $.number
  title: $.title
  state: $.state
  url: $.html_url
  author: $.user.login
  draft: $.draft
  merged: $.merged
  baseRef: $.base.ref
  baseRepo: $.base.repo.full_name
  headRef: $.head.ref
  headRepo: $.head.repo.full_name
  additions: $.additions
  deletions: $.deletions
  changedFiles: $.changed_files
  createdAt: $.created_at
  updatedAt: $.updated_at
  closedAt: $.closed_at
  mergedAt: $.merged_at
