PSA/ee/docs/plans/2025-09-18-openapi-comprehensive-documentation-plan.md
Hermes 284313f908
Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Initial import of AlgaPSA codebase from PSA server
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz

Source: /opt/alga-psa on psa.joliet.tech
2026-06-22 16:12:17 -05:00

130 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# OpenAPI Comprehensive Documentation Plan
## 1. Objectives
- Publish an authoritative OpenAPI 3.1 specification that covers every CE/EE REST endpoint.
- Make spec updates part of the normal development workflow (automated generation + CI guardrails).
- Support downstream use cases: SDK generation, external docs, partner onboarding, contract testing.
## 2. Current State
- APIs live under `server/src/app/api/**` with controllers in `server/src/lib/api/controllers`.
- Zod schemas exist in `server/src/lib/api/schemas`, but some controllers hand-roll validation.
- A minimal generator (`sdk/scripts/generate-openapi.ts`) produces service-category endpoints only.
- No centralized registry of routes or metadata; spec isnt auto-generated in CI.
## 3. Phased Rollout Plan
### Phase 0 Alignment & Discovery (Week 01)
**Goals**
- Confirm scope (CE + EE) and stakeholder expectations.
- Inventory current routes, schemas, and existing doc consumers.
**Tasks**
- [ ] Export route inventory from `server/src/app/api/**`, capturing path, method, edition, auth mode, owning team, and source controller.
- [ ] Interview/key sync with product, integrations, and partner success to confirm external/internal consumers and their deliverables.
- [ ] Draft and circulate OpenAPI program charter (scope, success metrics, governance/RACI, release cadence) for approval.
**Exit Criteria**
- Signed-off scope document & RACI.
- Backlog created with all missing schemas/metadata items.
### Phase 1 Schema Foundation (Week 12)
**Goals**
- Ensure every endpoint has canonical Zod schemas for inputs/outputs.
**Tasks**
- [ ] Compare route inventory against `server/src/lib/api/schemas/**` and log endpoints lacking request/query/response Zod schemas.
- [ ] Implement missing schemas for legacy controllers, ensuring each controller imports the canonical definitions.
- [ ] Publish shared schema module covering errors, pagination, RBAC payloads, metadata, and update controllers to reference it.
- [ ] Add unit tests validating schema shape (e.g., `zod` parsing fixtures) and integrate into CI.
**Exit Criteria**
- 100% of routes mapped to Zod schemas.
- Shared schema library published and referenced by controllers.
### Phase 2 Route Metadata Registry (Week 23)
**Goals**
- Expose consistent OpenAPI metadata for every route.
**Tasks**
- [ ] Define `ApiRouteSpec` TypeScript interface (path, method, summary, tags, security, schemas, extensions).
- [ ] Create `server/src/lib/api/openapiRegistry.ts` exporting helpers to register components/paths without triggering controller side effects.
- [ ] Update each controller to expose a `registerOpenApi(registry)` function that records paths and attaches Zod schemas.
- [ ] Ensure every route includes `x-edition`, `x-rbac-resource`, `x-tenant-header-required`, and other necessary extensions.
- [ ] Add automated test verifying registry enumeration covers the full route inventory.
**Exit Criteria**
- Registry can enumerate all CE + EE paths with associated schemas.
- Unit test verifies controllers register expected routes.
### Phase 3 Generator & Automation (Week 34)
**Goals**
- Produce authoritative CE/EE specs on demand and in CI.
**Tasks**
- [ ] Refactor `sdk/scripts/generate-openapi.ts` to import the registry, register shared components, and iterate over all route specs.
- [ ] Add CLI options for edition selection, output directory, and version stamp injection; document usage.
- [ ] Update npm scripts (`openapi:generate:ce`, `openapi:generate:ee`) to invoke the generator with appropriate flags.
- [ ] Introduce CI job that runs the generator, compares output against committed files, and fails on divergence.
- [ ] Announce new workflow in engineering release notes / Slack once CI is green.
**Exit Criteria**
- `npm run openapi:generate:ce|ee` outputs complete specs.
- CI job ensures committed spec is current.
### Phase 4 Publication & Developer Experience (Week 46)
**Goals**
- Make the spec discoverable and easy to work with.
**Tasks**
- [ ] Stand up Swagger UI or Redoc endpoint (Next.js route or static export) sourcing the generated YAML spec(s).
- [ ] Update `sdk/README.md`, contributor guide, and onboarding docs with the generation workflow, review checklist, and approval policy.
- [ ] Create and publish `docs/openapi/CHANGELOG.md` tracking spec revisions with owner assignments.
- [ ] Generate example SDK/client artifacts (e.g., TypeScript client, Postman collection) and link them from docs.
- [ ] Update PR template with checklist item referencing OpenAPI spec updates when modifying API endpoints.
**Exit Criteria**
- Public/internal documentation site live with CE/EE specs.
- Contributor checklist adopted in PR template.
### Phase 5 Continuous Verification & Enhancements (Week 6+)
**Goals**
- Keep the spec trustworthy and extend automation.
**Tasks**
- [ ] Implement smoke contract tests (e.g., Vitest + fetch) validating sample endpoints against Zod schemas and run them in CI.
- [ ] Automate changelog entries (script or manual template) whenever the spec changes; enforce via PR checklist.
- [ ] Assess automated SDK generation (e.g., `openapi-generator-cli`) and document recommendation for go-live.
- [ ] Schedule quarterly spec reviews with stakeholder teams to confirm accuracy and capture new requirements.
**Exit Criteria**
- Smoke contract tests passing in CI.
- Changelog process in place with ownership assigned.
## 4. Timeline Snapshot
| Phase | Focus | Target Window |
|-------|-------|---------------|
| 0 | Alignment & discovery | Week 01 |
| 1 | Schema foundation | Week 12 |
| 2 | Metadata registry | Week 23 |
| 3 | Generator & automation | Week 34 |
| 4 | Publication & DX | Week 46 |
| 5 | Continuous verification | Week 6+ |
## 5. Risks & Mitigations
- **Schema gaps / drift**: Some legacy endpoints lack Zod validation → front-load refactor time in Phase 1 and pair with domain owners.
- **Controller import side effects**: Registry must avoid executing business logic during generation → isolate metadata in pure modules, use lazy imports.
- **Spec churn fatigue**: Large diffs overwhelm PR reviewers → maintain spec changelog and auto-generate diff summaries in CI.
- **EE confidentiality**: EE-only routes should stay internal → enforce `x-edition` tagging and restrict public publishing pipeline.
## 6. Open Questions
- Do we introduce formal API versioning alongside the spec rollout?
- Where should HTML documentation live (Next.js vs. dedicated static hosting)?
- Should spec publication trigger automated SDK/regression testing?
- Preferred contract-testing framework (Prism, Dredd, custom harness)?
## 7. Immediate Next Steps
1. Review/approve phased plan with API leadership.
2. Staff owners for Phases 03 (schema lead, tooling lead, doc lead).
3. Kick off Phase 0 discovery (route inventory + stakeholder interviews).
4. Prepare tracking board (Jira/Notion) seeded with Phase 1 tasks.