# Vertical manifest v1 — `kind` selects the runtime in src/extract/vertical/.
version: 1
order: 7
name: pypi
# api-json: one JSON HTTP request → extract ($.paths, {{captures}}, |transforms).
kind: api-json
description: PyPI package metadata, version, and project URLs.
urlPatterns:
  - https://pypi.org/project/:project
  - https://pypi.org/project/:project/:version
# Runtime requirements for the scrape host.
requirements:
  requiresBrowser: false
  requiresLLM: false
  requiresCloud: false
# Declared output facets (discovery / tooling).
capabilities:
  - package_metadata
  - version
  - project_urls
source: builtin
# Match-time defaults, query captures, and URL exclusions.
matchOptions:
  defaults:
    version: latest
# HTTP request (api-json / api-xml / text-extract). {{captures}} interpolate into urlTemplate.
request:
  # version=latest (no :version in URL) → /json; pinned version → /<version>/json.
  urlTemplate: https://pypi.org/pypi/{{project|encodeURIComponent}}/{{version|encodeURIComponent|switch:latest=json,*=$value/json}}
# Output projection: api-json uses $.paths; aggregate/chain/workflow use @.scope and |transforms.
extract:
  name: $.info.name
  version: $.info.version
  summary: $.info.summary
  homepage: $.info.home_page
  license: $.info.license
  projectUrls: $.info.project_urls
