pgbeam 0.4.10 → 0.4.11

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.
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, '__esModule', { value: true });
2
2
 
3
- var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
3
+ var operationsMap_gen = require('./operations-map.gen-iasufy3r.cjs');
4
4
 
5
5
  /**
6
6
  * Generated by generate-sdk-ts-maps.ts from backend/openapi/bundles/public.yaml — do not edit manually.
@@ -16,7 +16,15 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
16
16
  "path": "/v1/account/export",
17
17
  "summary": "Export account data",
18
18
  "description": "Returns all personal data associated with the authenticated user in a structured JSON format. Supports GDPR data portability and CCPA right to know. Audit logs are limited to the most recent 1000 entries.",
19
- "parameters": [],
19
+ "parameters": [
20
+ {
21
+ "name": "If-None-Match",
22
+ "in": "header",
23
+ "required": false,
24
+ "type": "string",
25
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
26
+ }
27
+ ],
20
28
  "requestBodyType": "",
21
29
  "requestBodyRequired": false,
22
30
  "responseType": "{ audit_logs: ({ action: string; created_at: string; id: string; ip_address?: string; resource_id?: string; resource_type?: string })[]; consents: ({ accepted_at: string; document_type: string; document_version: string; id: string; ip_address?: string })[]; databases: ({ created_at: string; host: string; id: string; name: string; port: number; project_id: string; role: string; ssl_mode: string })[]; email_preferences: { marketing_emails?: boolean; usage_limit_alerts?: boolean }; exported_at: string; organizations: ({ created_at: string; id: string; name: string; role: string; slug: string })[]; projects: ({ created_at: string; description: string; id: string; name: string; org_id: string; status: string })[]; sessions: ({ created_at: string; expires_at: string; id: string; ip_address?: string; user_agent?: string })[]; user: { created_at: string; email: string; email_verified: boolean; id: string; image?: string; name: string; updated_at: string } }",
@@ -49,6 +57,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
49
57
  "required": false,
50
58
  "type": "string",
51
59
  "description": "Opaque token for cursor-based pagination."
60
+ },
61
+ {
62
+ "name": "If-None-Match",
63
+ "in": "header",
64
+ "required": false,
65
+ "type": "string",
66
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
52
67
  }
53
68
  ],
54
69
  "requestBodyType": "",
@@ -103,6 +118,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
103
118
  "required": true,
104
119
  "type": "string",
105
120
  "description": "Unique agent credential identifier (prefixed, e.g. agt_xxx)."
121
+ },
122
+ {
123
+ "name": "If-None-Match",
124
+ "in": "header",
125
+ "required": false,
126
+ "type": "string",
127
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
106
128
  }
107
129
  ],
108
130
  "requestBodyType": "",
@@ -115,7 +137,7 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
115
137
  "method": "PATCH",
116
138
  "path": "/v1/projects/{project_id}/agents/{agent_id}",
117
139
  "summary": "Enable or disable an agent credential",
118
- "description": "Toggles the kill-switch. Disabling drops live connections within seconds.",
140
+ "description": "Toggles the kill-switch between active and disabled. Disabling drops live connections within seconds. Revocation is terminal and cannot be undone here: a revoked credential answers 409, because revoking does not change its secrets, so putting it back to active would make the revoked password and MCP token work again. Issue a new credential instead.",
119
141
  "parameters": [
120
142
  {
121
143
  "name": "project_id",
@@ -130,6 +152,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
130
152
  "required": true,
131
153
  "type": "string",
132
154
  "description": "Unique agent credential identifier (prefixed, e.g. agt_xxx)."
155
+ },
156
+ {
157
+ "name": "If-Match",
158
+ "in": "header",
159
+ "required": false,
160
+ "type": "string",
161
+ "description": "Entity tag the write is based on, taken from the `ETag` of the read that produced the values being sent. The write proceeds only if it still matches the current representation; otherwise it is refused with `412 Precondition Failed` and nothing is changed.\n\nThis is what makes a read-modify-write safe. Without it the last writer wins and a concurrent edit is silently discarded, which is the failure an agent is most likely to cause and least likely to notice. The `412` response carries the current `ETag`, so a caller can re-read, re-apply its change and retry.\n\nOmitting the header keeps the old unconditional behaviour. `*` matches any current representation, which asserts only that the resource exists."
133
162
  }
134
163
  ],
135
164
  "requestBodyType": "{ status: \"active\" | \"disabled\" }",
@@ -259,6 +288,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
259
288
  "required": false,
260
289
  "type": "string",
261
290
  "description": "Opaque token for cursor-based pagination."
291
+ },
292
+ {
293
+ "name": "If-None-Match",
294
+ "in": "header",
295
+ "required": false,
296
+ "type": "string",
297
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
262
298
  }
263
299
  ],
264
300
  "requestBodyType": "",
@@ -327,6 +363,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
327
363
  "required": false,
328
364
  "type": "string",
329
365
  "description": "Opaque token for cursor-based pagination."
366
+ },
367
+ {
368
+ "name": "If-None-Match",
369
+ "in": "header",
370
+ "required": false,
371
+ "type": "string",
372
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
330
373
  }
331
374
  ],
332
375
  "requestBodyType": "",
@@ -457,6 +500,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
457
500
  "required": false,
458
501
  "type": "number",
459
502
  "description": "Maximum number of items to return (1-100, default 20)."
503
+ },
504
+ {
505
+ "name": "If-None-Match",
506
+ "in": "header",
507
+ "required": false,
508
+ "type": "string",
509
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
460
510
  }
461
511
  ],
462
512
  "requestBodyType": "",
@@ -560,6 +610,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
560
610
  "required": false,
561
611
  "type": "string",
562
612
  "description": "Return entries strictly older than this timestamp (cursor / upper bound)."
613
+ },
614
+ {
615
+ "name": "If-None-Match",
616
+ "in": "header",
617
+ "required": false,
618
+ "type": "string",
619
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
563
620
  }
564
621
  ],
565
622
  "requestBodyType": "",
@@ -594,6 +651,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
594
651
  "required": false,
595
652
  "type": "string",
596
653
  "description": "Return entries strictly older than this timestamp (cursor / upper bound)."
654
+ },
655
+ {
656
+ "name": "If-None-Match",
657
+ "in": "header",
658
+ "required": false,
659
+ "type": "string",
660
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
597
661
  }
598
662
  ],
599
663
  "requestBodyType": "",
@@ -601,13 +665,41 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
601
665
  "responseType": "{ anchor_status?: string; anchor_verified_from_seq?: number; anchor_verified_through_seq?: number; chain_end_seq?: number; chain_start_seq?: number; failure_reason?: string; first_broken_seq?: number; keyed_count: number; link_status?: string; link_verified_from_seq?: number; ok: boolean; unchained_count: number; verified_at: string; verified_count: number }",
602
666
  "responseStatus": "200"
603
667
  },
668
+ "executeBatch": {
669
+ "operationId": "executeBatch",
670
+ "method": "POST",
671
+ "path": "/v1/projects/{project_id}/batch",
672
+ "summary": "Apply many project operations in one request",
673
+ "description": "Applies up to 100 project-scoped operations in a single request, so an agent acting on many resources does not have to loop one call at a time. The loops this exists for are the ones the single-resource endpoints leave an operator running by hand: revoking or disabling every agent credential during an incident, triaging a burst of anomaly alerts, and importing the column descriptions for a whole schema.\n\nThe operation set is closed. A batch is not a tunnel for arbitrary requests; each kind it can perform is named in the contract, carries its own permission, and is authorized independently against the caller's scope before any of them runs, so a batch can never act outside the scope the caller already had. Every operation targets the project in the path, and an id belonging to another project is reported exactly as a nonexistent one is, so this cannot be used to probe for resources the caller cannot see.\n\n`mode` is required and decides what a failure means. `atomic` runs the whole batch in one transaction: the first runtime failure rolls it back, the response is 409, and every operation that did not itself fail is reported `not_applied`. `independent` applies each operation on its own and answers 200 with a per-operation status, so a caller can retry exactly the failures. Structural problems (an unknown operation kind, a missing field, a duplicate target) are all found before any work happens and are answered with a single 400.\n\nA batch costs the rate limiter one unit per operation, not one per HTTP request, so it is exactly as expensive as the loop it replaces and cannot be used to sidestep the quota. When the remaining quota cannot cover the whole batch the response is 429 and nothing runs, which is a better answer than a loop that discovers the same thing halfway through. A batch refused this way still costs the one unit any request costs, so an oversized batch is not a free way to probe the quota.",
674
+ "parameters": [
675
+ {
676
+ "name": "project_id",
677
+ "in": "path",
678
+ "required": true,
679
+ "type": "string",
680
+ "description": "Unique project identifier (prefixed, e.g. prj_xxx)."
681
+ }
682
+ ],
683
+ "requestBodyType": "{ mode: \"atomic\" | \"independent\"; operations: ({ agent_id?: string; agent_status?: \"active\" | \"disabled\"; annotation?: { column_name?: string; description: string; schema_name?: string; table_name: string }; anomaly_id?: string; anomaly_status?: \"acknowledged\" | \"resolved\"; id: string; op: \"revoke_agent_credential\" | \"set_agent_credential_status\" | \"update_anomaly_alert\" | \"put_schema_annotation\" })[] }",
684
+ "requestBodyRequired": true,
685
+ "responseType": "{ applied: boolean; mode: \"atomic\" | \"independent\"; results: ({ error?: { code: \"invalid_input\" | \"not_found\" | \"conflict\" | \"internal\"; message: string }; id: string; op: string; status: \"succeeded\" | \"failed\" | \"not_applied\" })[]; summary: { failed: number; not_applied: number; requested: number; succeeded: number } }",
686
+ "responseStatus": "200"
687
+ },
604
688
  "listPlans": {
605
689
  "operationId": "listPlans",
606
690
  "method": "GET",
607
691
  "path": "/v1/plans",
608
692
  "summary": "List available plans",
609
693
  "description": "Returns all available plan tiers with their limits and pricing.",
610
- "parameters": [],
694
+ "parameters": [
695
+ {
696
+ "name": "If-None-Match",
697
+ "in": "header",
698
+ "required": false,
699
+ "type": "string",
700
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
701
+ }
702
+ ],
611
703
  "requestBodyType": "",
612
704
  "requestBodyRequired": false,
613
705
  "responseType": "{ plans: ({ annual_price?: number; description?: string; label: string; limits: { audit_retention_days: number; bytes_per_month: number; included_seats: number; max_agent_credentials: number; max_connections: number; max_databases: number; max_projects: number; max_query_shapes: number; queries_per_day: number; queries_per_second: number; sandbox_idle_seconds: number; sandbox_max_branches: number; sandbox_max_upstream_bytes: number; sandbox_ttl_seconds: number }; monthly_price: number; name: string; overage_text?: string; trial_days?: number })[] }",
@@ -626,6 +718,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
626
718
  "required": true,
627
719
  "type": "string",
628
720
  "description": "Unique organization identifier."
721
+ },
722
+ {
723
+ "name": "If-None-Match",
724
+ "in": "header",
725
+ "required": false,
726
+ "type": "string",
727
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
629
728
  }
630
729
  ],
631
730
  "requestBodyType": "",
@@ -646,6 +745,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
646
745
  "required": true,
647
746
  "type": "string",
648
747
  "description": "Unique organization identifier."
748
+ },
749
+ {
750
+ "name": "If-None-Match",
751
+ "in": "header",
752
+ "required": false,
753
+ "type": "string",
754
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
649
755
  }
650
756
  ],
651
757
  "requestBodyType": "",
@@ -727,6 +833,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
727
833
  "required": false,
728
834
  "type": "string",
729
835
  "description": "Opaque token for cursor-based pagination."
836
+ },
837
+ {
838
+ "name": "If-None-Match",
839
+ "in": "header",
840
+ "required": false,
841
+ "type": "string",
842
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
730
843
  }
731
844
  ],
732
845
  "requestBodyType": "",
@@ -795,6 +908,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
795
908
  "required": false,
796
909
  "type": "string",
797
910
  "description": "Opaque token for cursor-based pagination."
911
+ },
912
+ {
913
+ "name": "If-None-Match",
914
+ "in": "header",
915
+ "required": false,
916
+ "type": "string",
917
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
798
918
  }
799
919
  ],
800
920
  "requestBodyType": "",
@@ -863,6 +983,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
863
983
  "required": false,
864
984
  "type": "string",
865
985
  "description": "Opaque token for cursor-based pagination."
986
+ },
987
+ {
988
+ "name": "If-None-Match",
989
+ "in": "header",
990
+ "required": false,
991
+ "type": "string",
992
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
866
993
  }
867
994
  ],
868
995
  "requestBodyType": "",
@@ -917,6 +1044,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
917
1044
  "required": true,
918
1045
  "type": "string",
919
1046
  "description": "Unique database identifier (prefixed, e.g. db_xxx)."
1047
+ },
1048
+ {
1049
+ "name": "If-None-Match",
1050
+ "in": "header",
1051
+ "required": false,
1052
+ "type": "string",
1053
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
920
1054
  }
921
1055
  ],
922
1056
  "requestBodyType": "",
@@ -944,6 +1078,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
944
1078
  "required": true,
945
1079
  "type": "string",
946
1080
  "description": "Unique database identifier (prefixed, e.g. db_xxx)."
1081
+ },
1082
+ {
1083
+ "name": "If-Match",
1084
+ "in": "header",
1085
+ "required": false,
1086
+ "type": "string",
1087
+ "description": "Entity tag the write is based on, taken from the `ETag` of the read that produced the values being sent. The write proceeds only if it still matches the current representation; otherwise it is refused with `412 Precondition Failed` and nothing is changed.\n\nThis is what makes a read-modify-write safe. Without it the last writer wins and a concurrent edit is silently discarded, which is the failure an agent is most likely to cause and least likely to notice. The `412` response carries the current `ETag`, so a caller can re-read, re-apply its change and retry.\n\nOmitting the header keeps the old unconditional behaviour. `*` matches any current representation, which asserts only that the resource exists."
947
1088
  }
948
1089
  ],
949
1090
  "requestBodyType": "{ auto_read_routing?: boolean; cache_config?: { enabled: boolean; max_entries: number; swr_seconds: number; ttl_seconds: number }; host?: string; name?: string; password?: string; pool_config?: { max_active?: number; min_pool_size: number; pool_mode: \"session\" | \"transaction\" | \"statement\"; pool_size: number }; pool_region?: string; port?: number; query_timeout_ms?: number; role?: \"primary\" | \"replica\"; ssl_mode?: \"disable\" | \"allow\" | \"prefer\" | \"require\" | \"verify-ca\" | \"verify-full\"; username?: string }",
@@ -1052,6 +1193,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
1052
1193
  "required": true,
1053
1194
  "type": "string",
1054
1195
  "description": "Unique database identifier (prefixed, e.g. db_xxx)."
1196
+ },
1197
+ {
1198
+ "name": "If-None-Match",
1199
+ "in": "header",
1200
+ "required": false,
1201
+ "type": "string",
1202
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
1055
1203
  }
1056
1204
  ],
1057
1205
  "requestBodyType": "",
@@ -1059,6 +1207,50 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
1059
1207
  "responseType": "{ error?: string; relations: ({ columns: ({ data_type: string; is_binary: boolean; name: string })[]; kind: \"table\" | \"view\" | \"materialized_view\" | \"other\"; name: string; schema: string })[]; scanned_columns: number; scanned_relations: number; truncated?: boolean }",
1060
1208
  "responseStatus": "200"
1061
1209
  },
1210
+ "getDemo": {
1211
+ "operationId": "getDemo",
1212
+ "method": "GET",
1213
+ "path": "/v1/demo",
1214
+ "summary": "Describe the demo sandbox",
1215
+ "description": "Returns everything an unauthenticated caller needs before asking for a demo credential: whether the demo is up, how much of the global ceiling is left, what each tier costs, the dataset schema with the treatment the demo policy applies to every column, and the walkthrough of statements that demonstrate each guardrail. Requires no account and no key.",
1216
+ "parameters": [],
1217
+ "requestBodyType": "",
1218
+ "requestBodyRequired": false,
1219
+ "responseType": "{ available: boolean; dataset: { schema: string; tables: ({ columns: ({ name: string; treatment: \"visible\" | \"redacted\" | \"hashed\" | \"nulled\"; type: string })[]; description: string; name: string; reachable: boolean })[] }; live_sessions: number; max_live_sessions: number; max_sessions_per_hour_per_client: number; retry_after_seconds?: number; tiers: ({ max_rows: number; name: \"free\" | \"extended\"; price_usd_cents: number; purchasable: boolean; query_budget: number; resource?: string; ttl_seconds: number })[]; unavailable_reason?: string; upgrade: { description: string; docs_url: string; policy_endpoint: string; signup_url: string }; walkthrough: ({ expect: \"allow\" | \"masked\" | \"blocked\"; expect_columns?: ({ name: string; treatment: \"visible\" | \"redacted\" | \"hashed\" | \"nulled\"; type: string })[]; expect_rule?: string; sql: string; step: number; title: string; why: string })[] }",
1220
+ "responseStatus": "200"
1221
+ },
1222
+ "createDemoCredential": {
1223
+ "operationId": "createDemoCredential",
1224
+ "method": "POST",
1225
+ "path": "/v1/demo/credentials",
1226
+ "summary": "Issue a demo credential",
1227
+ "description": "Issues a scoped, read-only, short-lived PostgreSQL credential plus a hosted MCP token against PgBeam's own demo database, with no account and no key. The credential is governed by the same wire-protocol policy engine every customer credential runs through, so a SELECT of a PII column comes back masked, a statement naming the table left off the allowlist is blocked, and a write is refused, all with machine-readable reasons. The connection string and MCP token are shown once. The response also carries the policy document that governed the demo, so a caller who then opens an account can create the same policy on its own database verbatim.\nRefusals are distinct on purpose. 429 means this client has asked for too many credentials in the last hour and should wait. 503 with a Retry-After header means the global ceiling on concurrent demo credentials is full, so backing off individually will not help; the header says when the oldest session expires. 503 also covers a deployment with no demo database configured.",
1228
+ "parameters": [],
1229
+ "requestBodyType": "{ label?: string; payment_proof?: string; tier?: \"free\" | \"extended\" }",
1230
+ "requestBodyRequired": false,
1231
+ "responseType": "{ connection_string: string; dataset: { schema: string; tables: ({ columns: ({ name: string; treatment: \"visible\" | \"redacted\" | \"hashed\" | \"nulled\"; type: string })[]; description: string; name: string; reachable: boolean })[] }; expires_at: string; mcp_token: string; mcp_url: string; policy_template: { access_mode?: \"read_only\" | \"read_write\"; approval_auto_max_rows?: number; approval_mode?: \"off\" | \"writes\" | \"ddl\" | \"all\"; approval_timeout_seconds?: number; budget_queries_per_day?: number; budget_queries_per_hour?: number; egress_bytes_per_day?: number; masking_rules?: ({ column: string; kind: \"redact\" | \"null\" | \"hash\"; table: string })[]; max_affected_rows?: number; max_rows?: number; migration_safety?: \"off\" | \"warn\" | \"block\"; name: string; row_filters?: ({ predicate: string; table: string })[]; statement_rules?: { allow?: string[]; deny?: string[] }; statement_timeout_ms?: number; table_allowlist?: string[]; table_denylist?: string[]; write_mode?: \"normal\" | \"rollback\" | \"sandbox\" }; query_budget: number; session_id: string; tier: string; ttl_seconds: number; upgrade: { description: string; docs_url: string; policy_endpoint: string; signup_url: string }; walkthrough: ({ expect: \"allow\" | \"masked\" | \"blocked\"; expect_columns?: ({ name: string; treatment: \"visible\" | \"redacted\" | \"hashed\" | \"nulled\"; type: string })[]; expect_rule?: string; sql: string; step: number; title: string; why: string })[] }",
1232
+ "responseStatus": "201"
1233
+ },
1234
+ "releaseDemoCredential": {
1235
+ "operationId": "releaseDemoCredential",
1236
+ "method": "POST",
1237
+ "path": "/v1/demo/credentials/{session_id}/release",
1238
+ "summary": "Release a demo credential",
1239
+ "description": "Revokes a demo credential before its TTL runs out and returns its slot to the global ceiling. Callers that finish early should do this so the next evaluating agent is not turned away by a session nobody is using. The MCP token issued with the credential proves the caller holds it. Releasing an already-expired or already-released session succeeds with released=false.",
1240
+ "parameters": [
1241
+ {
1242
+ "name": "session_id",
1243
+ "in": "path",
1244
+ "required": true,
1245
+ "type": "string",
1246
+ "description": "The demo session to release, as returned when it was issued."
1247
+ }
1248
+ ],
1249
+ "requestBodyType": "{ mcp_token: string }",
1250
+ "requestBodyRequired": true,
1251
+ "responseType": "{ live_sessions: number; released: boolean; session_id: string }",
1252
+ "responseStatus": "200"
1253
+ },
1062
1254
  "listCustomDomains": {
1063
1255
  "operationId": "listCustomDomains",
1064
1256
  "method": "GET",
@@ -1086,6 +1278,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
1086
1278
  "required": false,
1087
1279
  "type": "string",
1088
1280
  "description": "Opaque token for cursor-based pagination."
1281
+ },
1282
+ {
1283
+ "name": "If-None-Match",
1284
+ "in": "header",
1285
+ "required": false,
1286
+ "type": "string",
1287
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
1089
1288
  }
1090
1289
  ],
1091
1290
  "requestBodyType": "",
@@ -1180,7 +1379,15 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
1180
1379
  "path": "/v1/health",
1181
1380
  "summary": "Health check",
1182
1381
  "description": "Returns the health status of the API server.",
1183
- "parameters": [],
1382
+ "parameters": [
1383
+ {
1384
+ "name": "If-None-Match",
1385
+ "in": "header",
1386
+ "required": false,
1387
+ "type": "string",
1388
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
1389
+ }
1390
+ ],
1184
1391
  "requestBodyType": "",
1185
1392
  "requestBodyRequired": false,
1186
1393
  "responseType": "{ image_sha: string; status: \"ok\" | \"degraded\"; timestamp?: string; version: string }",
@@ -1213,6 +1420,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
1213
1420
  "required": false,
1214
1421
  "type": "string",
1215
1422
  "description": "Opaque token for cursor-based pagination."
1423
+ },
1424
+ {
1425
+ "name": "If-None-Match",
1426
+ "in": "header",
1427
+ "required": false,
1428
+ "type": "string",
1429
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
1216
1430
  }
1217
1431
  ],
1218
1432
  "requestBodyType": "",
@@ -1267,6 +1481,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
1267
1481
  "required": true,
1268
1482
  "type": "string",
1269
1483
  "description": "Unique honeytoken identifier (prefixed, e.g. hnt_xxx)."
1484
+ },
1485
+ {
1486
+ "name": "If-None-Match",
1487
+ "in": "header",
1488
+ "required": false,
1489
+ "type": "string",
1490
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
1270
1491
  }
1271
1492
  ],
1272
1493
  "requestBodyType": "",
@@ -1294,6 +1515,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
1294
1515
  "required": true,
1295
1516
  "type": "string",
1296
1517
  "description": "Unique honeytoken identifier (prefixed, e.g. hnt_xxx)."
1518
+ },
1519
+ {
1520
+ "name": "If-Match",
1521
+ "in": "header",
1522
+ "required": false,
1523
+ "type": "string",
1524
+ "description": "Entity tag the write is based on, taken from the `ETag` of the read that produced the values being sent. The write proceeds only if it still matches the current representation; otherwise it is refused with `412 Precondition Failed` and nothing is changed.\n\nThis is what makes a read-modify-write safe. Without it the last writer wins and a concurrent edit is silently discarded, which is the failure an agent is most likely to cause and least likely to notice. The `412` response carries the current `ETag`, so a caller can re-read, re-apply its change and retry.\n\nOmitting the header keeps the old unconditional behaviour. `*` matches any current representation, which asserts only that the resource exists."
1297
1525
  }
1298
1526
  ],
1299
1527
  "requestBodyType": "{ action: \"audit_only\" | \"kill\"; relation_name: string; schema_name?: string }",
@@ -1355,6 +1583,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
1355
1583
  "required": false,
1356
1584
  "type": "number",
1357
1585
  "description": "Maximum number of top queries to return (1-100)."
1586
+ },
1587
+ {
1588
+ "name": "If-None-Match",
1589
+ "in": "header",
1590
+ "required": false,
1591
+ "type": "string",
1592
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
1358
1593
  }
1359
1594
  ],
1360
1595
  "requestBodyType": "",
@@ -1362,6 +1597,196 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
1362
1597
  "responseType": "{ cache: { hit_rate: number; total_hits: number; total_misses: number }; latency: { avg_ms: number; p99_ms: number }; queries: ({ avg_latency_ms: number; p99_latency_ms: number; query_hash: string; query_pattern: string; total_cache_hits: number; total_cache_misses: number; total_count: number })[] }",
1363
1598
  "responseStatus": "200"
1364
1599
  },
1600
+ "listOrgMembers": {
1601
+ "operationId": "listOrgMembers",
1602
+ "method": "GET",
1603
+ "path": "/v1/organizations/{org_id}/members",
1604
+ "summary": "List organization members",
1605
+ "description": "Lists the people who belong to the organization, and their roles.",
1606
+ "parameters": [
1607
+ {
1608
+ "name": "org_id",
1609
+ "in": "path",
1610
+ "required": true,
1611
+ "type": "string",
1612
+ "description": "Unique organization identifier."
1613
+ },
1614
+ {
1615
+ "name": "page_size",
1616
+ "in": "query",
1617
+ "required": false,
1618
+ "type": "number",
1619
+ "description": "Maximum number of items to return (1-100, default 20)."
1620
+ },
1621
+ {
1622
+ "name": "page_token",
1623
+ "in": "query",
1624
+ "required": false,
1625
+ "type": "string",
1626
+ "description": "Opaque token for cursor-based pagination."
1627
+ },
1628
+ {
1629
+ "name": "If-None-Match",
1630
+ "in": "header",
1631
+ "required": false,
1632
+ "type": "string",
1633
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
1634
+ }
1635
+ ],
1636
+ "requestBodyType": "",
1637
+ "requestBodyRequired": false,
1638
+ "responseType": "{ members: ({ created_at: string; email: string; id: string; image?: string; name: string; role: \"owner\" | \"admin\" | \"member\" | \"security_admin\" | \"billing_admin\" | \"auditor\" | \"policy-author\" | \"approver\"; user_id: string })[]; next_page_token?: string }",
1639
+ "responseStatus": "200"
1640
+ },
1641
+ "updateOrgMemberRole": {
1642
+ "operationId": "updateOrgMemberRole",
1643
+ "method": "PATCH",
1644
+ "path": "/v1/organizations/{org_id}/members/{member_id}",
1645
+ "summary": "Change a member's role",
1646
+ "description": "Changes what a member is allowed to do. An organization must keep at least one owner, so the last owner cannot be demoted, and `owner` cannot be assigned here: ownership transfer is a separate, higher-privilege flow.",
1647
+ "parameters": [
1648
+ {
1649
+ "name": "org_id",
1650
+ "in": "path",
1651
+ "required": true,
1652
+ "type": "string",
1653
+ "description": "Unique organization identifier."
1654
+ },
1655
+ {
1656
+ "name": "member_id",
1657
+ "in": "path",
1658
+ "required": true,
1659
+ "type": "string",
1660
+ "description": "Unique organization membership identifier. Unlike the resources PgBeam mints itself, memberships carry no type prefix: the id is opaque and is assigned when the membership row is created. Read it from `listOrgMembers` rather than constructing it."
1661
+ }
1662
+ ],
1663
+ "requestBodyType": "{ role: \"admin\" | \"member\" | \"security_admin\" | \"billing_admin\" | \"auditor\" | \"policy-author\" | \"approver\" }",
1664
+ "requestBodyRequired": true,
1665
+ "responseType": "{ created_at: string; email: string; id: string; image?: string; name: string; role: \"owner\" | \"admin\" | \"member\" | \"security_admin\" | \"billing_admin\" | \"auditor\" | \"policy-author\" | \"approver\"; user_id: string }",
1666
+ "responseStatus": "200"
1667
+ },
1668
+ "removeOrgMember": {
1669
+ "operationId": "removeOrgMember",
1670
+ "method": "DELETE",
1671
+ "path": "/v1/organizations/{org_id}/members/{member_id}",
1672
+ "summary": "Remove a member",
1673
+ "description": "Removes someone from the organization. An organization must keep at least one owner, so the last remaining owner cannot be removed and cannot be demoted either: transfer ownership first.",
1674
+ "parameters": [
1675
+ {
1676
+ "name": "org_id",
1677
+ "in": "path",
1678
+ "required": true,
1679
+ "type": "string",
1680
+ "description": "Unique organization identifier."
1681
+ },
1682
+ {
1683
+ "name": "member_id",
1684
+ "in": "path",
1685
+ "required": true,
1686
+ "type": "string",
1687
+ "description": "Unique organization membership identifier. Unlike the resources PgBeam mints itself, memberships carry no type prefix: the id is opaque and is assigned when the membership row is created. Read it from `listOrgMembers` rather than constructing it."
1688
+ }
1689
+ ],
1690
+ "requestBodyType": "",
1691
+ "requestBodyRequired": false,
1692
+ "responseType": "",
1693
+ "responseStatus": "204"
1694
+ },
1695
+ "listOrgInvitations": {
1696
+ "operationId": "listOrgInvitations",
1697
+ "method": "GET",
1698
+ "path": "/v1/organizations/{org_id}/invitations",
1699
+ "summary": "List invitations",
1700
+ "description": "Lists invitations to join the organization and where each has got to.",
1701
+ "parameters": [
1702
+ {
1703
+ "name": "org_id",
1704
+ "in": "path",
1705
+ "required": true,
1706
+ "type": "string",
1707
+ "description": "Unique organization identifier."
1708
+ },
1709
+ {
1710
+ "name": "status",
1711
+ "in": "query",
1712
+ "required": false,
1713
+ "type": "\"pending\" | \"accepted\" | \"rejected\" | \"canceled\"",
1714
+ "description": "Filter to a single status. Omit to list every invitation."
1715
+ },
1716
+ {
1717
+ "name": "page_size",
1718
+ "in": "query",
1719
+ "required": false,
1720
+ "type": "number",
1721
+ "description": "Maximum number of items to return (1-100, default 20)."
1722
+ },
1723
+ {
1724
+ "name": "page_token",
1725
+ "in": "query",
1726
+ "required": false,
1727
+ "type": "string",
1728
+ "description": "Opaque token for cursor-based pagination."
1729
+ },
1730
+ {
1731
+ "name": "If-None-Match",
1732
+ "in": "header",
1733
+ "required": false,
1734
+ "type": "string",
1735
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
1736
+ }
1737
+ ],
1738
+ "requestBodyType": "",
1739
+ "requestBodyRequired": false,
1740
+ "responseType": "{ invitations: ({ created_at: string; email: string; expires_at: string; id: string; role: \"owner\" | \"admin\" | \"member\" | \"security_admin\" | \"billing_admin\" | \"auditor\" | \"policy-author\" | \"approver\"; status: \"pending\" | \"accepted\" | \"rejected\" | \"canceled\" })[]; next_page_token?: string }",
1741
+ "responseStatus": "200"
1742
+ },
1743
+ "createOrgInvitation": {
1744
+ "operationId": "createOrgInvitation",
1745
+ "method": "POST",
1746
+ "path": "/v1/organizations/{org_id}/invitations",
1747
+ "summary": "Invite someone to the organization",
1748
+ "description": "Creates an invitation and emails it. Inviting an address that already has a pending invitation returns a conflict rather than a second invitation. `owner` cannot be invited: ownership transfer is a separate, higher-privilege flow.",
1749
+ "parameters": [
1750
+ {
1751
+ "name": "org_id",
1752
+ "in": "path",
1753
+ "required": true,
1754
+ "type": "string",
1755
+ "description": "Unique organization identifier."
1756
+ }
1757
+ ],
1758
+ "requestBodyType": "{ email: string; role?: \"admin\" | \"member\" | \"security_admin\" | \"billing_admin\" | \"auditor\" | \"policy-author\" | \"approver\" }",
1759
+ "requestBodyRequired": true,
1760
+ "responseType": "{ created_at: string; email: string; expires_at: string; id: string; role: \"owner\" | \"admin\" | \"member\" | \"security_admin\" | \"billing_admin\" | \"auditor\" | \"policy-author\" | \"approver\"; status: \"pending\" | \"accepted\" | \"rejected\" | \"canceled\" }",
1761
+ "responseStatus": "201"
1762
+ },
1763
+ "revokeOrgInvitation": {
1764
+ "operationId": "revokeOrgInvitation",
1765
+ "method": "DELETE",
1766
+ "path": "/v1/organizations/{org_id}/invitations/{invitation_id}",
1767
+ "summary": "Revoke an invitation",
1768
+ "description": "Cancels a pending invitation so it can no longer be accepted.",
1769
+ "parameters": [
1770
+ {
1771
+ "name": "org_id",
1772
+ "in": "path",
1773
+ "required": true,
1774
+ "type": "string",
1775
+ "description": "Unique organization identifier."
1776
+ },
1777
+ {
1778
+ "name": "invitation_id",
1779
+ "in": "path",
1780
+ "required": true,
1781
+ "type": "string",
1782
+ "description": "Unique organization invitation identifier. Opaque, with no type prefix. Invitations created through this API are 32 lowercase hex characters; invitations created in the dashboard carry an id of a different shape, so treat it as opaque and read it from `listOrgInvitations`."
1783
+ }
1784
+ ],
1785
+ "requestBodyType": "",
1786
+ "requestBodyRequired": false,
1787
+ "responseType": "",
1788
+ "responseStatus": "204"
1789
+ },
1365
1790
  "lintMigration": {
1366
1791
  "operationId": "lintMigration",
1367
1792
  "method": "POST",
@@ -1395,6 +1820,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
1395
1820
  "required": true,
1396
1821
  "type": "string",
1397
1822
  "description": "Unique organization identifier."
1823
+ },
1824
+ {
1825
+ "name": "If-None-Match",
1826
+ "in": "header",
1827
+ "required": false,
1828
+ "type": "string",
1829
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
1398
1830
  }
1399
1831
  ],
1400
1832
  "requestBodyType": "",
@@ -1428,7 +1860,15 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
1428
1860
  "path": "/v1/organizations",
1429
1861
  "summary": "List organizations",
1430
1862
  "description": "Lists the organizations visible to the caller's credential. An organization-scoped API key (pbo_) returns exactly the organization it belongs to. A user credential (account-scoped API key or dashboard session token) returns the organizations the user is a member of, including the caller's role in each.",
1431
- "parameters": [],
1863
+ "parameters": [
1864
+ {
1865
+ "name": "If-None-Match",
1866
+ "in": "header",
1867
+ "required": false,
1868
+ "type": "string",
1869
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
1870
+ }
1871
+ ],
1432
1872
  "requestBodyType": "",
1433
1873
  "requestBodyRequired": false,
1434
1874
  "responseType": "{ organizations: ({ id: string; name: string; role?: string; slug: string })[] }",
@@ -1461,6 +1901,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
1461
1901
  "required": false,
1462
1902
  "type": "string",
1463
1903
  "description": "Opaque token for cursor-based pagination."
1904
+ },
1905
+ {
1906
+ "name": "If-None-Match",
1907
+ "in": "header",
1908
+ "required": false,
1909
+ "type": "string",
1910
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
1464
1911
  }
1465
1912
  ],
1466
1913
  "requestBodyType": "",
@@ -1515,6 +1962,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
1515
1962
  "required": true,
1516
1963
  "type": "string",
1517
1964
  "description": "Unique policy profile identifier (prefixed, e.g. pol_xxx)."
1965
+ },
1966
+ {
1967
+ "name": "If-None-Match",
1968
+ "in": "header",
1969
+ "required": false,
1970
+ "type": "string",
1971
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
1518
1972
  }
1519
1973
  ],
1520
1974
  "requestBodyType": "",
@@ -1542,6 +1996,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
1542
1996
  "required": true,
1543
1997
  "type": "string",
1544
1998
  "description": "Unique policy profile identifier (prefixed, e.g. pol_xxx)."
1999
+ },
2000
+ {
2001
+ "name": "If-Match",
2002
+ "in": "header",
2003
+ "required": false,
2004
+ "type": "string",
2005
+ "description": "Entity tag the write is based on, taken from the `ETag` of the read that produced the values being sent. The write proceeds only if it still matches the current representation; otherwise it is refused with `412 Precondition Failed` and nothing is changed.\n\nThis is what makes a read-modify-write safe. Without it the last writer wins and a concurrent edit is silently discarded, which is the failure an agent is most likely to cause and least likely to notice. The `412` response carries the current `ETag`, so a caller can re-read, re-apply its change and retry.\n\nOmitting the header keeps the old unconditional behaviour. `*` matches any current representation, which asserts only that the resource exists."
1545
2006
  }
1546
2007
  ],
1547
2008
  "requestBodyType": "{ access_mode?: \"read_only\" | \"read_write\"; approval_auto_max_rows?: number; approval_mode?: \"off\" | \"writes\" | \"ddl\" | \"all\"; approval_timeout_seconds?: number; budget_queries_per_day?: number; budget_queries_per_hour?: number; egress_bytes_per_day?: number; masking_rules?: ({ column: string; kind: \"redact\" | \"null\" | \"hash\"; table: string })[]; max_affected_rows?: number; max_rows?: number; migration_safety?: \"off\" | \"warn\" | \"block\"; name: string; row_filters?: ({ predicate: string; table: string })[]; statement_rules?: { allow?: string[]; deny?: string[] }; statement_timeout_ms?: number; table_allowlist?: string[]; table_denylist?: string[]; write_mode?: \"normal\" | \"rollback\" | \"sandbox\" }",
@@ -1650,6 +2111,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
1650
2111
  "required": false,
1651
2112
  "type": "\"name\" | \"created_at\" | \"active_connections\"",
1652
2113
  "description": "Sort field for projects list."
2114
+ },
2115
+ {
2116
+ "name": "If-None-Match",
2117
+ "in": "header",
2118
+ "required": false,
2119
+ "type": "string",
2120
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
1653
2121
  }
1654
2122
  ],
1655
2123
  "requestBodyType": "",
@@ -1690,6 +2158,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
1690
2158
  "required": true,
1691
2159
  "type": "string",
1692
2160
  "description": "Unique project identifier (prefixed, e.g. prj_xxx)."
2161
+ },
2162
+ {
2163
+ "name": "If-None-Match",
2164
+ "in": "header",
2165
+ "required": false,
2166
+ "type": "string",
2167
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
1693
2168
  }
1694
2169
  ],
1695
2170
  "requestBodyType": "",
@@ -1710,6 +2185,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
1710
2185
  "required": true,
1711
2186
  "type": "string",
1712
2187
  "description": "Unique project identifier (prefixed, e.g. prj_xxx)."
2188
+ },
2189
+ {
2190
+ "name": "If-Match",
2191
+ "in": "header",
2192
+ "required": false,
2193
+ "type": "string",
2194
+ "description": "Entity tag the write is based on, taken from the `ETag` of the read that produced the values being sent. The write proceeds only if it still matches the current representation; otherwise it is refused with `412 Precondition Failed` and nothing is changed.\n\nThis is what makes a read-modify-write safe. Without it the last writer wins and a concurrent edit is silently discarded, which is the failure an agent is most likely to cause and least likely to notice. The `412` response carries the current `ETag`, so a caller can re-read, re-apply its change and retry.\n\nOmitting the header keeps the old unconditional behaviour. `*` matches any current representation, which asserts only that the resource exists."
1713
2195
  }
1714
2196
  ],
1715
2197
  "requestBodyType": "{ agents_disabled?: boolean; allowed_cidrs?: ({ cidr: string; label?: string })[]; default_policy_profile_id?: string; description?: string; name?: string; residency?: \"any\" | \"us\" | \"eu\"; status?: \"active\" | \"suspended\" | \"deleted\"; tags?: string[] }",
@@ -1764,6 +2246,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
1764
2246
  "required": false,
1765
2247
  "type": "string",
1766
2248
  "description": "Filter metrics by region code."
2249
+ },
2250
+ {
2251
+ "name": "If-None-Match",
2252
+ "in": "header",
2253
+ "required": false,
2254
+ "type": "string",
2255
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
1767
2256
  }
1768
2257
  ],
1769
2258
  "requestBodyType": "",
@@ -1777,7 +2266,15 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
1777
2266
  "path": "/v1/regions",
1778
2267
  "summary": "List available regions",
1779
2268
  "description": "Returns all active data plane regions.",
1780
- "parameters": [],
2269
+ "parameters": [
2270
+ {
2271
+ "name": "If-None-Match",
2272
+ "in": "header",
2273
+ "required": false,
2274
+ "type": "string",
2275
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
2276
+ }
2277
+ ],
1781
2278
  "requestBodyType": "",
1782
2279
  "requestBodyRequired": false,
1783
2280
  "responseType": "{ regions: ({ available: boolean; continent?: string; country?: string; id: string; name: string; provider: \"aws\" | \"azure\" | \"gcp\"; status: \"active\" | \"draining\" | \"inactive\" })[] }",
@@ -1796,6 +2293,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
1796
2293
  "required": true,
1797
2294
  "type": "string",
1798
2295
  "description": "Unique database identifier (prefixed, e.g. db_xxx)."
2296
+ },
2297
+ {
2298
+ "name": "If-None-Match",
2299
+ "in": "header",
2300
+ "required": false,
2301
+ "type": "string",
2302
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
1799
2303
  }
1800
2304
  ],
1801
2305
  "requestBodyType": "",
@@ -1884,6 +2388,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
1884
2388
  "required": false,
1885
2389
  "type": "string",
1886
2390
  "description": "Opaque token for cursor-based pagination."
2391
+ },
2392
+ {
2393
+ "name": "If-None-Match",
2394
+ "in": "header",
2395
+ "required": false,
2396
+ "type": "string",
2397
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
1887
2398
  }
1888
2399
  ],
1889
2400
  "requestBodyType": "",
@@ -1965,6 +2476,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
1965
2476
  "required": true,
1966
2477
  "type": "string",
1967
2478
  "description": "Unique organization identifier."
2479
+ },
2480
+ {
2481
+ "name": "If-None-Match",
2482
+ "in": "header",
2483
+ "required": false,
2484
+ "type": "string",
2485
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
1968
2486
  }
1969
2487
  ],
1970
2488
  "requestBodyType": "",
@@ -2101,6 +2619,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
2101
2619
  "required": false,
2102
2620
  "type": "number",
2103
2621
  "description": "Page number (1-based, default 1)."
2622
+ },
2623
+ {
2624
+ "name": "If-None-Match",
2625
+ "in": "header",
2626
+ "required": false,
2627
+ "type": "string",
2628
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
2104
2629
  }
2105
2630
  ],
2106
2631
  "requestBodyType": "",
@@ -2155,6 +2680,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
2155
2680
  "required": true,
2156
2681
  "type": "string",
2157
2682
  "description": "Unique support case identifier (prefixed, e.g. sc_xxx)."
2683
+ },
2684
+ {
2685
+ "name": "If-None-Match",
2686
+ "in": "header",
2687
+ "required": false,
2688
+ "type": "string",
2689
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
2158
2690
  }
2159
2691
  ],
2160
2692
  "requestBodyType": "",
@@ -2262,6 +2794,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
2262
2794
  "required": true,
2263
2795
  "type": "string",
2264
2796
  "description": "End date (inclusive, YYYY-MM-DD)."
2797
+ },
2798
+ {
2799
+ "name": "If-None-Match",
2800
+ "in": "header",
2801
+ "required": false,
2802
+ "type": "string",
2803
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
2265
2804
  }
2266
2805
  ],
2267
2806
  "requestBodyType": "",
@@ -2296,6 +2835,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
2296
2835
  "required": true,
2297
2836
  "type": "string",
2298
2837
  "description": "End date (inclusive, YYYY-MM-DD)."
2838
+ },
2839
+ {
2840
+ "name": "If-None-Match",
2841
+ "in": "header",
2842
+ "required": false,
2843
+ "type": "string",
2844
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
2299
2845
  }
2300
2846
  ],
2301
2847
  "requestBodyType": "",
@@ -2330,6 +2876,13 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
2330
2876
  "required": false,
2331
2877
  "type": "string",
2332
2878
  "description": "Return entries strictly older than this timestamp (cursor / upper bound)."
2879
+ },
2880
+ {
2881
+ "name": "If-None-Match",
2882
+ "in": "header",
2883
+ "required": false,
2884
+ "type": "string",
2885
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
2333
2886
  }
2334
2887
  ],
2335
2888
  "requestBodyType": "",
@@ -2364,11 +2917,18 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
2364
2917
  "required": false,
2365
2918
  "type": "string",
2366
2919
  "description": "Opaque token for cursor-based pagination."
2920
+ },
2921
+ {
2922
+ "name": "If-None-Match",
2923
+ "in": "header",
2924
+ "required": false,
2925
+ "type": "string",
2926
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
2367
2927
  }
2368
2928
  ],
2369
2929
  "requestBodyType": "",
2370
2930
  "requestBodyRequired": false,
2371
- "responseType": "{ next_page_token?: string; webhooks: ({ created_at: string; description?: string; enabled: boolean; event_types?: string[]; format: \"json\" | \"splunk_hec\" | \"datadog\" | \"elastic\"; id: string; project_id: string; updated_at: string; url: string })[] }",
2931
+ "responseType": "{ next_page_token?: string; webhooks: ({ created_at: string; description?: string; enabled: boolean; event_types?: (\"query_blocked\" | \"budget_exhausted\" | \"kill_switch\" | \"masked\" | \"migration_flagged\" | \"approval_requested\" | \"anomaly_alert\" | \"canary_tripped\" | \"audit_checkpoint\" | \"webhook.test\")[]; format: \"json\" | \"splunk_hec\" | \"datadog\" | \"elastic\"; id: string; project_id: string; updated_at: string; url: string })[] }",
2372
2932
  "responseStatus": "200"
2373
2933
  },
2374
2934
  "createWebhookEndpoint": {
@@ -2393,9 +2953,9 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
2393
2953
  "description": "Client-generated key that makes a retry of this request safe. The first request carrying a given key executes normally and its response (status, content type and body) is stored for 24 hours; a later request with the same key returns that stored response without running the operation again, so a retry after a lost or timed-out response cannot create a second resource.\n\nReusing a key with a different request body returns `409 Conflict`: a key is a promise about one specific request, so a changed body is a client bug rather than a retry. Keys are scoped to the calling organization (or to the user, for account-scoped tokens), so one tenant can never read another's stored response.\n\nA `5xx`, `408` or `429` is never stored, because those describe a request that produced no settled answer and the next attempt with the same key must run for real. A `4xx` is stored: it is the server's settled answer about this exact request.\n\nUse a fresh UUID per logical operation. The PgBeam SDKs generate one per call and reuse it across their own automatic retries."
2394
2954
  }
2395
2955
  ],
2396
- "requestBodyType": "{ description?: string; enabled?: boolean; event_types?: string[]; format?: \"json\" | \"splunk_hec\" | \"datadog\" | \"elastic\"; secret?: string; url: string }",
2956
+ "requestBodyType": "{ description?: string; enabled?: boolean; event_types?: (\"query_blocked\" | \"budget_exhausted\" | \"kill_switch\" | \"masked\" | \"migration_flagged\" | \"approval_requested\" | \"anomaly_alert\" | \"canary_tripped\" | \"audit_checkpoint\" | \"webhook.test\")[]; format?: \"json\" | \"splunk_hec\" | \"datadog\" | \"elastic\"; secret?: string; url: string }",
2397
2957
  "requestBodyRequired": true,
2398
- "responseType": "{ created_at: string; description?: string; enabled: boolean; event_types?: string[]; format: \"json\" | \"splunk_hec\" | \"datadog\" | \"elastic\"; id: string; project_id: string; updated_at: string; url: string }",
2958
+ "responseType": "{ created_at: string; description?: string; enabled: boolean; event_types?: (\"query_blocked\" | \"budget_exhausted\" | \"kill_switch\" | \"masked\" | \"migration_flagged\" | \"approval_requested\" | \"anomaly_alert\" | \"canary_tripped\" | \"audit_checkpoint\" | \"webhook.test\")[]; format: \"json\" | \"splunk_hec\" | \"datadog\" | \"elastic\"; id: string; project_id: string; updated_at: string; url: string }",
2399
2959
  "responseStatus": "201"
2400
2960
  },
2401
2961
  "getWebhookEndpoint": {
@@ -2418,11 +2978,18 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
2418
2978
  "required": true,
2419
2979
  "type": "string",
2420
2980
  "description": "Unique webhook endpoint identifier (prefixed, e.g. whk_xxx)."
2981
+ },
2982
+ {
2983
+ "name": "If-None-Match",
2984
+ "in": "header",
2985
+ "required": false,
2986
+ "type": "string",
2987
+ "description": "Entity tag the client already holds, taken from the `ETag` of an earlier response. When it still matches the current representation the server answers `304 Not Modified` with no body, so a poll that finds nothing changed costs a round trip rather than a transfer.\n\nA comma-separated list is accepted, and `*` matches any current representation."
2421
2988
  }
2422
2989
  ],
2423
2990
  "requestBodyType": "",
2424
2991
  "requestBodyRequired": false,
2425
- "responseType": "{ created_at: string; description?: string; enabled: boolean; event_types?: string[]; format: \"json\" | \"splunk_hec\" | \"datadog\" | \"elastic\"; id: string; project_id: string; updated_at: string; url: string }",
2992
+ "responseType": "{ created_at: string; description?: string; enabled: boolean; event_types?: (\"query_blocked\" | \"budget_exhausted\" | \"kill_switch\" | \"masked\" | \"migration_flagged\" | \"approval_requested\" | \"anomaly_alert\" | \"canary_tripped\" | \"audit_checkpoint\" | \"webhook.test\")[]; format: \"json\" | \"splunk_hec\" | \"datadog\" | \"elastic\"; id: string; project_id: string; updated_at: string; url: string }",
2426
2993
  "responseStatus": "200"
2427
2994
  },
2428
2995
  "updateWebhookEndpoint": {
@@ -2445,11 +3012,18 @@ var operationsMap_gen = require('./operations-map.gen-gco09oqg.cjs');
2445
3012
  "required": true,
2446
3013
  "type": "string",
2447
3014
  "description": "Unique webhook endpoint identifier (prefixed, e.g. whk_xxx)."
3015
+ },
3016
+ {
3017
+ "name": "If-Match",
3018
+ "in": "header",
3019
+ "required": false,
3020
+ "type": "string",
3021
+ "description": "Entity tag the write is based on, taken from the `ETag` of the read that produced the values being sent. The write proceeds only if it still matches the current representation; otherwise it is refused with `412 Precondition Failed` and nothing is changed.\n\nThis is what makes a read-modify-write safe. Without it the last writer wins and a concurrent edit is silently discarded, which is the failure an agent is most likely to cause and least likely to notice. The `412` response carries the current `ETag`, so a caller can re-read, re-apply its change and retry.\n\nOmitting the header keeps the old unconditional behaviour. `*` matches any current representation, which asserts only that the resource exists."
2448
3022
  }
2449
3023
  ],
2450
- "requestBodyType": "{ description?: string; enabled?: boolean; event_types?: string[]; format?: \"json\" | \"splunk_hec\" | \"datadog\" | \"elastic\"; secret?: string; url: string }",
3024
+ "requestBodyType": "{ description?: string; enabled?: boolean; event_types?: (\"query_blocked\" | \"budget_exhausted\" | \"kill_switch\" | \"masked\" | \"migration_flagged\" | \"approval_requested\" | \"anomaly_alert\" | \"canary_tripped\" | \"audit_checkpoint\" | \"webhook.test\")[]; format?: \"json\" | \"splunk_hec\" | \"datadog\" | \"elastic\"; secret?: string; url: string }",
2451
3025
  "requestBodyRequired": true,
2452
- "responseType": "{ created_at: string; description?: string; enabled: boolean; event_types?: string[]; format: \"json\" | \"splunk_hec\" | \"datadog\" | \"elastic\"; id: string; project_id: string; updated_at: string; url: string }",
3026
+ "responseType": "{ created_at: string; description?: string; enabled: boolean; event_types?: (\"query_blocked\" | \"budget_exhausted\" | \"kill_switch\" | \"masked\" | \"migration_flagged\" | \"approval_requested\" | \"anomaly_alert\" | \"canary_tripped\" | \"audit_checkpoint\" | \"webhook.test\")[]; format: \"json\" | \"splunk_hec\" | \"datadog\" | \"elastic\"; id: string; project_id: string; updated_at: string; url: string }",
2453
3027
  "responseStatus": "200"
2454
3028
  },
2455
3029
  "deleteWebhookEndpoint": {