openapi: 3.1.0
info:
  title: Tonis Bewerbungshilfe – Wissensbasis
  version: "1.0.0"
  description: >
    Read-only API-Beschreibung der öffentlich zugänglichen Inhalte von
    tonis-bewerbungshilfe.com für KI-Crawler und LLM-Plugins. Es gibt
    keine schreibenden Endpunkte und keine Authentifizierung – alle
    Ressourcen sind statisch über HTTPS abrufbar.
  contact:
    name: Anto „Toni“ Matijevic
    email: hello@tonis-bewerbungshilfe.com
    url: https://tonis-bewerbungshilfe.com/kontakt
  license:
    name: Alle Rechte vorbehalten
    url: https://tonis-bewerbungshilfe.com/impressum

servers:
  - url: https://tonis-bewerbungshilfe.com
    description: Produktion

paths:
  /llms.txt:
    get:
      operationId: getLlmsIndex
      summary: LLM-Kurzübersicht (llmstxt.org-Standard)
      description: Kompakte, kategorisierte Linkliste aller wichtigen Seiten für KI-Crawler.
      responses:
        "200":
          description: Markdown-Datei mit Struktur nach llmstxt.org
          content:
            text/markdown:
              schema:
                type: string

  /llms-full.txt:
    get:
      operationId: getLlmsFull
      summary: Vollständige Wissensbasis im Volltext
      description: Alle Pillar-Seiten und veröffentlichten Blogposts inkl. FAQ als Markdown.
      responses:
        "200":
          description: Markdown-Datei (≈ 1,5 MB) mit dem gesamten Content
          content:
            text/markdown:
              schema:
                type: string

  /sitemap.xml:
    get:
      operationId: getSitemap
      summary: XML-Sitemap aller indexierbaren Routen
      responses:
        "200":
          description: sitemap.xml nach sitemaps.org-Schema
          content:
            application/xml:
              schema:
                type: string

  /robots.txt:
    get:
      operationId: getRobots
      summary: Crawler-Regeln inkl. Freigaben für KI-Bots
      responses:
        "200":
          description: robots.txt mit expliziten Allow-Regeln für GPTBot, ClaudeBot, PerplexityBot etc.
          content:
            text/plain:
              schema:
                type: string

  /blog/{slug}:
    get:
      operationId: getBlogPost
      summary: Einzelner Blogpost als HTML
      parameters:
        - in: path
          name: slug
          required: true
          schema:
            type: string
          description: Slug aus /llms.txt oder /sitemap.xml
      responses:
        "200":
          description: HTML-Seite eines Blogposts
          content:
            text/html:
              schema:
                type: string
        "404":
          description: Kein Post mit diesem Slug (oder noch nicht veröffentlicht)

  /bewerbung-schreiben-lassen:
    get:
      operationId: getPillarBewerbung
      summary: Pillar-Seite „Bewerbung schreiben lassen“
      responses:
        "200":
          description: HTML-Seite mit Leistungen, Ablauf, Preisen und FAQ
          content:
            text/html:
              schema:
                type: string
