TenantAtlas/specs/215-website-core-pages/contracts/public-site-ia.openapi.yaml
Ahmed Darrazi 27d520b4aa
Some checks failed
PR Fast Feedback / fast-feedback (pull_request) Failing after 1m10s
feat: implement website core pages IA
2026-04-19 12:16:45 +02:00

257 lines
7.7 KiB
YAML

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