openapi: 3.1.0 info: title: TenantAtlas Public Website IA Contract version: 0.1.0 summary: Canonical route and navigation contract for the initial `apps/website` core pages. description: >- This contract defines the required public HTML routes, navigation limits, optional-surface publication rules, and compatibility-path expectations for Spec 215. The feature does not add backend APIs; the contract is about the public website route and discoverability model. servers: - url: http://localhost:{port} description: Local Astro development or preview server variables: port: default: "4321" tags: - name: Core Public Pages description: Canonical public HTML routes required by the initial website IA - name: Secondary Public Pages description: Retained supporting routes that remain published without becoming part of the initial core IA - name: Compatibility Routes description: Temporary or secondary routes that preserve continuity during IA cleanup x-information-architecture: scope: apps/website requiredCoreRoutes: - / - /product - /trust - /changelog - /contact - /privacy - /imprint optionalRoutesWhenSubstantive: - /resources secondaryRoutes: - /legal - /terms - /solutions - /integrations deferredRoutes: - /pricing - /docs - /solutions/* - /customers - /compare - /careers - /status primaryNavigation: maxInformationalItems: 5 required: - /product - /trust - /changelog - /contact optionalWhenSubstantive: - /resources forbiddenUntilMature: - /pricing - /docs primaryCta: canonicalRoute: /contact allowedLabels: - Request demo - Contact - Request a working session footerGroups: Product: - /product - /changelog TrustLegal: - /trust - /privacy - /imprint - /terms Contact: - /contact Content: - /resources publicationRules: trustTopLevelVisible: true brandRoutesHome: true placeholderRoutesForbidden: true unpublishedCollectionsRemainHidden: - articles buyerOutcomeExplanationRequiredOn: - / - /product compatibility: legacyCanonicalPairs: - legacy: /security-trust canonical: /trust strategy: redirect paths: /: get: tags: [Core Public Pages] operationId: getHomePage summary: Home page description: Entry surface that frames the product, routes visitors toward Product and Trust, and exposes the primary next step. responses: "200": description: Home page HTML content: text/html: schema: $ref: "#/components/schemas/HtmlDocument" /product: get: tags: [Core Public Pages] operationId: getProductPage summary: Product page description: Canonical product-understanding surface for capabilities, positioning, and buyer outcomes. responses: "200": description: Product page HTML content: text/html: schema: $ref: "#/components/schemas/HtmlDocument" /trust: get: tags: [Core Public Pages] operationId: getTrustPage summary: Trust page description: Canonical trust surface for security posture, isolation, operational discipline, and bounded public claims. responses: "200": description: Trust page HTML content: text/html: schema: $ref: "#/components/schemas/HtmlDocument" /changelog: get: tags: [Core Public Pages] operationId: getChangelogPage summary: Changelog page description: Dated product-progress surface that shows visible public development without acting as a blog substitute. responses: "200": description: Changelog page HTML content: text/html: schema: $ref: "#/components/schemas/HtmlDocument" /contact: get: tags: [Core Public Pages] operationId: getContactPage summary: Contact page description: Primary public conversion surface for the next evaluation step. Any later demo route is secondary unless a future spec changes the primary conversion path. responses: "200": description: Contact page HTML content: text/html: schema: $ref: "#/components/schemas/HtmlDocument" /legal: get: tags: [Secondary Public Pages] operationId: getLegalIndexPage summary: Secondary legal index page description: Supporting legal overview that may remain published without being part of the required initial core. responses: "200": description: Legal index page HTML content: text/html: schema: $ref: "#/components/schemas/HtmlDocument" /privacy: get: tags: [Core Public Pages] operationId: getPrivacyPage summary: Privacy page description: Canonical privacy disclosure required by the public legal baseline. responses: "200": description: Privacy page HTML content: text/html: schema: $ref: "#/components/schemas/HtmlDocument" /imprint: get: tags: [Core Public Pages] operationId: getImprintPage summary: Imprint page description: Canonical public legal notice required by the initial website legal baseline. responses: "200": description: Imprint page HTML content: text/html: schema: $ref: "#/components/schemas/HtmlDocument" /terms: get: tags: [Secondary Public Pages] operationId: getTermsPage summary: Secondary terms page description: Supporting legal disclosure that may remain published without becoming part of the required initial core. responses: "200": description: Terms page HTML content: text/html: schema: $ref: "#/components/schemas/HtmlDocument" /solutions: get: tags: [Secondary Public Pages] operationId: getSolutionsSupportPage summary: Secondary solutions support page description: Supporting outcome or audience-fit page that may remain published without top-level core prominence. responses: "200": description: Solutions page HTML content: text/html: schema: $ref: "#/components/schemas/HtmlDocument" /integrations: get: tags: [Secondary Public Pages] operationId: getIntegrationsSupportPage summary: Secondary integrations support page description: Supporting ecosystem-fit page that may remain published without top-level core prominence. responses: "200": description: Integrations page HTML content: text/html: schema: $ref: "#/components/schemas/HtmlDocument" /security-trust: get: tags: [Compatibility Routes] operationId: redirectLegacySecurityTrust summary: Legacy compatibility path for Trust description: Temporary compatibility route. The canonical public trust path is `/trust`. responses: "308": description: Permanent redirect to `/trust` headers: Location: description: Canonical Trust route schema: type: string const: /trust components: schemas: HtmlDocument: type: string description: Server-rendered static HTML document