@wildo-ai/saas-technical-doc 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +34 -0
- package/dist/esm/.builder.pid +9 -0
- package/dist/esm/build/csp-emit.d.ts +9 -0
- package/dist/esm/build/csp-emit.d.ts.map +1 -0
- package/dist/esm/build/csp-emit.js +8 -0
- package/dist/esm/build/csp-emit.js.map +1 -0
- package/dist/esm/build/load-materialized-frontend-providers.d.ts +9 -0
- package/dist/esm/build/load-materialized-frontend-providers.d.ts.map +1 -0
- package/dist/esm/build/load-materialized-frontend-providers.js +9 -0
- package/dist/esm/build/load-materialized-frontend-providers.js.map +1 -0
- package/dist/esm/companion/application-documentation/application-organization-role-documentation.d.ts +66 -0
- package/dist/esm/companion/application-documentation/application-organization-role-documentation.d.ts.map +1 -0
- package/dist/esm/companion/application-documentation/application-organization-role-documentation.js +195 -0
- package/dist/esm/companion/application-documentation/application-organization-role-documentation.js.map +1 -0
- package/dist/esm/companion/application-documentation/application-organization-unit-resource-documentation.d.ts +36 -0
- package/dist/esm/companion/application-documentation/application-organization-unit-resource-documentation.d.ts.map +1 -0
- package/dist/esm/companion/application-documentation/application-organization-unit-resource-documentation.js +71 -0
- package/dist/esm/companion/application-documentation/application-organization-unit-resource-documentation.js.map +1 -0
- package/dist/esm/companion/application-documentation/technical-documentation-engine-content-bundle.d.ts +37 -0
- package/dist/esm/companion/application-documentation/technical-documentation-engine-content-bundle.d.ts.map +1 -0
- package/dist/esm/companion/application-documentation/technical-documentation-engine-content-bundle.js +1865 -0
- package/dist/esm/companion/application-documentation/technical-documentation-engine-content-bundle.js.map +1 -0
- package/dist/esm/companion/application-documentation/technical-documentation-operational-evidence.d.ts +22 -0
- package/dist/esm/companion/application-documentation/technical-documentation-operational-evidence.d.ts.map +1 -0
- package/dist/esm/companion/application-documentation/technical-documentation-operational-evidence.js +31 -0
- package/dist/esm/companion/application-documentation/technical-documentation-operational-evidence.js.map +1 -0
- package/dist/esm/companion/application-documentation/technical-documentation-private-derivation.d.ts +31 -0
- package/dist/esm/companion/application-documentation/technical-documentation-private-derivation.d.ts.map +1 -0
- package/dist/esm/companion/application-documentation/technical-documentation-private-derivation.js +33 -0
- package/dist/esm/companion/application-documentation/technical-documentation-private-derivation.js.map +1 -0
- package/dist/esm/companion/application-documentation/technical-documentation-publication-policy.d.ts +13 -0
- package/dist/esm/companion/application-documentation/technical-documentation-publication-policy.d.ts.map +1 -0
- package/dist/esm/companion/application-documentation/technical-documentation-publication-policy.js +93 -0
- package/dist/esm/companion/application-documentation/technical-documentation-publication-policy.js.map +1 -0
- package/dist/esm/companion/content/application-consumer-documentation-content-loader.d.ts +52 -0
- package/dist/esm/companion/content/application-consumer-documentation-content-loader.d.ts.map +1 -0
- package/dist/esm/companion/content/application-consumer-documentation-content-loader.js +191 -0
- package/dist/esm/companion/content/application-consumer-documentation-content-loader.js.map +1 -0
- package/dist/esm/companion/index.d.ts +39 -0
- package/dist/esm/companion/index.d.ts.map +1 -0
- package/dist/esm/companion/index.js +39 -0
- package/dist/esm/companion/index.js.map +1 -0
- package/dist/esm/companion/openapi-generator.d.ts +94 -0
- package/dist/esm/companion/openapi-generator.d.ts.map +1 -0
- package/dist/esm/companion/openapi-generator.js +1562 -0
- package/dist/esm/companion/openapi-generator.js.map +1 -0
- package/dist/esm/companion/operation-projection.schemas.d.ts +797 -0
- package/dist/esm/companion/operation-projection.schemas.d.ts.map +1 -0
- package/dist/esm/companion/operation-projection.schemas.js +610 -0
- package/dist/esm/companion/operation-projection.schemas.js.map +1 -0
- package/dist/esm/companion/publish-result.types.d.ts +124 -0
- package/dist/esm/companion/publish-result.types.d.ts.map +1 -0
- package/dist/esm/companion/publish-result.types.js +28 -0
- package/dist/esm/companion/publish-result.types.js.map +1 -0
- package/dist/esm/companion/rendering/technical-documentation-authorized-bundle-reader.d.ts +26 -0
- package/dist/esm/companion/rendering/technical-documentation-authorized-bundle-reader.d.ts.map +1 -0
- package/dist/esm/companion/rendering/technical-documentation-authorized-bundle-reader.js +63 -0
- package/dist/esm/companion/rendering/technical-documentation-authorized-bundle-reader.js.map +1 -0
- package/dist/esm/companion/rendering/technical-documentation-build-measurement.d.ts +23 -0
- package/dist/esm/companion/rendering/technical-documentation-build-measurement.d.ts.map +1 -0
- package/dist/esm/companion/rendering/technical-documentation-build-measurement.js +104 -0
- package/dist/esm/companion/rendering/technical-documentation-build-measurement.js.map +1 -0
- package/dist/esm/companion/rendering/technical-documentation-docusaurus-renderer.d.ts +9 -0
- package/dist/esm/companion/rendering/technical-documentation-docusaurus-renderer.d.ts.map +1 -0
- package/dist/esm/companion/rendering/technical-documentation-docusaurus-renderer.js +421 -0
- package/dist/esm/companion/rendering/technical-documentation-docusaurus-renderer.js.map +1 -0
- package/dist/esm/companion/rendering/technical-documentation-managed-tree-validator.d.ts +72 -0
- package/dist/esm/companion/rendering/technical-documentation-managed-tree-validator.d.ts.map +1 -0
- package/dist/esm/companion/rendering/technical-documentation-managed-tree-validator.js +204 -0
- package/dist/esm/companion/rendering/technical-documentation-managed-tree-validator.js.map +1 -0
- package/dist/esm/companion/rendering/technical-documentation-markdown-renderer.d.ts +9 -0
- package/dist/esm/companion/rendering/technical-documentation-markdown-renderer.d.ts.map +1 -0
- package/dist/esm/companion/rendering/technical-documentation-markdown-renderer.js +106 -0
- package/dist/esm/companion/rendering/technical-documentation-markdown-renderer.js.map +1 -0
- package/dist/esm/companion/rendering/technical-documentation-mdx-escaping.d.ts +43 -0
- package/dist/esm/companion/rendering/technical-documentation-mdx-escaping.d.ts.map +1 -0
- package/dist/esm/companion/rendering/technical-documentation-mdx-escaping.js +88 -0
- package/dist/esm/companion/rendering/technical-documentation-mdx-escaping.js.map +1 -0
- package/dist/esm/companion/rendering/technical-documentation-openapi-renderer.d.ts +7 -0
- package/dist/esm/companion/rendering/technical-documentation-openapi-renderer.d.ts.map +1 -0
- package/dist/esm/companion/rendering/technical-documentation-openapi-renderer.js +51 -0
- package/dist/esm/companion/rendering/technical-documentation-openapi-renderer.js.map +1 -0
- package/dist/esm/companion/rendering/technical-documentation-render-model.d.ts +45 -0
- package/dist/esm/companion/rendering/technical-documentation-render-model.d.ts.map +1 -0
- package/dist/esm/companion/rendering/technical-documentation-render-model.js +178 -0
- package/dist/esm/companion/rendering/technical-documentation-render-model.js.map +1 -0
- package/dist/esm/companion/rendering/technical-documentation-search-index-renderer.d.ts +3 -0
- package/dist/esm/companion/rendering/technical-documentation-search-index-renderer.d.ts.map +1 -0
- package/dist/esm/companion/rendering/technical-documentation-search-index-renderer.js +49 -0
- package/dist/esm/companion/rendering/technical-documentation-search-index-renderer.js.map +1 -0
- package/dist/esm/companion/spec-to-operation-doc.d.ts +176 -0
- package/dist/esm/companion/spec-to-operation-doc.d.ts.map +1 -0
- package/dist/esm/companion/spec-to-operation-doc.js +326 -0
- package/dist/esm/companion/spec-to-operation-doc.js.map +1 -0
- package/dist/esm/companion/technical-documentation-asset-path.d.ts +16 -0
- package/dist/esm/companion/technical-documentation-asset-path.d.ts.map +1 -0
- package/dist/esm/companion/technical-documentation-asset-path.js +19 -0
- package/dist/esm/companion/technical-documentation-asset-path.js.map +1 -0
- package/dist/esm/companion/technical-documentation-capture-execution-port.d.ts +14 -0
- package/dist/esm/companion/technical-documentation-capture-execution-port.d.ts.map +1 -0
- package/dist/esm/companion/technical-documentation-capture-execution-port.js +1 -0
- package/dist/esm/companion/technical-documentation-capture-execution-port.js.map +1 -0
- package/dist/esm/companion/technical-documentation-diagram-materializer.d.ts +25 -0
- package/dist/esm/companion/technical-documentation-diagram-materializer.d.ts.map +1 -0
- package/dist/esm/companion/technical-documentation-diagram-materializer.js +86 -0
- package/dist/esm/companion/technical-documentation-diagram-materializer.js.map +1 -0
- package/dist/esm/companion/technical-documentation-placeholder-materializer.d.ts +17 -0
- package/dist/esm/companion/technical-documentation-placeholder-materializer.d.ts.map +1 -0
- package/dist/esm/companion/technical-documentation-placeholder-materializer.js +63 -0
- package/dist/esm/companion/technical-documentation-placeholder-materializer.js.map +1 -0
- package/dist/esm/companion/zod-to-openapi.d.ts +67 -0
- package/dist/esm/companion/zod-to-openapi.d.ts.map +1 -0
- package/dist/esm/companion/zod-to-openapi.js +211 -0
- package/dist/esm/companion/zod-to-openapi.js.map +1 -0
- package/dist/esm/companion-exports.d.ts +32 -0
- package/dist/esm/companion-exports.d.ts.map +1 -0
- package/dist/esm/companion-exports.js +32 -0
- package/dist/esm/companion-exports.js.map +1 -0
- package/dist/esm/config/define-tech-doc-config.d.ts +38 -0
- package/dist/esm/config/define-tech-doc-config.d.ts.map +1 -0
- package/dist/esm/config/define-tech-doc-config.js +40 -0
- package/dist/esm/config/define-tech-doc-config.js.map +1 -0
- package/dist/esm/config/index.d.ts +22 -0
- package/dist/esm/config/index.d.ts.map +1 -0
- package/dist/esm/config/index.js +22 -0
- package/dist/esm/config/index.js.map +1 -0
- package/dist/esm/config/wildo-tech-doc-config.schemas.d.ts +204 -0
- package/dist/esm/config/wildo-tech-doc-config.schemas.d.ts.map +1 -0
- package/dist/esm/config/wildo-tech-doc-config.schemas.js +192 -0
- package/dist/esm/config/wildo-tech-doc-config.schemas.js.map +1 -0
- package/dist/esm/content/application-consumer-documentation-content-manifest.schemas.d.ts +82 -0
- package/dist/esm/content/application-consumer-documentation-content-manifest.schemas.d.ts.map +1 -0
- package/dist/esm/content/application-consumer-documentation-content-manifest.schemas.js +114 -0
- package/dist/esm/content/application-consumer-documentation-content-manifest.schemas.js.map +1 -0
- package/dist/esm/content/application-consumer-documentation-content.techdoc.d.ts +420 -0
- package/dist/esm/content/application-consumer-documentation-content.techdoc.d.ts.map +1 -0
- package/dist/esm/content/application-consumer-documentation-content.techdoc.js +9619 -0
- package/dist/esm/content/application-consumer-documentation-content.techdoc.js.map +1 -0
- package/dist/esm/content.exports.d.ts +9 -0
- package/dist/esm/content.exports.d.ts.map +1 -0
- package/dist/esm/content.exports.js +9 -0
- package/dist/esm/content.exports.js.map +1 -0
- package/dist/esm/index.d.ts +26 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +26 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/openapi/api-reference-link-index.d.ts +98 -0
- package/dist/esm/openapi/api-reference-link-index.d.ts.map +1 -0
- package/dist/esm/openapi/api-reference-link-index.js +301 -0
- package/dist/esm/openapi/api-reference-link-index.js.map +1 -0
- package/dist/esm/openapi/api-reference-targets.d.ts +71 -0
- package/dist/esm/openapi/api-reference-targets.d.ts.map +1 -0
- package/dist/esm/openapi/api-reference-targets.js +114 -0
- package/dist/esm/openapi/api-reference-targets.js.map +1 -0
- package/dist/esm/openapi/index.d.ts +20 -0
- package/dist/esm/openapi/index.d.ts.map +1 -0
- package/dist/esm/openapi/index.js +20 -0
- package/dist/esm/openapi/index.js.map +1 -0
- package/dist/esm/openapi/openapi-generation-output.schemas.d.ts +80 -0
- package/dist/esm/openapi/openapi-generation-output.schemas.d.ts.map +1 -0
- package/dist/esm/openapi/openapi-generation-output.schemas.js +76 -0
- package/dist/esm/openapi/openapi-generation-output.schemas.js.map +1 -0
- package/dist/esm/openapi-reference-model.exports.d.ts +10 -0
- package/dist/esm/openapi-reference-model.exports.d.ts.map +1 -0
- package/dist/esm/openapi-reference-model.exports.js +10 -0
- package/dist/esm/openapi-reference-model.exports.js.map +1 -0
- package/dist/esm/runtime/AuthExchangePage.d.ts +84 -0
- package/dist/esm/runtime/AuthExchangePage.d.ts.map +1 -0
- package/dist/esm/runtime/AuthExchangePage.js +188 -0
- package/dist/esm/runtime/AuthExchangePage.js.map +1 -0
- package/dist/esm/runtime/DocsAuthContext.d.ts +119 -0
- package/dist/esm/runtime/DocsAuthContext.d.ts.map +1 -0
- package/dist/esm/runtime/DocsAuthContext.js +171 -0
- package/dist/esm/runtime/DocsAuthContext.js.map +1 -0
- package/dist/esm/runtime/decode-jwt-claims.d.ts +39 -0
- package/dist/esm/runtime/decode-jwt-claims.d.ts.map +1 -0
- package/dist/esm/runtime/decode-jwt-claims.js +86 -0
- package/dist/esm/runtime/decode-jwt-claims.js.map +1 -0
- package/dist/esm/runtime/docs-auth-client.d.ts +193 -0
- package/dist/esm/runtime/docs-auth-client.d.ts.map +1 -0
- package/dist/esm/runtime/docs-auth-client.js +211 -0
- package/dist/esm/runtime/docs-auth-client.js.map +1 -0
- package/dist/esm/runtime/docs-auth-session.schemas.d.ts +77 -0
- package/dist/esm/runtime/docs-auth-session.schemas.d.ts.map +1 -0
- package/dist/esm/runtime/docs-auth-session.schemas.js +50 -0
- package/dist/esm/runtime/docs-auth-session.schemas.js.map +1 -0
- package/dist/esm/runtime/frontend-provider-registry.techdoc.d.ts +17 -0
- package/dist/esm/runtime/frontend-provider-registry.techdoc.d.ts.map +1 -0
- package/dist/esm/runtime/frontend-provider-registry.techdoc.js +23 -0
- package/dist/esm/runtime/frontend-provider-registry.techdoc.js.map +1 -0
- package/dist/esm/runtime/index.d.ts +57 -0
- package/dist/esm/runtime/index.d.ts.map +1 -0
- package/dist/esm/runtime/index.js +76 -0
- package/dist/esm/runtime/index.js.map +1 -0
- package/dist/esm/runtime/openapi-reference-conservation.d.ts +20 -0
- package/dist/esm/runtime/openapi-reference-conservation.d.ts.map +1 -0
- package/dist/esm/runtime/openapi-reference-conservation.js +102 -0
- package/dist/esm/runtime/openapi-reference-conservation.js.map +1 -0
- package/dist/esm/runtime/openapi-reference-model.d.ts +224 -0
- package/dist/esm/runtime/openapi-reference-model.d.ts.map +1 -0
- package/dist/esm/runtime/openapi-reference-model.js +579 -0
- package/dist/esm/runtime/openapi-reference-model.js.map +1 -0
- package/dist/esm/runtime/openapi-reference-view.d.ts +13 -0
- package/dist/esm/runtime/openapi-reference-view.d.ts.map +1 -0
- package/dist/esm/runtime/openapi-reference-view.js +284 -0
- package/dist/esm/runtime/openapi-reference-view.js.map +1 -0
- package/dist/esm/runtime/use-docs-auth-session.d.ts +26 -0
- package/dist/esm/runtime/use-docs-auth-session.d.ts.map +1 -0
- package/dist/esm/runtime/use-docs-auth-session.js +34 -0
- package/dist/esm/runtime/use-docs-auth-session.js.map +1 -0
- package/dist/esm/runtime/use-docs-frontend-provider-registry.d.ts +3 -0
- package/dist/esm/runtime/use-docs-frontend-provider-registry.d.ts.map +1 -0
- package/dist/esm/runtime/use-docs-frontend-provider-registry.js +5 -0
- package/dist/esm/runtime/use-docs-frontend-provider-registry.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/package.json +117 -0
|
@@ -0,0 +1,797 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @wildo-package @wildo-ai/saas-technical-doc/companion (input projection)
|
|
3
|
+
*
|
|
4
|
+
* Input shape consumed by the companion-side OpenAPI generator
|
|
5
|
+
* (saas-technical-doc.md Step 3).
|
|
6
|
+
*
|
|
7
|
+
* Why a dedicated projection (and NOT importing `ResourcesRegistry` from
|
|
8
|
+
* `@wildo-ai/saas-models`):
|
|
9
|
+
*
|
|
10
|
+
* - The full `ResourceConfiguration` carries ~40 internal-only fields
|
|
11
|
+
* (factory metadata, repository wiring, validation hooks, frontend
|
|
12
|
+
* presets, lifecycle bindings, …). The OpenAPI generator does NOT need
|
|
13
|
+
* any of them — it needs ONLY operation-level HTTP shape data
|
|
14
|
+
* (method + path + request/response Zod schemas + role binding +
|
|
15
|
+
* primary scope + authentication-mode flags). Coupling the
|
|
16
|
+
* generator to the full type would (a) drag the entire schema graph
|
|
17
|
+
* + decorator framework into the companion bundle, defeating the
|
|
18
|
+
* point of `@wildo-ai/saas-models/public-runtime`; (b) couple test
|
|
19
|
+
* fixtures to dozens of irrelevant fields, making generator unit
|
|
20
|
+
* tests brittle to unrelated framework changes; (c) make the
|
|
21
|
+
* introspection-subprocess hop's wire format depend on the entire
|
|
22
|
+
* framework's type stability.
|
|
23
|
+
*
|
|
24
|
+
* - The introspection subprocess (wonder-todos backend) ALREADY has
|
|
25
|
+
* the resolved `ResourceConfiguration` graph — it's the natural
|
|
26
|
+
* place to flatten it into this minimal projection. The companion
|
|
27
|
+
* process then transforms the projection into YAML without ever
|
|
28
|
+
* needing the framework's resource-config types.
|
|
29
|
+
*
|
|
30
|
+
* - This file re-declares the small subset of enums/literals the
|
|
31
|
+
* projection carries (`ResourceOperationVariantTypeProjection`,
|
|
32
|
+
* `ResourcePrimaryScopeProjection`) rather than importing them from
|
|
33
|
+
* `@wildo-ai/saas-models` so that `engine/saas-technical-doc/companion`
|
|
34
|
+
* does NOT pull the heavy package's root barrel (which boots
|
|
35
|
+
* `initZodDecorators()` — see `saas-models-public-runtime.md` K-3 for
|
|
36
|
+
* the rationale). The projection's enum members MUST stay in
|
|
37
|
+
* one-to-one alignment with `ResourceOperationVariantType` and
|
|
38
|
+
* `ResourcePrimaryScope`; if the source enums grow a new member,
|
|
39
|
+
* update this file in the same commit and rerun the boundary tests.
|
|
40
|
+
*
|
|
41
|
+
* @wildo-boundary
|
|
42
|
+
* This file imports only Zod and the portable technical-documentation
|
|
43
|
+
* contract subpath — no React, no `@wildo-ai/saas-models` root, no
|
|
44
|
+
* decorators. The supported API version deliberately reuses the publication
|
|
45
|
+
* contract's named runtime schema rather than creating a parallel vocabulary.
|
|
46
|
+
*/
|
|
47
|
+
import { z } from 'zod';
|
|
48
|
+
import { OpenApiSection } from '../openapi/openapi-generation-output.schemas';
|
|
49
|
+
/**
|
|
50
|
+
* Mirror of `@wildo-ai/saas-models` `ResourceOperationVariantType` —
|
|
51
|
+
* narrowed to the two variants the OpenAPI generator emits per K-5
|
|
52
|
+
* (`API_CALL` is the default URL-bearing operation; `API_CALL_WITH_CALLBACK`
|
|
53
|
+
* additionally carries an asynchronous callback URL). Other variants
|
|
54
|
+
* (`CRON_JOB`, `BATCH_JOB`, `INTERNAL_CALL`, `REPOSITORY_ONLY`) are
|
|
55
|
+
* intentionally NOT included — they have no HTTP surface to document.
|
|
56
|
+
*
|
|
57
|
+
* The introspection emitter MUST drop non-API operations BEFORE
|
|
58
|
+
* projecting; the generator additionally re-asserts the variant via
|
|
59
|
+
* Zod parse so a future bug at the projector layer cannot inject
|
|
60
|
+
* non-API ops into an API doc.
|
|
61
|
+
*/
|
|
62
|
+
export declare enum OperationProjectionVariantType {
|
|
63
|
+
API_CALL = "api_call",
|
|
64
|
+
API_CALL_WITH_CALLBACK = "api_call_with_callback"
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Mirror of `@wildo-ai/saas-models` `ResourcePrimaryScope` — kept
|
|
68
|
+
* complete (4 members) because scope remains part of the documented operation
|
|
69
|
+
* contract even though consumer sectioning is now an explicit separate fact.
|
|
70
|
+
*
|
|
71
|
+
* If `ResourcePrimaryScope` grows a new member upstream, update this
|
|
72
|
+
* enum in the same commit AND extend the audience splitter to either
|
|
73
|
+
* route the new scope into one of the existing buckets or fail-closed
|
|
74
|
+
* with a clear "unsupported scope" error — never silently drop the op.
|
|
75
|
+
*/
|
|
76
|
+
export declare enum OperationProjectionPrimaryScope {
|
|
77
|
+
USER_SELF = "user_self",
|
|
78
|
+
ORGANIZATIONS = "organizations",
|
|
79
|
+
APPLICATION = "applications",
|
|
80
|
+
ANONYMOUS = "anonymous"
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Allowed HTTP methods carried on a projected operation. Mirrors the
|
|
84
|
+
* `HttpMethod` enum in `@wildo-ai/saas-models` but kept local for the
|
|
85
|
+
* same boundary reason as the variant + scope enums above.
|
|
86
|
+
*
|
|
87
|
+
* Lowercase string values match the OpenAPI 3.1 path-item keys
|
|
88
|
+
* (`get`, `post`, `put`, `delete`, `patch`) — keeping the projection
|
|
89
|
+
* value verbatim consumable by the YAML emitter avoids one hop of
|
|
90
|
+
* case-translation in the hot path.
|
|
91
|
+
*/
|
|
92
|
+
export declare enum OperationProjectionHttpVerb {
|
|
93
|
+
GET = "get",
|
|
94
|
+
POST = "post",
|
|
95
|
+
PUT = "put",
|
|
96
|
+
DELETE = "delete",
|
|
97
|
+
PATCH = "patch"
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Authentication posture resolved from the same role binding the backend
|
|
101
|
+
* enforces. This is intentionally a documentation fact rather than a browser
|
|
102
|
+
* inference: `APP_PUBLIC` and `APP_ANONYMOUS` are access-mode sentinels, while
|
|
103
|
+
* every other role is an authorization requirement.
|
|
104
|
+
*/
|
|
105
|
+
export declare enum OperationProjectionAuthenticationMode {
|
|
106
|
+
PUBLIC = "public",
|
|
107
|
+
ANONYMOUS_SESSION = "anonymous_session",
|
|
108
|
+
AUTHENTICATED = "authenticated",
|
|
109
|
+
ANONYMOUS_OR_AUTHENTICATED = "anonymous_or_authenticated"
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* One role requirement as it should be understood by an integrator. `role`
|
|
113
|
+
* remains the exact runtime token; `label` is resolved once at generation time
|
|
114
|
+
* and the explanatory fields come from the application role specification —
|
|
115
|
+
* never from a browser-side naming heuristic.
|
|
116
|
+
*/
|
|
117
|
+
export declare const OperationRoleRequirementSchema: z.ZodObject<{
|
|
118
|
+
role: z.ZodString;
|
|
119
|
+
label: z.ZodString;
|
|
120
|
+
businessRole: z.ZodNullable<z.ZodString>;
|
|
121
|
+
authorityBoundary: z.ZodNullable<z.ZodString>;
|
|
122
|
+
}, z.core.$strict>;
|
|
123
|
+
export type OperationRoleRequirement = z.infer<typeof OperationRoleRequirementSchema>;
|
|
124
|
+
/**
|
|
125
|
+
* Consumer-facing access contract emitted into the operation's `x-wildo`
|
|
126
|
+
* metadata. Its prose is assembled in the introspection subprocess from the
|
|
127
|
+
* authoritative role specifications; the OpenAPI generator and browser only
|
|
128
|
+
* transport and render it.
|
|
129
|
+
*/
|
|
130
|
+
export declare const OperationAccessDocumentationSchema: z.ZodObject<{
|
|
131
|
+
authenticationMode: z.ZodEnum<typeof OperationProjectionAuthenticationMode>;
|
|
132
|
+
authenticationSummary: z.ZodString;
|
|
133
|
+
roleRequirements: z.ZodArray<z.ZodObject<{
|
|
134
|
+
role: z.ZodString;
|
|
135
|
+
label: z.ZodString;
|
|
136
|
+
businessRole: z.ZodNullable<z.ZodString>;
|
|
137
|
+
authorityBoundary: z.ZodNullable<z.ZodString>;
|
|
138
|
+
}, z.core.$strict>>;
|
|
139
|
+
}, z.core.$strict>;
|
|
140
|
+
export type OperationAccessDocumentation = z.infer<typeof OperationAccessDocumentationSchema>;
|
|
141
|
+
/** Versioned identity carried from the resolved HTTP operation into OpenAPI. */
|
|
142
|
+
export declare const OPENAPI_OPERATION_IDENTITY_CONTRACT_VERSION = 1;
|
|
143
|
+
/** Versioned identity carried by each generated OpenAPI resource tag. */
|
|
144
|
+
export declare const OPENAPI_RESOURCE_IDENTITY_CONTRACT_VERSION = 1;
|
|
145
|
+
/**
|
|
146
|
+
* The non-editorial identity of one externally exposed HTTP operation.
|
|
147
|
+
*
|
|
148
|
+
* This deliberately excludes `operationKey`: that key exists to create a
|
|
149
|
+
* readable OpenAPI `operationId` and can contain a defensive positional
|
|
150
|
+
* fallback for unusual multi-path configurations. Conservation, generated
|
|
151
|
+
* routes and framework metadata must instead join this stable source tuple.
|
|
152
|
+
*/
|
|
153
|
+
export declare const OpenApiOperationIdentitySchema: z.ZodObject<{
|
|
154
|
+
contractVersion: z.ZodLiteral<1>;
|
|
155
|
+
resourceRef: z.ZodString;
|
|
156
|
+
operationFamilyRef: z.ZodString;
|
|
157
|
+
operationVariantRef: z.ZodString;
|
|
158
|
+
variantType: z.ZodEnum<typeof OperationProjectionVariantType>;
|
|
159
|
+
httpVerb: z.ZodEnum<typeof OperationProjectionHttpVerb>;
|
|
160
|
+
path: z.ZodString;
|
|
161
|
+
}, z.core.$strict>;
|
|
162
|
+
export type OpenApiOperationIdentity = z.infer<typeof OpenApiOperationIdentitySchema>;
|
|
163
|
+
/**
|
|
164
|
+
* Derives stable semantic refs for the resolved operation tuple. This is the
|
|
165
|
+
* sole constructor so the subprocess projector, generator and future browser
|
|
166
|
+
* reader cannot gradually invent incompatible identities.
|
|
167
|
+
*/
|
|
168
|
+
export declare function createOpenApiOperationIdentity(input: {
|
|
169
|
+
readonly resourceIdentifier: string;
|
|
170
|
+
readonly baseOperationIdentifier: string;
|
|
171
|
+
readonly variantKey: string | null;
|
|
172
|
+
readonly variantType: OperationProjectionVariantType;
|
|
173
|
+
readonly httpVerb: OperationProjectionHttpVerb;
|
|
174
|
+
readonly path: string;
|
|
175
|
+
}): OpenApiOperationIdentity;
|
|
176
|
+
/**
|
|
177
|
+
* Single projected operation — the atomic unit consumed by the URL-bearing
|
|
178
|
+
* operation guard and the explicit consumer-section grouping.
|
|
179
|
+
*
|
|
180
|
+
* Field decisions:
|
|
181
|
+
*
|
|
182
|
+
* - `resourceIdentifier` is a free string (NOT typed against
|
|
183
|
+
* `CoreResourceType`) because applications can declare custom
|
|
184
|
+
* resource types beyond the core enum. The generator uses this
|
|
185
|
+
* string as the OpenAPI tag name, so we want the wire format to
|
|
186
|
+
* survive any application-extended vocabulary without a schema
|
|
187
|
+
* bump.
|
|
188
|
+
*
|
|
189
|
+
* - `operationKey` is the framework's canonical operation identifier
|
|
190
|
+
* (e.g. `'CREATE'`, `'LIST'`, `'READ'`, custom-named ops); used
|
|
191
|
+
* verbatim as the OpenAPI `operationId` after a small
|
|
192
|
+
* PascalCase prefix (`<Resource><OperationKey>`). Stable across
|
|
193
|
+
* runs so client-codegen consumers can rely on it.
|
|
194
|
+
*
|
|
195
|
+
* - `httpVerb` and `path` carry the wire-level routing details. The
|
|
196
|
+
* `path` MUST be the OpenAPI-style template path (e.g.
|
|
197
|
+
* `/api/v1/{organizationId}/users/{userId}`), NOT an Express
|
|
198
|
+
* `:userId` form — the projector at the introspection side is
|
|
199
|
+
* responsible for the Express → OpenAPI brace conversion so the
|
|
200
|
+
* generator can pass the value through unchanged.
|
|
201
|
+
*
|
|
202
|
+
* - `roles` is the resolved string list (after enum → string
|
|
203
|
+
* flattening) so the splitter can audience-classify without
|
|
204
|
+
* re-importing the role enums. Empty array is rejected via Zod's
|
|
205
|
+
* `.min(1)` because every operation in the framework MUST declare
|
|
206
|
+
* at least one role binding (the framework's resource-config
|
|
207
|
+
* schema enforces this on the source side; the Zod check here is
|
|
208
|
+
* defense-in-depth).
|
|
209
|
+
*
|
|
210
|
+
* - `requestBodySchema` / `responseBodySchema` carry pre-converted
|
|
211
|
+
* JSON Schema fragments (from `z.toJSONSchema()` at the projector
|
|
212
|
+
* side). The generator does NOT see the source Zod schemas — the
|
|
213
|
+
* projector does the conversion so the generator stays
|
|
214
|
+
* decorator-framework-free (importing a Zod schema graph would
|
|
215
|
+
* pull `initZodDecorators()` for any `@wildo-ai/saas-models`-typed
|
|
216
|
+
* schema).
|
|
217
|
+
*
|
|
218
|
+
* - `summary` and `description` are optional human-readable strings;
|
|
219
|
+
* when omitted, the YAML emitter falls back to the canonical
|
|
220
|
+
* `<HTTP_VERB> <Resource>.<OperationKey>` derivation so the docs
|
|
221
|
+
* site never renders a literal "undefined" title.
|
|
222
|
+
*
|
|
223
|
+
* - `isApiKeyAccessDisabled` is an authentication-mode fact. The
|
|
224
|
+
* introspection projector forwards it verbatim; the generator keeps the
|
|
225
|
+
* operation and omits only its API-key security alternative.
|
|
226
|
+
*
|
|
227
|
+
* - `stepUpAuthentication` is present only when the resolved operation
|
|
228
|
+
* requires a fresh, single-use re-authentication proof. Both values are
|
|
229
|
+
* projected from the framework's named route/header constants so OpenAPI
|
|
230
|
+
* never invents or duplicates the protocol vocabulary.
|
|
231
|
+
*
|
|
232
|
+
* - `acceptsIfMatch` is the resolved optimistic-locking capability of this
|
|
233
|
+
* exact HTTP operation. It is true only for the controller's supported
|
|
234
|
+
* single-resource UPDATE-like lane, including custom operations borrowing
|
|
235
|
+
* UPDATE semantics; the generator uses it to expose the optional header and
|
|
236
|
+
* its framework-owned 400/409 outcomes without resource-level duplication.
|
|
237
|
+
*
|
|
238
|
+
* - `callbackPath` is OPTIONAL and MUST be present iff
|
|
239
|
+
* `variantType === API_CALL_WITH_CALLBACK`. The generator emits an
|
|
240
|
+
* OpenAPI 3.1 `callbacks:` block when set. The schema's
|
|
241
|
+
* `superRefine` enforces this invariant at parse time so the
|
|
242
|
+
* generator's hot path can assume the field is correctly populated.
|
|
243
|
+
*/
|
|
244
|
+
export declare const OperationProjectionSchema: z.ZodObject<{
|
|
245
|
+
resourceIdentifier: z.ZodString;
|
|
246
|
+
operationKey: z.ZodString;
|
|
247
|
+
/**
|
|
248
|
+
* The RAW operation identifier (e.g. `CREATE`, `LIST`, `EXPORT_AUDIT_LOGS`,
|
|
249
|
+
* `ROTATE_TOKEN`) WITHOUT the variant / bulk / multi-path qualifiers that
|
|
250
|
+
* `operationKey` appends. `buildOperationId` needs this to compose a
|
|
251
|
+
* verb-first developer-facing operationId (`createOrganization`): the verb
|
|
252
|
+
* is derived from the base identifier and the resource noun from
|
|
253
|
+
* `resourceIdentifier`, while the qualifiers are `operationKey` with this
|
|
254
|
+
* prefix removed. Carried separately because a base identifier can itself
|
|
255
|
+
* contain `_` (e.g. `EXPORT_AUDIT_LOGS`), so the qualifier boundary cannot be
|
|
256
|
+
* recovered from `operationKey` alone.
|
|
257
|
+
*/
|
|
258
|
+
baseOperationIdentifier: z.ZodString;
|
|
259
|
+
/** Exact runtime variant discriminator. `null` is the canonical default variant. */
|
|
260
|
+
variantKey: z.ZodNullable<z.ZodString>;
|
|
261
|
+
variantType: z.ZodEnum<typeof OperationProjectionVariantType>;
|
|
262
|
+
httpVerb: z.ZodEnum<typeof OperationProjectionHttpVerb>;
|
|
263
|
+
path: z.ZodString;
|
|
264
|
+
primaryScope: z.ZodEnum<typeof OperationProjectionPrimaryScope>;
|
|
265
|
+
/**
|
|
266
|
+
* Consumer-facing documentation section resolved at the source-authority
|
|
267
|
+
* boundary. The OpenAPI generator groups by this explicit fact; it must not
|
|
268
|
+
* reinterpret internal scopes or role strings into product navigation.
|
|
269
|
+
*/
|
|
270
|
+
consumerApiSection: z.ZodEnum<typeof OpenApiSection>;
|
|
271
|
+
/**
|
|
272
|
+
* Stable source identity used for conservation and the strict `x-wildo`
|
|
273
|
+
* extension. It is not a human-facing operationId and never depends on
|
|
274
|
+
* iteration order or display prose.
|
|
275
|
+
*/
|
|
276
|
+
identity: z.ZodObject<{
|
|
277
|
+
contractVersion: z.ZodLiteral<1>;
|
|
278
|
+
resourceRef: z.ZodString;
|
|
279
|
+
operationFamilyRef: z.ZodString;
|
|
280
|
+
operationVariantRef: z.ZodString;
|
|
281
|
+
variantType: z.ZodEnum<typeof OperationProjectionVariantType>;
|
|
282
|
+
httpVerb: z.ZodEnum<typeof OperationProjectionHttpVerb>;
|
|
283
|
+
path: z.ZodString;
|
|
284
|
+
}, z.core.$strict>;
|
|
285
|
+
roles: z.ZodArray<z.ZodString>;
|
|
286
|
+
/**
|
|
287
|
+
* Source-resolved consumer access explanation. This must remain aligned with
|
|
288
|
+
* `roles`: the projector is the only place allowed to interpret access-mode
|
|
289
|
+
* sentinels and attach the app's role-specification prose.
|
|
290
|
+
*/
|
|
291
|
+
access: z.ZodObject<{
|
|
292
|
+
authenticationMode: z.ZodEnum<typeof OperationProjectionAuthenticationMode>;
|
|
293
|
+
authenticationSummary: z.ZodString;
|
|
294
|
+
roleRequirements: z.ZodArray<z.ZodObject<{
|
|
295
|
+
role: z.ZodString;
|
|
296
|
+
label: z.ZodString;
|
|
297
|
+
businessRole: z.ZodNullable<z.ZodString>;
|
|
298
|
+
authorityBoundary: z.ZodNullable<z.ZodString>;
|
|
299
|
+
}, z.core.$strict>>;
|
|
300
|
+
}, z.core.$strict>;
|
|
301
|
+
isApiKeyAccessDisabled: z.ZodBoolean;
|
|
302
|
+
stepUpAuthentication: z.ZodOptional<z.ZodObject<{
|
|
303
|
+
headerName: z.ZodString;
|
|
304
|
+
tokenEndpointPath: z.ZodString;
|
|
305
|
+
}, z.core.$strict>>;
|
|
306
|
+
acceptsIfMatch: z.ZodBoolean;
|
|
307
|
+
summary: z.ZodOptional<z.ZodString>;
|
|
308
|
+
description: z.ZodOptional<z.ZodString>;
|
|
309
|
+
/**
|
|
310
|
+
* JSON-Schema fragment representing the request body (or query for
|
|
311
|
+
* GET / DELETE if the projector chose to flatten query parameters
|
|
312
|
+
* into a single schema). The exact shape is whatever
|
|
313
|
+
* `z.toJSONSchema()` emits. For POST / PUT / PATCH style verbs the
|
|
314
|
+
* generator passes it through unchanged into the OpenAPI
|
|
315
|
+
* `requestBody.content.application/json.schema` slot. For GET /
|
|
316
|
+
* DELETE the generator expects an object-shaped schema and explodes
|
|
317
|
+
* the top-level properties into `parameters[]` entries with
|
|
318
|
+
* `in: 'query'`. `null` means "no request input".
|
|
319
|
+
*/
|
|
320
|
+
requestBodySchema: z.ZodNullable<z.ZodUnknown>;
|
|
321
|
+
/**
|
|
322
|
+
* JSON-Schema fragment representing the 2xx response body. `null`
|
|
323
|
+
* means "no body" → emitted as a 204-style `responses` entry with
|
|
324
|
+
* description only. `unknown` to stay format-agnostic; the
|
|
325
|
+
* projector is responsible for emitting valid JSON Schema.
|
|
326
|
+
*/
|
|
327
|
+
responseBodySchema: z.ZodNullable<z.ZodUnknown>;
|
|
328
|
+
/**
|
|
329
|
+
* Paginated-collection query contract — present iff the operation is a
|
|
330
|
+
* framework paginated collection operation (a `LIST` / `SEARCH` core
|
|
331
|
+
* operation, or a custom operation borrowing one via
|
|
332
|
+
* `resourceOperationLike`). Those operations universally accept the flat
|
|
333
|
+
* `page` / `limit` / `sort` query parameters and return the
|
|
334
|
+
* `{ data, pagination }` envelope (the backend controller forces
|
|
335
|
+
* `paginated: true` for every HTTP LIST/SEARCH dispatch), but NONE of that
|
|
336
|
+
* appears in the operation's request DTO — without this block the generator
|
|
337
|
+
* would document a paginated endpoint with no way to page it.
|
|
338
|
+
*
|
|
339
|
+
* The PROJECTOR resolves the per-operation values (it sees the resolved
|
|
340
|
+
* runtime operation); the GENERATOR owns the universal parameter shapes and
|
|
341
|
+
* the framework-constant defaults (`page` defaults to 1, `limit` to 20 —
|
|
342
|
+
* mirrors of the repository `_doList` defaults). Split chosen so this wire
|
|
343
|
+
* schema stays framework-decoupled: the projection carries FACTS, not
|
|
344
|
+
* OpenAPI fragments.
|
|
345
|
+
*
|
|
346
|
+
* - `maxLimit` — largest accepted `limit` value. Resolved from the
|
|
347
|
+
* operation's `maxPaginatedResultPerPageLimit ?? 50` (the same fallback
|
|
348
|
+
* the frontend HTTP client clamps with; only SEARCH-like operations can
|
|
349
|
+
* author a different cap today).
|
|
350
|
+
* - `sortableFields` — the operation's declared `sortFields` allow-list.
|
|
351
|
+
* Non-empty: only these fields may be named in `sort` (unrecognised
|
|
352
|
+
* fields are silently ignored by the backend validator) and the default
|
|
353
|
+
* ordering is the first entry, descending. Empty: the backend applies
|
|
354
|
+
* any requested field verbatim and defaults to `createdAt:desc`.
|
|
355
|
+
*/
|
|
356
|
+
pagination: z.ZodOptional<z.ZodObject<{
|
|
357
|
+
maxLimit: z.ZodNumber;
|
|
358
|
+
sortableFields: z.ZodArray<z.ZodString>;
|
|
359
|
+
}, z.core.$strict>>;
|
|
360
|
+
/**
|
|
361
|
+
* Path of the asynchronous callback (`API_CALL_WITH_CALLBACK` only).
|
|
362
|
+
* The generator turns this into an OpenAPI `callbacks:` block
|
|
363
|
+
* referencing the same `responseBodySchema`.
|
|
364
|
+
*/
|
|
365
|
+
callbackPath: z.ZodOptional<z.ZodString>;
|
|
366
|
+
/**
|
|
367
|
+
* Tier-3 authored HTTP documentation, projected from the resource
|
|
368
|
+
* specification's operation overlay. All optional; when present the
|
|
369
|
+
* generator emits real `responses` (success + error), request/response
|
|
370
|
+
* `examples`, an `x-idempotent` extension, and a rate-limit note instead of
|
|
371
|
+
* the default single `200`/`204`. `code` / `forStatus` are OpenAPI status
|
|
372
|
+
* keys (`'200'`, `'404'`, …).
|
|
373
|
+
*/
|
|
374
|
+
responseStatuses: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
375
|
+
code: z.ZodString;
|
|
376
|
+
meaning: z.ZodString;
|
|
377
|
+
}, z.core.$strict>>>;
|
|
378
|
+
errorScenarios: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
379
|
+
code: z.ZodString;
|
|
380
|
+
when: z.ZodString;
|
|
381
|
+
errorCode: z.ZodOptional<z.ZodString>;
|
|
382
|
+
}, z.core.$strict>>>;
|
|
383
|
+
idempotent: z.ZodOptional<z.ZodBoolean>;
|
|
384
|
+
rateLimitNote: z.ZodOptional<z.ZodString>;
|
|
385
|
+
examples: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
386
|
+
title: z.ZodString;
|
|
387
|
+
request: z.ZodOptional<z.ZodUnknown>;
|
|
388
|
+
response: z.ZodOptional<z.ZodUnknown>;
|
|
389
|
+
forStatus: z.ZodOptional<z.ZodString>;
|
|
390
|
+
}, z.core.$strict>>>;
|
|
391
|
+
}, z.core.$strict>;
|
|
392
|
+
export type OperationProjection = z.infer<typeof OperationProjectionSchema>;
|
|
393
|
+
/**
|
|
394
|
+
* Closed projection vocabulary mirroring the relationship cardinalities in
|
|
395
|
+
* `@wildo-ai/saas-models`. It deliberately lives in the narrow IPC/OpenAPI
|
|
396
|
+
* contract so the generator and browser never need to import the full resource
|
|
397
|
+
* registry just to render a resource's public relationship semantics.
|
|
398
|
+
*/
|
|
399
|
+
export declare enum ResourceRelationshipDocumentationCardinality {
|
|
400
|
+
ONE = "one",
|
|
401
|
+
ZERO_OR_ONE = "zero_or_one",
|
|
402
|
+
ONE_OR_MANY = "one_or_many",
|
|
403
|
+
MANY = "many"
|
|
404
|
+
}
|
|
405
|
+
/** The three developer-authored relationship meanings projected into OpenAPI. */
|
|
406
|
+
export declare enum ResourceRelationshipDocumentationNature {
|
|
407
|
+
COMPOSITION = "composition",
|
|
408
|
+
REFERENCE = "reference",
|
|
409
|
+
ASSOCIATION = "association"
|
|
410
|
+
}
|
|
411
|
+
/** The compiled lifecycle dependency of a relationship, not a presentation hint. */
|
|
412
|
+
export declare enum ResourceRelationshipDocumentationLifecycleModel {
|
|
413
|
+
DEPENDENT = "dependent",
|
|
414
|
+
INDEPENDENT = "independent",
|
|
415
|
+
LINK_ONLY = "link_only"
|
|
416
|
+
}
|
|
417
|
+
/** Execution timing for an explicitly configured parent-delete lifecycle. */
|
|
418
|
+
export declare enum ResourceRelationshipDocumentationDeleteMode {
|
|
419
|
+
IMMEDIATE = "immediate",
|
|
420
|
+
LAZY = "lazy"
|
|
421
|
+
}
|
|
422
|
+
/** Effect of an explicitly configured parent-delete lifecycle. */
|
|
423
|
+
export declare enum ResourceRelationshipDocumentationDeleteStrategy {
|
|
424
|
+
DELETE = "delete",
|
|
425
|
+
IMPERSONALIZE_AND_RETAIN = "impersonalize_and_retain"
|
|
426
|
+
}
|
|
427
|
+
/**
|
|
428
|
+
* One relationship fact from the perspective of a resource OpenAPI tag.
|
|
429
|
+
*
|
|
430
|
+
* `relatedResourceName` and the two cardinalities are deliberately symmetric:
|
|
431
|
+
* resource configurations include both ordinary parent → child relationships
|
|
432
|
+
* and FK-reference declarations, so this public contract must not guess an
|
|
433
|
+
* ownership direction from declaration order. `lifecycleModel` and the
|
|
434
|
+
* optional `onParentDelete` policy carry the framework's already-resolved
|
|
435
|
+
* lifecycle truth without exposing registry implementation details.
|
|
436
|
+
*/
|
|
437
|
+
export declare const ResourceRelationshipDocumentationSchema: z.ZodObject<{
|
|
438
|
+
relatedResourceName: z.ZodString;
|
|
439
|
+
/** Resolved FK identity when the relationship is represented by a field. */
|
|
440
|
+
foreignKeyField: z.ZodOptional<z.ZodString>;
|
|
441
|
+
resourceCardinality: z.ZodEnum<typeof ResourceRelationshipDocumentationCardinality>;
|
|
442
|
+
relatedResourceCardinality: z.ZodEnum<typeof ResourceRelationshipDocumentationCardinality>;
|
|
443
|
+
nature: z.ZodEnum<typeof ResourceRelationshipDocumentationNature>;
|
|
444
|
+
lifecycleModel: z.ZodEnum<typeof ResourceRelationshipDocumentationLifecycleModel>;
|
|
445
|
+
onParentDelete: z.ZodOptional<z.ZodObject<{
|
|
446
|
+
enabled: z.ZodBoolean;
|
|
447
|
+
mode: z.ZodEnum<typeof ResourceRelationshipDocumentationDeleteMode>;
|
|
448
|
+
strategy: z.ZodEnum<typeof ResourceRelationshipDocumentationDeleteStrategy>;
|
|
449
|
+
maxDepth: z.ZodNumber;
|
|
450
|
+
}, z.core.$strict>>;
|
|
451
|
+
}, z.core.$strict>;
|
|
452
|
+
export type ResourceRelationshipDocumentation = z.infer<typeof ResourceRelationshipDocumentationSchema>;
|
|
453
|
+
/**
|
|
454
|
+
* A source-declared grouping for resources in one consumer API reference.
|
|
455
|
+
*
|
|
456
|
+
* API resource categories are navigation meaning, not a renderer inference.
|
|
457
|
+
* An application declares the category once in `wildo.tech-doc.config.ts`; the
|
|
458
|
+
* companion attaches it to the corresponding resource tag and the generator
|
|
459
|
+
* transports the fact through strict OpenAPI metadata. The identifier is
|
|
460
|
+
* deliberately application-defined: different products can have genuinely
|
|
461
|
+
* different business domains while still using the same renderer.
|
|
462
|
+
*/
|
|
463
|
+
export declare const ApiReferenceResourceCategorySchema: z.ZodObject<{
|
|
464
|
+
/** Stable, readable public identity used in API-reference fragments. */
|
|
465
|
+
id: z.ZodString;
|
|
466
|
+
/** Consumer-facing category label displayed by the renderer. */
|
|
467
|
+
label: z.ZodString;
|
|
468
|
+
/** Optional category orientation supplied by the application, never React. */
|
|
469
|
+
description: z.ZodOptional<z.ZodString>;
|
|
470
|
+
}, z.core.$strict>;
|
|
471
|
+
export type ApiReferenceResourceCategory = z.infer<typeof ApiReferenceResourceCategorySchema>;
|
|
472
|
+
/**
|
|
473
|
+
* Optional per-resource OpenAPI tag descriptor (specification + registry enrichment).
|
|
474
|
+
*
|
|
475
|
+
* The generator groups operations under a tag named after the resource
|
|
476
|
+
* identifier. Each emitted OpenAPI tag has a strict `x-wildo` resource identity;
|
|
477
|
+
* this descriptor enriches it with its specification-owned purpose/lifecycle
|
|
478
|
+
* prose and the compiled relationship facts from the resolved resource graph.
|
|
479
|
+
*/
|
|
480
|
+
export declare const ResourceTagSchema: z.ZodObject<{
|
|
481
|
+
/** Must equal the `resourceIdentifier` the generator derives the tag from. */
|
|
482
|
+
name: z.ZodString;
|
|
483
|
+
/** Business-purpose prose for the resource group. */
|
|
484
|
+
description: z.ZodOptional<z.ZodString>;
|
|
485
|
+
/** Specification-owned explanation of how this resource changes over time. */
|
|
486
|
+
lifecycleRole: z.ZodOptional<z.ZodString>;
|
|
487
|
+
/** Compiled relationship facts relevant to this resource. */
|
|
488
|
+
relationships: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
489
|
+
relatedResourceName: z.ZodString;
|
|
490
|
+
/** Resolved FK identity when the relationship is represented by a field. */
|
|
491
|
+
foreignKeyField: z.ZodOptional<z.ZodString>;
|
|
492
|
+
resourceCardinality: z.ZodEnum<typeof ResourceRelationshipDocumentationCardinality>;
|
|
493
|
+
relatedResourceCardinality: z.ZodEnum<typeof ResourceRelationshipDocumentationCardinality>;
|
|
494
|
+
nature: z.ZodEnum<typeof ResourceRelationshipDocumentationNature>;
|
|
495
|
+
lifecycleModel: z.ZodEnum<typeof ResourceRelationshipDocumentationLifecycleModel>;
|
|
496
|
+
onParentDelete: z.ZodOptional<z.ZodObject<{
|
|
497
|
+
enabled: z.ZodBoolean;
|
|
498
|
+
mode: z.ZodEnum<typeof ResourceRelationshipDocumentationDeleteMode>;
|
|
499
|
+
strategy: z.ZodEnum<typeof ResourceRelationshipDocumentationDeleteStrategy>;
|
|
500
|
+
maxDepth: z.ZodNumber;
|
|
501
|
+
}, z.core.$strict>>;
|
|
502
|
+
}, z.core.$strict>>>;
|
|
503
|
+
/** Explicit application-owned API-reference navigation grouping. */
|
|
504
|
+
category: z.ZodOptional<z.ZodObject<{
|
|
505
|
+
/** Stable, readable public identity used in API-reference fragments. */
|
|
506
|
+
id: z.ZodString;
|
|
507
|
+
/** Consumer-facing category label displayed by the renderer. */
|
|
508
|
+
label: z.ZodString;
|
|
509
|
+
/** Optional category orientation supplied by the application, never React. */
|
|
510
|
+
description: z.ZodOptional<z.ZodString>;
|
|
511
|
+
}, z.core.$strict>>;
|
|
512
|
+
}, z.core.$strict>;
|
|
513
|
+
export type ResourceTag = z.infer<typeof ResourceTagSchema>;
|
|
514
|
+
/**
|
|
515
|
+
* One OpenAPI `servers[]` entry — a base URL the API is reachable at, plus an
|
|
516
|
+
* optional human label. **App-enriched**: deployment URLs are an
|
|
517
|
+
* application/environment concern (the framework cannot know an app's prod
|
|
518
|
+
* domain), so they are authored on `WildoTechnicalDocConfig.apiServers` and
|
|
519
|
+
* threaded into `OpenApiGenerationInput.servers`. The shared shape lives here
|
|
520
|
+
* (the boundary-clean, zod-only module the generator consumes); the config
|
|
521
|
+
* schema imports it so the two never drift.
|
|
522
|
+
*/
|
|
523
|
+
export declare const OpenApiServerSchema: z.ZodObject<{
|
|
524
|
+
/**
|
|
525
|
+
* Base URL — the bare ORIGIN the API is served from, e.g.
|
|
526
|
+
* `http://localhost:4241` or `https://api.example.com`. Do NOT append the
|
|
527
|
+
* `/api/v1` mount: the generated operation `paths` are already mount-prefixed
|
|
528
|
+
* (`/api/v1/...`), and the effective request URL is `server.url` + path — so
|
|
529
|
+
* including the mount here would DOUBLE it (`…/api/v1/api/v1/...`).
|
|
530
|
+
*/
|
|
531
|
+
url: z.ZodString;
|
|
532
|
+
/** Optional human label shown in the docs server picker (e.g. "Production"). */
|
|
533
|
+
description: z.ZodOptional<z.ZodString>;
|
|
534
|
+
}, z.core.$strict>;
|
|
535
|
+
export type OpenApiServer = z.infer<typeof OpenApiServerSchema>;
|
|
536
|
+
/**
|
|
537
|
+
* Top-level wire format consumed by the OpenAPI generator. Wrapped
|
|
538
|
+
* in an object so the projector can attach metadata (app slug, build
|
|
539
|
+
* timestamp, framework version) without a schema-shape break later.
|
|
540
|
+
*/
|
|
541
|
+
export declare const OpenApiGenerationInputSchema: z.ZodObject<{
|
|
542
|
+
/**
|
|
543
|
+
* App slug from `WildoSaasConfig.slug`. Surfaces in the generated
|
|
544
|
+
* `openapi.info.title` so a
|
|
545
|
+
* multi-app generation run can be disambiguated. Free-string
|
|
546
|
+
* (no validation against `WildoSaasConfigSchema.slug` regex) because
|
|
547
|
+
* the generator should not gate on the same constraint twice; the
|
|
548
|
+
* `defineSaasConfig` parser already enforced the shape at author time.
|
|
549
|
+
*/
|
|
550
|
+
appSlug: z.ZodString;
|
|
551
|
+
/**
|
|
552
|
+
* App display name from `WildoSaasConfig.displayName` — used as the
|
|
553
|
+
* default base title in the generated `openapi.info.title`. The
|
|
554
|
+
* companion route concatenates it with the section name
|
|
555
|
+
* (`"Wonder Todos API reference"`).
|
|
556
|
+
*/
|
|
557
|
+
appDisplayName: z.ZodString;
|
|
558
|
+
/**
|
|
559
|
+
* Optional public marketing title from `WildoSaasConfig.technicalDoc.publicMarketingTitle`.
|
|
560
|
+
* When present, replaces `appDisplayName` in the generated title so
|
|
561
|
+
* the OpenAPI docs match the docs site landing page.
|
|
562
|
+
*/
|
|
563
|
+
publicMarketingTitle: z.ZodOptional<z.ZodString>;
|
|
564
|
+
/** Exact supported public API contract release surfaced in `openapi.info.version`. */
|
|
565
|
+
supportedApiVersion: z.ZodString;
|
|
566
|
+
/**
|
|
567
|
+
* Flat list of all URL-bearing operation projections. The projector includes
|
|
568
|
+
* every exposed operation and resolves its consumer section explicitly; the
|
|
569
|
+
* generator validates, groups and renders without eligibility inference.
|
|
570
|
+
*/
|
|
571
|
+
operations: z.ZodArray<z.ZodObject<{
|
|
572
|
+
resourceIdentifier: z.ZodString;
|
|
573
|
+
operationKey: z.ZodString;
|
|
574
|
+
/**
|
|
575
|
+
* The RAW operation identifier (e.g. `CREATE`, `LIST`, `EXPORT_AUDIT_LOGS`,
|
|
576
|
+
* `ROTATE_TOKEN`) WITHOUT the variant / bulk / multi-path qualifiers that
|
|
577
|
+
* `operationKey` appends. `buildOperationId` needs this to compose a
|
|
578
|
+
* verb-first developer-facing operationId (`createOrganization`): the verb
|
|
579
|
+
* is derived from the base identifier and the resource noun from
|
|
580
|
+
* `resourceIdentifier`, while the qualifiers are `operationKey` with this
|
|
581
|
+
* prefix removed. Carried separately because a base identifier can itself
|
|
582
|
+
* contain `_` (e.g. `EXPORT_AUDIT_LOGS`), so the qualifier boundary cannot be
|
|
583
|
+
* recovered from `operationKey` alone.
|
|
584
|
+
*/
|
|
585
|
+
baseOperationIdentifier: z.ZodString;
|
|
586
|
+
/** Exact runtime variant discriminator. `null` is the canonical default variant. */
|
|
587
|
+
variantKey: z.ZodNullable<z.ZodString>;
|
|
588
|
+
variantType: z.ZodEnum<typeof OperationProjectionVariantType>;
|
|
589
|
+
httpVerb: z.ZodEnum<typeof OperationProjectionHttpVerb>;
|
|
590
|
+
path: z.ZodString;
|
|
591
|
+
primaryScope: z.ZodEnum<typeof OperationProjectionPrimaryScope>;
|
|
592
|
+
/**
|
|
593
|
+
* Consumer-facing documentation section resolved at the source-authority
|
|
594
|
+
* boundary. The OpenAPI generator groups by this explicit fact; it must not
|
|
595
|
+
* reinterpret internal scopes or role strings into product navigation.
|
|
596
|
+
*/
|
|
597
|
+
consumerApiSection: z.ZodEnum<typeof OpenApiSection>;
|
|
598
|
+
/**
|
|
599
|
+
* Stable source identity used for conservation and the strict `x-wildo`
|
|
600
|
+
* extension. It is not a human-facing operationId and never depends on
|
|
601
|
+
* iteration order or display prose.
|
|
602
|
+
*/
|
|
603
|
+
identity: z.ZodObject<{
|
|
604
|
+
contractVersion: z.ZodLiteral<1>;
|
|
605
|
+
resourceRef: z.ZodString;
|
|
606
|
+
operationFamilyRef: z.ZodString;
|
|
607
|
+
operationVariantRef: z.ZodString;
|
|
608
|
+
variantType: z.ZodEnum<typeof OperationProjectionVariantType>;
|
|
609
|
+
httpVerb: z.ZodEnum<typeof OperationProjectionHttpVerb>;
|
|
610
|
+
path: z.ZodString;
|
|
611
|
+
}, z.core.$strict>;
|
|
612
|
+
roles: z.ZodArray<z.ZodString>;
|
|
613
|
+
/**
|
|
614
|
+
* Source-resolved consumer access explanation. This must remain aligned with
|
|
615
|
+
* `roles`: the projector is the only place allowed to interpret access-mode
|
|
616
|
+
* sentinels and attach the app's role-specification prose.
|
|
617
|
+
*/
|
|
618
|
+
access: z.ZodObject<{
|
|
619
|
+
authenticationMode: z.ZodEnum<typeof OperationProjectionAuthenticationMode>;
|
|
620
|
+
authenticationSummary: z.ZodString;
|
|
621
|
+
roleRequirements: z.ZodArray<z.ZodObject<{
|
|
622
|
+
role: z.ZodString;
|
|
623
|
+
label: z.ZodString;
|
|
624
|
+
businessRole: z.ZodNullable<z.ZodString>;
|
|
625
|
+
authorityBoundary: z.ZodNullable<z.ZodString>;
|
|
626
|
+
}, z.core.$strict>>;
|
|
627
|
+
}, z.core.$strict>;
|
|
628
|
+
isApiKeyAccessDisabled: z.ZodBoolean;
|
|
629
|
+
stepUpAuthentication: z.ZodOptional<z.ZodObject<{
|
|
630
|
+
headerName: z.ZodString;
|
|
631
|
+
tokenEndpointPath: z.ZodString;
|
|
632
|
+
}, z.core.$strict>>;
|
|
633
|
+
acceptsIfMatch: z.ZodBoolean;
|
|
634
|
+
summary: z.ZodOptional<z.ZodString>;
|
|
635
|
+
description: z.ZodOptional<z.ZodString>;
|
|
636
|
+
/**
|
|
637
|
+
* JSON-Schema fragment representing the request body (or query for
|
|
638
|
+
* GET / DELETE if the projector chose to flatten query parameters
|
|
639
|
+
* into a single schema). The exact shape is whatever
|
|
640
|
+
* `z.toJSONSchema()` emits. For POST / PUT / PATCH style verbs the
|
|
641
|
+
* generator passes it through unchanged into the OpenAPI
|
|
642
|
+
* `requestBody.content.application/json.schema` slot. For GET /
|
|
643
|
+
* DELETE the generator expects an object-shaped schema and explodes
|
|
644
|
+
* the top-level properties into `parameters[]` entries with
|
|
645
|
+
* `in: 'query'`. `null` means "no request input".
|
|
646
|
+
*/
|
|
647
|
+
requestBodySchema: z.ZodNullable<z.ZodUnknown>;
|
|
648
|
+
/**
|
|
649
|
+
* JSON-Schema fragment representing the 2xx response body. `null`
|
|
650
|
+
* means "no body" → emitted as a 204-style `responses` entry with
|
|
651
|
+
* description only. `unknown` to stay format-agnostic; the
|
|
652
|
+
* projector is responsible for emitting valid JSON Schema.
|
|
653
|
+
*/
|
|
654
|
+
responseBodySchema: z.ZodNullable<z.ZodUnknown>;
|
|
655
|
+
/**
|
|
656
|
+
* Paginated-collection query contract — present iff the operation is a
|
|
657
|
+
* framework paginated collection operation (a `LIST` / `SEARCH` core
|
|
658
|
+
* operation, or a custom operation borrowing one via
|
|
659
|
+
* `resourceOperationLike`). Those operations universally accept the flat
|
|
660
|
+
* `page` / `limit` / `sort` query parameters and return the
|
|
661
|
+
* `{ data, pagination }` envelope (the backend controller forces
|
|
662
|
+
* `paginated: true` for every HTTP LIST/SEARCH dispatch), but NONE of that
|
|
663
|
+
* appears in the operation's request DTO — without this block the generator
|
|
664
|
+
* would document a paginated endpoint with no way to page it.
|
|
665
|
+
*
|
|
666
|
+
* The PROJECTOR resolves the per-operation values (it sees the resolved
|
|
667
|
+
* runtime operation); the GENERATOR owns the universal parameter shapes and
|
|
668
|
+
* the framework-constant defaults (`page` defaults to 1, `limit` to 20 —
|
|
669
|
+
* mirrors of the repository `_doList` defaults). Split chosen so this wire
|
|
670
|
+
* schema stays framework-decoupled: the projection carries FACTS, not
|
|
671
|
+
* OpenAPI fragments.
|
|
672
|
+
*
|
|
673
|
+
* - `maxLimit` — largest accepted `limit` value. Resolved from the
|
|
674
|
+
* operation's `maxPaginatedResultPerPageLimit ?? 50` (the same fallback
|
|
675
|
+
* the frontend HTTP client clamps with; only SEARCH-like operations can
|
|
676
|
+
* author a different cap today).
|
|
677
|
+
* - `sortableFields` — the operation's declared `sortFields` allow-list.
|
|
678
|
+
* Non-empty: only these fields may be named in `sort` (unrecognised
|
|
679
|
+
* fields are silently ignored by the backend validator) and the default
|
|
680
|
+
* ordering is the first entry, descending. Empty: the backend applies
|
|
681
|
+
* any requested field verbatim and defaults to `createdAt:desc`.
|
|
682
|
+
*/
|
|
683
|
+
pagination: z.ZodOptional<z.ZodObject<{
|
|
684
|
+
maxLimit: z.ZodNumber;
|
|
685
|
+
sortableFields: z.ZodArray<z.ZodString>;
|
|
686
|
+
}, z.core.$strict>>;
|
|
687
|
+
/**
|
|
688
|
+
* Path of the asynchronous callback (`API_CALL_WITH_CALLBACK` only).
|
|
689
|
+
* The generator turns this into an OpenAPI `callbacks:` block
|
|
690
|
+
* referencing the same `responseBodySchema`.
|
|
691
|
+
*/
|
|
692
|
+
callbackPath: z.ZodOptional<z.ZodString>;
|
|
693
|
+
/**
|
|
694
|
+
* Tier-3 authored HTTP documentation, projected from the resource
|
|
695
|
+
* specification's operation overlay. All optional; when present the
|
|
696
|
+
* generator emits real `responses` (success + error), request/response
|
|
697
|
+
* `examples`, an `x-idempotent` extension, and a rate-limit note instead of
|
|
698
|
+
* the default single `200`/`204`. `code` / `forStatus` are OpenAPI status
|
|
699
|
+
* keys (`'200'`, `'404'`, …).
|
|
700
|
+
*/
|
|
701
|
+
responseStatuses: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
702
|
+
code: z.ZodString;
|
|
703
|
+
meaning: z.ZodString;
|
|
704
|
+
}, z.core.$strict>>>;
|
|
705
|
+
errorScenarios: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
706
|
+
code: z.ZodString;
|
|
707
|
+
when: z.ZodString;
|
|
708
|
+
errorCode: z.ZodOptional<z.ZodString>;
|
|
709
|
+
}, z.core.$strict>>>;
|
|
710
|
+
idempotent: z.ZodOptional<z.ZodBoolean>;
|
|
711
|
+
rateLimitNote: z.ZodOptional<z.ZodString>;
|
|
712
|
+
examples: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
713
|
+
title: z.ZodString;
|
|
714
|
+
request: z.ZodOptional<z.ZodUnknown>;
|
|
715
|
+
response: z.ZodOptional<z.ZodUnknown>;
|
|
716
|
+
forStatus: z.ZodOptional<z.ZodString>;
|
|
717
|
+
}, z.core.$strict>>>;
|
|
718
|
+
}, z.core.$strict>>;
|
|
719
|
+
/**
|
|
720
|
+
* JSON Schema for the canonical framework HTTP error envelope. The
|
|
721
|
+
* subprocess converts the same `ErrorResponseSchema` the backend serializes;
|
|
722
|
+
* the generator registers it once as `components.schemas.ErrorResponse` and
|
|
723
|
+
* references it from every documented non-success response. Keeping this
|
|
724
|
+
* here makes the OpenAPI document an exact projection of the runtime wire
|
|
725
|
+
* contract rather than a renderer-owned approximation.
|
|
726
|
+
*/
|
|
727
|
+
errorResponseSchema: z.ZodUnknown;
|
|
728
|
+
/**
|
|
729
|
+
* Optional resource → tag-description descriptors. The generator emits each
|
|
730
|
+
* one as an OpenAPI top-level `tags[].description` for the tags it derives
|
|
731
|
+
* from a section's operations; resources without a descriptor still get a
|
|
732
|
+
* bare `{ name }` tag. Order-independent (the generator looks up by `name`).
|
|
733
|
+
*/
|
|
734
|
+
resourceTags: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
735
|
+
/** Must equal the `resourceIdentifier` the generator derives the tag from. */
|
|
736
|
+
name: z.ZodString;
|
|
737
|
+
/** Business-purpose prose for the resource group. */
|
|
738
|
+
description: z.ZodOptional<z.ZodString>;
|
|
739
|
+
/** Specification-owned explanation of how this resource changes over time. */
|
|
740
|
+
lifecycleRole: z.ZodOptional<z.ZodString>;
|
|
741
|
+
/** Compiled relationship facts relevant to this resource. */
|
|
742
|
+
relationships: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
743
|
+
relatedResourceName: z.ZodString;
|
|
744
|
+
/** Resolved FK identity when the relationship is represented by a field. */
|
|
745
|
+
foreignKeyField: z.ZodOptional<z.ZodString>;
|
|
746
|
+
resourceCardinality: z.ZodEnum<typeof ResourceRelationshipDocumentationCardinality>;
|
|
747
|
+
relatedResourceCardinality: z.ZodEnum<typeof ResourceRelationshipDocumentationCardinality>;
|
|
748
|
+
nature: z.ZodEnum<typeof ResourceRelationshipDocumentationNature>;
|
|
749
|
+
lifecycleModel: z.ZodEnum<typeof ResourceRelationshipDocumentationLifecycleModel>;
|
|
750
|
+
onParentDelete: z.ZodOptional<z.ZodObject<{
|
|
751
|
+
enabled: z.ZodBoolean;
|
|
752
|
+
mode: z.ZodEnum<typeof ResourceRelationshipDocumentationDeleteMode>;
|
|
753
|
+
strategy: z.ZodEnum<typeof ResourceRelationshipDocumentationDeleteStrategy>;
|
|
754
|
+
maxDepth: z.ZodNumber;
|
|
755
|
+
}, z.core.$strict>>;
|
|
756
|
+
}, z.core.$strict>>>;
|
|
757
|
+
/** Explicit application-owned API-reference navigation grouping. */
|
|
758
|
+
category: z.ZodOptional<z.ZodObject<{
|
|
759
|
+
/** Stable, readable public identity used in API-reference fragments. */
|
|
760
|
+
id: z.ZodString;
|
|
761
|
+
/** Consumer-facing category label displayed by the renderer. */
|
|
762
|
+
label: z.ZodString;
|
|
763
|
+
/** Optional category orientation supplied by the application, never React. */
|
|
764
|
+
description: z.ZodOptional<z.ZodString>;
|
|
765
|
+
}, z.core.$strict>>;
|
|
766
|
+
}, z.core.$strict>>>;
|
|
767
|
+
/**
|
|
768
|
+
* Optional OpenAPI `servers[]` — the base URLs the API is reachable at.
|
|
769
|
+
* App-enriched via `WildoTechnicalDocConfig.apiServers` (deployment URLs are
|
|
770
|
+
* application/environment knowledge, not framework knowledge). When omitted
|
|
771
|
+
* the generator emits no `servers` block (back-compatible with the
|
|
772
|
+
* pre-servers output). Each entry is `{ url, description? }`.
|
|
773
|
+
*/
|
|
774
|
+
servers: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
775
|
+
/**
|
|
776
|
+
* Base URL — the bare ORIGIN the API is served from, e.g.
|
|
777
|
+
* `http://localhost:4241` or `https://api.example.com`. Do NOT append the
|
|
778
|
+
* `/api/v1` mount: the generated operation `paths` are already mount-prefixed
|
|
779
|
+
* (`/api/v1/...`), and the effective request URL is `server.url` + path — so
|
|
780
|
+
* including the mount here would DOUBLE it (`…/api/v1/api/v1/...`).
|
|
781
|
+
*/
|
|
782
|
+
url: z.ZodString;
|
|
783
|
+
/** Optional human label shown in the docs server picker (e.g. "Production"). */
|
|
784
|
+
description: z.ZodOptional<z.ZodString>;
|
|
785
|
+
}, z.core.$strict>>>;
|
|
786
|
+
/**
|
|
787
|
+
* Optional app-authored markdown intro for the API reference landing page,
|
|
788
|
+
* from `WildoTechnicalDocConfig.apiOverview`. The generator PREPENDS it to the
|
|
789
|
+
* framework-universal "## API conventions" block (auth / pagination /
|
|
790
|
+
* idempotency / errors — which it always emits) to form `info.description`.
|
|
791
|
+
* App enrichment: the conventions are framework knowledge; the overview is the
|
|
792
|
+
* app's own framing.
|
|
793
|
+
*/
|
|
794
|
+
apiOverview: z.ZodOptional<z.ZodString>;
|
|
795
|
+
}, z.core.$strict>;
|
|
796
|
+
export type OpenApiGenerationInput = z.infer<typeof OpenApiGenerationInputSchema>;
|
|
797
|
+
//# sourceMappingURL=operation-projection.schemas.d.ts.map
|