@deepraxis/sdk 0.1.0-dev.48c1ce8 → 0.1.0-dev.4cbfc1f
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/dist/core/client.d.ts +5 -1
- package/dist/core/client.js +3 -0
- package/dist/core/transport.d.ts +5 -0
- package/dist/core/transport.js +6 -1
- package/dist/generated/sdk.gen.d.ts +10 -10
- package/dist/generated/sdk.gen.js +10 -10
- package/dist/generated/types.gen.d.ts +52 -49
- package/dist/helpers/database-count.d.ts +17 -0
- package/dist/helpers/database-count.js +11 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/operations.generated.d.ts +27 -27
- package/dist/operations.generated.js +27 -27
- package/dist/resources.generated.d.ts +7 -7
- package/package.json +1 -1
|
@@ -2,7 +2,7 @@ export declare const operations: readonly [{
|
|
|
2
2
|
readonly resource: "agent.agents";
|
|
3
3
|
readonly method: "list";
|
|
4
4
|
readonly summary: "List agents";
|
|
5
|
-
readonly description: "List the agents of the workspace behind your API key, newest first, in pages of at most 100 (default 20). Use it to find an agent id before creating a session; to read one agent use agents.retrieve, to see its history use agents.versions.list. Archived agents are hidden unless include_archived is true. Filter kind=personal for durable-computer agents or kind=
|
|
5
|
+
readonly description: "List the agents of the workspace behind your API key, newest first, in pages of at most 100 (default 20). Use it to find an agent id before creating a session; to read one agent use agents.retrieve, to see its history use agents.versions.list. Archived agents are hidden unless include_archived is true. Filter kind=personal for durable-computer agents or kind=service for per-session environments. Pass next_page from the response as page to read the next page; a null next_page means the end.";
|
|
6
6
|
readonly http: "GET";
|
|
7
7
|
readonly path: "/agent/v1/agents";
|
|
8
8
|
readonly streaming: "no";
|
|
@@ -37,7 +37,7 @@ export declare const operations: readonly [{
|
|
|
37
37
|
}, {
|
|
38
38
|
readonly name: "kind";
|
|
39
39
|
readonly type: "string";
|
|
40
|
-
readonly enum: readonly ["personal", "
|
|
40
|
+
readonly enum: readonly ["personal", "service"];
|
|
41
41
|
readonly required: false;
|
|
42
42
|
readonly description: "Filter agents by their immutable kind, including agents created before kind was recorded.";
|
|
43
43
|
}];
|
|
@@ -105,9 +105,9 @@ export declare const operations: readonly [{
|
|
|
105
105
|
}, {
|
|
106
106
|
readonly name: "kind";
|
|
107
107
|
readonly type: "string";
|
|
108
|
-
readonly enum: readonly ["personal", "
|
|
108
|
+
readonly enum: readonly ["personal", "service"];
|
|
109
109
|
readonly required: false;
|
|
110
|
-
readonly description: "Immutable agent kind. personal requires computer_id;
|
|
110
|
+
readonly description: "Immutable agent kind. personal requires computer_id; service cannot bind a computer. Omit on create to infer from computer_id. On update, the same kind is ignored; changing kind or crossing its computer binding returns 400 invalid_request_error.";
|
|
111
111
|
}, {
|
|
112
112
|
readonly name: "computer_id";
|
|
113
113
|
readonly type: "string";
|
|
@@ -239,9 +239,9 @@ export declare const operations: readonly [{
|
|
|
239
239
|
}, {
|
|
240
240
|
readonly name: "kind";
|
|
241
241
|
readonly type: "string";
|
|
242
|
-
readonly enum: readonly ["personal", "
|
|
242
|
+
readonly enum: readonly ["personal", "service"];
|
|
243
243
|
readonly required: false;
|
|
244
|
-
readonly description: "Immutable agent kind. personal requires computer_id;
|
|
244
|
+
readonly description: "Immutable agent kind. personal requires computer_id; service cannot bind a computer. Omit on create to infer from computer_id. On update, the same kind is ignored; changing kind or crossing its computer binding returns 400 invalid_request_error.";
|
|
245
245
|
}, {
|
|
246
246
|
readonly name: "computer_id";
|
|
247
247
|
readonly type: "string";
|
|
@@ -300,7 +300,7 @@ export declare const operations: readonly [{
|
|
|
300
300
|
readonly resource: "agent.agents.endUsers";
|
|
301
301
|
readonly method: "list";
|
|
302
302
|
readonly summary: "List End Users";
|
|
303
|
-
readonly description: "List users who have sessions or token issuance history on a
|
|
303
|
+
readonly description: "List users who have sessions or token issuance history on a service agent.\n\nOrdered by last_active_at and external_user_id descending. q is a case-sensitive literal prefix, including underscores. limit is 1–100, default 20. Reuse next_page with the same organization, agent, q and limit. Preemptively blocked users without history do not appear. End-user credentials and inaccessible or personal agents return 404.";
|
|
304
304
|
readonly http: "GET";
|
|
305
305
|
readonly path: "/agent/v1/agents/{agent_id}/end_users";
|
|
306
306
|
readonly streaming: "no";
|
|
@@ -329,7 +329,7 @@ export declare const operations: readonly [{
|
|
|
329
329
|
readonly resource: "agent.agents.endUsers";
|
|
330
330
|
readonly method: "delete";
|
|
331
331
|
readonly summary: "Delete end-user data";
|
|
332
|
-
readonly description: "Delete a host application's end-user data from one
|
|
332
|
+
readonly description: "Delete a host application's end-user data from one service agent after explicit confirmation.\n\nDevelop only. Set confirm to the exact external_user_id; missing or mismatched confirmation returns 400. Returns 202 with a pending task id, not completion. Poll the deletion endpoint. Concurrent requests reuse the unfinished task; retry DELETE after failure to resume it. Tokens are revoked and the user is blocked before a seven-day recovery snapshot is verified. Sessions including child sessions, conversation data, grants and feedback are then removed. A pre-existing block remains; a temporary block is removed on success. Attachment metadata is recorded and File attachments are retained. No charge is introduced by this operation. Example: DELETE /agent/v1/agents/agent_example/end_users/customer_123?confirm=customer_123.";
|
|
333
333
|
readonly http: "DELETE";
|
|
334
334
|
readonly path: "/agent/v1/agents/{agent_id}/end_users/{external_user_id}";
|
|
335
335
|
readonly streaming: "no";
|
|
@@ -1084,7 +1084,7 @@ export declare const operations: readonly [{
|
|
|
1084
1084
|
readonly name: "agent_id";
|
|
1085
1085
|
readonly type: "string";
|
|
1086
1086
|
readonly required: false;
|
|
1087
|
-
readonly description: "Filter by
|
|
1087
|
+
readonly description: "Filter by service agent identifier (agent_ or agt_ prefix).";
|
|
1088
1088
|
}, {
|
|
1089
1089
|
readonly name: "external_user_id";
|
|
1090
1090
|
readonly type: "string";
|
|
@@ -1105,7 +1105,7 @@ export declare const operations: readonly [{
|
|
|
1105
1105
|
readonly resource: "agent.embedTokens";
|
|
1106
1106
|
readonly method: "create";
|
|
1107
1107
|
readonly summary: "Create Embed Token";
|
|
1108
|
-
readonly description: "Issue a short-lived credential on your backend for an end user of a
|
|
1108
|
+
readonly description: "Issue a short-lived credential on your backend for an end user of a service agent.\n\nRequires an active service agent in your organization with an embed policy. Pins the requested version or the latest version and snapshots the policy environment, vaults and resources; metadata comes from the request. Blocked users cannot receive tokens. Keep your API key on the backend and pass only the returned token to the frontend. Every call creates a new grant; issuance is not idempotent. Set hosted to true to also receive hosted_url; redirect the user there within 60 seconds. The agent must have an identity_number. The URL fragment contains a single-use exchange credential, not the token. Omit hosted or set false for ordinary token issuance.";
|
|
1109
1109
|
readonly http: "POST";
|
|
1110
1110
|
readonly path: "/agent/v1/embed_tokens";
|
|
1111
1111
|
readonly streaming: "no";
|
|
@@ -1123,7 +1123,7 @@ export declare const operations: readonly [{
|
|
|
1123
1123
|
readonly name: "agent";
|
|
1124
1124
|
readonly type: "string";
|
|
1125
1125
|
readonly required: true;
|
|
1126
|
-
readonly description: "
|
|
1126
|
+
readonly description: "Service agent ID or identity_number from agent retrieval; it must belong to your organization and be active.";
|
|
1127
1127
|
}, {
|
|
1128
1128
|
readonly name: "version";
|
|
1129
1129
|
readonly type: "integer";
|
|
@@ -1185,7 +1185,7 @@ export declare const operations: readonly [{
|
|
|
1185
1185
|
readonly name: "publishable_key";
|
|
1186
1186
|
readonly type: "string";
|
|
1187
1187
|
readonly required: true;
|
|
1188
|
-
readonly description: "Public key created by the
|
|
1188
|
+
readonly description: "Public key created by the service agent owner; safe to include in browser code.";
|
|
1189
1189
|
}, {
|
|
1190
1190
|
readonly name: "visitor_secret";
|
|
1191
1191
|
readonly type: "string";
|
|
@@ -5502,7 +5502,7 @@ export declare const operations: readonly [{
|
|
|
5502
5502
|
readonly name: "{column}";
|
|
5503
5503
|
readonly type: "string";
|
|
5504
5504
|
readonly required: false;
|
|
5505
|
-
readonly description: "Horizontal filter: replace {column} with a field name or JSON path, e.g. title=eq.summary. Repeat for more columns.
|
|
5505
|
+
readonly description: "Horizontal filter: replace {column} with a field name or JSON path, e.g. title=eq.summary. Repeat for more columns. Supported operators: eq (equal), neq (not equal; ne is not supported), gt/gte/lt/lte (comparisons), like (case-sensitive text pattern), ilike (case-insensitive text pattern), in (membership), is (null/boolean test), cs (contains), cd (contained by), and ov (array overlap). For like/ilike, * or % matches any sequence and _ matches one character, e.g. title=ilike.*spring*; URL-encode a literal % as %25. Use days=in.(1,2,3), title=is.null, active=is.true or active=is.false; is.not_null and is.unknown are also accepted (unknown means null). Negate a condition with not., e.g. title=not.eq.draft. Multiple filters are ANDed; use or=(title.eq.a,title.eq.b), and=(days.gte.1,days.lte.3), not.or=(...) or not.and=(...), with nested and(...) and or(...) groups as needed. cs/cd accept JSON objects or arrays on JSON fields; cs also accepts a JSON scalar. For array values or multi-link fields, use cs.{a,b}, cd.{a,b} or ov.{a,b}. JSON paths use -> for JSON and ->> for text, e.g. attributes->>has_onsen=eq.true or attributes->tags=cs.[1,2]; chain -> segments and end with ->> for text. Dot paths such as attributes.has_onsen are unsupported. Full-text, regex, range operators and any/all modifiers are unsupported.";
|
|
5506
5506
|
}, {
|
|
5507
5507
|
readonly name: "and";
|
|
5508
5508
|
readonly type: "string";
|
|
@@ -5542,7 +5542,7 @@ export declare const operations: readonly [{
|
|
|
5542
5542
|
readonly name: "on_conflict";
|
|
5543
5543
|
readonly type: "string";
|
|
5544
5544
|
readonly required: false;
|
|
5545
|
-
readonly description: "POST upsert: id or one unique field with resolution=merge-duplicates|ignore-duplicates. POST accepts an optional client id matching [A-Za-z0-9_-]{1,64}; omitted ids are generated. PATCH cannot change id.";
|
|
5545
|
+
readonly description: "POST upsert: id or one unique field with resolution=merge-duplicates|ignore-duplicates. With resolution=merge-duplicates, a conflicting row keeps columns omitted from the request; supplied values replace the whole field value (including JSON objects), and explicit null clears a nullable field. With resolution=ignore-duplicates, a conflicting row is left unchanged. Without a conflict, both modes insert a new row using field defaults for omitted fields. In a batch, a key present in another row is filled with null when omitted in this row unless missing=default is set; that null can overwrite a value during merge. With missing=default, omitted keys stay omitted for conflict merges (existing values are preserved); new rows use defaults, or null when no default exists. Explicit null never invokes a default. POST accepts an optional client id matching [A-Za-z0-9_-]{1,64}; omitted ids are generated. PATCH cannot change id.";
|
|
5546
5546
|
}, {
|
|
5547
5547
|
readonly name: "columns";
|
|
5548
5548
|
readonly type: "string";
|
|
@@ -5553,7 +5553,7 @@ export declare const operations: readonly [{
|
|
|
5553
5553
|
readonly resource: "database.databases.rest";
|
|
5554
5554
|
readonly method: "retrieve";
|
|
5555
5555
|
readonly summary: "Select rows";
|
|
5556
|
-
readonly description: "Read matching rows with filters, selected columns and ordering. Returns at most 1000 rows per request, including when limit is omitted. Content-Range reports the actual returned interval and the total when count is requested. PATCH and DELETE are not subject to this read cap. Unlike Supabase, casts, aggregates, spread and join modifiers are unsupported. Each table supports up to 1,000,000 rows. Query budget: 8,000 ms with a shared 3,000,000-row safety ceiling. Create indexes on filtered or sorted fields, or narrow the request when it exceeds its budget. Synchronous SQLite aggregates use candidate-row throughput estimates before execution; deployed Workers freeze clocks during synchronous CPU work, so the timer is not a guaranteed server-side interrupt. Count preferences: without filters, exact, planned and estimated all use SQLite's exact b-tree count. With filters, exact counts within budget; planned skips counting and reports an unknown total (Content-Range: 0-24/*); estimated attempts exact counting only when the preflight budget allows it, otherwise reports an unknown total. Preference-Applied echoes the requested count mode. Error table: QUERY_CANCELED / PostgREST 57014 is HTTP 500, retryable=false: Query timed out: index filtered or sorted fields, or narrow the range. DATABASE_INVALID_STATE is HTTP 409 for operations on a deleting database. Cleared or nonexistent databases return DATABASE_NOT_FOUND / HTTP 404. The count is an HTTP Content-Range response header, not a JSON property.
|
|
5556
|
+
readonly description: "Read matching rows with filters, selected columns and ordering. Returns at most 1000 rows per request, including when limit is omitted. Content-Range reports the actual returned interval and the total when count is requested. PATCH and DELETE are not subject to this read cap. Unlike Supabase, casts, aggregates, spread and join modifiers are unsupported. Each table supports up to 1,000,000 rows. Query budget: 8,000 ms with a shared 3,000,000-row safety ceiling. Create indexes on filtered or sorted fields, or narrow the request when it exceeds its budget. Synchronous SQLite aggregates use candidate-row throughput estimates before execution; deployed Workers freeze clocks during synchronous CPU work, so the timer is not a guaranteed server-side interrupt. Count preferences: without filters, exact, planned and estimated all use SQLite's exact b-tree count. With filters, exact counts within budget; planned skips counting and reports an unknown total (Content-Range: 0-24/*); estimated attempts exact counting only when the preflight budget allows it, otherwise reports an unknown total. Preference-Applied echoes the requested count mode. Error table: QUERY_CANCELED / PostgREST 57014 is HTTP 500, retryable=false: Query timed out: index filtered or sorted fields, or narrow the range. DATABASE_INVALID_STATE is HTTP 409 for operations on a deleting database. Cleared or nonexistent databases return DATABASE_NOT_FOUND / HTTP 404. The count is an HTTP Content-Range response header, not a JSON property. Use praxis.database.count in the SDK or codemode to return { count: number | null }; a page length is not a total unless you know all matches fit in that page.";
|
|
5557
5557
|
readonly http: "GET";
|
|
5558
5558
|
readonly path: "/database/v1/databases/{database_id}/rest/{table}";
|
|
5559
5559
|
readonly streaming: "no";
|
|
@@ -5574,7 +5574,7 @@ export declare const operations: readonly [{
|
|
|
5574
5574
|
readonly name: "{column}";
|
|
5575
5575
|
readonly type: "string";
|
|
5576
5576
|
readonly required: false;
|
|
5577
|
-
readonly description: "Horizontal filter: replace {column} with a field name or JSON path, e.g. title=eq.summary. Repeat for more columns.
|
|
5577
|
+
readonly description: "Horizontal filter: replace {column} with a field name or JSON path, e.g. title=eq.summary. Repeat for more columns. Supported operators: eq (equal), neq (not equal; ne is not supported), gt/gte/lt/lte (comparisons), like (case-sensitive text pattern), ilike (case-insensitive text pattern), in (membership), is (null/boolean test), cs (contains), cd (contained by), and ov (array overlap). For like/ilike, * or % matches any sequence and _ matches one character, e.g. title=ilike.*spring*; URL-encode a literal % as %25. Use days=in.(1,2,3), title=is.null, active=is.true or active=is.false; is.not_null and is.unknown are also accepted (unknown means null). Negate a condition with not., e.g. title=not.eq.draft. Multiple filters are ANDed; use or=(title.eq.a,title.eq.b), and=(days.gte.1,days.lte.3), not.or=(...) or not.and=(...), with nested and(...) and or(...) groups as needed. cs/cd accept JSON objects or arrays on JSON fields; cs also accepts a JSON scalar. For array values or multi-link fields, use cs.{a,b}, cd.{a,b} or ov.{a,b}. JSON paths use -> for JSON and ->> for text, e.g. attributes->>has_onsen=eq.true or attributes->tags=cs.[1,2]; chain -> segments and end with ->> for text. Dot paths such as attributes.has_onsen are unsupported. Full-text, regex, range operators and any/all modifiers are unsupported.";
|
|
5578
5578
|
}, {
|
|
5579
5579
|
readonly name: "and";
|
|
5580
5580
|
readonly type: "string";
|
|
@@ -5614,7 +5614,7 @@ export declare const operations: readonly [{
|
|
|
5614
5614
|
readonly name: "on_conflict";
|
|
5615
5615
|
readonly type: "string";
|
|
5616
5616
|
readonly required: false;
|
|
5617
|
-
readonly description: "POST upsert: id or one unique field with resolution=merge-duplicates|ignore-duplicates. POST accepts an optional client id matching [A-Za-z0-9_-]{1,64}; omitted ids are generated. PATCH cannot change id.";
|
|
5617
|
+
readonly description: "POST upsert: id or one unique field with resolution=merge-duplicates|ignore-duplicates. With resolution=merge-duplicates, a conflicting row keeps columns omitted from the request; supplied values replace the whole field value (including JSON objects), and explicit null clears a nullable field. With resolution=ignore-duplicates, a conflicting row is left unchanged. Without a conflict, both modes insert a new row using field defaults for omitted fields. In a batch, a key present in another row is filled with null when omitted in this row unless missing=default is set; that null can overwrite a value during merge. With missing=default, omitted keys stay omitted for conflict merges (existing values are preserved); new rows use defaults, or null when no default exists. Explicit null never invokes a default. POST accepts an optional client id matching [A-Za-z0-9_-]{1,64}; omitted ids are generated. PATCH cannot change id.";
|
|
5618
5618
|
}, {
|
|
5619
5619
|
readonly name: "columns";
|
|
5620
5620
|
readonly type: "string";
|
|
@@ -5625,7 +5625,7 @@ export declare const operations: readonly [{
|
|
|
5625
5625
|
readonly resource: "database.databases.rest";
|
|
5626
5626
|
readonly method: "head";
|
|
5627
5627
|
readonly summary: "Count rows";
|
|
5628
|
-
readonly description: "Inspect the HTTP row count and range without retrieving row data; send Prefer: count=exact for a filtered count. Returns no body and does not fetch or serialize row data. A known count determines the interval using limit/offset or Range with a default and maximum page size of 1000. Without a count preference, or when the selected count mode cannot supply a total, Content-Range is */*. Singular Accept still validates page cardinality. Unlike Supabase, planned and estimated counts do not use PostgreSQL planner estimates. Count preferences: without filters, exact, planned and estimated all use SQLite's exact b-tree count. With filters, exact counts within budget; planned skips counting and reports an unknown total (Content-Range: 0-24/*); estimated attempts exact counting only when the preflight budget allows it, otherwise reports an unknown total. Preference-Applied echoes the requested count mode.
|
|
5628
|
+
readonly description: "Inspect the HTTP row count and range without retrieving row data; send Prefer: count=exact for a filtered count. Returns no body and does not fetch or serialize row data. A known count determines the interval using limit/offset or Range with a default and maximum page size of 1000. Without a count preference, or when the selected count mode cannot supply a total, Content-Range is */*. Singular Accept still validates page cardinality. Unlike Supabase, planned and estimated counts do not use PostgreSQL planner estimates. Count preferences: without filters, exact, planned and estimated all use SQLite's exact b-tree count. With filters, exact counts within budget; planned skips counting and reports an unknown total (Content-Range: 0-24/*); estimated attempts exact counting only when the preflight budget allows it, otherwise reports an unknown total. Preference-Applied echoes the requested count mode. Use praxis.database.count in the SDK or codemode to return { count: number | null } from this header without retrieving rows.";
|
|
5629
5629
|
readonly http: "HEAD";
|
|
5630
5630
|
readonly path: "/database/v1/databases/{database_id}/rest/{table}";
|
|
5631
5631
|
readonly streaming: "no";
|
|
@@ -5646,7 +5646,7 @@ export declare const operations: readonly [{
|
|
|
5646
5646
|
readonly name: "{column}";
|
|
5647
5647
|
readonly type: "string";
|
|
5648
5648
|
readonly required: false;
|
|
5649
|
-
readonly description: "Horizontal filter: replace {column} with a field name or JSON path, e.g. title=eq.summary. Repeat for more columns.
|
|
5649
|
+
readonly description: "Horizontal filter: replace {column} with a field name or JSON path, e.g. title=eq.summary. Repeat for more columns. Supported operators: eq (equal), neq (not equal; ne is not supported), gt/gte/lt/lte (comparisons), like (case-sensitive text pattern), ilike (case-insensitive text pattern), in (membership), is (null/boolean test), cs (contains), cd (contained by), and ov (array overlap). For like/ilike, * or % matches any sequence and _ matches one character, e.g. title=ilike.*spring*; URL-encode a literal % as %25. Use days=in.(1,2,3), title=is.null, active=is.true or active=is.false; is.not_null and is.unknown are also accepted (unknown means null). Negate a condition with not., e.g. title=not.eq.draft. Multiple filters are ANDed; use or=(title.eq.a,title.eq.b), and=(days.gte.1,days.lte.3), not.or=(...) or not.and=(...), with nested and(...) and or(...) groups as needed. cs/cd accept JSON objects or arrays on JSON fields; cs also accepts a JSON scalar. For array values or multi-link fields, use cs.{a,b}, cd.{a,b} or ov.{a,b}. JSON paths use -> for JSON and ->> for text, e.g. attributes->>has_onsen=eq.true or attributes->tags=cs.[1,2]; chain -> segments and end with ->> for text. Dot paths such as attributes.has_onsen are unsupported. Full-text, regex, range operators and any/all modifiers are unsupported.";
|
|
5650
5650
|
}, {
|
|
5651
5651
|
readonly name: "and";
|
|
5652
5652
|
readonly type: "string";
|
|
@@ -5686,7 +5686,7 @@ export declare const operations: readonly [{
|
|
|
5686
5686
|
readonly name: "on_conflict";
|
|
5687
5687
|
readonly type: "string";
|
|
5688
5688
|
readonly required: false;
|
|
5689
|
-
readonly description: "POST upsert: id or one unique field with resolution=merge-duplicates|ignore-duplicates. POST accepts an optional client id matching [A-Za-z0-9_-]{1,64}; omitted ids are generated. PATCH cannot change id.";
|
|
5689
|
+
readonly description: "POST upsert: id or one unique field with resolution=merge-duplicates|ignore-duplicates. With resolution=merge-duplicates, a conflicting row keeps columns omitted from the request; supplied values replace the whole field value (including JSON objects), and explicit null clears a nullable field. With resolution=ignore-duplicates, a conflicting row is left unchanged. Without a conflict, both modes insert a new row using field defaults for omitted fields. In a batch, a key present in another row is filled with null when omitted in this row unless missing=default is set; that null can overwrite a value during merge. With missing=default, omitted keys stay omitted for conflict merges (existing values are preserved); new rows use defaults, or null when no default exists. Explicit null never invokes a default. POST accepts an optional client id matching [A-Za-z0-9_-]{1,64}; omitted ids are generated. PATCH cannot change id.";
|
|
5690
5690
|
}, {
|
|
5691
5691
|
readonly name: "columns";
|
|
5692
5692
|
readonly type: "string";
|
|
@@ -5718,7 +5718,7 @@ export declare const operations: readonly [{
|
|
|
5718
5718
|
readonly name: "{column}";
|
|
5719
5719
|
readonly type: "string";
|
|
5720
5720
|
readonly required: false;
|
|
5721
|
-
readonly description: "Horizontal filter: replace {column} with a field name or JSON path, e.g. title=eq.summary. Repeat for more columns.
|
|
5721
|
+
readonly description: "Horizontal filter: replace {column} with a field name or JSON path, e.g. title=eq.summary. Repeat for more columns. Supported operators: eq (equal), neq (not equal; ne is not supported), gt/gte/lt/lte (comparisons), like (case-sensitive text pattern), ilike (case-insensitive text pattern), in (membership), is (null/boolean test), cs (contains), cd (contained by), and ov (array overlap). For like/ilike, * or % matches any sequence and _ matches one character, e.g. title=ilike.*spring*; URL-encode a literal % as %25. Use days=in.(1,2,3), title=is.null, active=is.true or active=is.false; is.not_null and is.unknown are also accepted (unknown means null). Negate a condition with not., e.g. title=not.eq.draft. Multiple filters are ANDed; use or=(title.eq.a,title.eq.b), and=(days.gte.1,days.lte.3), not.or=(...) or not.and=(...), with nested and(...) and or(...) groups as needed. cs/cd accept JSON objects or arrays on JSON fields; cs also accepts a JSON scalar. For array values or multi-link fields, use cs.{a,b}, cd.{a,b} or ov.{a,b}. JSON paths use -> for JSON and ->> for text, e.g. attributes->>has_onsen=eq.true or attributes->tags=cs.[1,2]; chain -> segments and end with ->> for text. Dot paths such as attributes.has_onsen are unsupported. Full-text, regex, range operators and any/all modifiers are unsupported.";
|
|
5722
5722
|
}, {
|
|
5723
5723
|
readonly name: "and";
|
|
5724
5724
|
readonly type: "string";
|
|
@@ -5758,7 +5758,7 @@ export declare const operations: readonly [{
|
|
|
5758
5758
|
readonly name: "on_conflict";
|
|
5759
5759
|
readonly type: "string";
|
|
5760
5760
|
readonly required: false;
|
|
5761
|
-
readonly description: "POST upsert: id or one unique field with resolution=merge-duplicates|ignore-duplicates. POST accepts an optional client id matching [A-Za-z0-9_-]{1,64}; omitted ids are generated. PATCH cannot change id.";
|
|
5761
|
+
readonly description: "POST upsert: id or one unique field with resolution=merge-duplicates|ignore-duplicates. With resolution=merge-duplicates, a conflicting row keeps columns omitted from the request; supplied values replace the whole field value (including JSON objects), and explicit null clears a nullable field. With resolution=ignore-duplicates, a conflicting row is left unchanged. Without a conflict, both modes insert a new row using field defaults for omitted fields. In a batch, a key present in another row is filled with null when omitted in this row unless missing=default is set; that null can overwrite a value during merge. With missing=default, omitted keys stay omitted for conflict merges (existing values are preserved); new rows use defaults, or null when no default exists. Explicit null never invokes a default. POST accepts an optional client id matching [A-Za-z0-9_-]{1,64}; omitted ids are generated. PATCH cannot change id.";
|
|
5762
5762
|
}, {
|
|
5763
5763
|
readonly name: "columns";
|
|
5764
5764
|
readonly type: "string";
|
|
@@ -5773,7 +5773,7 @@ export declare const operations: readonly [{
|
|
|
5773
5773
|
readonly resource: "database.databases.rest";
|
|
5774
5774
|
readonly method: "create";
|
|
5775
5775
|
readonly summary: "Insert rows";
|
|
5776
|
-
readonly description: "Insert rows into an existing table after defining its fields; at most 500 rows per request. Each request is atomic: any failure rolls back the entire batch. There are no transactions across requests.\nRows are filled to the union of their keys with null; send Prefer: missing=default to use field defaults for missing keys.\nThe default is return=minimal: success returns HTTP 201 with an empty body. Send Prefer: return=representation to return the inserted rows. Unlike Supabase, upsert conflicts can target only id or one unique field, not a composite key. Each table supports up to 1,000,000 rows.";
|
|
5776
|
+
readonly description: "Insert rows into an existing table after defining its fields; at most 500 rows per request. Each request is atomic: any failure rolls back the entire batch. There are no transactions across requests.\nRows are filled to the union of their keys with null; send Prefer: missing=default to use field defaults for missing keys.\nThe default is return=minimal: success returns HTTP 201 with an empty body. Send Prefer: return=representation to return the inserted rows. With resolution=merge-duplicates, a conflicting row keeps columns omitted from the request; supplied values replace the whole field value (including JSON objects), and explicit null clears a nullable field. With resolution=ignore-duplicates, a conflicting row is left unchanged. Without a conflict, both modes insert a new row using field defaults for omitted fields. In a batch, a key present in another row is filled with null when omitted in this row unless missing=default is set; that null can overwrite a value during merge. With missing=default, omitted keys stay omitted for conflict merges (existing values are preserved); new rows use defaults, or null when no default exists. Explicit null never invokes a default. Unlike Supabase, upsert conflicts can target only id or one unique field, not a composite key. Each table supports up to 1,000,000 rows.";
|
|
5777
5777
|
readonly http: "POST";
|
|
5778
5778
|
readonly path: "/database/v1/databases/{database_id}/rest/{table}";
|
|
5779
5779
|
readonly streaming: "no";
|
|
@@ -5794,7 +5794,7 @@ export declare const operations: readonly [{
|
|
|
5794
5794
|
readonly name: "{column}";
|
|
5795
5795
|
readonly type: "string";
|
|
5796
5796
|
readonly required: false;
|
|
5797
|
-
readonly description: "Horizontal filter: replace {column} with a field name or JSON path, e.g. title=eq.summary. Repeat for more columns.
|
|
5797
|
+
readonly description: "Horizontal filter: replace {column} with a field name or JSON path, e.g. title=eq.summary. Repeat for more columns. Supported operators: eq (equal), neq (not equal; ne is not supported), gt/gte/lt/lte (comparisons), like (case-sensitive text pattern), ilike (case-insensitive text pattern), in (membership), is (null/boolean test), cs (contains), cd (contained by), and ov (array overlap). For like/ilike, * or % matches any sequence and _ matches one character, e.g. title=ilike.*spring*; URL-encode a literal % as %25. Use days=in.(1,2,3), title=is.null, active=is.true or active=is.false; is.not_null and is.unknown are also accepted (unknown means null). Negate a condition with not., e.g. title=not.eq.draft. Multiple filters are ANDed; use or=(title.eq.a,title.eq.b), and=(days.gte.1,days.lte.3), not.or=(...) or not.and=(...), with nested and(...) and or(...) groups as needed. cs/cd accept JSON objects or arrays on JSON fields; cs also accepts a JSON scalar. For array values or multi-link fields, use cs.{a,b}, cd.{a,b} or ov.{a,b}. JSON paths use -> for JSON and ->> for text, e.g. attributes->>has_onsen=eq.true or attributes->tags=cs.[1,2]; chain -> segments and end with ->> for text. Dot paths such as attributes.has_onsen are unsupported. Full-text, regex, range operators and any/all modifiers are unsupported.";
|
|
5798
5798
|
}, {
|
|
5799
5799
|
readonly name: "and";
|
|
5800
5800
|
readonly type: "string";
|
|
@@ -5834,7 +5834,7 @@ export declare const operations: readonly [{
|
|
|
5834
5834
|
readonly name: "on_conflict";
|
|
5835
5835
|
readonly type: "string";
|
|
5836
5836
|
readonly required: false;
|
|
5837
|
-
readonly description: "POST upsert: id or one unique field with resolution=merge-duplicates|ignore-duplicates. POST accepts an optional client id matching [A-Za-z0-9_-]{1,64}; omitted ids are generated. PATCH cannot change id.";
|
|
5837
|
+
readonly description: "POST upsert: id or one unique field with resolution=merge-duplicates|ignore-duplicates. With resolution=merge-duplicates, a conflicting row keeps columns omitted from the request; supplied values replace the whole field value (including JSON objects), and explicit null clears a nullable field. With resolution=ignore-duplicates, a conflicting row is left unchanged. Without a conflict, both modes insert a new row using field defaults for omitted fields. In a batch, a key present in another row is filled with null when omitted in this row unless missing=default is set; that null can overwrite a value during merge. With missing=default, omitted keys stay omitted for conflict merges (existing values are preserved); new rows use defaults, or null when no default exists. Explicit null never invokes a default. POST accepts an optional client id matching [A-Za-z0-9_-]{1,64}; omitted ids are generated. PATCH cannot change id.";
|
|
5838
5838
|
}, {
|
|
5839
5839
|
readonly name: "columns";
|
|
5840
5840
|
readonly type: "string";
|
|
@@ -5877,7 +5877,7 @@ export declare const operations: readonly [{
|
|
|
5877
5877
|
readonly resource: "database.databases.tables";
|
|
5878
5878
|
readonly method: "create";
|
|
5879
5879
|
readonly summary: "Create table";
|
|
5880
|
-
readonly description: "Creates a table together with its initial fields in one call and returns it (HTTP 201) with generated tbl_ and fld_ ids. name must match ^[a-z_][a-z0-9_]{0,62}$ and be unused in this database (duplicate: 409 UNIQUE_VIOLATION). fields is required and may be an empty array; fields can also be added later with databaseAddField. Limits: 50 tables per database, 64 fields per table, and 16 indexed or unique fields per table; exceeding one returns 400 LIMIT_EXCEEDED. Every row also has a system id column, which is not declared as a field. Insert data afterwards with databaseInsert. Unlike Supabase, define schema with this table API and the field APIs; PostgreSQL DDL and SQL migration files cannot be submitted. Each table supports up to 1,000,000 rows.";
|
|
5880
|
+
readonly description: "Creates a table together with its initial fields in one call and returns it (HTTP 201) with generated tbl_ and fld_ ids. name must match ^[a-z_][a-z0-9_]{0,62}$ and be unused in this database (duplicate: 409 UNIQUE_VIOLATION). fields is required and may be an empty array; fields can also be added later with databaseAddField. Limits: 50 tables per database, 64 fields per table, and 16 indexed or unique fields per table; exceeding one returns 400 LIMIT_EXCEEDED. Fields default to indexed:false. Set indexed:true explicitly for fields used in filters or ordering. Only indexed:true or unique:true consumes one of the 16 indexed-or-unique field slots; a field with both consumes one slot. Unique fields still consume a slot even with indexed:false. Existing fields are unchanged. Minimal field example: {\"name\":\"notes\",\"type\":\"string\",\"indexed\":false}. Every row also has a system id column, which is not declared as a field. Insert data afterwards with databaseInsert. Unlike Supabase, define schema with this table API and the field APIs; PostgreSQL DDL and SQL migration files cannot be submitted. Each table supports up to 1,000,000 rows.";
|
|
5881
5881
|
readonly http: "POST";
|
|
5882
5882
|
readonly path: "/database/v1/databases/{database_id}/tables";
|
|
5883
5883
|
readonly streaming: "no";
|
|
@@ -5976,7 +5976,7 @@ export declare const operations: readonly [{
|
|
|
5976
5976
|
readonly resource: "database.databases.tables.fields";
|
|
5977
5977
|
readonly method: "create";
|
|
5978
5978
|
readonly summary: "Add field";
|
|
5979
|
-
readonly description: "Adds one field to an existing table and returns the updated table (HTTP 201). Required inputs are name (lowercase letters, digits and underscores; id and names starting with _ are reserved) and type (string, integer, number, boolean, datetime, json or link); json needs options.schema and link needs options.linked_table_id and options.multiple. Adding a required field to a table that already has rows needs a default, otherwise the call fails with 400 VALIDATION_FAILED; a default is written into every existing row.
|
|
5979
|
+
readonly description: "Adds one field to an existing table and returns the updated table (HTTP 201). Required inputs are name (lowercase letters, digits and underscores; id and names starting with _ are reserved) and type (string, integer, number, boolean, datetime, json or link); json needs options.schema and link needs options.linked_table_id and options.multiple. Adding a required field to a table that already has rows needs a default, otherwise the call fails with 400 VALIDATION_FAILED; a default is written into every existing row. Fields default to indexed:false. Set indexed:true explicitly for fields used in filters or ordering. Only indexed:true or unique:true consumes one of the 16 indexed-or-unique field slots; a field with both consumes one slot. Unique fields still consume a slot even with indexed:false. Existing fields are unchanged. Minimal field example: {\"name\":\"notes\",\"type\":\"string\",\"indexed\":false}. JSON and link fields cannot be indexed. Limits: 64 fields and 16 indexed or unique fields per table (400 LIMIT_EXCEEDED). Unlike Supabase, schema evolution uses field definitions rather than ALTER TABLE statements or SQL migrations.";
|
|
5980
5980
|
readonly http: "POST";
|
|
5981
5981
|
readonly path: "/database/v1/databases/{database_id}/tables/{table}/fields";
|
|
5982
5982
|
readonly streaming: "no";
|
|
@@ -4,7 +4,7 @@ export const operations = [
|
|
|
4
4
|
"resource": "agent.agents",
|
|
5
5
|
"method": "list",
|
|
6
6
|
"summary": "List agents",
|
|
7
|
-
"description": "List the agents of the workspace behind your API key, newest first, in pages of at most 100 (default 20). Use it to find an agent id before creating a session; to read one agent use agents.retrieve, to see its history use agents.versions.list. Archived agents are hidden unless include_archived is true. Filter kind=personal for durable-computer agents or kind=
|
|
7
|
+
"description": "List the agents of the workspace behind your API key, newest first, in pages of at most 100 (default 20). Use it to find an agent id before creating a session; to read one agent use agents.retrieve, to see its history use agents.versions.list. Archived agents are hidden unless include_archived is true. Filter kind=personal for durable-computer agents or kind=service for per-session environments. Pass next_page from the response as page to read the next page; a null next_page means the end.",
|
|
8
8
|
"http": "GET",
|
|
9
9
|
"path": "/agent/v1/agents",
|
|
10
10
|
"streaming": "no",
|
|
@@ -50,7 +50,7 @@ export const operations = [
|
|
|
50
50
|
"type": "string",
|
|
51
51
|
"enum": [
|
|
52
52
|
"personal",
|
|
53
|
-
"
|
|
53
|
+
"service"
|
|
54
54
|
],
|
|
55
55
|
"required": false,
|
|
56
56
|
"description": "Filter agents by their immutable kind, including agents created before kind was recorded."
|
|
@@ -133,10 +133,10 @@ export const operations = [
|
|
|
133
133
|
"type": "string",
|
|
134
134
|
"enum": [
|
|
135
135
|
"personal",
|
|
136
|
-
"
|
|
136
|
+
"service"
|
|
137
137
|
],
|
|
138
138
|
"required": false,
|
|
139
|
-
"description": "Immutable agent kind. personal requires computer_id;
|
|
139
|
+
"description": "Immutable agent kind. personal requires computer_id; service cannot bind a computer. Omit on create to infer from computer_id. On update, the same kind is ignored; changing kind or crossing its computer binding returns 400 invalid_request_error."
|
|
140
140
|
},
|
|
141
141
|
{
|
|
142
142
|
"name": "computer_id",
|
|
@@ -301,10 +301,10 @@ export const operations = [
|
|
|
301
301
|
"type": "string",
|
|
302
302
|
"enum": [
|
|
303
303
|
"personal",
|
|
304
|
-
"
|
|
304
|
+
"service"
|
|
305
305
|
],
|
|
306
306
|
"required": false,
|
|
307
|
-
"description": "Immutable agent kind. personal requires computer_id;
|
|
307
|
+
"description": "Immutable agent kind. personal requires computer_id; service cannot bind a computer. Omit on create to infer from computer_id. On update, the same kind is ignored; changing kind or crossing its computer binding returns 400 invalid_request_error."
|
|
308
308
|
},
|
|
309
309
|
{
|
|
310
310
|
"name": "computer_id",
|
|
@@ -379,7 +379,7 @@ export const operations = [
|
|
|
379
379
|
"resource": "agent.agents.endUsers",
|
|
380
380
|
"method": "list",
|
|
381
381
|
"summary": "List End Users",
|
|
382
|
-
"description": "List users who have sessions or token issuance history on a
|
|
382
|
+
"description": "List users who have sessions or token issuance history on a service agent.\n\nOrdered by last_active_at and external_user_id descending. q is a case-sensitive literal prefix, including underscores. limit is 1–100, default 20. Reuse next_page with the same organization, agent, q and limit. Preemptively blocked users without history do not appear. End-user credentials and inaccessible or personal agents return 404.",
|
|
383
383
|
"http": "GET",
|
|
384
384
|
"path": "/agent/v1/agents/{agent_id}/end_users",
|
|
385
385
|
"streaming": "no",
|
|
@@ -415,7 +415,7 @@ export const operations = [
|
|
|
415
415
|
"resource": "agent.agents.endUsers",
|
|
416
416
|
"method": "delete",
|
|
417
417
|
"summary": "Delete end-user data",
|
|
418
|
-
"description": "Delete a host application's end-user data from one
|
|
418
|
+
"description": "Delete a host application's end-user data from one service agent after explicit confirmation.\n\nDevelop only. Set confirm to the exact external_user_id; missing or mismatched confirmation returns 400. Returns 202 with a pending task id, not completion. Poll the deletion endpoint. Concurrent requests reuse the unfinished task; retry DELETE after failure to resume it. Tokens are revoked and the user is blocked before a seven-day recovery snapshot is verified. Sessions including child sessions, conversation data, grants and feedback are then removed. A pre-existing block remains; a temporary block is removed on success. Attachment metadata is recorded and File attachments are retained. No charge is introduced by this operation. Example: DELETE /agent/v1/agents/agent_example/end_users/customer_123?confirm=customer_123.",
|
|
419
419
|
"http": "DELETE",
|
|
420
420
|
"path": "/agent/v1/agents/{agent_id}/end_users/{external_user_id}",
|
|
421
421
|
"streaming": "no",
|
|
@@ -1341,7 +1341,7 @@ export const operations = [
|
|
|
1341
1341
|
"name": "agent_id",
|
|
1342
1342
|
"type": "string",
|
|
1343
1343
|
"required": false,
|
|
1344
|
-
"description": "Filter by
|
|
1344
|
+
"description": "Filter by service agent identifier (agent_ or agt_ prefix)."
|
|
1345
1345
|
},
|
|
1346
1346
|
{
|
|
1347
1347
|
"name": "external_user_id",
|
|
@@ -1367,7 +1367,7 @@ export const operations = [
|
|
|
1367
1367
|
"resource": "agent.embedTokens",
|
|
1368
1368
|
"method": "create",
|
|
1369
1369
|
"summary": "Create Embed Token",
|
|
1370
|
-
"description": "Issue a short-lived credential on your backend for an end user of a
|
|
1370
|
+
"description": "Issue a short-lived credential on your backend for an end user of a service agent.\n\nRequires an active service agent in your organization with an embed policy. Pins the requested version or the latest version and snapshots the policy environment, vaults and resources; metadata comes from the request. Blocked users cannot receive tokens. Keep your API key on the backend and pass only the returned token to the frontend. Every call creates a new grant; issuance is not idempotent. Set hosted to true to also receive hosted_url; redirect the user there within 60 seconds. The agent must have an identity_number. The URL fragment contains a single-use exchange credential, not the token. Omit hosted or set false for ordinary token issuance.",
|
|
1371
1371
|
"http": "POST",
|
|
1372
1372
|
"path": "/agent/v1/embed_tokens",
|
|
1373
1373
|
"streaming": "no",
|
|
@@ -1387,7 +1387,7 @@ export const operations = [
|
|
|
1387
1387
|
"name": "agent",
|
|
1388
1388
|
"type": "string",
|
|
1389
1389
|
"required": true,
|
|
1390
|
-
"description": "
|
|
1390
|
+
"description": "Service agent ID or identity_number from agent retrieval; it must belong to your organization and be active."
|
|
1391
1391
|
},
|
|
1392
1392
|
{
|
|
1393
1393
|
"name": "version",
|
|
@@ -1460,7 +1460,7 @@ export const operations = [
|
|
|
1460
1460
|
"name": "publishable_key",
|
|
1461
1461
|
"type": "string",
|
|
1462
1462
|
"required": true,
|
|
1463
|
-
"description": "Public key created by the
|
|
1463
|
+
"description": "Public key created by the service agent owner; safe to include in browser code."
|
|
1464
1464
|
},
|
|
1465
1465
|
{
|
|
1466
1466
|
"name": "visitor_secret",
|
|
@@ -6841,7 +6841,7 @@ export const operations = [
|
|
|
6841
6841
|
"name": "{column}",
|
|
6842
6842
|
"type": "string",
|
|
6843
6843
|
"required": false,
|
|
6844
|
-
"description": "Horizontal filter: replace {column} with a field name or JSON path, e.g. title=eq.summary. Repeat for more columns.
|
|
6844
|
+
"description": "Horizontal filter: replace {column} with a field name or JSON path, e.g. title=eq.summary. Repeat for more columns. Supported operators: eq (equal), neq (not equal; ne is not supported), gt/gte/lt/lte (comparisons), like (case-sensitive text pattern), ilike (case-insensitive text pattern), in (membership), is (null/boolean test), cs (contains), cd (contained by), and ov (array overlap). For like/ilike, * or % matches any sequence and _ matches one character, e.g. title=ilike.*spring*; URL-encode a literal % as %25. Use days=in.(1,2,3), title=is.null, active=is.true or active=is.false; is.not_null and is.unknown are also accepted (unknown means null). Negate a condition with not., e.g. title=not.eq.draft. Multiple filters are ANDed; use or=(title.eq.a,title.eq.b), and=(days.gte.1,days.lte.3), not.or=(...) or not.and=(...), with nested and(...) and or(...) groups as needed. cs/cd accept JSON objects or arrays on JSON fields; cs also accepts a JSON scalar. For array values or multi-link fields, use cs.{a,b}, cd.{a,b} or ov.{a,b}. JSON paths use -> for JSON and ->> for text, e.g. attributes->>has_onsen=eq.true or attributes->tags=cs.[1,2]; chain -> segments and end with ->> for text. Dot paths such as attributes.has_onsen are unsupported. Full-text, regex, range operators and any/all modifiers are unsupported."
|
|
6845
6845
|
},
|
|
6846
6846
|
{
|
|
6847
6847
|
"name": "and",
|
|
@@ -6889,7 +6889,7 @@ export const operations = [
|
|
|
6889
6889
|
"name": "on_conflict",
|
|
6890
6890
|
"type": "string",
|
|
6891
6891
|
"required": false,
|
|
6892
|
-
"description": "POST upsert: id or one unique field with resolution=merge-duplicates|ignore-duplicates. POST accepts an optional client id matching [A-Za-z0-9_-]{1,64}; omitted ids are generated. PATCH cannot change id."
|
|
6892
|
+
"description": "POST upsert: id or one unique field with resolution=merge-duplicates|ignore-duplicates. With resolution=merge-duplicates, a conflicting row keeps columns omitted from the request; supplied values replace the whole field value (including JSON objects), and explicit null clears a nullable field. With resolution=ignore-duplicates, a conflicting row is left unchanged. Without a conflict, both modes insert a new row using field defaults for omitted fields. In a batch, a key present in another row is filled with null when omitted in this row unless missing=default is set; that null can overwrite a value during merge. With missing=default, omitted keys stay omitted for conflict merges (existing values are preserved); new rows use defaults, or null when no default exists. Explicit null never invokes a default. POST accepts an optional client id matching [A-Za-z0-9_-]{1,64}; omitted ids are generated. PATCH cannot change id."
|
|
6893
6893
|
},
|
|
6894
6894
|
{
|
|
6895
6895
|
"name": "columns",
|
|
@@ -6903,7 +6903,7 @@ export const operations = [
|
|
|
6903
6903
|
"resource": "database.databases.rest",
|
|
6904
6904
|
"method": "retrieve",
|
|
6905
6905
|
"summary": "Select rows",
|
|
6906
|
-
"description": "Read matching rows with filters, selected columns and ordering. Returns at most 1000 rows per request, including when limit is omitted. Content-Range reports the actual returned interval and the total when count is requested. PATCH and DELETE are not subject to this read cap. Unlike Supabase, casts, aggregates, spread and join modifiers are unsupported. Each table supports up to 1,000,000 rows. Query budget: 8,000 ms with a shared 3,000,000-row safety ceiling. Create indexes on filtered or sorted fields, or narrow the request when it exceeds its budget. Synchronous SQLite aggregates use candidate-row throughput estimates before execution; deployed Workers freeze clocks during synchronous CPU work, so the timer is not a guaranteed server-side interrupt. Count preferences: without filters, exact, planned and estimated all use SQLite's exact b-tree count. With filters, exact counts within budget; planned skips counting and reports an unknown total (Content-Range: 0-24/*); estimated attempts exact counting only when the preflight budget allows it, otherwise reports an unknown total. Preference-Applied echoes the requested count mode. Error table: QUERY_CANCELED / PostgREST 57014 is HTTP 500, retryable=false: Query timed out: index filtered or sorted fields, or narrow the range. DATABASE_INVALID_STATE is HTTP 409 for operations on a deleting database. Cleared or nonexistent databases return DATABASE_NOT_FOUND / HTTP 404. The count is an HTTP Content-Range response header, not a JSON property.
|
|
6906
|
+
"description": "Read matching rows with filters, selected columns and ordering. Returns at most 1000 rows per request, including when limit is omitted. Content-Range reports the actual returned interval and the total when count is requested. PATCH and DELETE are not subject to this read cap. Unlike Supabase, casts, aggregates, spread and join modifiers are unsupported. Each table supports up to 1,000,000 rows. Query budget: 8,000 ms with a shared 3,000,000-row safety ceiling. Create indexes on filtered or sorted fields, or narrow the request when it exceeds its budget. Synchronous SQLite aggregates use candidate-row throughput estimates before execution; deployed Workers freeze clocks during synchronous CPU work, so the timer is not a guaranteed server-side interrupt. Count preferences: without filters, exact, planned and estimated all use SQLite's exact b-tree count. With filters, exact counts within budget; planned skips counting and reports an unknown total (Content-Range: 0-24/*); estimated attempts exact counting only when the preflight budget allows it, otherwise reports an unknown total. Preference-Applied echoes the requested count mode. Error table: QUERY_CANCELED / PostgREST 57014 is HTTP 500, retryable=false: Query timed out: index filtered or sorted fields, or narrow the range. DATABASE_INVALID_STATE is HTTP 409 for operations on a deleting database. Cleared or nonexistent databases return DATABASE_NOT_FOUND / HTTP 404. The count is an HTTP Content-Range response header, not a JSON property. Use praxis.database.count in the SDK or codemode to return { count: number | null }; a page length is not a total unless you know all matches fit in that page.",
|
|
6907
6907
|
"http": "GET",
|
|
6908
6908
|
"path": "/database/v1/databases/{database_id}/rest/{table}",
|
|
6909
6909
|
"streaming": "no",
|
|
@@ -6929,7 +6929,7 @@ export const operations = [
|
|
|
6929
6929
|
"name": "{column}",
|
|
6930
6930
|
"type": "string",
|
|
6931
6931
|
"required": false,
|
|
6932
|
-
"description": "Horizontal filter: replace {column} with a field name or JSON path, e.g. title=eq.summary. Repeat for more columns.
|
|
6932
|
+
"description": "Horizontal filter: replace {column} with a field name or JSON path, e.g. title=eq.summary. Repeat for more columns. Supported operators: eq (equal), neq (not equal; ne is not supported), gt/gte/lt/lte (comparisons), like (case-sensitive text pattern), ilike (case-insensitive text pattern), in (membership), is (null/boolean test), cs (contains), cd (contained by), and ov (array overlap). For like/ilike, * or % matches any sequence and _ matches one character, e.g. title=ilike.*spring*; URL-encode a literal % as %25. Use days=in.(1,2,3), title=is.null, active=is.true or active=is.false; is.not_null and is.unknown are also accepted (unknown means null). Negate a condition with not., e.g. title=not.eq.draft. Multiple filters are ANDed; use or=(title.eq.a,title.eq.b), and=(days.gte.1,days.lte.3), not.or=(...) or not.and=(...), with nested and(...) and or(...) groups as needed. cs/cd accept JSON objects or arrays on JSON fields; cs also accepts a JSON scalar. For array values or multi-link fields, use cs.{a,b}, cd.{a,b} or ov.{a,b}. JSON paths use -> for JSON and ->> for text, e.g. attributes->>has_onsen=eq.true or attributes->tags=cs.[1,2]; chain -> segments and end with ->> for text. Dot paths such as attributes.has_onsen are unsupported. Full-text, regex, range operators and any/all modifiers are unsupported."
|
|
6933
6933
|
},
|
|
6934
6934
|
{
|
|
6935
6935
|
"name": "and",
|
|
@@ -6977,7 +6977,7 @@ export const operations = [
|
|
|
6977
6977
|
"name": "on_conflict",
|
|
6978
6978
|
"type": "string",
|
|
6979
6979
|
"required": false,
|
|
6980
|
-
"description": "POST upsert: id or one unique field with resolution=merge-duplicates|ignore-duplicates. POST accepts an optional client id matching [A-Za-z0-9_-]{1,64}; omitted ids are generated. PATCH cannot change id."
|
|
6980
|
+
"description": "POST upsert: id or one unique field with resolution=merge-duplicates|ignore-duplicates. With resolution=merge-duplicates, a conflicting row keeps columns omitted from the request; supplied values replace the whole field value (including JSON objects), and explicit null clears a nullable field. With resolution=ignore-duplicates, a conflicting row is left unchanged. Without a conflict, both modes insert a new row using field defaults for omitted fields. In a batch, a key present in another row is filled with null when omitted in this row unless missing=default is set; that null can overwrite a value during merge. With missing=default, omitted keys stay omitted for conflict merges (existing values are preserved); new rows use defaults, or null when no default exists. Explicit null never invokes a default. POST accepts an optional client id matching [A-Za-z0-9_-]{1,64}; omitted ids are generated. PATCH cannot change id."
|
|
6981
6981
|
},
|
|
6982
6982
|
{
|
|
6983
6983
|
"name": "columns",
|
|
@@ -6991,7 +6991,7 @@ export const operations = [
|
|
|
6991
6991
|
"resource": "database.databases.rest",
|
|
6992
6992
|
"method": "head",
|
|
6993
6993
|
"summary": "Count rows",
|
|
6994
|
-
"description": "Inspect the HTTP row count and range without retrieving row data; send Prefer: count=exact for a filtered count. Returns no body and does not fetch or serialize row data. A known count determines the interval using limit/offset or Range with a default and maximum page size of 1000. Without a count preference, or when the selected count mode cannot supply a total, Content-Range is */*. Singular Accept still validates page cardinality. Unlike Supabase, planned and estimated counts do not use PostgreSQL planner estimates. Count preferences: without filters, exact, planned and estimated all use SQLite's exact b-tree count. With filters, exact counts within budget; planned skips counting and reports an unknown total (Content-Range: 0-24/*); estimated attempts exact counting only when the preflight budget allows it, otherwise reports an unknown total. Preference-Applied echoes the requested count mode.
|
|
6994
|
+
"description": "Inspect the HTTP row count and range without retrieving row data; send Prefer: count=exact for a filtered count. Returns no body and does not fetch or serialize row data. A known count determines the interval using limit/offset or Range with a default and maximum page size of 1000. Without a count preference, or when the selected count mode cannot supply a total, Content-Range is */*. Singular Accept still validates page cardinality. Unlike Supabase, planned and estimated counts do not use PostgreSQL planner estimates. Count preferences: without filters, exact, planned and estimated all use SQLite's exact b-tree count. With filters, exact counts within budget; planned skips counting and reports an unknown total (Content-Range: 0-24/*); estimated attempts exact counting only when the preflight budget allows it, otherwise reports an unknown total. Preference-Applied echoes the requested count mode. Use praxis.database.count in the SDK or codemode to return { count: number | null } from this header without retrieving rows.",
|
|
6995
6995
|
"http": "HEAD",
|
|
6996
6996
|
"path": "/database/v1/databases/{database_id}/rest/{table}",
|
|
6997
6997
|
"streaming": "no",
|
|
@@ -7017,7 +7017,7 @@ export const operations = [
|
|
|
7017
7017
|
"name": "{column}",
|
|
7018
7018
|
"type": "string",
|
|
7019
7019
|
"required": false,
|
|
7020
|
-
"description": "Horizontal filter: replace {column} with a field name or JSON path, e.g. title=eq.summary. Repeat for more columns.
|
|
7020
|
+
"description": "Horizontal filter: replace {column} with a field name or JSON path, e.g. title=eq.summary. Repeat for more columns. Supported operators: eq (equal), neq (not equal; ne is not supported), gt/gte/lt/lte (comparisons), like (case-sensitive text pattern), ilike (case-insensitive text pattern), in (membership), is (null/boolean test), cs (contains), cd (contained by), and ov (array overlap). For like/ilike, * or % matches any sequence and _ matches one character, e.g. title=ilike.*spring*; URL-encode a literal % as %25. Use days=in.(1,2,3), title=is.null, active=is.true or active=is.false; is.not_null and is.unknown are also accepted (unknown means null). Negate a condition with not., e.g. title=not.eq.draft. Multiple filters are ANDed; use or=(title.eq.a,title.eq.b), and=(days.gte.1,days.lte.3), not.or=(...) or not.and=(...), with nested and(...) and or(...) groups as needed. cs/cd accept JSON objects or arrays on JSON fields; cs also accepts a JSON scalar. For array values or multi-link fields, use cs.{a,b}, cd.{a,b} or ov.{a,b}. JSON paths use -> for JSON and ->> for text, e.g. attributes->>has_onsen=eq.true or attributes->tags=cs.[1,2]; chain -> segments and end with ->> for text. Dot paths such as attributes.has_onsen are unsupported. Full-text, regex, range operators and any/all modifiers are unsupported."
|
|
7021
7021
|
},
|
|
7022
7022
|
{
|
|
7023
7023
|
"name": "and",
|
|
@@ -7065,7 +7065,7 @@ export const operations = [
|
|
|
7065
7065
|
"name": "on_conflict",
|
|
7066
7066
|
"type": "string",
|
|
7067
7067
|
"required": false,
|
|
7068
|
-
"description": "POST upsert: id or one unique field with resolution=merge-duplicates|ignore-duplicates. POST accepts an optional client id matching [A-Za-z0-9_-]{1,64}; omitted ids are generated. PATCH cannot change id."
|
|
7068
|
+
"description": "POST upsert: id or one unique field with resolution=merge-duplicates|ignore-duplicates. With resolution=merge-duplicates, a conflicting row keeps columns omitted from the request; supplied values replace the whole field value (including JSON objects), and explicit null clears a nullable field. With resolution=ignore-duplicates, a conflicting row is left unchanged. Without a conflict, both modes insert a new row using field defaults for omitted fields. In a batch, a key present in another row is filled with null when omitted in this row unless missing=default is set; that null can overwrite a value during merge. With missing=default, omitted keys stay omitted for conflict merges (existing values are preserved); new rows use defaults, or null when no default exists. Explicit null never invokes a default. POST accepts an optional client id matching [A-Za-z0-9_-]{1,64}; omitted ids are generated. PATCH cannot change id."
|
|
7069
7069
|
},
|
|
7070
7070
|
{
|
|
7071
7071
|
"name": "columns",
|
|
@@ -7105,7 +7105,7 @@ export const operations = [
|
|
|
7105
7105
|
"name": "{column}",
|
|
7106
7106
|
"type": "string",
|
|
7107
7107
|
"required": false,
|
|
7108
|
-
"description": "Horizontal filter: replace {column} with a field name or JSON path, e.g. title=eq.summary. Repeat for more columns.
|
|
7108
|
+
"description": "Horizontal filter: replace {column} with a field name or JSON path, e.g. title=eq.summary. Repeat for more columns. Supported operators: eq (equal), neq (not equal; ne is not supported), gt/gte/lt/lte (comparisons), like (case-sensitive text pattern), ilike (case-insensitive text pattern), in (membership), is (null/boolean test), cs (contains), cd (contained by), and ov (array overlap). For like/ilike, * or % matches any sequence and _ matches one character, e.g. title=ilike.*spring*; URL-encode a literal % as %25. Use days=in.(1,2,3), title=is.null, active=is.true or active=is.false; is.not_null and is.unknown are also accepted (unknown means null). Negate a condition with not., e.g. title=not.eq.draft. Multiple filters are ANDed; use or=(title.eq.a,title.eq.b), and=(days.gte.1,days.lte.3), not.or=(...) or not.and=(...), with nested and(...) and or(...) groups as needed. cs/cd accept JSON objects or arrays on JSON fields; cs also accepts a JSON scalar. For array values or multi-link fields, use cs.{a,b}, cd.{a,b} or ov.{a,b}. JSON paths use -> for JSON and ->> for text, e.g. attributes->>has_onsen=eq.true or attributes->tags=cs.[1,2]; chain -> segments and end with ->> for text. Dot paths such as attributes.has_onsen are unsupported. Full-text, regex, range operators and any/all modifiers are unsupported."
|
|
7109
7109
|
},
|
|
7110
7110
|
{
|
|
7111
7111
|
"name": "and",
|
|
@@ -7153,7 +7153,7 @@ export const operations = [
|
|
|
7153
7153
|
"name": "on_conflict",
|
|
7154
7154
|
"type": "string",
|
|
7155
7155
|
"required": false,
|
|
7156
|
-
"description": "POST upsert: id or one unique field with resolution=merge-duplicates|ignore-duplicates. POST accepts an optional client id matching [A-Za-z0-9_-]{1,64}; omitted ids are generated. PATCH cannot change id."
|
|
7156
|
+
"description": "POST upsert: id or one unique field with resolution=merge-duplicates|ignore-duplicates. With resolution=merge-duplicates, a conflicting row keeps columns omitted from the request; supplied values replace the whole field value (including JSON objects), and explicit null clears a nullable field. With resolution=ignore-duplicates, a conflicting row is left unchanged. Without a conflict, both modes insert a new row using field defaults for omitted fields. In a batch, a key present in another row is filled with null when omitted in this row unless missing=default is set; that null can overwrite a value during merge. With missing=default, omitted keys stay omitted for conflict merges (existing values are preserved); new rows use defaults, or null when no default exists. Explicit null never invokes a default. POST accepts an optional client id matching [A-Za-z0-9_-]{1,64}; omitted ids are generated. PATCH cannot change id."
|
|
7157
7157
|
},
|
|
7158
7158
|
{
|
|
7159
7159
|
"name": "columns",
|
|
@@ -7171,7 +7171,7 @@ export const operations = [
|
|
|
7171
7171
|
"resource": "database.databases.rest",
|
|
7172
7172
|
"method": "create",
|
|
7173
7173
|
"summary": "Insert rows",
|
|
7174
|
-
"description": "Insert rows into an existing table after defining its fields; at most 500 rows per request. Each request is atomic: any failure rolls back the entire batch. There are no transactions across requests.\nRows are filled to the union of their keys with null; send Prefer: missing=default to use field defaults for missing keys.\nThe default is return=minimal: success returns HTTP 201 with an empty body. Send Prefer: return=representation to return the inserted rows. Unlike Supabase, upsert conflicts can target only id or one unique field, not a composite key. Each table supports up to 1,000,000 rows.",
|
|
7174
|
+
"description": "Insert rows into an existing table after defining its fields; at most 500 rows per request. Each request is atomic: any failure rolls back the entire batch. There are no transactions across requests.\nRows are filled to the union of their keys with null; send Prefer: missing=default to use field defaults for missing keys.\nThe default is return=minimal: success returns HTTP 201 with an empty body. Send Prefer: return=representation to return the inserted rows. With resolution=merge-duplicates, a conflicting row keeps columns omitted from the request; supplied values replace the whole field value (including JSON objects), and explicit null clears a nullable field. With resolution=ignore-duplicates, a conflicting row is left unchanged. Without a conflict, both modes insert a new row using field defaults for omitted fields. In a batch, a key present in another row is filled with null when omitted in this row unless missing=default is set; that null can overwrite a value during merge. With missing=default, omitted keys stay omitted for conflict merges (existing values are preserved); new rows use defaults, or null when no default exists. Explicit null never invokes a default. Unlike Supabase, upsert conflicts can target only id or one unique field, not a composite key. Each table supports up to 1,000,000 rows.",
|
|
7175
7175
|
"http": "POST",
|
|
7176
7176
|
"path": "/database/v1/databases/{database_id}/rest/{table}",
|
|
7177
7177
|
"streaming": "no",
|
|
@@ -7197,7 +7197,7 @@ export const operations = [
|
|
|
7197
7197
|
"name": "{column}",
|
|
7198
7198
|
"type": "string",
|
|
7199
7199
|
"required": false,
|
|
7200
|
-
"description": "Horizontal filter: replace {column} with a field name or JSON path, e.g. title=eq.summary. Repeat for more columns.
|
|
7200
|
+
"description": "Horizontal filter: replace {column} with a field name or JSON path, e.g. title=eq.summary. Repeat for more columns. Supported operators: eq (equal), neq (not equal; ne is not supported), gt/gte/lt/lte (comparisons), like (case-sensitive text pattern), ilike (case-insensitive text pattern), in (membership), is (null/boolean test), cs (contains), cd (contained by), and ov (array overlap). For like/ilike, * or % matches any sequence and _ matches one character, e.g. title=ilike.*spring*; URL-encode a literal % as %25. Use days=in.(1,2,3), title=is.null, active=is.true or active=is.false; is.not_null and is.unknown are also accepted (unknown means null). Negate a condition with not., e.g. title=not.eq.draft. Multiple filters are ANDed; use or=(title.eq.a,title.eq.b), and=(days.gte.1,days.lte.3), not.or=(...) or not.and=(...), with nested and(...) and or(...) groups as needed. cs/cd accept JSON objects or arrays on JSON fields; cs also accepts a JSON scalar. For array values or multi-link fields, use cs.{a,b}, cd.{a,b} or ov.{a,b}. JSON paths use -> for JSON and ->> for text, e.g. attributes->>has_onsen=eq.true or attributes->tags=cs.[1,2]; chain -> segments and end with ->> for text. Dot paths such as attributes.has_onsen are unsupported. Full-text, regex, range operators and any/all modifiers are unsupported."
|
|
7201
7201
|
},
|
|
7202
7202
|
{
|
|
7203
7203
|
"name": "and",
|
|
@@ -7245,7 +7245,7 @@ export const operations = [
|
|
|
7245
7245
|
"name": "on_conflict",
|
|
7246
7246
|
"type": "string",
|
|
7247
7247
|
"required": false,
|
|
7248
|
-
"description": "POST upsert: id or one unique field with resolution=merge-duplicates|ignore-duplicates. POST accepts an optional client id matching [A-Za-z0-9_-]{1,64}; omitted ids are generated. PATCH cannot change id."
|
|
7248
|
+
"description": "POST upsert: id or one unique field with resolution=merge-duplicates|ignore-duplicates. With resolution=merge-duplicates, a conflicting row keeps columns omitted from the request; supplied values replace the whole field value (including JSON objects), and explicit null clears a nullable field. With resolution=ignore-duplicates, a conflicting row is left unchanged. Without a conflict, both modes insert a new row using field defaults for omitted fields. In a batch, a key present in another row is filled with null when omitted in this row unless missing=default is set; that null can overwrite a value during merge. With missing=default, omitted keys stay omitted for conflict merges (existing values are preserved); new rows use defaults, or null when no default exists. Explicit null never invokes a default. POST accepts an optional client id matching [A-Za-z0-9_-]{1,64}; omitted ids are generated. PATCH cannot change id."
|
|
7249
7249
|
},
|
|
7250
7250
|
{
|
|
7251
7251
|
"name": "columns",
|
|
@@ -7297,7 +7297,7 @@ export const operations = [
|
|
|
7297
7297
|
"resource": "database.databases.tables",
|
|
7298
7298
|
"method": "create",
|
|
7299
7299
|
"summary": "Create table",
|
|
7300
|
-
"description": "Creates a table together with its initial fields in one call and returns it (HTTP 201) with generated tbl_ and fld_ ids. name must match ^[a-z_][a-z0-9_]{0,62}$ and be unused in this database (duplicate: 409 UNIQUE_VIOLATION). fields is required and may be an empty array; fields can also be added later with databaseAddField. Limits: 50 tables per database, 64 fields per table, and 16 indexed or unique fields per table; exceeding one returns 400 LIMIT_EXCEEDED. Every row also has a system id column, which is not declared as a field. Insert data afterwards with databaseInsert. Unlike Supabase, define schema with this table API and the field APIs; PostgreSQL DDL and SQL migration files cannot be submitted. Each table supports up to 1,000,000 rows.",
|
|
7300
|
+
"description": "Creates a table together with its initial fields in one call and returns it (HTTP 201) with generated tbl_ and fld_ ids. name must match ^[a-z_][a-z0-9_]{0,62}$ and be unused in this database (duplicate: 409 UNIQUE_VIOLATION). fields is required and may be an empty array; fields can also be added later with databaseAddField. Limits: 50 tables per database, 64 fields per table, and 16 indexed or unique fields per table; exceeding one returns 400 LIMIT_EXCEEDED. Fields default to indexed:false. Set indexed:true explicitly for fields used in filters or ordering. Only indexed:true or unique:true consumes one of the 16 indexed-or-unique field slots; a field with both consumes one slot. Unique fields still consume a slot even with indexed:false. Existing fields are unchanged. Minimal field example: {\"name\":\"notes\",\"type\":\"string\",\"indexed\":false}. Every row also has a system id column, which is not declared as a field. Insert data afterwards with databaseInsert. Unlike Supabase, define schema with this table API and the field APIs; PostgreSQL DDL and SQL migration files cannot be submitted. Each table supports up to 1,000,000 rows.",
|
|
7301
7301
|
"http": "POST",
|
|
7302
7302
|
"path": "/database/v1/databases/{database_id}/tables",
|
|
7303
7303
|
"streaming": "no",
|
|
@@ -7418,7 +7418,7 @@ export const operations = [
|
|
|
7418
7418
|
"resource": "database.databases.tables.fields",
|
|
7419
7419
|
"method": "create",
|
|
7420
7420
|
"summary": "Add field",
|
|
7421
|
-
"description": "Adds one field to an existing table and returns the updated table (HTTP 201). Required inputs are name (lowercase letters, digits and underscores; id and names starting with _ are reserved) and type (string, integer, number, boolean, datetime, json or link); json needs options.schema and link needs options.linked_table_id and options.multiple. Adding a required field to a table that already has rows needs a default, otherwise the call fails with 400 VALIDATION_FAILED; a default is written into every existing row.
|
|
7421
|
+
"description": "Adds one field to an existing table and returns the updated table (HTTP 201). Required inputs are name (lowercase letters, digits and underscores; id and names starting with _ are reserved) and type (string, integer, number, boolean, datetime, json or link); json needs options.schema and link needs options.linked_table_id and options.multiple. Adding a required field to a table that already has rows needs a default, otherwise the call fails with 400 VALIDATION_FAILED; a default is written into every existing row. Fields default to indexed:false. Set indexed:true explicitly for fields used in filters or ordering. Only indexed:true or unique:true consumes one of the 16 indexed-or-unique field slots; a field with both consumes one slot. Unique fields still consume a slot even with indexed:false. Existing fields are unchanged. Minimal field example: {\"name\":\"notes\",\"type\":\"string\",\"indexed\":false}. JSON and link fields cannot be indexed. Limits: 64 fields and 16 indexed or unique fields per table (400 LIMIT_EXCEEDED). Unlike Supabase, schema evolution uses field definitions rather than ALTER TABLE statements or SQL migrations.",
|
|
7422
7422
|
"http": "POST",
|
|
7423
7423
|
"path": "/database/v1/databases/{database_id}/tables/{table}/fields",
|
|
7424
7424
|
"streaming": "no",
|