openapi: 3.1.0
info:
  title: TenantAtlas Homepage Surface Contract
  version: 0.1.0
  summary: Structural contract for the `apps/website` homepage in Spec 217.
  description: >-
    This contract defines the public HTML routes that participate in the
    homepage journey for Spec 217. The homepage remains a static Astro surface
    and must route visitors into Product, Trust, Changelog, and Contact while
    satisfying the required homepage section model.
servers:
  - url: http://localhost:{port}
    description: Local Astro development or preview server
    variables:
      port:
        default: '4321'
tags:
  - name: Homepage Journey
    description: Public HTML routes used by the homepage structure contract
paths:
  /:
    get:
      tags: [Homepage Journey]
      operationId: getHomepage
      summary: Homepage
      description: >-
        Product-near homepage that positions the product, explains outcomes,
        groups the product model, shows bounded trust and dated progress
        signals, and ends in one clear next-step CTA.
      x-tenantatlas-homepage-structure:
        requiredBlocks:
          - header
          - hero
          - outcome
          - capability
          - trust
          - progress
          - cta
          - footer
        orderedNarrative:
          - hero
          - outcome
          - capability
          - trust
          - progress
          - cta
        primaryCtaTargets:
          - /contact
          - /demo
        secondaryCtaTargets:
          - /product
          - /trust
          - /changelog
        onwardRoutes:
          - /product
          - /trust
          - /changelog
          - /contact
        forbiddenPatterns:
          - template-first-saas
          - abstract-only-homepage
          - feature-wall
          - fake-trust
          - multi-primary-cta
      responses:
        '200':
          description: Homepage HTML
          content:
            text/html:
              schema:
                $ref: '#/components/schemas/HtmlDocument'
  /product:
    get:
      tags: [Homepage Journey]
      operationId: getHomepageProductTarget
      summary: Product target route
      description: Deeper product-model route linked from homepage hero or capability sections.
      responses:
        '200':
          description: Product page HTML
          content:
            text/html:
              schema:
                $ref: '#/components/schemas/HtmlDocument'
  /trust:
    get:
      tags: [Homepage Journey]
      operationId: getHomepageTrustTarget
      summary: Trust target route
      description: Bounded trust and credibility route linked from homepage trust cues and CTA paths.
      responses:
        '200':
          description: Trust page HTML
          content:
            text/html:
              schema:
                $ref: '#/components/schemas/HtmlDocument'
  /changelog:
    get:
      tags: [Homepage Journey]
      operationId: getHomepageChangelogTarget
      summary: Changelog target route
      description: Dated progress route linked from the homepage progress section.
      responses:
        '200':
          description: Changelog page HTML
          content:
            text/html:
              schema:
                $ref: '#/components/schemas/HtmlDocument'
  /contact:
    get:
      tags: [Homepage Journey]
      operationId: getHomepageContactTarget
      summary: Contact target route
      description: Primary conversion route used by the homepage until a distinct public `/demo` route exists.
      responses:
        '200':
          description: Contact page HTML
          content:
            text/html:
              schema:
                $ref: '#/components/schemas/HtmlDocument'
components:
  schemas:
    HtmlDocument:
      type: string
      description: Server-rendered static HTML document