39 lines
1.3 KiB
Markdown
39 lines
1.3 KiB
Markdown
# Schema Contracts
|
|
|
|
## Supported Schemas
|
|
- `normalized_query_v1`
|
|
- file: `backend/src/schemas/normalized_query_v1.json`
|
|
- `normalized_query_v2`
|
|
- file: `backend/src/schemas/normalized_query_v2.json`
|
|
- `normalized_query_v2_0_1`
|
|
- file: `backend/src/schemas/normalized_query_v2_0_1.json`
|
|
- `normalized_query_v2_0_2`
|
|
- file: `backend/src/schemas/normalized_query_v2_0_2.json`
|
|
|
|
Root aliases in `/schemas`:
|
|
- `schemas/normalized_query_v2.json`
|
|
- `schemas/normalized_query_v2_0_1.json`
|
|
- `schemas/normalized_query_v2_0_2.json`
|
|
|
|
## v2.0.2 Additions
|
|
Fragment-level required fields:
|
|
- `execution_readiness`
|
|
- `route_status`
|
|
- `no_route_reason`
|
|
|
|
Enums:
|
|
- `execution_readiness`: `executable | executable_with_soft_assumptions | needs_clarification | no_route`
|
|
- `route_status`: `routed | no_route`
|
|
- `no_route_reason`: `out_of_scope | insufficient_specificity | missing_mapping | unsupported_fragment_type`
|
|
|
|
Consistency rules in schema:
|
|
- If `route_status=no_route` then `no_route_reason` must be non-null enum value.
|
|
- If `route_status=routed` then `no_route_reason` must be `null`.
|
|
|
|
## Validation API
|
|
Backend validates via AJV:
|
|
- `validateNormalized(payload, "v1")`
|
|
- `validateNormalized(payload, "v2")`
|
|
- `validateNormalized(payload, "v2_0_1")`
|
|
- `validateNormalized(payload, "v2_0_2")`
|