@kozou/api 0.2.1 → 1.0.0

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/README.md CHANGED
@@ -1,57 +1,164 @@
1
1
  # @kozou/api
2
2
 
3
- > **Experimental (Kozou v0.2).** Published to npm as an experimental
4
- > preview; the API and wire format may change without notice while the
5
- > package is stabilising.
3
+ > **Stable (Kozou v1.0).** The REST wire format, query grammar, and OpenAPI
4
+ > extensions documented below are a stable contract: they will not change
5
+ > incompatibly without a major release. The one part still evolving is the
6
+ > composite-foreign-key relation shape — see [Stability](#stability).
6
7
 
7
8
  Kozou's own REST layer. Given a `SchemaContext` (from `@kozou/introspect`
8
9
  + `@kozou/core`) and a PostgreSQL connection, it serves the tables and
9
10
  views of your database as a REST API, driven entirely by your DDL and
10
11
  `COMMENT` metadata — no hand-written route code.
11
12
 
12
- This is the in-house data layer that Kozou v1.0 will make the default
13
- (see the Kozou v0.2 design spec, §1–§4). The Admin UI talks to it through
14
- the same `DataAdapter` seam (`@kozou/core`) it already uses, so swapping
15
- the data layer is not a breaking change for UI code.
13
+ This is the in-house data layer that Kozou v1.0 makes the default backend.
14
+ The Admin UI talks to it through the same `DataAdapter` seam (`@kozou/core`)
15
+ it already uses, so swapping the data layer is not a breaking change for UI
16
+ code.
16
17
 
17
- ## Status (v0.2 Phase 1–3 — read + write + OpenAPI)
18
+ ## API
18
19
 
19
- Implemented:
20
+ ### Service
20
21
 
21
- - `GET /` — service info + the list of available resources.
22
- - `GET /<resource>`list rows of a table or view, with:
23
- - `page` (1-based) / `pageSize` pagination,
24
- - `sort=field.asc,other.desc` ordering,
25
- - `search=<text>` free-text `ILIKE` across text columns,
26
- - `<column>=<value>` equality filters.
27
- Returns `{ rows, total, page, pageSize }`.
22
+ - `GET /` — service info (name, version) and the list of available resources.
23
+ - `GET /openapi.json`an OpenAPI 3.1 document for the whole API
24
+ (see [OpenAPI](#openapi)).
25
+
26
+ ### Reading
27
+
28
+ - `GET /<resource>` — list rows of a table or view. Returns
29
+ `{ rows, total, page, pageSize }`. Supports:
30
+ - **pagination** — `page` (1-based) and `pageSize` (`LIMIT` / `OFFSET`, capped);
31
+ - **sort** — `sort=field.asc,other.desc`;
32
+ - **filter** — `<column>=<op>.<value>` (see [Filtering](#filtering));
33
+ - **free-text search** — `search=<text>` (`ILIKE` across text columns);
34
+ - **embedding** — `embed=<relation-chain>` (see [Embedding](#embedding)).
35
+ - `GET /<resource>/<id>` — fetch a single table row by primary key. For a
36
+ composite primary key, `<id>` is the key columns in declaration order,
37
+ comma-joined in one path segment (`/order_lines/42,3`); `embed` is
38
+ supported here too. Returns the row, or `404`.
28
39
  - `GET /<resource>?as=options&label=<col>&fields=<a,b>&q=<text>&limit=<n>`
29
40
  — lightweight relation-select lookup. Returns `{ options: [{ id, label }] }`.
30
- - `GET /<resource>/<id>` — fetch a single table row by its single-column
31
- primary key. Returns the row, or `404`.
41
+
42
+ ### Writing
43
+
32
44
  - `POST /<resource>` — create a row from a JSON body; returns `201` + the
33
45
  created row. An empty body inserts a row of column defaults.
34
46
  - `PATCH /<resource>/<id>` — update the supplied columns; returns the row,
35
47
  or `404`.
36
48
  - `DELETE /<resource>/<id>` — delete by primary key; returns the deleted
37
49
  row, or `404`.
38
- - `GET /openapi.json` — an OpenAPI 3.1 document for the whole API.
39
- Descriptions, `enum`s, and AI notes are sourced from the database
40
- `COMMENT`s: table/view/column descriptions become schema `description`s,
41
- `@ai:` notes become `x-kozou-ai`, CHECK / ENUM members become `enum`,
42
- and the resolved widget becomes `x-kozou-widget`.
43
50
 
44
51
  Writes are rejected on views (`405`) and on unknown columns (`400`).
45
52
 
46
- Deferred to later phases (Kozou v0.2 design spec §4):
47
-
48
- - Phase 4: a `KozouApiDataAdapter` so the Admin UI can run against this
49
- server, plus CLI integration.
53
+ ### Filtering
54
+
55
+ List filters use a `<column>=<op>.<value>` grammar:
56
+
57
+ | operator | meaning |
58
+ |---|---|
59
+ | `eq` / `neq` | equal / not equal |
60
+ | `gt` / `gte` / `lt` / `lte` | range comparisons |
61
+ | `like` / `ilike` | pattern match (`*` is the wildcard) |
62
+ | `in` | membership — `in.(a,b,c)` |
63
+ | `is` | `is.null` / `is.notnull` / `is.true` / `is.false` |
64
+
65
+ A bare value (`status=paid`) is shorthand for `eq` and stays backward
66
+ compatible. Repeating a column ANDs its filters (e.g. a `gte` + `lt` range).
67
+ A value that itself looks like an operator can be forced to equality with an
68
+ explicit `eq.` prefix (`name=eq.gt.5`). Operators are a fixed allowlist, the
69
+ column is checked against the schema, and every value is passed as a bound
70
+ parameter — nothing is interpolated into SQL text. Values for the common
71
+ scalar families (integer, numeric / float, boolean) are validated up front
72
+ and rejected with a `400`; values for other types are enforced by
73
+ PostgreSQL.
74
+
75
+ ### Embedding
76
+
77
+ `embed=<relation-chain>` inlines related rows as nested JSON, on both list
78
+ and item reads:
79
+
80
+ - forward (to-one) and reverse (to-many) relations, mixed in one request;
81
+ - dot-separated chains up to 5 deep (`embed=order.customer.region`);
82
+ - comma-separated for several relations (`embed=customer,lines`);
83
+ - up to 25 distinct relations per request, and up to 100 child rows inlined
84
+ per parent for a to-many relation.
85
+
86
+ To-many embeds are rendered as a JSON array ordered by the child's primary
87
+ key. Many-to-many is expressed by naming the junction explicitly
88
+ (`embed=link.far`); there is no automatic flattening of junction tables.
89
+
90
+ ### OpenAPI
91
+
92
+ `GET /openapi.json` returns an OpenAPI 3.1 document generated from the
93
+ schema. Database `COMMENT`s drive it: table / view / column descriptions
94
+ become schema `description`s, CHECK / ENUM members become `enum`, and
95
+ Kozou's `@`-annotations become vendor extensions:
96
+
97
+ - `@ai:` notes → `x-kozou-ai`
98
+ - the resolved widget → `x-kozou-widget`
99
+ - `@policy:` advisories → `x-kozou-policy`
100
+ - embeddable relations → `x-kozou-embeds` (with `cardinality`)
101
+
102
+ The document models the schema, the `x-kozou-*` metadata, and the list /
103
+ item / CRUD surface. A few runtime behaviors are enforced by the server but
104
+ not yet fully modeled in the generated document: create accepts an empty body
105
+ (column defaults) and `PATCH` accepts a partial column subset, the
106
+ `as=options` relation-select mode shares the collection path, and ambiguous
107
+ embeds are rejected at request time. These are being refined; the wire
108
+ behavior itself is stable.
109
+
110
+ ## Stability
111
+
112
+ Stable as of Kozou v1.0 (covered by semantic versioning — no incompatible
113
+ change without a major release):
114
+
115
+ - the REST envelopes — the list `{ rows, total, page, pageSize }`, the item
116
+ shape, and the create / update / delete return shapes;
117
+ - the query grammar — pagination, `sort`, the `<column>=<op>.<value>` filter
118
+ grammar, `as=options`, and `embed`;
119
+ - the `GET /openapi.json` document — OpenAPI 3.1 plus the `x-kozou-ai` /
120
+ `x-kozou-widget` / `x-kozou-policy` / `x-kozou-embeds` extensions;
121
+ - the auth boundary — JWT claims mapped to `SET LOCAL ROLE` (see below).
122
+
123
+ Still evolving (not yet covered by the stability guarantee):
124
+
125
+ - the **composite-foreign-key relation shape**. A composite FK is surfaced
126
+ as a `BuildIssue` rather than silently dropped, but embedding and
127
+ relation-select over a composite FK are a fast-follow, so the relation
128
+ shape they will take is not frozen yet.
129
+ - the **`@kozou/codegen`** output (a separate package, still experimental).
130
+
131
+ ## Scope: default coverage vs PostgREST opt-out
132
+
133
+ `@kozou/api` covers the relational REST surface most schemas need; Kozou
134
+ v1.0 makes it the default backend. Deployments that need a feature in the
135
+ "opt-out" column can stay on (or switch back to) the PostgREST adapter
136
+ (`adapter: postgrest`) — see the migration notes in the `kozou` package. The
137
+ intent is no silent gap: the in-house backend by default, PostgREST as a
138
+ deliberate opt-out.
139
+
140
+ | Capability | `@kozou/api` (v1.0 default) | Notes |
141
+ |---|---|---|
142
+ | Table CRUD | ✅ (incl. composite primary keys) | item routes (get/update/delete by id) need a primary key — single or composite; a primary-key-less table gets list + create only |
143
+ | Views | ✅ read-only / list | no item-by-id, writes are `405`, no embedding from a view |
144
+ | Embed 1:1 / many-to-1 / 1-to-many | ✅ `embed=` (mixed direction, multi-hop) | forward to-one + reverse to-many |
145
+ | Many-to-many | △ name the junction and chain (`embed=link.far`) | no automatic junction flattening |
146
+ | Relation-select | ✅ `as=options&label=&q=` | composite PK / FK support is a fast-follow |
147
+ | Filter operators | ✅ `eq` / `neq` / `gt` / `gte` / `lt` / `lte` / `like` / `ilike` / `in` / `is` | |
148
+ | Sort / pagination | ✅ | `sort`, `page` / `pageSize` |
149
+ | COMMENT-native OpenAPI 3.1 (`x-kozou-*`) | ✅ | **Kozou's differentiator** — PostgREST treats COMMENTs as opaque text |
150
+ | JWT + RLS (`SET LOCAL ROLE`) | ✅ | |
151
+ | RPC (Postgres functions) | ❌ opt-out | |
152
+ | Full-text search (fts) | ❌ opt-out | approximate with `ilike` |
153
+ | Vertical select (column projection) | ❌ opt-out | always returns all columns |
154
+ | Writable views (`INSTEAD OF`) | ❌ opt-out | views are read-only |
155
+ | Upsert / bulk insert | ❌ opt-out | |
156
+ | Automatic M:N flattening | ❌ opt-out | name the junction instead |
50
157
 
51
158
  ## Security boundary
52
159
 
53
160
  By default the API ships with **no authentication** and binds to
54
- `127.0.0.1` (like the MCP HTTP server, Kozou v0.1 spec §18.5); it prints a
161
+ `127.0.0.1` (like the MCP HTTP server); it prints a
55
162
  loud warning when bound to a non-loopback host. Run the unauthenticated
56
163
  server only inside a trusted boundary (local dev, a docker-compose network).
57
164
 
package/dist/handler.d.ts CHANGED
@@ -30,6 +30,10 @@ export type ApiHttpResult = {
30
30
  status: number;
31
31
  body: unknown;
32
32
  };
33
+ /** List query keys consumed as controls (not column filters). Shared with the
34
+ * OpenAPI generator so it never advertises a control key as a filterable
35
+ * column. */
36
+ export declare const RESERVED_PARAMS: Set<string>;
33
37
  export declare function handleApiRequest(deps: ApiHandlerDeps, req: ApiHttpRequest): Promise<ApiHttpResult>;
34
38
  export declare function parseListParams(query: URLSearchParams): ListQueryParams;
35
39
  //# sourceMappingURL=handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../src/handler.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAY,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAOL,KAAK,eAAe,EAErB,MAAM,oBAAoB,CAAC;AAG5B,2EAA2E;AAC3E,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;CACpD,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,SAAS,CAAC;IACd,MAAM,EAAE,cAAc,CAAC;IACvB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,eAAe,CAAC;IACvB,yEAAyE;IACzE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;8BAC0B;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;CACzD,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAIF,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,cAAc,EACpB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,aAAa,CAAC,CAUxB;AAkLD,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,eAAe,CAuBvE"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../src/handler.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAY,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAOL,KAAK,eAAe,EAIrB,MAAM,oBAAoB,CAAC;AAG5B,2EAA2E;AAC3E,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;CACpD,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,SAAS,CAAC;IACd,MAAM,EAAE,cAAc,CAAC;IACvB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,eAAe,CAAC;IACvB,yEAAyE;IACzE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;8BAC0B;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;CACzD,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAEF;;cAEc;AACd,eAAO,MAAM,eAAe,aAA2D,CAAC;AAExF,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,cAAc,EACpB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,aAAa,CAAC,CAUxB;AAkLD,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,eAAe,CA0BvE"}
package/dist/handler.js CHANGED
@@ -4,7 +4,10 @@
4
4
  import { KozouApiError, badRequest, errorBody, methodNotAllowed, notFound } from './errors.js';
5
5
  import { buildGetQuery, buildListQuery, buildInsertQuery, buildUpdateQuery, buildDeleteQuery, buildRelationOptionsQuery, } from './query-builder.js';
6
6
  import { parseEmbedParam, resolveEmbedSpec } from './embed.js';
7
- const RESERVED_PARAMS = new Set(['page', 'pageSize', 'sort', 'search', 'embed']);
7
+ /** List query keys consumed as controls (not column filters). Shared with the
8
+ * OpenAPI generator so it never advertises a control key as a filterable
9
+ * column. */
10
+ export const RESERVED_PARAMS = new Set(['page', 'pageSize', 'sort', 'search', 'embed']);
8
11
  export async function handleApiRequest(deps, req) {
9
12
  try {
10
13
  return await route(deps, req);
@@ -168,16 +171,71 @@ export function parseListParams(query) {
168
171
  const sort = parseSort(query.get('sort'));
169
172
  if (sort.length > 0)
170
173
  params.sort = sort;
171
- const filters = {};
174
+ // Each non-reserved query entry is one horizontal filter. Repeated keys are
175
+ // kept (not collapsed) so a column can carry several filters — e.g. a
176
+ // `?price=gte.10&price=lte.20` range — that combine with AND.
177
+ const filters = [];
172
178
  for (const [key, value] of query.entries()) {
173
179
  if (RESERVED_PARAMS.has(key))
174
180
  continue;
175
- filters[key] = value; // last value wins on repeated keys
181
+ filters.push(parseFilter(key, value));
176
182
  }
177
- if (Object.keys(filters).length > 0)
183
+ if (filters.length > 0)
178
184
  params.filters = filters;
179
185
  return params;
180
186
  }
187
+ const FILTER_OPERATORS = new Set([
188
+ 'eq',
189
+ 'neq',
190
+ 'gt',
191
+ 'gte',
192
+ 'lt',
193
+ 'lte',
194
+ 'like',
195
+ 'ilike',
196
+ 'in',
197
+ 'is',
198
+ ]);
199
+ function isFilterOperator(token) {
200
+ return FILTER_OPERATORS.has(token);
201
+ }
202
+ /**
203
+ * Parse one `?<column>=<raw>` entry into a structured {@link Filter}.
204
+ *
205
+ * Grammar: `<op>.<value>` where `op` is one of the known operators; the split
206
+ * is on the FIRST `.` only (so values may contain dots). A value whose prefix
207
+ * is not a known operator — or which has no leading `op.` at all — is treated
208
+ * as an equality match, keeping the legacy `?<column>=<value>` form working.
209
+ * The split uses `indexOf`, not a regular expression (ReDoS-safe).
210
+ */
211
+ function parseFilter(column, raw) {
212
+ const dot = raw.indexOf('.');
213
+ if (dot > 0) {
214
+ const maybeOp = raw.slice(0, dot);
215
+ if (isFilterOperator(maybeOp)) {
216
+ return buildFilter(column, maybeOp, raw.slice(dot + 1));
217
+ }
218
+ }
219
+ return { column, op: 'eq', value: raw };
220
+ }
221
+ function buildFilter(column, op, rhs) {
222
+ if (op === 'in') {
223
+ if (rhs.length < 2 || rhs[0] !== '(' || rhs[rhs.length - 1] !== ')') {
224
+ throw badRequest(`Filter "${column}=in.${rhs}" must look like "in.(v1,v2,...)".`);
225
+ }
226
+ const inner = rhs.slice(1, -1);
227
+ // Note: values cannot contain a comma (no quoting is supported in v1.0).
228
+ const values = inner.length === 0 ? [] : inner.split(',');
229
+ return { column, op: 'in', values };
230
+ }
231
+ if (op === 'is') {
232
+ if (rhs === 'null' || rhs === 'notnull' || rhs === 'true' || rhs === 'false') {
233
+ return { column, op: 'is', keyword: rhs };
234
+ }
235
+ throw badRequest(`Filter "${column}=is.${rhs}" must be one of is.null, is.notnull, is.true, is.false.`);
236
+ }
237
+ return { column, op, value: rhs };
238
+ }
181
239
  function parsePositiveInt(raw) {
182
240
  if (raw === null || raw.length === 0)
183
241
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../src/handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../src/handler.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,7 +2,7 @@ export { startApiServer, createApiRequestListener, isLoopbackHost, type StartApi
2
2
  export { createAuthenticator, signServiceToken, type AuthConfig, type AuthContext, type Authenticator, type JwtAlgorithm, type ServiceTokenOptions, } from './auth.js';
3
3
  export { handleApiRequest, parseListParams, type Queryable, type ApiHandlerDeps, type ApiHttpRequest, type ApiHttpResult, } from './handler.js';
4
4
  export { buildResourceLookup, type Resource, type ResourceKind, type ResourceLookup, type ReverseRelation, } from './schema-lookup.js';
5
- export { buildListQuery, buildGetQuery, buildInsertQuery, buildUpdateQuery, buildDeleteQuery, buildRelationOptionsQuery, quoteIdent, DEFAULT_PAGE_SIZE, MAX_PAGE_SIZE, DEFAULT_RELATION_LIMIT, MAX_RELATION_LIMIT, type ListQueryParams, type BuiltListQuery, type BuiltGetQuery, type BuiltMutation, type RelationOptionsParams, type BuiltRelationOptions, type SortDirection, } from './query-builder.js';
5
+ export { buildListQuery, buildGetQuery, buildInsertQuery, buildUpdateQuery, buildDeleteQuery, buildRelationOptionsQuery, quoteIdent, DEFAULT_PAGE_SIZE, MAX_PAGE_SIZE, DEFAULT_RELATION_LIMIT, MAX_RELATION_LIMIT, type ListQueryParams, type BuiltListQuery, type BuiltGetQuery, type BuiltMutation, type RelationOptionsParams, type BuiltRelationOptions, type SortDirection, type Filter, type FilterOperator, type ScalarFilterOperator, type IsKeyword, } from './query-builder.js';
6
6
  export { buildOpenApiDocument, type OpenApiOptions } from './openapi.js';
7
7
  export { parseEmbedParam, resolveEmbedSpec, buildEmbedSelectFragment, MAX_EMBED_DEPTH, MAX_EMBED_RELATIONS, MAX_EMBED_CHILDREN, type EmbedKind, type EmbedNode, type EmbedSpec, } from './embed.js';
8
8
  export { KozouApiError, type ApiErrorBody } from './errors.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,cAAc,GACpB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,mBAAmB,GACzB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,aAAa,GACnB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,mBAAmB,EACnB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,yBAAyB,EACzB,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,sBAAsB,EACtB,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,aAAa,GACnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,oBAAoB,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAEzE,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,wBAAwB,EACxB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,SAAS,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,cAAc,GACpB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,mBAAmB,GACzB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,aAAa,GACnB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,mBAAmB,EACnB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,yBAAyB,EACzB,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,sBAAsB,EACtB,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,SAAS,GACf,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,oBAAoB,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAEzE,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,wBAAwB,EACxB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,SAAS,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
- // @kozou/api: Kozou's own REST layer (experimental, Kozou v0.2).
2
- // Serves the tables and views of a SchemaContext as a REST API. See the
3
- // Kozou v0.2 design spec §2–§4.
1
+ // @kozou/api: Kozou's own REST layer the default `kozou dev` data backend.
2
+ // Serves the tables and views of a SchemaContext as a REST API. Its wire
3
+ // format and OpenAPI are a stable contract as of Kozou v1.0; see the README
4
+ // for the supported surface and the scope table.
4
5
  export { startApiServer, createApiRequestListener, isLoopbackHost, } from './startApiServer.js';
5
6
  export { createAuthenticator, signServiceToken, } from './auth.js';
6
7
  export { handleApiRequest, parseListParams, } from './handler.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,wEAAwE;AACxE,gCAAgC;AAEhC,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,cAAc,GAKf,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,mBAAmB,EACnB,gBAAgB,GAMjB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,gBAAgB,EAChB,eAAe,GAKhB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,mBAAmB,GAKpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,yBAAyB,EACzB,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,sBAAsB,EACtB,kBAAkB,GAQnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,oBAAoB,EAAuB,MAAM,cAAc,CAAC;AAEzE,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,wBAAwB,EACxB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,GAInB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,aAAa,EAAqB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,yEAAyE;AACzE,4EAA4E;AAC5E,iDAAiD;AAEjD,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,cAAc,GAKf,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,mBAAmB,EACnB,gBAAgB,GAMjB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,gBAAgB,EAChB,eAAe,GAKhB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,mBAAmB,GAKpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,yBAAyB,EACzB,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,sBAAsB,EACtB,kBAAkB,GAYnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,oBAAoB,EAAuB,MAAM,cAAc,CAAC;AAEzE,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,wBAAwB,EACxB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,GAInB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,aAAa,EAAqB,MAAM,aAAa,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,aAAa,EAMd,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAK1C,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,EACrB,IAAI,GAAE,cAAmB,GACxB,UAAU,CAmDZ"}
1
+ {"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,aAAa,EAMd,MAAM,aAAa,CAAC;AAGrB,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAK1C,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,EACrB,IAAI,GAAE,cAAmB,GACxB,UAAU,CAuDZ"}
package/dist/openapi.js CHANGED
@@ -11,6 +11,7 @@
11
11
  //
12
12
  // Pure function — no I/O. The server builds the document once at start and
13
13
  // serves it at `GET /openapi.json`.
14
+ import { RESERVED_PARAMS } from './handler.js';
14
15
  export function buildOpenApiDocument(schema, opts = {}) {
15
16
  const resources = [
16
17
  ...schema.tables.map((t) => ({ resource: t, writable: true })),
@@ -43,8 +44,9 @@ export function buildOpenApiDocument(schema, opts = {}) {
43
44
  const ref = `#/components/schemas/${resource.qualifiedName}`;
44
45
  const relations = 'relations' in resource ? resource.relations : [];
45
46
  const reverse = reverseByParent.get(resource.qualifiedName) ?? [];
46
- schemas[resource.qualifiedName] = resourceSchema(resource, relations, reverse, knownQNames);
47
- Object.assign(paths, resourcePaths(resource, segmentFor(resource), ref, writable));
47
+ const embeds = embedHints(relations, reverse, knownQNames);
48
+ schemas[resource.qualifiedName] = resourceSchema(resource, embeds);
49
+ Object.assign(paths, resourcePaths(resource, segmentFor(resource), ref, writable, embeds.length > 0));
48
50
  }
49
51
  return {
50
52
  openapi: '3.1.0',
@@ -57,7 +59,7 @@ export function buildOpenApiDocument(schema, opts = {}) {
57
59
  components: { schemas },
58
60
  };
59
61
  }
60
- function resourceSchema(resource, relations, reverse, knownQNames) {
62
+ function resourceSchema(resource, embeds) {
61
63
  const properties = {};
62
64
  const required = [];
63
65
  for (const column of resource.columns) {
@@ -74,10 +76,10 @@ function resourceSchema(resource, relations, reverse, knownQNames) {
74
76
  schema['x-kozou-policy'] = resource.policy;
75
77
  if (required.length > 0)
76
78
  schema.required = required;
77
- // Embeddable relations, as a hint for clients building `?embed=`: forward
78
- // (to-one) plus reverse (to-many). Only targets that are themselves exposed
79
- // resources are listed.
80
- const embeds = embedHints(relations, reverse, knownQNames);
79
+ // Embeddable relations (forward to-one + reverse to-many, only targets that
80
+ // are themselves exposed resources), as a hint for clients building
81
+ // `?embed=`. Computed once by the caller and shared with the path builder so
82
+ // the `embed` query parameter is only advertised where it is usable.
81
83
  if (embeds.length > 0)
82
84
  schema['x-kozou-embeds'] = embeds;
83
85
  return schema;
@@ -150,14 +152,18 @@ function widgetType(widget) {
150
152
  return { type: 'string' };
151
153
  }
152
154
  }
153
- function resourcePaths(resource, segment, ref, writable) {
155
+ function resourcePaths(resource, segment, ref, writable, hasEmbeds) {
154
156
  const rowRef = { $ref: ref };
155
157
  const label = resource.label || resource.name;
158
+ // The `embed` parameter is only advertised where the resource has at least
159
+ // one embeddable relation; a non-empty `embed` on a relation-less resource
160
+ // (e.g. a view) is rejected with 400, so listing it would be misleading.
161
+ const embedParams = hasEmbeds ? [embedParam()] : [];
156
162
  const collection = {
157
163
  get: {
158
164
  summary: `List ${label}`,
159
165
  description: resource.description ?? undefined,
160
- parameters: [...listParameters(), embedParam()],
166
+ parameters: [...listParameters(), ...filterParameters(resource), ...embedParams],
161
167
  responses: {
162
168
  '200': jsonResponse(`A page of ${label}.`, listResultSchema(rowRef)),
163
169
  },
@@ -173,46 +179,67 @@ function resourcePaths(resource, segment, ref, writable) {
173
179
  },
174
180
  };
175
181
  }
176
- const idParam = {
177
- name: 'id',
178
- in: 'path',
179
- required: true,
180
- schema: { type: 'string' },
181
- description: 'Primary key of the row.',
182
- };
183
- const item = {
184
- get: {
185
- summary: `Fetch a ${label} row by id`,
186
- parameters: [idParam, embedParam()],
187
- responses: {
188
- '200': jsonResponse('The row.', rowRef),
189
- '404': errorResponse('No such row.'),
190
- },
191
- },
192
- };
193
- if (writable) {
194
- item.patch = {
195
- summary: `Update a ${label} row`,
196
- parameters: [idParam],
197
- requestBody: jsonBody(rowRef),
198
- responses: {
199
- '200': jsonResponse('The updated row.', rowRef),
200
- '404': errorResponse('No such row.'),
201
- },
202
- };
203
- item.delete = {
204
- summary: `Delete a ${label} row`,
205
- parameters: [idParam],
206
- responses: {
207
- '200': jsonResponse('The deleted row.', rowRef),
208
- '404': errorResponse('No such row.'),
182
+ const paths = { [`/${segment}`]: collection };
183
+ // Item-by-id routes only exist for resources addressable by a primary key.
184
+ // Views and primary-key-less tables cannot be fetched/updated/deleted by id
185
+ // (the request handler rejects such reads with 400), so the document must
186
+ // not advertise an item path for them.
187
+ const primaryKey = 'primaryKey' in resource ? resource.primaryKey : [];
188
+ if (primaryKey.length >= 1) {
189
+ const idParam = itemIdParam(resource);
190
+ const item = {
191
+ get: {
192
+ summary: `Fetch a ${label} row by id`,
193
+ parameters: [idParam, ...embedParams],
194
+ responses: {
195
+ '200': jsonResponse('The row.', rowRef),
196
+ '404': errorResponse('No such row.'),
197
+ },
209
198
  },
210
199
  };
200
+ if (writable) {
201
+ item.patch = {
202
+ summary: `Update a ${label} row`,
203
+ parameters: [idParam],
204
+ requestBody: jsonBody(rowRef),
205
+ responses: {
206
+ '200': jsonResponse('The updated row.', rowRef),
207
+ '404': errorResponse('No such row.'),
208
+ },
209
+ };
210
+ item.delete = {
211
+ summary: `Delete a ${label} row`,
212
+ parameters: [idParam],
213
+ responses: {
214
+ '200': jsonResponse('The deleted row.', rowRef),
215
+ '404': errorResponse('No such row.'),
216
+ },
217
+ };
218
+ }
219
+ paths[`/${segment}/{id}`] = item;
211
220
  }
212
- return {
213
- [`/${segment}`]: collection,
214
- [`/${segment}/{id}`]: item,
215
- };
221
+ return paths;
222
+ }
223
+ /** The `{id}` path parameter. Only called for a resource with a non-empty
224
+ * primary key (the caller in `resourcePaths` guards on it). A composite
225
+ * primary key is addressed by comma-joining its components — in `primaryKey`
226
+ * declaration order — into the single `{id}` segment, each component
227
+ * percent-encoded. */
228
+ function itemIdParam(resource) {
229
+ const pk = 'primaryKey' in resource ? resource.primaryKey : [];
230
+ let description;
231
+ if (pk.length > 1) {
232
+ const cols = pk.map((c) => `\`${c}\``).join(', ');
233
+ description =
234
+ `Composite primary key: the components (${cols}) in this order, joined by an ` +
235
+ `unescaped comma in the single path segment. Percent-encode reserved characters ` +
236
+ `within a component; a component value cannot itself contain a comma (the segment ` +
237
+ `is split on commas after URL-decoding).`;
238
+ }
239
+ else {
240
+ description = `Primary key of the row (\`${pk[0]}\`).`;
241
+ }
242
+ return { name: 'id', in: 'path', required: true, schema: { type: 'string' }, description };
216
243
  }
217
244
  function listParameters() {
218
245
  return [
@@ -222,6 +249,19 @@ function listParameters() {
222
249
  queryParam('search', { type: 'string' }, 'Free-text ILIKE across text columns.'),
223
250
  ];
224
251
  }
252
+ /** Operators accepted by the `<column>=<op>.<value>` filter grammar. */
253
+ const FILTER_OPERATORS_DOC = 'eq, neq, gt, gte, lt, lte, like, ilike, in, is';
254
+ /** One query parameter per filterable column documenting the
255
+ * `<column>=<op>.<value>` grammar. Control keys (page/sort/…) are skipped so
256
+ * the doc never advertises them as filters. Multiple filters on one column
257
+ * combine with AND (e.g. a `gte`/`lte` range). */
258
+ function filterParameters(resource) {
259
+ return resource.columns
260
+ .filter((c) => !RESERVED_PARAMS.has(c.name))
261
+ .map((c) => queryParam(c.name, { type: 'string' }, `Filter on \`${c.name}\`: \`<op>.<value>\` where op is one of ${FILTER_OPERATORS_DOC} ` +
262
+ `(e.g. \`${c.name}=gte.10\`, \`${c.name}=in.(a,b)\`, \`${c.name}=is.null\`). ` +
263
+ `A bare value means \`eq\`. Repeat the key to AND several conditions.`));
264
+ }
225
265
  function queryParam(name, schema, description) {
226
266
  return { name, in: 'query', required: false, schema, description };
227
267
  }
@@ -1 +1 @@
1
- {"version":3,"file":"openapi.js","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openapi.js","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"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"}