openapi: 3.0.3
info:
  title: Conway Web Toolkit API
  version: 2.0.0
  description: >-
    Web content extraction, metadata, and link tools. Pay-per-request via x402
    (USDC on Base) or use the free tier (10 req/day).
servers:
  - url: http://localhost:8080
    description: Production
paths:
  /health:
    get:
      summary: Health check
      responses:
        '200':
          description: OK
  /v1/metadata:
    get:
      summary: Extract OG/meta tags from URL
      parameters:
        - name: url
          in: query
          required: true
          schema:
            type: string
        - name: free
          in: query
          schema:
            type: string
            enum:
              - '1'
      responses:
        '200':
          description: Metadata
        '402':
          description: Payment required
  /v1/extract:
    post:
      summary: Extract clean article text from URL
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                url:
                  type: string
              required:
                - url
      responses:
        '200':
          description: Article content
        '402':
          description: Payment required
  /v1/og:
    post:
      summary: Extract all OpenGraph + Twitter Card data
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                url:
                  type: string
              required:
                - url
      responses:
        '200':
          description: OG data
        '402':
          description: Payment required
  /v1/links:
    post:
      summary: Extract all hyperlinks from a page
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                url:
                  type: string
              required:
                - url
      responses:
        '200':
          description: Link list
        '402':
          description: Payment required
