Implements website feature branch `410-public-docs-ia`. Target branch: `website-dev`. Validation: - `corepack pnpm --filter @tenantatlas/website build` - Playwright smoke coverage for public routes and docs interactions - Static claim scans for `apps/website/src`, `apps/website/public`, and `apps/website/dist` Follow-up integration path after merge: `website-dev` -> `dev`. Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #412
379 lines
11 KiB
YAML
379 lines
11 KiB
YAML
openapi: 3.1.0
|
|
info:
|
|
title: Tenantial Public Docs Routes
|
|
version: 0.1.0
|
|
description: >
|
|
Static public website route contract for Spec 410. These routes return HTML
|
|
pages only and do not expose platform runtime APIs, authenticated docs,
|
|
customer portals, CMS workflows, provider runtime state, legal downloads,
|
|
or support-ticket behavior.
|
|
servers:
|
|
- url: http://127.0.0.1:4321
|
|
description: Local website preview using WEBSITE_PORT default
|
|
paths:
|
|
/docs/:
|
|
get:
|
|
summary: German docs landing page
|
|
operationId: getGermanDocsLandingPage
|
|
tags:
|
|
- Public Website
|
|
- Docs
|
|
responses:
|
|
"200":
|
|
description: Static HTML docs landing page
|
|
content:
|
|
text/html:
|
|
schema:
|
|
type: string
|
|
examples:
|
|
page:
|
|
summary: Required visible content
|
|
value: "Tenantial Dokumentation fuer Evaluation, Betrieb und Governance. Einstieg in Provider, Berechtigungen, Evidence, Drift, Recovery, Review Packs und bekannte Grenzen."
|
|
"404":
|
|
description: Route not configured
|
|
x-content-requirements:
|
|
locale: de
|
|
mustInclude:
|
|
- Hero framing for documentation, evaluation, operations, and governance
|
|
- Twelve required docs category links
|
|
- Real links only
|
|
- Related handoffs to verified public routes where implementation ships them
|
|
mustNotInclude:
|
|
- href="#"
|
|
- repo-real foundation
|
|
- productization gap
|
|
- capability registry
|
|
- implementation truth
|
|
- DSGVO-konform
|
|
- ISO-zertifiziert
|
|
- NIS2-konform
|
|
- real-time drift
|
|
- automatic remediation
|
|
- automatic restore
|
|
- one-click restore
|
|
- Google supported
|
|
- AWS supported
|
|
/en/docs/:
|
|
get:
|
|
summary: English docs landing page
|
|
operationId: getEnglishDocsLandingPage
|
|
tags:
|
|
- Public Website
|
|
- Docs
|
|
responses:
|
|
"200":
|
|
description: Static HTML docs landing page
|
|
content:
|
|
text/html:
|
|
schema:
|
|
type: string
|
|
examples:
|
|
page:
|
|
summary: Required visible content
|
|
value: "Tenantial documentation for evaluation, operations, and governance. Start with provider access, evidence, drift, recovery context, review packs, and known limitations."
|
|
"404":
|
|
description: Route not configured
|
|
x-content-requirements:
|
|
locale: en
|
|
mustInclude:
|
|
- Hero framing for documentation, evaluation, operations, and governance
|
|
- Twelve required docs category links
|
|
- Real links only
|
|
- Related handoffs to verified public routes where implementation ships them
|
|
mustNotInclude:
|
|
- href="#"
|
|
- repo-real foundation
|
|
- productization gap
|
|
- capability registry
|
|
- implementation truth
|
|
- GDPR compliant
|
|
- ISO certified
|
|
- NIS2 compliant
|
|
- real-time drift
|
|
- automatic remediation
|
|
- automatic restore
|
|
- one-click restore
|
|
- Google supported
|
|
- AWS supported
|
|
/docs/{topic}/:
|
|
get:
|
|
summary: German docs topic page
|
|
operationId: getGermanDocsTopicPage
|
|
tags:
|
|
- Public Website
|
|
- Docs
|
|
parameters:
|
|
- in: path
|
|
name: topic
|
|
required: true
|
|
schema:
|
|
$ref: '#/components/schemas/DocsTopicSlug'
|
|
responses:
|
|
"200":
|
|
description: Static HTML docs topic page
|
|
content:
|
|
text/html:
|
|
schema:
|
|
type: string
|
|
"404":
|
|
description: Topic route not configured
|
|
x-content-requirements:
|
|
locale: de
|
|
pageShape:
|
|
- Title
|
|
- Intro paragraph
|
|
- What this page covers
|
|
- 3 to 6 ordered sections
|
|
- Related links
|
|
mustNotInclude:
|
|
- href="#"
|
|
- repo-real foundation
|
|
- productization gap
|
|
- capability registry
|
|
- implementation truth
|
|
- DSGVO-konform
|
|
- ISO-zertifiziert
|
|
- NIS2-konform
|
|
- in Deutschland gehostet
|
|
- keine Kundendaten
|
|
- keine personenbezogenen Daten
|
|
- Google supported
|
|
- AWS supported
|
|
- multi-cloud supported
|
|
- real-time drift
|
|
- automatic remediation
|
|
- automatic restore
|
|
- one-click restore
|
|
- immutable backups
|
|
- gerichtsfeste Nachweise
|
|
- guarantees audit success
|
|
/en/docs/{topic}/:
|
|
get:
|
|
summary: English docs topic page
|
|
operationId: getEnglishDocsTopicPage
|
|
tags:
|
|
- Public Website
|
|
- Docs
|
|
parameters:
|
|
- in: path
|
|
name: topic
|
|
required: true
|
|
schema:
|
|
$ref: '#/components/schemas/DocsTopicSlug'
|
|
responses:
|
|
"200":
|
|
description: Static HTML docs topic page
|
|
content:
|
|
text/html:
|
|
schema:
|
|
type: string
|
|
"404":
|
|
description: Topic route not configured
|
|
x-content-requirements:
|
|
locale: en
|
|
pageShape:
|
|
- Title
|
|
- Intro paragraph
|
|
- What this page covers
|
|
- 3 to 6 ordered sections
|
|
- Related links
|
|
mustNotInclude:
|
|
- href="#"
|
|
- repo-real foundation
|
|
- productization gap
|
|
- capability registry
|
|
- implementation truth
|
|
- GDPR compliant
|
|
- ISO certified
|
|
- NIS2 compliant
|
|
- hosted in Germany
|
|
- no customer data stored
|
|
- no personal data stored
|
|
- Google supported
|
|
- AWS supported
|
|
- multi-cloud supported
|
|
- real-time drift
|
|
- automatic remediation
|
|
- automatic restore
|
|
- one-click restore
|
|
- immutable backups
|
|
- court-proof evidence
|
|
- guarantees audit success
|
|
/welcome-to-docs/:
|
|
get:
|
|
summary: Legacy German docs landing alias
|
|
operationId: getLegacyGermanDocsLandingAlias
|
|
tags:
|
|
- Public Website
|
|
- Docs
|
|
- Legacy Alias
|
|
responses:
|
|
"301":
|
|
description: Permanent redirect or equivalent alias to `/docs/`
|
|
"200":
|
|
description: Acceptable only if implementation uses an equivalent alias and the rendered content matches `/docs/`
|
|
/en/welcome-to-docs/:
|
|
get:
|
|
summary: Legacy English docs landing alias
|
|
operationId: getLegacyEnglishDocsLandingAlias
|
|
tags:
|
|
- Public Website
|
|
- Docs
|
|
- Legacy Alias
|
|
responses:
|
|
"301":
|
|
description: Permanent redirect or equivalent alias to `/en/docs/`
|
|
"200":
|
|
description: Acceptable only if implementation uses an equivalent alias and the rendered content matches `/en/docs/`
|
|
/guides/intro/:
|
|
get:
|
|
summary: Legacy German intro docs alias
|
|
operationId: getLegacyGermanIntroDocsAlias
|
|
tags:
|
|
- Public Website
|
|
- Docs
|
|
- Legacy Alias
|
|
responses:
|
|
"301":
|
|
description: Permanent redirect or equivalent alias to `/docs/getting-started/`
|
|
/guides/getting-started/:
|
|
get:
|
|
summary: Legacy German getting-started docs alias
|
|
operationId: getLegacyGermanGettingStartedDocsAlias
|
|
tags:
|
|
- Public Website
|
|
- Docs
|
|
- Legacy Alias
|
|
responses:
|
|
"301":
|
|
description: Permanent redirect or equivalent alias to `/docs/getting-started/`
|
|
/guides/first-project-checklist/:
|
|
get:
|
|
summary: Legacy German evaluation checklist alias
|
|
operationId: getLegacyGermanEvaluationChecklistAlias
|
|
tags:
|
|
- Public Website
|
|
- Docs
|
|
- Legacy Alias
|
|
responses:
|
|
"301":
|
|
description: Permanent redirect or equivalent alias to `/docs/evaluation-pilot/`
|
|
/platform/evidence-review/:
|
|
get:
|
|
summary: Legacy German evidence review docs alias
|
|
operationId: getLegacyGermanEvidenceReviewAlias
|
|
tags:
|
|
- Public Website
|
|
- Docs
|
|
- Legacy Alias
|
|
responses:
|
|
"301":
|
|
description: Permanent redirect or equivalent alias to `/docs/policy-evidence/`
|
|
/en/guides/intro/:
|
|
get:
|
|
summary: Legacy English intro docs alias
|
|
operationId: getLegacyEnglishIntroDocsAlias
|
|
tags:
|
|
- Public Website
|
|
- Docs
|
|
- Legacy Alias
|
|
responses:
|
|
"301":
|
|
description: Permanent redirect or equivalent alias to `/en/docs/getting-started/`
|
|
/en/guides/getting-started/:
|
|
get:
|
|
summary: Legacy English getting-started docs alias
|
|
operationId: getLegacyEnglishGettingStartedDocsAlias
|
|
tags:
|
|
- Public Website
|
|
- Docs
|
|
- Legacy Alias
|
|
responses:
|
|
"301":
|
|
description: Permanent redirect or equivalent alias to `/en/docs/getting-started/`
|
|
/en/guides/first-project-checklist/:
|
|
get:
|
|
summary: Legacy English evaluation checklist alias
|
|
operationId: getLegacyEnglishEvaluationChecklistAlias
|
|
tags:
|
|
- Public Website
|
|
- Docs
|
|
- Legacy Alias
|
|
responses:
|
|
"301":
|
|
description: Permanent redirect or equivalent alias to `/en/docs/evaluation-pilot/`
|
|
/en/platform/evidence-review/:
|
|
get:
|
|
summary: Legacy English evidence review docs alias
|
|
operationId: getLegacyEnglishEvidenceReviewAlias
|
|
tags:
|
|
- Public Website
|
|
- Docs
|
|
- Legacy Alias
|
|
responses:
|
|
"301":
|
|
description: Permanent redirect or equivalent alias to `/en/docs/policy-evidence/`
|
|
components:
|
|
schemas:
|
|
DocsTopicSlug:
|
|
type: string
|
|
enum:
|
|
- getting-started
|
|
- microsoft-365-provider
|
|
- permissions-data-access
|
|
- data-processing-trust
|
|
- policy-evidence
|
|
- drift-detection
|
|
- backups-versioning-recovery
|
|
- findings-exceptions-accepted-risk
|
|
- review-packs-decisions
|
|
- evaluation-pilot
|
|
- known-limitations
|
|
- faq
|
|
DocsTopicPage:
|
|
type: object
|
|
required:
|
|
- slug
|
|
- title
|
|
- intro
|
|
- sections
|
|
properties:
|
|
slug:
|
|
$ref: '#/components/schemas/DocsTopicSlug'
|
|
title:
|
|
type: string
|
|
intro:
|
|
type: string
|
|
whatThisPageCovers:
|
|
type: string
|
|
sections:
|
|
type: array
|
|
minItems: 3
|
|
maxItems: 6
|
|
items:
|
|
$ref: '#/components/schemas/DocsSection'
|
|
relatedLinks:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RelatedLink'
|
|
DocsSection:
|
|
type: object
|
|
required:
|
|
- heading
|
|
- content
|
|
properties:
|
|
heading:
|
|
type: string
|
|
content:
|
|
type: string
|
|
RelatedLink:
|
|
type: object
|
|
required:
|
|
- label
|
|
- href
|
|
properties:
|
|
label:
|
|
type: string
|
|
href:
|
|
type: string
|
|
pattern: ^/(|en/).+ |