openapi: 3.1.0
info:
  title: Vudira public API
  version: "1.0"
  description: >-
    Read-only machine-readable endpoints of https://vudira.com.
    No authentication, no write operations, 60 requests per minute.
  license:
    name: CC-BY-4.0
    url: https://creativecommons.org/licenses/by/4.0/
  contact:
    name: Vudira team
    email: contact@vudira.com
servers:
  - url: https://vudira.com
paths:
  /knowledge.json:
    get:
      summary: Structured knowledge base
      responses:
        "200":
          description: OK
  /entities.json:
    get:
      summary: Named entities
      responses:
        "200":
          description: OK
  /glossary.json:
    get:
      summary: Domain glossary
      responses:
        "200":
          description: OK
  /taxonomy.json:
    get:
      summary: Content taxonomy
      responses:
        "200":
          description: OK
  /faq.json:
    get:
      summary: Aggregated FAQ
      responses:
        "200":
          description: OK
  /changelog.json:
    get:
      summary: Changelog
      responses:
        "200":
          description: OK
  /releases.json:
    get:
      summary: Releases
      responses:
        "200":
          description: OK
  /status.json:
    get:
      summary: Service status
      responses:
        "200":
          description: OK
  /changes.json:
    get:
      summary: Change feed
      responses:
        "200":
          description: OK
  /history.json:
    get:
      summary: Change history
      responses:
        "200":
          description: OK
  /diff.json:
    get:
      summary: Fact diff
      responses:
        "200":
          description: OK
  /ai-feed.json:
    get:
      summary: AI content feed
      responses:
        "200":
          description: OK
  /ai/summary.json:
    get:
      summary: Organisation summary
      responses:
        "200":
          description: OK
  /ai/facts.json:
    get:
      summary: Atomic facts with confidence
      responses:
        "200":
          description: OK
  /ai/faq.json:
    get:
      summary: FAQ for agents
      responses:
        "200":
          description: OK
  /ai/contact.json:
    get:
      summary: Contact channels
      responses:
        "200":
          description: OK
  /ai/actions.json:
    get:
      summary: Available agent actions
      responses:
        "200":
          description: OK
  /ai/audit.json:
    get:
      summary: Content audit trail
      responses:
        "200":
          description: OK
  /ai/knowledge-graph.json:
    get:
      summary: Entity graph (JSON-LD)
      responses:
        "200":
          description: OK
  /ai/feed.json:
    get:
      summary: JSON Feed of updates
      responses:
        "200":
          description: OK
  /ai/news.json:
    get:
      summary: News in JSON-LD
      responses:
        "200":
          description: OK
  /ai/semantic-toc.json:
    get:
      summary: Semantic table of contents
      responses:
        "200":
          description: OK
  /ai/dataset.json:
    get:
      summary: Dataset descriptor
      responses:
        "200":
          description: OK
  /ai/pricing.json:
    get:
      summary: Pricing declaration
      responses:
        "200":
          description: OK
  /sitemap.xml:
    get:
      summary: XML sitemap
      responses:
        "200":
          description: OK
  /rss.xml:
    get:
      summary: RSS feed
      responses:
        "200":
          description: OK
  /llms.txt:
    get:
      summary: LLM guide
      responses:
        "200":
          description: OK
  /content.md:
    get:
      summary: Markdown mirror
      responses:
        "200":
          description: OK
  /ai/search:
    get:
      summary: Search site content
      parameters:
        - name: q
          in: query
          required: true
          schema: { type: string, maxLength: 120 }
        - name: lang
          in: query
          required: false
          schema: { type: string, enum: [en, sk, cs, de, pl, ru, es, fr, tr] }
      responses:
        "200":
          description: Search results
  /ai/ask:
    get:
      summary: NLWeb ask endpoint (alpha)
      parameters:
        - name: q
          in: query
          required: true
          schema: { type: string, maxLength: 300 }
      responses:
        "200":
          description: Answer with sources
  /{lang}/knowledge.json:
    get:
      summary: Knowledge endpoint for one language
      parameters:
        - name: lang
          in: path
          required: true
          schema: { type: string, enum: [en, sk, cs, de, pl, ru, es, fr, tr] }
      responses:
        "200":
          description: OK
