openapi: 3.1.0
info:
  title: PlatPhorm Capability Catalog
  version: 1.0.0
  description: Static public catalog artifacts for repositories, capabilities, search, graph, and reuse recommendations.
servers:
  - url: https://catalog.platphormnews.com
paths:
  /api/health:
    get:
      summary: Static catalog health
      responses:
        '200':
          description: Catalog health and generation status
  /api/v1/health:
    get:
      summary: Versioned static catalog health
      responses:
        '200':
          description: Catalog health and generation status
  /api/mcp:
    get:
      summary: MCP server metadata and public read-only capability names
      responses:
        '200':
          description: MCP endpoint metadata
    post:
      summary: Public read-only JSON-RPC MCP transport
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: JSON-RPC response
  /catalog/generated/capabilities.json:
    get:
      summary: Global capability index
      responses:
        '200':
          description: Global capability index JSON
  /catalog/generated/repos.json:
    get:
      summary: Repository index
      responses:
        '200':
          description: Repository index JSON
  /catalog/generated/search-index.json:
    get:
      summary: Search index
      responses:
        '200':
          description: Plain JSON search index
  /catalog/generated/best-implementations.json:
    get:
      summary: Best implementation rankings
      responses:
        '200':
          description: Best reusable implementation candidates
  /catalog/generated/vision-tool-selection.json:
    get:
      summary: Vision tool selection
      responses:
        '200':
          description: Browser, PlatPhorm Content, and PlatPhorm Docs mapped to catalog capabilities
  /api/vision/capabilities:
    get:
      summary: Vision capability selection API
      responses:
        '200':
          description: Standard ok/data wrapper around the public vision selection artifact
  /api/vision/evidence-pack:
    get:
      summary: Vision evidence pack API
      responses:
        '200':
          description: Preview-only JSON and Markdown-ready evidence pack generated from catalog state
  /catalog/generated/vision-evidence-pack.json:
    get:
      summary: Static vision evidence pack
      responses:
        '200':
          description: Public read-only evidence pack artifact
  /rss.xml:
    get:
      summary: Capability update feed
      responses:
        '200':
          description: RSS feed of high-signal catalog capabilities
  /api/v1/catalog/census:
    get:
      summary: Catalog census snapshot
      responses:
        '200':
          description: Repository and dependency census generated by GitHub-native collection
        '404':
          description: Census not ready
  /api/v1/catalog/dependencies:
    get:
      summary: Dependency observations
      parameters:
        - in: query
          name: q
          required: false
          schema: { type: string }
        - in: query
          name: limit
          required: false
          schema: { type: integer, minimum: 1, maximum: 500 }
      responses:
        '200':
          description: Dependency observations with repository impact counts
        '404':
          description: Dependencies not available
  /api/v1/catalog/technologies:
    get:
      summary: Technology observations
      parameters:
        - in: query
          name: q
          required: false
          schema: { type: string }
        - in: query
          name: limit
          required: false
          schema: { type: integer, minimum: 1, maximum: 500 }
      responses:
        '200':
          description: Technology observations with evidence sources
        '404':
          description: Technologies not available
  /api/v1/catalog/publications:
    get:
      summary: Publication summaries
      parameters:
        - in: query
          name: status
          required: false
          schema: { type: string }
        - in: query
          name: limit
          required: false
          schema: { type: integer, minimum: 1, maximum: 500 }
      responses:
        '200':
          description: Publication index from local and remote storage
    post:
      summary: Publish catalog evidence payload
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Publication accepted for persistence
        '201':
          description: Publication persisted in configured GitHub destination
  /api/v1/catalog/publications/{filename}:
    get:
      summary: Fetch a publication by filename
      parameters:
        - in: path
          name: filename
          required: true
          schema: { type: string }
      responses:
        '200':
          description: Publication payload
        '404':
          description: Publication not found
  /api/v1/scans:
    get:
      summary: Scan and publication artifact inventory
      responses:
        '200':
          description: Generated scan and publication artifact listing
  /api/v1/route-compliance:
    get:
      summary: Route compliance and protected-action status
      responses:
        '200':
          description: Route implementation status and contract metadata
components:
  securitySchemes:
    PlatPhormApiKey:
      type: apiKey
      in: header
      name: X-PlatPhorm-API-Key
      description: Protected catalog mutations require PLATPHORM_API_KEY or trusted OIDC bearer tokens. Public reads require no auth.
    PlatPhormBearer:
      type: http
      scheme: bearer
      description: "Protected catalog mutations also accept Authorization: Bearer <PLATPHORM_API_KEY or trusted OIDC token>."
