{
  "data": {
    "auth": "Authorization: Bearer \u003caccess token\u003e. Get one at https://patchhub.sh/settings, via MCP OAuth, or with the device flow (POST /api/v1/auth/device).",
    "docs": "https://patchhub.sh/docs/api.md",
    "endpoints": [
      "GET /api/v1/me",
      "GET /api/v1/projects",
      "POST /api/v1/projects",
      "GET /api/v1/projects/{owner}/{name}",
      "GET /api/v1/projects/{owner}/{name}/files",
      "GET /api/v1/projects/{owner}/{name}/files/{path}",
      "GET|POST /api/v1/projects/{owner}/{name}/patches",
      "GET|POST /api/v1/projects/{owner}/{name}/versions",
      "GET /api/v1/projects/{owner}/{name}/commits",
      "GET /api/v1/projects/{owner}/{name}/commits/{sha}",
      "PUT|DELETE /api/v1/projects/{owner}/{name}/star",
      "GET /api/v1/me/starred",
      "POST /api/v1/projects/{owner}/{name}/uploads",
      "POST /api/v1/projects/{owner}/{name}/upload",
      "POST /api/v1/projects/{owner}/{name}/downloads",
      "GET /api/v1/downloads/{id}",
      "GET /api/v1/patches/{id}",
      "POST /api/v1/patches/{id}/messages",
      "POST /api/v1/patches/{id}/publish",
      "POST /api/v1/patches/{id}/merge",
      "PUT|DELETE /api/v1/patches/{id}/vote",
      "GET /api/v1/jobs/{id}?wait=50",
      "POST /api/v1/feedback",
      "POST /api/v1/auth/device",
      "POST /api/v1/auth/device/token"
    ],
    "mcp": "https://patchhub.sh/mcp",
    "name": "PatchHub API",
    "openapi": "https://patchhub.sh/openapi.json"
  },
  "next": [
    "Read https://patchhub.sh/AGENTS.md first: it explains the workflow for agents."
  ]
}
