@deepnoodle/mobius 0.0.5 → 0.0.6

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.
@@ -173,64 +173,6 @@ export interface paths {
173
173
  patch?: never;
174
174
  trace?: never;
175
175
  };
176
- "/v1/api-keys": {
177
- parameters: {
178
- query?: never;
179
- header?: never;
180
- path?: never;
181
- cookie?: never;
182
- };
183
- /**
184
- * List API keys
185
- * @description Returns API keys for this org. When `project_id` is provided, return
186
- * only keys pinned to that project. When `project_id` is omitted, return
187
- * only org-level keys; project-pinned keys are excluded because the
188
- * request has no project-scoped context.
189
- */
190
- get: operations["listAPIKeys"];
191
- put?: never;
192
- /**
193
- * Create an API key
194
- * @description Creates an API key for this org. Omit `project_id` to create an
195
- * org-scoped key when the caller has org-level authorization, or set
196
- * `project_id` to pin the key to exactly one project. Project-pinned
197
- * keys remain inaccessible through org-level listing and management
198
- * unless the request is explicitly scoped with the same `project_id`.
199
- * The raw key value is returned in `key` and is never retrievable again
200
- * after this response.
201
- */
202
- post: operations["createAPIKey"];
203
- delete?: never;
204
- options?: never;
205
- head?: never;
206
- patch?: never;
207
- trace?: never;
208
- };
209
- "/v1/api-keys/{id}": {
210
- parameters: {
211
- query?: never;
212
- header?: never;
213
- path?: never;
214
- cookie?: never;
215
- };
216
- /** Get an API key */
217
- get: operations["getAPIKey"];
218
- put?: never;
219
- post?: never;
220
- /**
221
- * Revoke an API key
222
- * @description Permanently revokes the key. In-flight requests using this key will
223
- * immediately start receiving 401. When `project_id` is provided, revoke
224
- * only a key pinned to that project. When `project_id` is omitted,
225
- * project-pinned keys are excluded because the request has no
226
- * project-scoped context.
227
- */
228
- delete: operations["revokeAPIKey"];
229
- options?: never;
230
- head?: never;
231
- patch?: never;
232
- trace?: never;
233
- };
234
176
  "/v1/projects/{project}/workflows": {
235
177
  parameters: {
236
178
  query?: never;
@@ -345,8 +287,8 @@ export interface paths {
345
287
  * List workflow runs
346
288
  * @description Supports cursor-based pagination and keyset filtering by
347
289
  * status, workflow type, queue, parent run, and
348
- * initiator. Returns `{data, next_cursor?}`; pass `next_cursor`
349
- * back in the next call to walk the result set.
290
+ * initiator. When `has_more` is true, pass the returned
291
+ * `next_cursor` back on the next call to walk the result set.
350
292
  */
351
293
  get: operations["listRuns"];
352
294
  put?: never;
@@ -365,52 +307,6 @@ export interface paths {
365
307
  patch?: never;
366
308
  trace?: never;
367
309
  };
368
- "/v1/projects/{project}/runs/cancellations": {
369
- parameters: {
370
- query?: never;
371
- header?: never;
372
- path?: never;
373
- cookie?: never;
374
- };
375
- get?: never;
376
- put?: never;
377
- /**
378
- * Request cancellation for a batch of runs
379
- * @description Sets `cancel_requested` on every listed run. Workers receive
380
- * `directives.should_cancel: true` on their next heartbeat and are
381
- * expected to stop cooperatively. Per-run errors are reported inline;
382
- * the response always returns 200 even on partial failures.
383
- */
384
- post: operations["bulkCancelRuns"];
385
- delete?: never;
386
- options?: never;
387
- head?: never;
388
- patch?: never;
389
- trace?: never;
390
- };
391
- "/v1/projects/{project}/runs/retries": {
392
- parameters: {
393
- query?: never;
394
- header?: never;
395
- path?: never;
396
- cookie?: never;
397
- };
398
- get?: never;
399
- put?: never;
400
- /**
401
- * Re-enqueue a batch of failed runs
402
- * @description Flips every listed run from `failed` back to `queued`, clearing
403
- * the error message. Only runs in terminal `failed` status can be
404
- * retried; runs in other states produce per-run errors. Per-run errors
405
- * are reported inline; the response always returns 200 on partial failures.
406
- */
407
- post: operations["bulkRetryRuns"];
408
- delete?: never;
409
- options?: never;
410
- head?: never;
411
- patch?: never;
412
- trace?: never;
413
- };
414
310
  "/v1/projects/{project}/runs/{id}": {
415
311
  parameters: {
416
312
  query?: never;
@@ -436,7 +332,7 @@ export interface paths {
436
332
  cookie?: never;
437
333
  };
438
334
  /** List action log entries for a run */
439
- get: operations["getRunActionLog"];
335
+ get: operations["listRunActionLog"];
440
336
  put?: never;
441
337
  post?: never;
442
338
  delete?: never;
@@ -453,7 +349,7 @@ export interface paths {
453
349
  cookie?: never;
454
350
  };
455
351
  /** List jobs for a run */
456
- get: operations["getRunJobs"];
352
+ get: operations["listRunJobs"];
457
353
  put?: never;
458
354
  post?: never;
459
355
  delete?: never;
@@ -748,8 +644,8 @@ export interface paths {
748
644
  * for up to `wait_seconds` (capped at 30). Returns 204 when the poll
749
645
  * window closes empty.
750
646
  *
751
- * Each successful call also registers or refreshes the worker in the
752
- * worker registry (used by `GET /v1/projects/{project}/workers`), so no
647
+ * Each successful call also registers or refreshes the caller's worker
648
+ * session (used by `GET /v1/projects/{project}/worker-sessions`), so no
753
649
  * separate registration step is needed.
754
650
  *
755
651
  * The returned `JobClaim` includes the `heartbeat_interval_seconds`
@@ -876,9 +772,9 @@ export interface paths {
876
772
  * The server derives the owning run and project scope from the job,
877
773
  * so workers do not need to pass `run_id` explicitly. Prefer this
878
774
  * route over `POST /v1/projects/{project}/interactions` from within a
879
- * job context. The optional `signal_name` field overrides the server-
880
- * derived signal name; when omitted the server derives the signal name
881
- * from `step_name` or uses a default interaction signal name.
775
+ * job context. The optional `signal_name` field overrides the
776
+ * server-derived signal name; when omitted the server derives the
777
+ * signal name from `step_name` or uses a default interaction signal.
882
778
  */
883
779
  post: operations["createJobInteraction"];
884
780
  delete?: never;
@@ -974,7 +870,7 @@ export interface paths {
974
870
  * List fire history for a trigger
975
871
  * @description Returns a paginated history of trigger fires newest-first. Each entry
976
872
  * records whether the fire succeeded, was skipped (e.g. by `forbid`
977
- * concurrency policy), or failed, along with the resulting run ID.
873
+ * concurrency policy), or failed, along with per-target outcomes.
978
874
  */
979
875
  get: operations["listTriggerFires"];
980
876
  put?: never;
@@ -985,7 +881,7 @@ export interface paths {
985
881
  patch?: never;
986
882
  trace?: never;
987
883
  };
988
- "/v1/projects/{project}/workers": {
884
+ "/v1/projects/{project}/triggers/{id}/targets": {
989
885
  parameters: {
990
886
  query?: never;
991
887
  header?: never;
@@ -993,14 +889,64 @@ export interface paths {
993
889
  cookie?: never;
994
890
  };
995
891
  /**
996
- * List workers
997
- * @description Returns workers that have polled for jobs within the project. Each
998
- * worker's `stale` flag is computed at read time: if `last_seen_at`
999
- * is older than 2 minutes (or absent), the worker is considered stale.
1000
- * Stale workers are retained for display but will not receive new job
892
+ * List targets for a trigger
893
+ * @description Returns all targets attached to the given trigger.
894
+ */
895
+ get: operations["listTriggerTargets"];
896
+ put?: never;
897
+ /**
898
+ * Add a target to a trigger
899
+ * @description Attaches a workflow as a new target of the trigger.
900
+ */
901
+ post: operations["createTriggerTarget"];
902
+ /**
903
+ * Remove all targets from a trigger
904
+ * @description Detaches every target from the trigger. The trigger itself is not deleted.
905
+ */
906
+ delete: operations["deleteAllTriggerTargets"];
907
+ options?: never;
908
+ head?: never;
909
+ patch?: never;
910
+ trace?: never;
911
+ };
912
+ "/v1/projects/{project}/triggers/{id}/targets/{target_id}": {
913
+ parameters: {
914
+ query?: never;
915
+ header?: never;
916
+ path?: never;
917
+ cookie?: never;
918
+ };
919
+ /** Get a trigger target */
920
+ get: operations["getTriggerTarget"];
921
+ put?: never;
922
+ post?: never;
923
+ /** Remove a target from a trigger */
924
+ delete: operations["deleteTriggerTarget"];
925
+ options?: never;
926
+ head?: never;
927
+ /**
928
+ * Update a trigger target
929
+ * @description All fields are optional; omitted fields are unchanged.
930
+ */
931
+ patch: operations["updateTriggerTarget"];
932
+ trace?: never;
933
+ };
934
+ "/v1/projects/{project}/worker-sessions": {
935
+ parameters: {
936
+ query?: never;
937
+ header?: never;
938
+ path?: never;
939
+ cookie?: never;
940
+ };
941
+ /**
942
+ * List worker sessions
943
+ * @description Returns worker sessions that have polled for jobs within the project.
944
+ * Each session's `stale` flag is computed at read time: if `last_seen_at`
945
+ * is older than 2 minutes (or absent), the session is considered stale.
946
+ * Stale sessions are retained for display but will not receive new job
1001
947
  * claims.
1002
948
  */
1003
- get: operations["listWorkers"];
949
+ get: operations["listWorkerSessions"];
1004
950
  put?: never;
1005
951
  post?: never;
1006
952
  delete?: never;
@@ -1066,7 +1012,7 @@ export interface paths {
1066
1012
  patch: operations["updateProject"];
1067
1013
  trace?: never;
1068
1014
  };
1069
- "/v1/projects/{project}/webhooks": {
1015
+ "/v1/projects/{id}/members": {
1070
1016
  parameters: {
1071
1017
  query?: never;
1072
1018
  header?: never;
@@ -1074,55 +1020,51 @@ export interface paths {
1074
1020
  cookie?: never;
1075
1021
  };
1076
1022
  /**
1077
- * List webhooks
1078
- * @description Returns all outgoing webhook subscriptions for the project.
1023
+ * List project members
1024
+ * @description Returns the users listed as members of this project. Membership is a
1025
+ * pure visibility layer: for `restricted` projects only listed members
1026
+ * (plus org owners/admins) can see or use the project. For `org_open`
1027
+ * projects, membership has no visibility effect.
1079
1028
  */
1080
- get: operations["listWebhooks"];
1029
+ get: operations["listProjectMembers"];
1081
1030
  put?: never;
1082
1031
  /**
1083
- * Create a webhook
1084
- * @description Creates a new outgoing webhook subscription. Webhook names must be
1085
- * unique within the project. Returns 409 if the name already exists.
1086
- *
1087
- * The signing `secret` (if provided) is stored in plaintext — treat
1088
- * it as a shared secret and rotate it via `PATCH` if compromised.
1032
+ * Add a project member
1033
+ * @description Adds a user as a project member. The user must already be an org
1034
+ * member. Add is idempotent adding an existing member returns the
1035
+ * existing row with `200 OK`, not `409`. New memberships are returned
1036
+ * with `201 Created`.
1089
1037
  */
1090
- post: operations["createWebhook"];
1038
+ post: operations["addProjectMember"];
1091
1039
  delete?: never;
1092
1040
  options?: never;
1093
1041
  head?: never;
1094
1042
  patch?: never;
1095
1043
  trace?: never;
1096
1044
  };
1097
- "/v1/projects/{project}/webhooks/{id}": {
1045
+ "/v1/projects/{id}/members/{uid}": {
1098
1046
  parameters: {
1099
1047
  query?: never;
1100
1048
  header?: never;
1101
1049
  path?: never;
1102
1050
  cookie?: never;
1103
1051
  };
1104
- /** Get a webhook */
1105
- get: operations["getWebhook"];
1052
+ get?: never;
1106
1053
  put?: never;
1107
1054
  post?: never;
1108
1055
  /**
1109
- * Delete a webhook
1110
- * @description Deletes the webhook and its delivery history.
1056
+ * Remove a project member
1057
+ * @description Removes a user from the project members list. On `restricted`
1058
+ * projects, removing the last remaining member is rejected — flip the
1059
+ * project to `org_open` or add another member first.
1111
1060
  */
1112
- delete: operations["deleteWebhook"];
1061
+ delete: operations["removeProjectMember"];
1113
1062
  options?: never;
1114
1063
  head?: never;
1115
- /**
1116
- * Update a webhook
1117
- * @description Updates the webhook URL, event subscriptions, enabled state, or
1118
- * signing secret. Setting `secret` to an empty string clears the
1119
- * current secret and disables signing. Omitting `secret` leaves the
1120
- * current value unchanged.
1121
- */
1122
- patch: operations["updateWebhook"];
1064
+ patch?: never;
1123
1065
  trace?: never;
1124
1066
  };
1125
- "/v1/projects/{project}/webhooks/{id}/deliveries": {
1067
+ "/v1/projects/{project}/webhooks": {
1126
1068
  parameters: {
1127
1069
  query?: never;
1128
1070
  header?: never;
@@ -1130,74 +1072,55 @@ export interface paths {
1130
1072
  cookie?: never;
1131
1073
  };
1132
1074
  /**
1133
- * List webhook deliveries
1134
- * @description Lists the delivery history for a webhook, newest first. Each entry
1135
- * records the event type, current status, attempt count, and any last
1136
- * error message. Deliveries are retried up to 10 times (5xx, 408,
1137
- * 429 are retryable; other 4xx are not). A delivery transitions to
1138
- * `failed` only after exhausting all retry attempts.
1075
+ * List webhooks
1076
+ * @description Returns all outgoing webhook subscriptions for the project.
1139
1077
  */
1140
- get: operations["listWebhookDeliveries"];
1141
- put?: never;
1142
- post?: never;
1143
- delete?: never;
1144
- options?: never;
1145
- head?: never;
1146
- patch?: never;
1147
- trace?: never;
1148
- };
1149
- "/v1/projects/{project}/integrations": {
1150
- parameters: {
1151
- query?: never;
1152
- header?: never;
1153
- path?: never;
1154
- cookie?: never;
1155
- };
1156
- /** List integrations */
1157
- get: operations["listIntegrations"];
1078
+ get: operations["listWebhooks"];
1158
1079
  put?: never;
1159
1080
  /**
1160
- * Create an integration
1161
- * @description Creates a new integration record. The `provider` + `name` pair must
1162
- * be unique within the project. Returns 400 if validation fails (e.g.,
1163
- * missing required fields).
1081
+ * Create a webhook
1082
+ * @description Creates a new outgoing webhook subscription. Webhook names must be
1083
+ * unique within the project. Returns 409 if the name already exists.
1084
+ *
1085
+ * Treat the `signing_secret` as a shared secret and rotate it via
1086
+ * `PATCH` if compromised.
1164
1087
  */
1165
- post: operations["createIntegration"];
1088
+ post: operations["createWebhook"];
1166
1089
  delete?: never;
1167
1090
  options?: never;
1168
1091
  head?: never;
1169
1092
  patch?: never;
1170
1093
  trace?: never;
1171
1094
  };
1172
- "/v1/projects/{project}/integrations/{id}": {
1095
+ "/v1/projects/{project}/webhooks/{id}": {
1173
1096
  parameters: {
1174
1097
  query?: never;
1175
1098
  header?: never;
1176
1099
  path?: never;
1177
1100
  cookie?: never;
1178
1101
  };
1179
- /** Get an integration */
1180
- get: operations["getIntegration"];
1181
- /**
1182
- * Update an integration
1183
- * @description Replaces the integration's `name`, `config`, and/or `status`. Use
1184
- * `status: inactive` to disable an integration without deleting it.
1185
- * Use `status: active` to re-enable. The `provider` field is
1186
- * immutable after creation.
1187
- */
1188
- put: operations["updateIntegration"];
1102
+ /** Get a webhook */
1103
+ get: operations["getWebhook"];
1104
+ put?: never;
1189
1105
  post?: never;
1190
1106
  /**
1191
- * Delete an integration
1192
- * @description Hard-deletes the integration record and its stored config.
1107
+ * Delete a webhook
1108
+ * @description Deletes the webhook and its delivery history.
1193
1109
  */
1194
- delete: operations["deleteIntegration"];
1110
+ delete: operations["deleteWebhook"];
1195
1111
  options?: never;
1196
1112
  head?: never;
1197
- patch?: never;
1113
+ /**
1114
+ * Update a webhook
1115
+ * @description Updates the webhook URL, event subscriptions, enabled state, or
1116
+ * signing secret. Setting `signing_secret` to an empty string clears
1117
+ * the current secret and disables signing. Omitting `signing_secret`
1118
+ * leaves the current value unchanged.
1119
+ */
1120
+ patch: operations["updateWebhook"];
1198
1121
  trace?: never;
1199
1122
  };
1200
- "/v1/projects/{project}/integrations/copy": {
1123
+ "/v1/projects/{project}/webhooks/{id}/ping": {
1201
1124
  parameters: {
1202
1125
  query?: never;
1203
1126
  header?: never;
@@ -1207,23 +1130,23 @@ export interface paths {
1207
1130
  get?: never;
1208
1131
  put?: never;
1209
1132
  /**
1210
- * Copy an integration from another project
1211
- * @description Clones an integration from another project within the same org into
1212
- * this project. The full `config` blob is copied as-is. The source
1213
- * and destination projects must both belong to the same org.
1214
- *
1215
- * The `(provider, name)` pair must be unique in the destination project;
1216
- * supply a different `name` to avoid conflicts with an existing
1217
- * integration of the same provider and name.
1133
+ * Test a webhook URL
1134
+ * @description Sends a live test POST request to the webhook's saved URL, or to an
1135
+ * override URL supplied in the request body, and returns the result.
1136
+ * Because the webhook URL may be empty at creation time, the typical
1137
+ * flow is: create the webhook without a URL, ping candidate URLs via
1138
+ * the override until one succeeds, then persist the chosen URL with
1139
+ * `PATCH`. The test payload has `type: "ping"` and is signed with the
1140
+ * webhook's secret if one is set.
1218
1141
  */
1219
- post: operations["copyIntegration"];
1142
+ post: operations["pingWebhook"];
1220
1143
  delete?: never;
1221
1144
  options?: never;
1222
1145
  head?: never;
1223
1146
  patch?: never;
1224
1147
  trace?: never;
1225
1148
  };
1226
- "/v1/projects/{project}/metrics": {
1149
+ "/v1/projects/{project}/webhooks/{id}/deliveries": {
1227
1150
  parameters: {
1228
1151
  query?: never;
1229
1152
  header?: never;
@@ -1231,13 +1154,14 @@ export interface paths {
1231
1154
  cookie?: never;
1232
1155
  };
1233
1156
  /**
1234
- * Get operational metrics for a project
1235
- * @description Returns a snapshot of current execution health for the project.
1236
- * All rate and duration metrics are computed over a rolling window
1237
- * (default: 60 minutes). P95 step duration is computed from the
1238
- * 40 most recent completed jobs.
1157
+ * List webhook deliveries
1158
+ * @description Lists the delivery history for a webhook, newest first. Each entry
1159
+ * records the event type, current status, attempt count, and any last
1160
+ * error message. Deliveries are retried up to 10 times (5xx, 408,
1161
+ * 429 are retryable; other 4xx are not). A delivery transitions to
1162
+ * `failed` only after exhausting all retry attempts.
1239
1163
  */
1240
- get: operations["getProjectMetrics"];
1164
+ get: operations["listWebhookDeliveries"];
1241
1165
  put?: never;
1242
1166
  post?: never;
1243
1167
  delete?: never;
@@ -1246,7 +1170,7 @@ export interface paths {
1246
1170
  patch?: never;
1247
1171
  trace?: never;
1248
1172
  };
1249
- "/v1/roles": {
1173
+ "/v1/projects/{project}/metrics": {
1250
1174
  parameters: {
1251
1175
  query?: never;
1252
1176
  header?: never;
@@ -1254,94 +1178,21 @@ export interface paths {
1254
1178
  cookie?: never;
1255
1179
  };
1256
1180
  /**
1257
- * List roles
1258
- * @description Returns system-defined roles plus custom roles for the org. Use `project_id` to narrow results to project-scoped roles.
1259
- */
1260
- get: operations["listRoles"];
1261
- put?: never;
1262
- /**
1263
- * Create a role
1264
- * @description Creates a custom role for the org. Supply `project_id` to scope the
1265
- * role to a specific project. Roles with an empty `project_id` are
1266
- * org-wide and can be assigned across all projects.
1181
+ * Get operational metrics for a project
1182
+ * @description Returns a snapshot of current execution health for the project.
1183
+ * All rate and duration metrics are computed over a rolling window
1184
+ * (default: 60 minutes). P95 step duration is computed from the
1185
+ * 40 most recent completed jobs.
1267
1186
  */
1268
- post: operations["createRole"];
1269
- delete?: never;
1270
- options?: never;
1271
- head?: never;
1272
- patch?: never;
1273
- trace?: never;
1274
- };
1275
- "/v1/roles/{id}": {
1276
- parameters: {
1277
- query?: never;
1278
- header?: never;
1279
- path?: never;
1280
- cookie?: never;
1281
- };
1282
- /** Get a role */
1283
- get: operations["getRole"];
1187
+ get: operations["getProjectMetrics"];
1284
1188
  put?: never;
1285
1189
  post?: never;
1286
- /**
1287
- * Delete a role
1288
- * @description Hard-deletes the role and all its assignments. System-defined roles cannot be deleted.
1289
- */
1290
- delete: operations["deleteRole"];
1291
- options?: never;
1292
- head?: never;
1293
- /**
1294
- * Update a role
1295
- * @description Updates name, description, or permissions of a custom role. System-defined
1296
- * roles (system_defined=true) cannot be updated and return 403.
1297
- */
1298
- patch: operations["updateRole"];
1299
- trace?: never;
1300
- };
1301
- "/v1/role-assignments": {
1302
- parameters: {
1303
- query?: never;
1304
- header?: never;
1305
- path?: never;
1306
- cookie?: never;
1307
- };
1308
- /**
1309
- * List role assignments
1310
- * @description Returns assignments optionally filtered by actor, role, or project scope.
1311
- */
1312
- get: operations["listRoleAssignments"];
1313
- put?: never;
1314
- /**
1315
- * Assign a role to an actor
1316
- * @description Binds a role to a user or service account. Supply `project_id` to create
1317
- * a project-scoped assignment; omit it for an org-wide assignment.
1318
- * The assignment records the creating actor in `granted_by_actor_type` /
1319
- * `granted_by_actor_id` for audit purposes.
1320
- */
1321
- post: operations["createRoleAssignment"];
1322
1190
  delete?: never;
1323
1191
  options?: never;
1324
1192
  head?: never;
1325
1193
  patch?: never;
1326
1194
  trace?: never;
1327
1195
  };
1328
- "/v1/role-assignments/{id}": {
1329
- parameters: {
1330
- query?: never;
1331
- header?: never;
1332
- path?: never;
1333
- cookie?: never;
1334
- };
1335
- get?: never;
1336
- put?: never;
1337
- post?: never;
1338
- /** Remove a role assignment */
1339
- delete: operations["deleteRoleAssignment"];
1340
- options?: never;
1341
- head?: never;
1342
- patch?: never;
1343
- trace?: never;
1344
- };
1345
1196
  "/v1/projects/{project}/interactions": {
1346
1197
  parameters: {
1347
1198
  query?: never;
@@ -1573,9 +1424,17 @@ export interface paths {
1573
1424
  put?: never;
1574
1425
  /**
1575
1426
  * Create an agent
1576
- * @description Creates an agent bound to `service_account_id`. A service account can
1577
- * back multiple agents, but each agent belongs to exactly one service
1578
- * account for the lifetime of the agent.
1427
+ * @description Creates an agent bound to a service account. A service account can back
1428
+ * multiple agents. The service account can be changed after creation via
1429
+ * the PATCH endpoint.
1430
+ *
1431
+ * If `service_account_id` is omitted, a new service account is
1432
+ * auto-created with the same name as the agent and assigned to back it.
1433
+ * Auto-creation requires the caller to hold `mobius.service_account.manage`
1434
+ * in addition to `mobius.agent.manage`. Auto-creation fails if a service
1435
+ * account with that name already exists in the project; to bind an
1436
+ * existing service account to a new agent, pass `service_account_id`
1437
+ * explicitly.
1579
1438
  */
1580
1439
  post: operations["createAgent"];
1581
1440
  delete?: never;
@@ -1604,8 +1463,7 @@ export interface paths {
1604
1463
  head?: never;
1605
1464
  /**
1606
1465
  * Update an agent
1607
- * @description Updates mutable agent fields. The backing `service_account_id` cannot
1608
- * be changed after creation. Setting `status` to `inactive` prevents
1466
+ * @description Updates mutable agent fields. Setting `status` to `inactive` prevents
1609
1467
  * the agent from claiming new jobs but does not terminate active sessions.
1610
1468
  */
1611
1469
  patch: operations["updateAgent"];
@@ -1640,7 +1498,7 @@ export interface paths {
1640
1498
  patch?: never;
1641
1499
  trace?: never;
1642
1500
  };
1643
- "/v1/projects/{project}/agents/sessions/{sessionId}": {
1501
+ "/v1/projects/{project}/agents/{id}/sessions/{sessionId}": {
1644
1502
  parameters: {
1645
1503
  query?: never;
1646
1504
  header?: never;
@@ -1657,7 +1515,7 @@ export interface paths {
1657
1515
  patch?: never;
1658
1516
  trace?: never;
1659
1517
  };
1660
- "/v1/projects/{project}/agents/sessions/{sessionId}/heartbeat": {
1518
+ "/v1/projects/{project}/agents/{id}/sessions/{sessionId}/heartbeat": {
1661
1519
  parameters: {
1662
1520
  query?: never;
1663
1521
  header?: never;
@@ -1679,7 +1537,7 @@ export interface paths {
1679
1537
  patch?: never;
1680
1538
  trace?: never;
1681
1539
  };
1682
- "/v1/projects/{project}/agents/sessions/{sessionId}/disconnect": {
1540
+ "/v1/projects/{project}/agents/{id}/sessions/{sessionId}/disconnect": {
1683
1541
  parameters: {
1684
1542
  query?: never;
1685
1543
  header?: never;
@@ -2013,6 +1871,8 @@ export interface components {
2013
1871
  actor_type?: string;
2014
1872
  /** @description Durable actor ID that performed the action */
2015
1873
  actor_id?: string;
1874
+ /** @description Display name of the actor (email for users, service account name for service accounts) */
1875
+ actor_name?: string;
2016
1876
  /** @description Credential ID used for the request, when applicable */
2017
1877
  credential_id?: string;
2018
1878
  /**
@@ -2042,7 +1902,7 @@ export interface components {
2042
1902
  };
2043
1903
  AuditLogListResponse: {
2044
1904
  /** @description The list of results for this page. */
2045
- items?: components["schemas"]["AuditLogEntry"][];
1905
+ items: components["schemas"]["AuditLogEntry"][];
2046
1906
  /** @description Cursor for fetching next page of results */
2047
1907
  next_cursor?: string;
2048
1908
  /** @description Whether more results are available */
@@ -2201,6 +2061,12 @@ export interface components {
2201
2061
  user_code: string;
2202
2062
  /** @description Optional label to identify this credential in the CLI credentials list. */
2203
2063
  label?: string;
2064
+ /**
2065
+ * @description Optional project ID to pin the issued CLI credential to. When set,
2066
+ * the resulting token is usable only for that project and must carry
2067
+ * the project's handle as a trailing `.<handle>` suffix.
2068
+ */
2069
+ project_id?: string;
2204
2070
  };
2205
2071
  ConfirmDeviceCodeResult: {
2206
2072
  /** @description True when the device code was successfully confirmed and a CLI credential has been issued. */
@@ -2213,6 +2079,17 @@ export interface components {
2213
2079
  id: string;
2214
2080
  /** @description ID of the user who authorized this credential. */
2215
2081
  user_id: string;
2082
+ /**
2083
+ * @description Project ID the credential is pinned to. Empty when the credential
2084
+ * is org-scoped (usable across every project the user can access).
2085
+ */
2086
+ project_id?: string;
2087
+ /**
2088
+ * @description Handle of the pinned project, echoed here so clients can format
2089
+ * the trailing `.<handle>` suffix on every request. Empty when the
2090
+ * credential is not pinned.
2091
+ */
2092
+ project_handle?: string;
2216
2093
  /** @description Human-readable label identifying this credential. */
2217
2094
  label: string;
2218
2095
  /** @description First few characters of the token, shown for identification without exposing the secret. */
@@ -2525,7 +2402,7 @@ export interface components {
2525
2402
  };
2526
2403
  WorkflowDefinitionListResponse: {
2527
2404
  /** @description The list of results for this page. */
2528
- items?: components["schemas"]["WorkflowDefinition"][];
2405
+ items: components["schemas"]["WorkflowDefinition"][];
2529
2406
  /** @description Opaque cursor to pass as `cursor` on the next request. Absent when `has_more` is false. */
2530
2407
  next_cursor?: string;
2531
2408
  /** @description Whether additional pages are available. */
@@ -2648,7 +2525,7 @@ export interface components {
2648
2525
  };
2649
2526
  WorkflowRunListResponse: {
2650
2527
  /** @description The list of results for this page. */
2651
- items?: components["schemas"]["WorkflowRun"][];
2528
+ items: components["schemas"]["WorkflowRun"][];
2652
2529
  /** @description True when more pages are available. */
2653
2530
  has_more: boolean;
2654
2531
  /**
@@ -2804,18 +2681,6 @@ export interface components {
2804
2681
  /** @description Signal topic name matching the wait_signal step's topic. */
2805
2682
  name: string;
2806
2683
  };
2807
- BulkRunRequest: {
2808
- /** @description IDs of the runs to operate on. */
2809
- run_ids: string[];
2810
- };
2811
- BulkRunResult: {
2812
- /** @description IDs of runs that were successfully processed. */
2813
- succeeded: string[];
2814
- /** @description Map of run_id -> error message for per-run failures. */
2815
- failures?: {
2816
- [key: string]: string;
2817
- };
2818
- };
2819
2684
  /**
2820
2685
  * @description Hints that describe the safe-use properties of the action. Used by the
2821
2686
  * engine and tooling to decide retry behavior, dry-run eligibility, etc.
@@ -2917,7 +2782,7 @@ export interface components {
2917
2782
  };
2918
2783
  ActionListResponse: {
2919
2784
  /** @description The list of results for this page. */
2920
- items?: components["schemas"]["Action"][];
2785
+ items: components["schemas"]["Action"][];
2921
2786
  /** @description Opaque cursor to pass as `cursor` on the next request. Absent when `has_more` is false. */
2922
2787
  next_cursor?: string;
2923
2788
  /** @description Whether additional pages are available. */
@@ -3005,7 +2870,7 @@ export interface components {
3005
2870
  };
3006
2871
  ActionAuditLogListResponse: {
3007
2872
  /** @description The list of results for this page. */
3008
- items?: components["schemas"]["ActionAuditLogEntry"][];
2873
+ items: components["schemas"]["ActionAuditLogEntry"][];
3009
2874
  /** @description Opaque cursor to pass as `cursor` on the next request. Absent when `has_more` is false. */
3010
2875
  next_cursor?: string;
3011
2876
  /** @description Whether additional pages are available. */
@@ -3050,7 +2915,7 @@ export interface components {
3050
2915
  run_id: string;
3051
2916
  /** @description Handle of the workflow definition that owns this run. */
3052
2917
  workflow_name: string;
3053
- /** @description Step name from the workflow spec — used for UI and interaction topic derivation. */
2918
+ /** @description Step label from the workflow spec — used for UI and interaction signal name derivation. */
3054
2919
  step_name: string;
3055
2920
  /** @description Action name the worker must execute for this step. */
3056
2921
  action: string;
@@ -3248,9 +3113,9 @@ export interface components {
3248
3113
  * @description When target_actor.type is "group", setting require_all=true
3249
3114
  * means all snapshotted group members must respond before the
3250
3115
  * interaction is considered complete. Ignored for non-group targets.
3251
- * @default false
3116
+ * Defaults to false when omitted.
3252
3117
  */
3253
- require_all: boolean;
3118
+ require_all?: boolean;
3254
3119
  /**
3255
3120
  * @description Optional duration string (e.g. "24h", "30m") specifying how long
3256
3121
  * the interaction should remain open before expiring. When absent
@@ -3367,12 +3232,20 @@ export interface components {
3367
3232
  */
3368
3233
  ConcurrencyPolicy: "allow" | "forbid" | "replace";
3369
3234
  /**
3370
- * @description `skipped` means the fire was suppressed by the concurrency policy or a target condition evaluated to false.
3235
+ * @description Outcome of a trigger activation:
3236
+ * - `success` — all enabled targets started their runs (or no targets configured).
3237
+ * - `partial_failure` — at least one target failed while others succeeded.
3238
+ * - `failed` — all targets failed, or a trigger-level error prevented any target.
3239
+ * - `skipped` — the concurrency policy suppressed the entire activation.
3371
3240
  * @enum {string}
3372
3241
  */
3373
- TriggerFireStatus: "success" | "failed" | "skipped";
3242
+ TriggerFireStatus: "success" | "partial_failure" | "failed" | "skipped";
3374
3243
  /** @description A workflow to start when this trigger fires. */
3375
3244
  TriggerTarget: {
3245
+ /** @description Unique identifier for this target. */
3246
+ id: string;
3247
+ /** @description ID of the trigger this target belongs to. */
3248
+ trigger_id: string;
3376
3249
  /** @description ID of the workflow definition to run. */
3377
3250
  workflow_id: string;
3378
3251
  /**
@@ -3387,9 +3260,63 @@ export interface components {
3387
3260
  input_mapping?: {
3388
3261
  [key: string]: string;
3389
3262
  };
3390
- };
3391
- Trigger: {
3392
- /** @description Unique identifier for this trigger. */
3263
+ /** @description When false, this target is paused and will not start a run when the trigger fires. */
3264
+ enabled: boolean;
3265
+ /**
3266
+ * Format: date-time
3267
+ * @description Timestamp when this target was created.
3268
+ */
3269
+ created_at: string;
3270
+ /**
3271
+ * Format: date-time
3272
+ * @description Timestamp when this target was last updated.
3273
+ */
3274
+ updated_at: string;
3275
+ };
3276
+ TriggerTargetListResponse: {
3277
+ /** @description The list of targets for this trigger. */
3278
+ items: components["schemas"]["TriggerTarget"][];
3279
+ };
3280
+ /** @description Parameters for attaching a workflow target to a trigger. */
3281
+ CreateTriggerTargetRequest: {
3282
+ /** @description ID of the workflow definition to run. */
3283
+ workflow_id: string;
3284
+ /** @description Expression evaluated against the event payload. Omit to always run. */
3285
+ condition?: string;
3286
+ /** @description Maps workflow input names to JSONPath expressions. */
3287
+ input_mapping?: {
3288
+ [key: string]: string;
3289
+ };
3290
+ /** @description Whether this target starts enabled. Defaults to true when omitted. */
3291
+ enabled?: boolean;
3292
+ };
3293
+ /** @description Partial update for a trigger target; omitted fields are unchanged. */
3294
+ UpdateTriggerTargetRequest: {
3295
+ /** @description Replacement workflow definition ID. */
3296
+ workflow_id?: string;
3297
+ /** @description Replacement condition expression. Set to empty string to remove. */
3298
+ condition?: string;
3299
+ /** @description Replacement input mapping. Set to null to clear all mappings. */
3300
+ input_mapping?: {
3301
+ [key: string]: string;
3302
+ } | null;
3303
+ /** @description Set to false to pause this target without removing it. */
3304
+ enabled?: boolean;
3305
+ };
3306
+ /** @description Outcome of a single target within a trigger fire activation. */
3307
+ TriggerFireTargetResult: {
3308
+ /** @description ID of the trigger target that was evaluated. */
3309
+ target_id: string;
3310
+ /** @description ID of the workflow definition that was started (or attempted). */
3311
+ workflow_id: string;
3312
+ /** @description ID of the workflow run that was created. Absent when the target failed or was skipped. */
3313
+ run_id?: string;
3314
+ status: components["schemas"]["TriggerFireStatus"];
3315
+ /** @description Error detail when status is `failed`. */
3316
+ error?: string;
3317
+ };
3318
+ Trigger: {
3319
+ /** @description Unique identifier for this trigger. */
3393
3320
  id: string;
3394
3321
  /** @description Human-readable trigger name, unique within the project. */
3395
3322
  name: string;
@@ -3405,7 +3332,7 @@ export interface components {
3405
3332
  filter_config?: {
3406
3333
  [key: string]: unknown;
3407
3334
  };
3408
- /** @description Workflows to start when this trigger fires. */
3335
+ /** @description Targets attached to this trigger, populated via join. */
3409
3336
  targets?: components["schemas"]["TriggerTarget"][];
3410
3337
  concurrency_policy: components["schemas"]["ConcurrencyPolicy"];
3411
3338
  /** @description When false, the trigger is paused and will not fire. */
@@ -3439,7 +3366,7 @@ export interface components {
3439
3366
  };
3440
3367
  TriggerListResponse: {
3441
3368
  /** @description The list of results for this page. */
3442
- items?: components["schemas"]["Trigger"][];
3369
+ items: components["schemas"]["Trigger"][];
3443
3370
  /** @description Opaque cursor to pass as `cursor` on the next request. Absent when `has_more` is false. */
3444
3371
  next_cursor?: string;
3445
3372
  /** @description Whether additional pages are available. */
@@ -3461,8 +3388,8 @@ export interface components {
3461
3388
  * @description When the fire was actually processed.
3462
3389
  */
3463
3390
  fired_at: string;
3464
- /** @description Workflow run created by this fire. Absent when status is `skipped` or `failed` before run creation. */
3465
- run_id?: string;
3391
+ /** @description Per-target outcomes for this activation. */
3392
+ target_results?: components["schemas"]["TriggerFireTargetResult"][];
3466
3393
  status: components["schemas"]["TriggerFireStatus"];
3467
3394
  /** @description Error detail when status is `failed`. */
3468
3395
  error?: string;
@@ -3476,7 +3403,7 @@ export interface components {
3476
3403
  };
3477
3404
  TriggerFireListResponse: {
3478
3405
  /** @description The list of results for this page. */
3479
- items?: components["schemas"]["TriggerFire"][];
3406
+ items: components["schemas"]["TriggerFire"][];
3480
3407
  /** @description Opaque cursor to pass as `cursor` on the next request. Absent when `has_more` is false. */
3481
3408
  next_cursor?: string;
3482
3409
  /** @description Whether additional pages are available. */
@@ -3498,14 +3425,11 @@ export interface components {
3498
3425
  filter_config?: {
3499
3426
  [key: string]: unknown;
3500
3427
  };
3501
- /** @description Workflows to start when this trigger fires. */
3502
- targets?: components["schemas"]["TriggerTarget"][];
3428
+ /** @description Workflows to start when this trigger fires (inline convenience; stored as sub-resources). */
3429
+ targets?: components["schemas"]["CreateTriggerTargetRequest"][];
3503
3430
  concurrency_policy?: components["schemas"]["ConcurrencyPolicy"];
3504
- /**
3505
- * @description Whether the trigger starts enabled. Defaults to true.
3506
- * @default true
3507
- */
3508
- enabled: boolean;
3431
+ /** @description Whether the trigger starts enabled. Defaults to true when omitted. */
3432
+ enabled?: boolean;
3509
3433
  /**
3510
3434
  * @description URL-safe handle that determines the inbound receive URL. Auto-derived
3511
3435
  * from `name` for `webhook` triggers when omitted. Must be unique
@@ -3517,7 +3441,7 @@ export interface components {
3517
3441
  * When set, Mobius validates the `X-Mobius-Signature` header on
3518
3442
  * incoming requests.
3519
3443
  */
3520
- webhook_secret?: string;
3444
+ signing_secret?: string;
3521
3445
  };
3522
3446
  UpdateTriggerRequest: {
3523
3447
  /** @description Replacement human-readable name. */
@@ -3530,17 +3454,15 @@ export interface components {
3530
3454
  filter_config?: {
3531
3455
  [key: string]: unknown;
3532
3456
  };
3533
- /** @description Replaces the entire targets array. */
3534
- targets?: components["schemas"]["TriggerTarget"][];
3535
3457
  concurrency_policy?: components["schemas"]["ConcurrencyPolicy"];
3536
3458
  /** @description Set to false to pause the trigger without deleting it. */
3537
3459
  enabled?: boolean;
3538
3460
  /** @description Changing this changes the `receive_url`; update any upstream integrations. */
3539
3461
  webhook_handle?: string;
3540
3462
  /** @description Replace or clear the inbound signature verification secret. */
3541
- webhook_secret?: string;
3463
+ signing_secret?: string;
3542
3464
  };
3543
- Worker: {
3465
+ WorkerSession: {
3544
3466
  /** @description Caller-assigned stable identifier for this worker process. */
3545
3467
  id: string;
3546
3468
  /** @description Optional human-readable name supplied in the claim request. */
@@ -3549,23 +3471,57 @@ export interface components {
3549
3471
  version?: string;
3550
3472
  /**
3551
3473
  * Format: date-time
3552
- * @description Timestamp of the worker's most recent job claim poll. Updated on
3553
- * every `POST /v1/projects/{project}/jobs/claim` call regardless of whether a job was
3554
- * returned. Used to compute `stale`.
3474
+ * @description Timestamp of this session's most recent job claim poll. Updated on
3475
+ * every `POST /v1/projects/{project}/jobs/claim` call regardless of
3476
+ * whether a job was returned. Used to compute `stale`.
3555
3477
  */
3556
3478
  last_seen_at?: string;
3557
3479
  /** @description Reserved for future capability-based job routing. Not currently used for filtering. */
3558
3480
  capabilities?: string[];
3481
+ /**
3482
+ * @description Service account this session authenticated as on register/heartbeat.
3483
+ * Set when a machine identity is polling; mutually exclusive with
3484
+ * `user_id`. Stable across credential rotation — use this to group
3485
+ * sessions by identity in the admin UI.
3486
+ */
3487
+ service_account_id?: string;
3488
+ /**
3489
+ * @description User this session authenticated as on register/heartbeat. Set when
3490
+ * a human is polling via the CLI; mutually exclusive with
3491
+ * `service_account_id`.
3492
+ */
3493
+ user_id?: string;
3494
+ /**
3495
+ * @description ID of the specific API key this session presented on its most
3496
+ * recent register/heartbeat. Only set for service-account-backed
3497
+ * sessions; changes across credential rotations. Use together with
3498
+ * `service_account_id` to see rotation progress across a fleet.
3499
+ */
3500
+ api_key_id?: string;
3501
+ /**
3502
+ * @description Agent this session represents, when the polling process declared
3503
+ * itself as a registered agent (via `agent_id` on the claim request
3504
+ * or via inference from the service account). Absent for ad-hoc
3505
+ * worker processes that are not tied to a declared agent.
3506
+ */
3507
+ agent_id?: string;
3559
3508
  /**
3560
3509
  * @description True when `last_seen_at` is older than 2 minutes or absent.
3561
3510
  * Computed at read time, not stored.
3562
3511
  */
3563
3512
  stale: boolean;
3564
3513
  };
3565
- WorkerListResponse: {
3566
- /** @description The list of recently seen workers. */
3567
- items: components["schemas"]["Worker"][];
3514
+ WorkerSessionListResponse: {
3515
+ /** @description The list of recently seen worker sessions. */
3516
+ items: components["schemas"]["WorkerSession"][];
3568
3517
  };
3518
+ /**
3519
+ * @description `org_open`: every org member can see and use the project, subject to
3520
+ * role assignments. `restricted`: only listed project members (and org
3521
+ * owners/admins) can see or use the project.
3522
+ * @enum {string}
3523
+ */
3524
+ ProjectAccessMode: "org_open" | "restricted";
3569
3525
  Project: {
3570
3526
  /** @description Unique identifier for this project. */
3571
3527
  id: string;
@@ -3578,6 +3534,7 @@ export interface components {
3578
3534
  handle: string;
3579
3535
  /** @description Optional human-readable description. */
3580
3536
  description?: string;
3537
+ access_mode: components["schemas"]["ProjectAccessMode"];
3581
3538
  /** @description User ID of the org member who created this project. */
3582
3539
  created_by?: string;
3583
3540
  /**
@@ -3605,12 +3562,49 @@ export interface components {
3605
3562
  handle?: string;
3606
3563
  /** @description Optional human-readable description. */
3607
3564
  description?: string;
3565
+ access_mode?: components["schemas"]["ProjectAccessMode"];
3608
3566
  };
3609
3567
  UpdateProjectRequest: {
3610
3568
  /** @description Replacement human-readable name. */
3611
3569
  name?: string;
3612
3570
  /** @description Replacement description. */
3613
3571
  description?: string;
3572
+ access_mode?: components["schemas"]["ProjectAccessMode"];
3573
+ /**
3574
+ * @description When transitioning from `org_open` to `restricted`, set true to
3575
+ * insert all current org members as project members so nobody
3576
+ * loses visibility on the flip. Ignored on other transitions.
3577
+ */
3578
+ seed_existing_members?: boolean;
3579
+ };
3580
+ ProjectMember: {
3581
+ /** @description Unique identifier for this membership record. */
3582
+ id: string;
3583
+ /** @description ID of the project this membership belongs to. */
3584
+ project_id: string;
3585
+ /** @description ID of the user who is a member. */
3586
+ user_id: string;
3587
+ /** @description Actor type of whoever added this member, if recorded. */
3588
+ added_by_actor_type?: string;
3589
+ /** @description Actor ID of whoever added this member, if recorded. */
3590
+ added_by_actor_id?: string;
3591
+ /**
3592
+ * Format: date-time
3593
+ * @description Timestamp when the member was added.
3594
+ */
3595
+ added_at: string;
3596
+ };
3597
+ ProjectMemberListResponse: {
3598
+ /** @description The list of members for this project. */
3599
+ items: components["schemas"]["ProjectMember"][];
3600
+ /** @description Whether more results are available. */
3601
+ has_more: boolean;
3602
+ /** @description Opaque cursor to pass as `cursor` on the next request. Absent when `has_more` is false. */
3603
+ next_cursor?: string;
3604
+ };
3605
+ AddProjectMemberRequest: {
3606
+ /** @description User ID of the org member to add to this project. */
3607
+ user_id: string;
3614
3608
  };
3615
3609
  /**
3616
3610
  * @description `pending` — queued, not yet attempted.
@@ -3701,24 +3695,26 @@ export interface components {
3701
3695
  CreateWebhookRequest: {
3702
3696
  /** @description Human-readable name, unique within the project. */
3703
3697
  name: string;
3704
- /** @description The endpoint Mobius will POST event payloads to. */
3705
- url: string;
3706
3698
  /**
3707
- * @description Optional shared secret. When set, Mobius signs each POST body
3708
- * with HMAC-SHA256 and includes `X-Mobius-Signature: sha256=<hex>`
3709
- * in the request headers.
3699
+ * @description The endpoint Mobius will POST event payloads to. May be left empty
3700
+ * at creation time so a candidate URL can be tested via the ping
3701
+ * endpoint before it is saved; events do not fire for webhooks with
3702
+ * an empty URL.
3703
+ */
3704
+ url?: string;
3705
+ /**
3706
+ * @description Optional HMAC-SHA256 secret. When set, Mobius signs each POST body
3707
+ * and includes `X-Mobius-Signature: sha256=<hex>` in the request
3708
+ * headers.
3710
3709
  */
3711
- secret?: string;
3710
+ signing_secret?: string;
3712
3711
  /**
3713
3712
  * @description Event types to subscribe to. Use wildcards for broad
3714
3713
  * subscriptions, e.g. `["run.*"]` for all run events.
3715
3714
  */
3716
3715
  events: string[];
3717
- /**
3718
- * @description Whether the webhook starts enabled. Defaults to true.
3719
- * @default true
3720
- */
3721
- enabled: boolean;
3716
+ /** @description Whether the webhook starts enabled. Defaults to true when omitted. */
3717
+ enabled?: boolean;
3722
3718
  };
3723
3719
  UpdateWebhookRequest: {
3724
3720
  /** @description Replacement human-readable name. */
@@ -3729,12 +3725,31 @@ export interface components {
3729
3725
  * @description Replace the current signing secret. Set to empty string to
3730
3726
  * disable signing. Omit to leave the current secret unchanged.
3731
3727
  */
3732
- secret?: string;
3728
+ signing_secret?: string;
3733
3729
  /** @description Replacement event subscriptions. Replaces the entire current list. */
3734
3730
  events?: string[];
3735
3731
  /** @description Set to false to disable delivery without deleting the webhook. */
3736
3732
  enabled?: boolean;
3737
3733
  };
3734
+ PingWebhookRequest: {
3735
+ /**
3736
+ * @description URL to test. When supplied, the ping is sent to this URL instead
3737
+ * of the webhook's saved URL — use this to validate a candidate URL
3738
+ * before saving it. When omitted, the webhook's current saved URL
3739
+ * is used.
3740
+ */
3741
+ url?: string;
3742
+ };
3743
+ PingWebhookResult: {
3744
+ /** @description True if the target responded with a 2xx status code. */
3745
+ success: boolean;
3746
+ /** @description HTTP status code returned by the target. Absent on network error. */
3747
+ status_code?: number;
3748
+ /** @description Error message if the request could not be completed. */
3749
+ error?: string;
3750
+ /** @description Round-trip latency in milliseconds. */
3751
+ latency_ms?: number;
3752
+ };
3738
3753
  /**
3739
3754
  * @description `active` — integration is enabled and usable by workflows.
3740
3755
  * `inactive` — manually disabled; no automatic expiry behavior.
@@ -3775,7 +3790,7 @@ export interface components {
3775
3790
  };
3776
3791
  IntegrationListResponse: {
3777
3792
  /** @description The list of results for this page. */
3778
- items?: components["schemas"]["Integration"][];
3793
+ items: components["schemas"]["Integration"][];
3779
3794
  /** @description Opaque cursor to pass as `cursor` on the next request. Absent when `has_more` is false. */
3780
3795
  next_cursor?: string;
3781
3796
  /** @description Whether additional pages are available. */
@@ -4210,9 +4225,9 @@ export interface components {
4210
4225
  items: components["schemas"]["RoleAssignment"][];
4211
4226
  };
4212
4227
  CreateRoleRequest: {
4213
- /** @description Scope the role to a project. Omit for an org-wide role. */
4214
- project_id?: string;
4215
- /** @description Unique name within the org+project scope. */
4228
+ /** @description Project this role belongs to. Custom roles are always project-scoped. */
4229
+ project_id: string;
4230
+ /** @description Unique name within the project. */
4216
4231
  name: string;
4217
4232
  /** @description Optional human-readable description of what this role grants. */
4218
4233
  description?: string;
@@ -4220,10 +4235,6 @@ export interface components {
4220
4235
  permissions: string[];
4221
4236
  };
4222
4237
  UpdateRoleRequest: {
4223
- /** @description Scope to change this role to. Cannot change an org-scoped role to project-scoped after creation. */
4224
- project_id?: string;
4225
- /** @description Replacement role name. */
4226
- name?: string;
4227
4238
  /** @description Replacement description. */
4228
4239
  description?: string;
4229
4240
  /** @description Replaces the existing permissions array entirely. */
@@ -4266,6 +4277,13 @@ export interface components {
4266
4277
  */
4267
4278
  updated_at: string;
4268
4279
  };
4280
+ /**
4281
+ * @description One of the built-in system roles. These are seeded at startup and
4282
+ * cannot be deleted. `Owner` and `Admin` bypass project-member
4283
+ * visibility for restricted projects.
4284
+ * @enum {string}
4285
+ */
4286
+ SystemRoleName: "Owner" | "Admin" | "Operator" | "Worker" | "Viewer";
4269
4287
  Org: {
4270
4288
  /** @description Unique identifier for this organization. */
4271
4289
  id: string;
@@ -4277,6 +4295,18 @@ export interface components {
4277
4295
  metadata?: {
4278
4296
  [key: string]: unknown;
4279
4297
  };
4298
+ /**
4299
+ * @description System-role name assigned at org scope to new org members.
4300
+ * Defaults to `Operator`.
4301
+ */
4302
+ default_member_role?: components["schemas"]["SystemRoleName"];
4303
+ /**
4304
+ * @description Access mode applied to newly-created projects when the caller does
4305
+ * not pass one explicitly. Changing this only affects future
4306
+ * projects.
4307
+ * @enum {string}
4308
+ */
4309
+ default_project_access_mode?: "org_open" | "restricted";
4280
4310
  /**
4281
4311
  * Format: date-time
4282
4312
  * @description Timestamp when this organization was created.
@@ -4315,6 +4345,13 @@ export interface components {
4315
4345
  metadata?: {
4316
4346
  [key: string]: unknown;
4317
4347
  };
4348
+ /** @description System-role name assigned to new org members at org scope. */
4349
+ default_member_role?: components["schemas"]["SystemRoleName"];
4350
+ /**
4351
+ * @description Access mode applied to newly-created projects.
4352
+ * @enum {string}
4353
+ */
4354
+ default_project_access_mode?: "org_open" | "restricted";
4318
4355
  };
4319
4356
  OrgMember: {
4320
4357
  /** @description Unique identifier for this membership record. */
@@ -4322,10 +4359,10 @@ export interface components {
4322
4359
  /** @description ID of the user who is a member. */
4323
4360
  user_id: string;
4324
4361
  /**
4325
- * @description `owner` has full control including org deletion; `admin` can manage members and settings; `member` has read-only org access.
4362
+ * @description `Owner` has full control including org deletion; `Admin` can manage members and settings; `Member` has read-only org access.
4326
4363
  * @enum {string}
4327
4364
  */
4328
- role: "owner" | "admin" | "member";
4365
+ role: "Owner" | "Admin" | "Member";
4329
4366
  /**
4330
4367
  * Format: date-time
4331
4368
  * @description Timestamp when this member joined.
@@ -4350,21 +4387,25 @@ export interface components {
4350
4387
  /** @description Clerk user ID of the user to add. */
4351
4388
  user_id: string;
4352
4389
  /**
4353
- * @description Role to assign the new member: `owner`, `admin`, or `member`.
4390
+ * @description Role to assign the new member: `Owner`, `Admin`, or `Member`.
4354
4391
  * @enum {string}
4355
4392
  */
4356
- role: "owner" | "admin" | "member";
4393
+ role: "Owner" | "Admin" | "Member";
4357
4394
  };
4358
4395
  UpdateOrgMemberRoleRequest: {
4359
4396
  /**
4360
- * @description New role to assign: `owner`, `admin`, or `member`.
4397
+ * @description New role to assign: `Owner`, `Admin`, or `Member`.
4361
4398
  * @enum {string}
4362
4399
  */
4363
- role: "owner" | "admin" | "member";
4400
+ role: "Owner" | "Admin" | "Member";
4364
4401
  };
4365
4402
  InteractionListResponse: {
4366
4403
  /** @description The list of results for this page. */
4367
4404
  items: components["schemas"]["Interaction"][];
4405
+ /** @description Whether additional pages are available. */
4406
+ has_more?: boolean;
4407
+ /** @description Opaque cursor to pass as `cursor` on the next request. Absent when `has_more` is false. */
4408
+ next_cursor?: string;
4368
4409
  };
4369
4410
  /**
4370
4411
  * @description Creates an interaction directly. When `run_id` is provided,
@@ -4375,9 +4416,9 @@ export interface components {
4375
4416
  * from the claimed job context.
4376
4417
  */
4377
4418
  CreateInteractionRequest: {
4378
- /** @description ID of the workflow run to resume when this interaction is completed. Provide together with `signal_name` for run-backed interactions; omit or null both fields for standalone interactions. */
4419
+ /** @description ID of the workflow run to resume when this interaction is completed. */
4379
4420
  run_id?: string | null;
4380
- /** @description Signal name the interaction will complete against when run-backed. Provide together with `run_id` for run-backed interactions; omit or null both fields for standalone interactions. */
4421
+ /** @description Signal name the interaction will complete against when run-backed. */
4381
4422
  signal_name?: string | null;
4382
4423
  target_actor: components["schemas"]["ActorRef"];
4383
4424
  type: components["schemas"]["InteractionType"];
@@ -4392,9 +4433,9 @@ export interface components {
4392
4433
  * @description When target_actor.type is "group", setting require_all=true
4393
4434
  * means all snapshotted group members must respond before the
4394
4435
  * interaction is considered complete. Ignored for non-group targets.
4395
- * @default false
4436
+ * Defaults to false when omitted.
4396
4437
  */
4397
- require_all: boolean;
4438
+ require_all?: boolean;
4398
4439
  /**
4399
4440
  * Format: date-time
4400
4441
  * @description Timestamp after which this interaction expires if not responded to.
@@ -4522,12 +4563,10 @@ export interface components {
4522
4563
  Agent: {
4523
4564
  /** @description Unique identifier for this agent. */
4524
4565
  id: string;
4525
- /** @description The service account whose credentials this agent uses to authenticate. Immutable after creation. */
4566
+ /** @description The service account whose credentials this agent uses to authenticate. Can be changed via PATCH. */
4526
4567
  service_account_id: string;
4527
- /** @description Unique name within the project, used for targeting in job claims. */
4568
+ /** @description Mutable unique name within the project. Free-form human-readable label; use `id` for stable references and job targeting. */
4528
4569
  name: string;
4529
- /** @description Human-readable label shown in the UI. */
4530
- display_name: string;
4531
4570
  /** @description Optional human-readable description. */
4532
4571
  description?: string;
4533
4572
  /** @description Freeform agent classification for tooling and filtering (e.g. "llm", "rpa"). */
@@ -4600,12 +4639,14 @@ export interface components {
4600
4639
  items: components["schemas"]["AgentSession"][];
4601
4640
  };
4602
4641
  CreateAgentRequest: {
4603
- /** @description Service account that backs this agent. Must belong to the same org. */
4604
- service_account_id: string;
4605
- /** @description Project-scoped unique identifier for this agent. */
4642
+ /**
4643
+ * @description Service account that backs this agent. Must be active and belong to
4644
+ * the same project. If omitted, a new service account is auto-created
4645
+ * with the same name as the agent.
4646
+ */
4647
+ service_account_id?: string;
4648
+ /** @description Project-scoped unique name for this agent. Free-form human-readable label, 1-63 characters. */
4606
4649
  name: string;
4607
- /** @description Human-readable label shown in the UI. */
4608
- display_name?: string;
4609
4650
  /** @description Optional human-readable description. */
4610
4651
  description?: string;
4611
4652
  /** @description Freeform classification (e.g. "llm", "rpa", "integration"). */
@@ -4620,8 +4661,10 @@ export interface components {
4620
4661
  };
4621
4662
  };
4622
4663
  UpdateAgentRequest: {
4623
- /** @description Replacement human-readable label. */
4624
- display_name?: string;
4664
+ /** @description Replacement service account. Must be active and belong to the same project. */
4665
+ service_account_id?: string;
4666
+ /** @description Replacement name. Must be unique within the project. */
4667
+ name?: string;
4625
4668
  /** @description Replacement description. */
4626
4669
  description?: string;
4627
4670
  /** @description Replacement freeform agent classification (e.g. `llm`, `rpa`). */
@@ -4652,10 +4695,8 @@ export interface components {
4652
4695
  ServiceAccount: {
4653
4696
  /** @description Unique identifier for this service account. */
4654
4697
  id: string;
4655
- /** @description Stable machine-readable identifier, unique within the project. Immutable after creation. */
4698
+ /** @description Human-readable name for this service account. Immutable after creation. */
4656
4699
  name: string;
4657
- /** @description Human-readable label shown in the UI. */
4658
- display_name: string;
4659
4700
  /** @description Optional human-readable description. */
4660
4701
  description?: string;
4661
4702
  status: components["schemas"]["ServiceAccountStatus"];
@@ -4681,10 +4722,8 @@ export interface components {
4681
4722
  items: components["schemas"]["ServiceAccount"][];
4682
4723
  };
4683
4724
  CreateServiceAccountRequest: {
4684
- /** @description Stable machine-readable identifier, unique within the project. */
4725
+ /** @description Human-readable name for this service account. Immutable after creation. */
4685
4726
  name: string;
4686
- /** @description Human-readable label shown in the UI. */
4687
- display_name?: string;
4688
4727
  /** @description Optional human-readable description. */
4689
4728
  description?: string;
4690
4729
  /** @description Org member responsible for this service account. */
@@ -4694,20 +4733,13 @@ export interface components {
4694
4733
  [key: string]: unknown;
4695
4734
  };
4696
4735
  /**
4697
- * @description Role to assign at creation time. Mutually exclusive with `role_name`.
4698
- * Requires `permission.manage`. The role must belong to this project
4699
- * or be org-scoped (project_id empty).
4736
+ * @description One or more role IDs to assign at creation time. All assignments are
4737
+ * created atomically with the service account. Requires `mobius.permission.manage`.
4738
+ * Each role must belong to this project or be org-scoped (project_id empty).
4700
4739
  */
4701
- role_id?: string;
4702
- /**
4703
- * @description Role name to assign at creation time (resolved to a role ID server-side).
4704
- * Mutually exclusive with `role_id`. Requires `permission.manage`.
4705
- */
4706
- role_name?: string;
4740
+ role_ids?: string[];
4707
4741
  };
4708
4742
  UpdateServiceAccountRequest: {
4709
- /** @description Replacement human-readable label. */
4710
- display_name?: string;
4711
4743
  /** @description Replacement description. */
4712
4744
  description?: string;
4713
4745
  status?: components["schemas"]["ServiceAccountStatus"];
@@ -4861,6 +4893,8 @@ export interface components {
4861
4893
  * treated as org-level and project-pinned keys are excluded.
4862
4894
  */
4863
4895
  APIKeyProjectIDParam: components["schemas"]["ProjectID"];
4896
+ /** @description Trigger target ID. */
4897
+ TriggerTargetIDParam: string;
4864
4898
  /** @description Group ID or handle. */
4865
4899
  GroupIDParam: string;
4866
4900
  };
@@ -5284,127 +5318,6 @@ export interface operations {
5284
5318
  401: components["responses"]["Unauthorized"];
5285
5319
  };
5286
5320
  };
5287
- listAPIKeys: {
5288
- parameters: {
5289
- query?: {
5290
- /**
5291
- * @description Optional project scope for this request. When `project_id` is
5292
- * provided, the API key operation is resolved in that project's
5293
- * permission context. When `project_id` is omitted, the request is
5294
- * treated as org-level and project-pinned keys are excluded.
5295
- */
5296
- project_id?: components["parameters"]["APIKeyProjectIDParam"];
5297
- };
5298
- header?: never;
5299
- path?: never;
5300
- cookie?: never;
5301
- };
5302
- requestBody?: never;
5303
- responses: {
5304
- /** @description OK */
5305
- 200: {
5306
- headers: {
5307
- [name: string]: unknown;
5308
- };
5309
- content: {
5310
- "application/json": components["schemas"]["APIKeyListResponse"];
5311
- };
5312
- };
5313
- 401: components["responses"]["Unauthorized"];
5314
- 404: components["responses"]["NotFound"];
5315
- };
5316
- };
5317
- createAPIKey: {
5318
- parameters: {
5319
- query?: never;
5320
- header?: never;
5321
- path?: never;
5322
- cookie?: never;
5323
- };
5324
- requestBody: {
5325
- content: {
5326
- "application/json": components["schemas"]["CreateAPIKeyRequest"];
5327
- };
5328
- };
5329
- responses: {
5330
- /** @description Created */
5331
- 201: {
5332
- headers: {
5333
- [name: string]: unknown;
5334
- };
5335
- content: {
5336
- "application/json": components["schemas"]["APIKeyCreateResult"];
5337
- };
5338
- };
5339
- 400: components["responses"]["BadRequest"];
5340
- 401: components["responses"]["Unauthorized"];
5341
- 404: components["responses"]["NotFound"];
5342
- };
5343
- };
5344
- getAPIKey: {
5345
- parameters: {
5346
- query?: {
5347
- /**
5348
- * @description Optional project scope for this request. When `project_id` is
5349
- * provided, the API key operation is resolved in that project's
5350
- * permission context. When `project_id` is omitted, the request is
5351
- * treated as org-level and project-pinned keys are excluded.
5352
- */
5353
- project_id?: components["parameters"]["APIKeyProjectIDParam"];
5354
- };
5355
- header?: never;
5356
- path: {
5357
- /** @description Resource ID. */
5358
- id: components["parameters"]["IDParam"];
5359
- };
5360
- cookie?: never;
5361
- };
5362
- requestBody?: never;
5363
- responses: {
5364
- /** @description OK */
5365
- 200: {
5366
- headers: {
5367
- [name: string]: unknown;
5368
- };
5369
- content: {
5370
- "application/json": components["schemas"]["APIKey"];
5371
- };
5372
- };
5373
- 401: components["responses"]["Unauthorized"];
5374
- 404: components["responses"]["NotFound"];
5375
- };
5376
- };
5377
- revokeAPIKey: {
5378
- parameters: {
5379
- query?: {
5380
- /**
5381
- * @description Optional project scope for this request. When `project_id` is
5382
- * provided, the API key operation is resolved in that project's
5383
- * permission context. When `project_id` is omitted, the request is
5384
- * treated as org-level and project-pinned keys are excluded.
5385
- */
5386
- project_id?: components["parameters"]["APIKeyProjectIDParam"];
5387
- };
5388
- header?: never;
5389
- path: {
5390
- /** @description Resource ID. */
5391
- id: components["parameters"]["IDParam"];
5392
- };
5393
- cookie?: never;
5394
- };
5395
- requestBody?: never;
5396
- responses: {
5397
- /** @description No Content */
5398
- 204: {
5399
- headers: {
5400
- [name: string]: unknown;
5401
- };
5402
- content?: never;
5403
- };
5404
- 401: components["responses"]["Unauthorized"];
5405
- 404: components["responses"]["NotFound"];
5406
- };
5407
- };
5408
5321
  listWorkflows: {
5409
5322
  parameters: {
5410
5323
  query?: {
@@ -5711,21 +5624,19 @@ export interface operations {
5711
5624
  429: components["responses"]["TooManyRequests"];
5712
5625
  };
5713
5626
  };
5714
- bulkCancelRuns: {
5627
+ getRun: {
5715
5628
  parameters: {
5716
5629
  query?: never;
5717
5630
  header?: never;
5718
5631
  path: {
5719
5632
  /** @description Project handle (unique per organization) */
5720
5633
  project: components["parameters"]["ProjectHandleParam"];
5634
+ /** @description Resource ID. */
5635
+ id: components["parameters"]["IDParam"];
5721
5636
  };
5722
5637
  cookie?: never;
5723
5638
  };
5724
- requestBody: {
5725
- content: {
5726
- "application/json": components["schemas"]["BulkRunRequest"];
5727
- };
5728
- };
5639
+ requestBody?: never;
5729
5640
  responses: {
5730
5641
  /** @description OK */
5731
5642
  200: {
@@ -5733,28 +5644,26 @@ export interface operations {
5733
5644
  [name: string]: unknown;
5734
5645
  };
5735
5646
  content: {
5736
- "application/json": components["schemas"]["BulkRunResult"];
5647
+ "application/json": components["schemas"]["WorkflowRunDetail"];
5737
5648
  };
5738
5649
  };
5739
- 400: components["responses"]["BadRequest"];
5740
5650
  401: components["responses"]["Unauthorized"];
5651
+ 404: components["responses"]["NotFound"];
5741
5652
  };
5742
5653
  };
5743
- bulkRetryRuns: {
5654
+ listRunActionLog: {
5744
5655
  parameters: {
5745
5656
  query?: never;
5746
5657
  header?: never;
5747
5658
  path: {
5748
5659
  /** @description Project handle (unique per organization) */
5749
5660
  project: components["parameters"]["ProjectHandleParam"];
5661
+ /** @description Resource ID. */
5662
+ id: components["parameters"]["IDParam"];
5750
5663
  };
5751
5664
  cookie?: never;
5752
5665
  };
5753
- requestBody: {
5754
- content: {
5755
- "application/json": components["schemas"]["BulkRunRequest"];
5756
- };
5757
- };
5666
+ requestBody?: never;
5758
5667
  responses: {
5759
5668
  /** @description OK */
5760
5669
  200: {
@@ -5762,14 +5671,14 @@ export interface operations {
5762
5671
  [name: string]: unknown;
5763
5672
  };
5764
5673
  content: {
5765
- "application/json": components["schemas"]["BulkRunResult"];
5674
+ "application/json": components["schemas"]["ActionLogListResponse"];
5766
5675
  };
5767
5676
  };
5768
- 400: components["responses"]["BadRequest"];
5769
5677
  401: components["responses"]["Unauthorized"];
5678
+ 404: components["responses"]["NotFound"];
5770
5679
  };
5771
5680
  };
5772
- getRun: {
5681
+ listRunJobs: {
5773
5682
  parameters: {
5774
5683
  query?: never;
5775
5684
  header?: never;
@@ -5789,95 +5698,41 @@ export interface operations {
5789
5698
  [name: string]: unknown;
5790
5699
  };
5791
5700
  content: {
5792
- "application/json": components["schemas"]["WorkflowRunDetail"];
5701
+ "application/json": components["schemas"]["JobListResponse"];
5793
5702
  };
5794
5703
  };
5795
5704
  401: components["responses"]["Unauthorized"];
5796
5705
  404: components["responses"]["NotFound"];
5797
5706
  };
5798
5707
  };
5799
- getRunActionLog: {
5708
+ streamProjectRunEvents: {
5800
5709
  parameters: {
5801
- query?: never;
5710
+ query?: {
5711
+ /** @description Durable event seq cursor to replay from. */
5712
+ since?: number;
5713
+ };
5802
5714
  header?: never;
5803
5715
  path: {
5804
5716
  /** @description Project handle (unique per organization) */
5805
5717
  project: components["parameters"]["ProjectHandleParam"];
5806
- /** @description Resource ID. */
5807
- id: components["parameters"]["IDParam"];
5808
5718
  };
5809
5719
  cookie?: never;
5810
5720
  };
5811
5721
  requestBody?: never;
5812
5722
  responses: {
5813
- /** @description OK */
5723
+ /** @description OK (text/event-stream) */
5814
5724
  200: {
5815
5725
  headers: {
5816
5726
  [name: string]: unknown;
5817
5727
  };
5818
5728
  content: {
5819
- "application/json": components["schemas"]["ActionLogListResponse"];
5729
+ "text/event-stream": string;
5820
5730
  };
5821
5731
  };
5822
5732
  401: components["responses"]["Unauthorized"];
5823
- 404: components["responses"]["NotFound"];
5824
5733
  };
5825
5734
  };
5826
- getRunJobs: {
5827
- parameters: {
5828
- query?: never;
5829
- header?: never;
5830
- path: {
5831
- /** @description Project handle (unique per organization) */
5832
- project: components["parameters"]["ProjectHandleParam"];
5833
- /** @description Resource ID. */
5834
- id: components["parameters"]["IDParam"];
5835
- };
5836
- cookie?: never;
5837
- };
5838
- requestBody?: never;
5839
- responses: {
5840
- /** @description OK */
5841
- 200: {
5842
- headers: {
5843
- [name: string]: unknown;
5844
- };
5845
- content: {
5846
- "application/json": components["schemas"]["JobListResponse"];
5847
- };
5848
- };
5849
- 401: components["responses"]["Unauthorized"];
5850
- 404: components["responses"]["NotFound"];
5851
- };
5852
- };
5853
- streamProjectRunEvents: {
5854
- parameters: {
5855
- query?: {
5856
- /** @description Durable event seq cursor to replay from. */
5857
- since?: number;
5858
- };
5859
- header?: never;
5860
- path: {
5861
- /** @description Project handle (unique per organization) */
5862
- project: components["parameters"]["ProjectHandleParam"];
5863
- };
5864
- cookie?: never;
5865
- };
5866
- requestBody?: never;
5867
- responses: {
5868
- /** @description OK (text/event-stream) */
5869
- 200: {
5870
- headers: {
5871
- [name: string]: unknown;
5872
- };
5873
- content: {
5874
- "text/event-stream": string;
5875
- };
5876
- };
5877
- 401: components["responses"]["Unauthorized"];
5878
- };
5879
- };
5880
- cancelRun: {
5735
+ cancelRun: {
5881
5736
  parameters: {
5882
5737
  query?: never;
5883
5738
  header?: never;
@@ -6625,13 +6480,15 @@ export interface operations {
6625
6480
  404: components["responses"]["NotFound"];
6626
6481
  };
6627
6482
  };
6628
- listWorkers: {
6483
+ listTriggerTargets: {
6629
6484
  parameters: {
6630
6485
  query?: never;
6631
6486
  header?: never;
6632
6487
  path: {
6633
6488
  /** @description Project handle (unique per organization) */
6634
6489
  project: components["parameters"]["ProjectHandleParam"];
6490
+ /** @description Resource ID. */
6491
+ id: components["parameters"]["IDParam"];
6635
6492
  };
6636
6493
  cookie?: never;
6637
6494
  };
@@ -6643,47 +6500,28 @@ export interface operations {
6643
6500
  [name: string]: unknown;
6644
6501
  };
6645
6502
  content: {
6646
- "application/json": components["schemas"]["WorkerListResponse"];
6503
+ "application/json": components["schemas"]["TriggerTargetListResponse"];
6647
6504
  };
6648
6505
  };
6649
6506
  401: components["responses"]["Unauthorized"];
6650
6507
  404: components["responses"]["NotFound"];
6651
6508
  };
6652
6509
  };
6653
- listProjects: {
6654
- parameters: {
6655
- query?: {
6656
- /** @description Prefix-match filter applied to project name and handle. */
6657
- search?: string;
6658
- };
6659
- header?: never;
6660
- path?: never;
6661
- cookie?: never;
6662
- };
6663
- requestBody?: never;
6664
- responses: {
6665
- /** @description OK */
6666
- 200: {
6667
- headers: {
6668
- [name: string]: unknown;
6669
- };
6670
- content: {
6671
- "application/json": components["schemas"]["ProjectListResponse"];
6672
- };
6673
- };
6674
- 401: components["responses"]["Unauthorized"];
6675
- };
6676
- };
6677
- createProject: {
6510
+ createTriggerTarget: {
6678
6511
  parameters: {
6679
6512
  query?: never;
6680
6513
  header?: never;
6681
- path?: never;
6514
+ path: {
6515
+ /** @description Project handle (unique per organization) */
6516
+ project: components["parameters"]["ProjectHandleParam"];
6517
+ /** @description Resource ID. */
6518
+ id: components["parameters"]["IDParam"];
6519
+ };
6682
6520
  cookie?: never;
6683
6521
  };
6684
6522
  requestBody: {
6685
6523
  content: {
6686
- "application/json": components["schemas"]["CreateProjectRequest"];
6524
+ "application/json": components["schemas"]["CreateTriggerTargetRequest"];
6687
6525
  };
6688
6526
  };
6689
6527
  responses: {
@@ -6693,44 +6531,21 @@ export interface operations {
6693
6531
  [name: string]: unknown;
6694
6532
  };
6695
6533
  content: {
6696
- "application/json": components["schemas"]["Project"];
6534
+ "application/json": components["schemas"]["TriggerTarget"];
6697
6535
  };
6698
6536
  };
6699
6537
  400: components["responses"]["BadRequest"];
6700
6538
  401: components["responses"]["Unauthorized"];
6701
- 409: components["responses"]["Conflict"];
6702
- };
6703
- };
6704
- getProject: {
6705
- parameters: {
6706
- query?: never;
6707
- header?: never;
6708
- path: {
6709
- /** @description Resource ID. */
6710
- id: components["parameters"]["IDParam"];
6711
- };
6712
- cookie?: never;
6713
- };
6714
- requestBody?: never;
6715
- responses: {
6716
- /** @description OK */
6717
- 200: {
6718
- headers: {
6719
- [name: string]: unknown;
6720
- };
6721
- content: {
6722
- "application/json": components["schemas"]["Project"];
6723
- };
6724
- };
6725
- 401: components["responses"]["Unauthorized"];
6726
6539
  404: components["responses"]["NotFound"];
6727
6540
  };
6728
6541
  };
6729
- deleteProject: {
6542
+ deleteAllTriggerTargets: {
6730
6543
  parameters: {
6731
6544
  query?: never;
6732
6545
  header?: never;
6733
6546
  path: {
6547
+ /** @description Project handle (unique per organization) */
6548
+ project: components["parameters"]["ProjectHandleParam"];
6734
6549
  /** @description Resource ID. */
6735
6550
  id: components["parameters"]["IDParam"];
6736
6551
  };
@@ -6749,21 +6564,21 @@ export interface operations {
6749
6564
  404: components["responses"]["NotFound"];
6750
6565
  };
6751
6566
  };
6752
- updateProject: {
6567
+ getTriggerTarget: {
6753
6568
  parameters: {
6754
6569
  query?: never;
6755
6570
  header?: never;
6756
6571
  path: {
6572
+ /** @description Project handle (unique per organization) */
6573
+ project: components["parameters"]["ProjectHandleParam"];
6757
6574
  /** @description Resource ID. */
6758
6575
  id: components["parameters"]["IDParam"];
6576
+ /** @description Trigger target ID. */
6577
+ target_id: components["parameters"]["TriggerTargetIDParam"];
6759
6578
  };
6760
6579
  cookie?: never;
6761
6580
  };
6762
- requestBody: {
6763
- content: {
6764
- "application/json": components["schemas"]["UpdateProjectRequest"];
6765
- };
6766
- };
6581
+ requestBody?: never;
6767
6582
  responses: {
6768
6583
  /** @description OK */
6769
6584
  200: {
@@ -6771,86 +6586,81 @@ export interface operations {
6771
6586
  [name: string]: unknown;
6772
6587
  };
6773
6588
  content: {
6774
- "application/json": components["schemas"]["Project"];
6589
+ "application/json": components["schemas"]["TriggerTarget"];
6775
6590
  };
6776
6591
  };
6777
- 400: components["responses"]["BadRequest"];
6778
6592
  401: components["responses"]["Unauthorized"];
6779
6593
  404: components["responses"]["NotFound"];
6780
6594
  };
6781
6595
  };
6782
- listWebhooks: {
6596
+ deleteTriggerTarget: {
6783
6597
  parameters: {
6784
- query?: {
6785
- /** @description Filter by enabled/disabled state. */
6786
- enabled?: boolean;
6787
- /** @description Opaque pagination cursor returned from the previous response. */
6788
- cursor?: string;
6789
- /** @description Maximum number of results to return per page. */
6790
- limit?: number;
6791
- };
6598
+ query?: never;
6792
6599
  header?: never;
6793
6600
  path: {
6794
6601
  /** @description Project handle (unique per organization) */
6795
6602
  project: components["parameters"]["ProjectHandleParam"];
6603
+ /** @description Resource ID. */
6604
+ id: components["parameters"]["IDParam"];
6605
+ /** @description Trigger target ID. */
6606
+ target_id: components["parameters"]["TriggerTargetIDParam"];
6796
6607
  };
6797
6608
  cookie?: never;
6798
6609
  };
6799
6610
  requestBody?: never;
6800
6611
  responses: {
6801
- /** @description OK */
6802
- 200: {
6612
+ /** @description No Content */
6613
+ 204: {
6803
6614
  headers: {
6804
6615
  [name: string]: unknown;
6805
6616
  };
6806
- content: {
6807
- "application/json": components["schemas"]["WebhookListResponse"];
6808
- };
6617
+ content?: never;
6809
6618
  };
6810
6619
  401: components["responses"]["Unauthorized"];
6811
6620
  404: components["responses"]["NotFound"];
6812
6621
  };
6813
6622
  };
6814
- createWebhook: {
6623
+ updateTriggerTarget: {
6815
6624
  parameters: {
6816
6625
  query?: never;
6817
6626
  header?: never;
6818
6627
  path: {
6819
6628
  /** @description Project handle (unique per organization) */
6820
6629
  project: components["parameters"]["ProjectHandleParam"];
6630
+ /** @description Resource ID. */
6631
+ id: components["parameters"]["IDParam"];
6632
+ /** @description Trigger target ID. */
6633
+ target_id: components["parameters"]["TriggerTargetIDParam"];
6821
6634
  };
6822
6635
  cookie?: never;
6823
6636
  };
6824
6637
  requestBody: {
6825
6638
  content: {
6826
- "application/json": components["schemas"]["CreateWebhookRequest"];
6639
+ "application/json": components["schemas"]["UpdateTriggerTargetRequest"];
6827
6640
  };
6828
6641
  };
6829
6642
  responses: {
6830
- /** @description Created */
6831
- 201: {
6643
+ /** @description OK */
6644
+ 200: {
6832
6645
  headers: {
6833
6646
  [name: string]: unknown;
6834
6647
  };
6835
6648
  content: {
6836
- "application/json": components["schemas"]["Webhook"];
6649
+ "application/json": components["schemas"]["TriggerTarget"];
6837
6650
  };
6838
6651
  };
6839
6652
  400: components["responses"]["BadRequest"];
6840
6653
  401: components["responses"]["Unauthorized"];
6841
6654
  404: components["responses"]["NotFound"];
6842
- 409: components["responses"]["Conflict"];
6843
6655
  };
6844
6656
  };
6845
- getWebhook: {
6657
+ listWorkerSessions: {
6846
6658
  parameters: {
6847
6659
  query?: never;
6848
6660
  header?: never;
6849
6661
  path: {
6850
6662
  /** @description Project handle (unique per organization) */
6851
6663
  project: components["parameters"]["ProjectHandleParam"];
6852
- /** @description Resource ID. */
6853
- id: components["parameters"]["IDParam"];
6854
6664
  };
6855
6665
  cookie?: never;
6856
6666
  };
@@ -6862,82 +6672,69 @@ export interface operations {
6862
6672
  [name: string]: unknown;
6863
6673
  };
6864
6674
  content: {
6865
- "application/json": components["schemas"]["Webhook"];
6675
+ "application/json": components["schemas"]["WorkerSessionListResponse"];
6866
6676
  };
6867
6677
  };
6868
6678
  401: components["responses"]["Unauthorized"];
6869
6679
  404: components["responses"]["NotFound"];
6870
6680
  };
6871
6681
  };
6872
- deleteWebhook: {
6682
+ listProjects: {
6873
6683
  parameters: {
6874
- query?: never;
6875
- header?: never;
6876
- path: {
6877
- /** @description Project handle (unique per organization) */
6878
- project: components["parameters"]["ProjectHandleParam"];
6879
- /** @description Resource ID. */
6880
- id: components["parameters"]["IDParam"];
6684
+ query?: {
6685
+ /** @description Prefix-match filter applied to project name and handle. */
6686
+ search?: string;
6881
6687
  };
6688
+ header?: never;
6689
+ path?: never;
6882
6690
  cookie?: never;
6883
6691
  };
6884
6692
  requestBody?: never;
6885
6693
  responses: {
6886
- /** @description No Content */
6887
- 204: {
6694
+ /** @description OK */
6695
+ 200: {
6888
6696
  headers: {
6889
6697
  [name: string]: unknown;
6890
6698
  };
6891
- content?: never;
6699
+ content: {
6700
+ "application/json": components["schemas"]["ProjectListResponse"];
6701
+ };
6892
6702
  };
6893
6703
  401: components["responses"]["Unauthorized"];
6894
- 404: components["responses"]["NotFound"];
6895
6704
  };
6896
6705
  };
6897
- updateWebhook: {
6706
+ createProject: {
6898
6707
  parameters: {
6899
6708
  query?: never;
6900
6709
  header?: never;
6901
- path: {
6902
- /** @description Project handle (unique per organization) */
6903
- project: components["parameters"]["ProjectHandleParam"];
6904
- /** @description Resource ID. */
6905
- id: components["parameters"]["IDParam"];
6906
- };
6710
+ path?: never;
6907
6711
  cookie?: never;
6908
6712
  };
6909
6713
  requestBody: {
6910
6714
  content: {
6911
- "application/json": components["schemas"]["UpdateWebhookRequest"];
6715
+ "application/json": components["schemas"]["CreateProjectRequest"];
6912
6716
  };
6913
6717
  };
6914
6718
  responses: {
6915
- /** @description OK */
6916
- 200: {
6719
+ /** @description Created */
6720
+ 201: {
6917
6721
  headers: {
6918
6722
  [name: string]: unknown;
6919
6723
  };
6920
6724
  content: {
6921
- "application/json": components["schemas"]["Webhook"];
6725
+ "application/json": components["schemas"]["Project"];
6922
6726
  };
6923
6727
  };
6924
6728
  400: components["responses"]["BadRequest"];
6925
6729
  401: components["responses"]["Unauthorized"];
6926
- 404: components["responses"]["NotFound"];
6730
+ 409: components["responses"]["Conflict"];
6927
6731
  };
6928
6732
  };
6929
- listWebhookDeliveries: {
6733
+ getProject: {
6930
6734
  parameters: {
6931
- query?: {
6932
- /** @description Opaque pagination cursor returned from the previous response. */
6933
- cursor?: string;
6934
- /** @description Maximum number of results to return per page. */
6935
- limit?: number;
6936
- };
6735
+ query?: never;
6937
6736
  header?: never;
6938
6737
  path: {
6939
- /** @description Project handle (unique per organization) */
6940
- project: components["parameters"]["ProjectHandleParam"];
6941
6738
  /** @description Resource ID. */
6942
6739
  id: components["parameters"]["IDParam"];
6943
6740
  };
@@ -6951,82 +6748,76 @@ export interface operations {
6951
6748
  [name: string]: unknown;
6952
6749
  };
6953
6750
  content: {
6954
- "application/json": components["schemas"]["WebhookDeliveryListResponse"];
6751
+ "application/json": components["schemas"]["Project"];
6955
6752
  };
6956
6753
  };
6957
6754
  401: components["responses"]["Unauthorized"];
6958
6755
  404: components["responses"]["NotFound"];
6959
6756
  };
6960
6757
  };
6961
- listIntegrations: {
6758
+ deleteProject: {
6962
6759
  parameters: {
6963
- query?: {
6964
- /** @description Filter by provider string (exact match). */
6965
- provider?: string;
6966
- /** @description Filter by integration status. */
6967
- status?: components["schemas"]["IntegrationStatus"];
6968
- /** @description Opaque pagination cursor returned from the previous response. */
6969
- cursor?: string;
6970
- /** @description Maximum number of results to return per page. */
6971
- limit?: number;
6972
- };
6760
+ query?: never;
6973
6761
  header?: never;
6974
6762
  path: {
6975
- /** @description Project handle (unique per organization) */
6976
- project: components["parameters"]["ProjectHandleParam"];
6763
+ /** @description Resource ID. */
6764
+ id: components["parameters"]["IDParam"];
6977
6765
  };
6978
6766
  cookie?: never;
6979
6767
  };
6980
6768
  requestBody?: never;
6981
6769
  responses: {
6982
- /** @description OK */
6983
- 200: {
6770
+ /** @description No Content */
6771
+ 204: {
6984
6772
  headers: {
6985
6773
  [name: string]: unknown;
6986
6774
  };
6987
- content: {
6988
- "application/json": components["schemas"]["IntegrationListResponse"];
6989
- };
6775
+ content?: never;
6990
6776
  };
6991
6777
  401: components["responses"]["Unauthorized"];
6778
+ 404: components["responses"]["NotFound"];
6992
6779
  };
6993
6780
  };
6994
- createIntegration: {
6781
+ updateProject: {
6995
6782
  parameters: {
6996
6783
  query?: never;
6997
6784
  header?: never;
6998
6785
  path: {
6999
- /** @description Project handle (unique per organization) */
7000
- project: components["parameters"]["ProjectHandleParam"];
6786
+ /** @description Resource ID. */
6787
+ id: components["parameters"]["IDParam"];
7001
6788
  };
7002
6789
  cookie?: never;
7003
6790
  };
7004
6791
  requestBody: {
7005
6792
  content: {
7006
- "application/json": components["schemas"]["CreateIntegrationRequest"];
6793
+ "application/json": components["schemas"]["UpdateProjectRequest"];
7007
6794
  };
7008
6795
  };
7009
6796
  responses: {
7010
- /** @description Created */
7011
- 201: {
6797
+ /** @description OK */
6798
+ 200: {
7012
6799
  headers: {
7013
6800
  [name: string]: unknown;
7014
6801
  };
7015
6802
  content: {
7016
- "application/json": components["schemas"]["Integration"];
6803
+ "application/json": components["schemas"]["Project"];
7017
6804
  };
7018
6805
  };
7019
6806
  400: components["responses"]["BadRequest"];
7020
6807
  401: components["responses"]["Unauthorized"];
6808
+ 404: components["responses"]["NotFound"];
7021
6809
  };
7022
6810
  };
7023
- getIntegration: {
6811
+ listProjectMembers: {
7024
6812
  parameters: {
7025
- query?: never;
6813
+ query?: {
6814
+ /** @description Cursor for pagination (opaque string from previous response) */
6815
+ cursor?: components["parameters"]["CursorParam"];
6816
+ /** @description Maximum number of items to return */
6817
+ limit?: components["parameters"]["LimitParam"];
6818
+ };
7026
6819
  header?: never;
7027
6820
  path: {
7028
- /** @description Project handle (unique per organization) */
7029
- project: components["parameters"]["ProjectHandleParam"];
7030
6821
  /** @description Resource ID. */
7031
6822
  id: components["parameters"]["IDParam"];
7032
6823
  };
@@ -7040,20 +6831,19 @@ export interface operations {
7040
6831
  [name: string]: unknown;
7041
6832
  };
7042
6833
  content: {
7043
- "application/json": components["schemas"]["Integration"];
6834
+ "application/json": components["schemas"]["ProjectMemberListResponse"];
7044
6835
  };
7045
6836
  };
7046
6837
  401: components["responses"]["Unauthorized"];
6838
+ 403: components["responses"]["Forbidden"];
7047
6839
  404: components["responses"]["NotFound"];
7048
6840
  };
7049
6841
  };
7050
- updateIntegration: {
6842
+ addProjectMember: {
7051
6843
  parameters: {
7052
6844
  query?: never;
7053
6845
  header?: never;
7054
6846
  path: {
7055
- /** @description Project handle (unique per organization) */
7056
- project: components["parameters"]["ProjectHandleParam"];
7057
6847
  /** @description Resource ID. */
7058
6848
  id: components["parameters"]["IDParam"];
7059
6849
  };
@@ -7061,114 +6851,76 @@ export interface operations {
7061
6851
  };
7062
6852
  requestBody: {
7063
6853
  content: {
7064
- "application/json": components["schemas"]["UpdateIntegrationRequest"];
6854
+ "application/json": components["schemas"]["AddProjectMemberRequest"];
7065
6855
  };
7066
6856
  };
7067
6857
  responses: {
7068
- /** @description OK */
6858
+ /** @description OK — member already existed */
7069
6859
  200: {
7070
6860
  headers: {
7071
6861
  [name: string]: unknown;
7072
6862
  };
7073
6863
  content: {
7074
- "application/json": components["schemas"]["Integration"];
6864
+ "application/json": components["schemas"]["ProjectMember"];
7075
6865
  };
7076
6866
  };
7077
- 400: components["responses"]["BadRequest"];
7078
- 401: components["responses"]["Unauthorized"];
7079
- 404: components["responses"]["NotFound"];
7080
- };
7081
- };
7082
- deleteIntegration: {
7083
- parameters: {
7084
- query?: never;
7085
- header?: never;
7086
- path: {
7087
- /** @description Project handle (unique per organization) */
7088
- project: components["parameters"]["ProjectHandleParam"];
7089
- /** @description Resource ID. */
7090
- id: components["parameters"]["IDParam"];
7091
- };
7092
- cookie?: never;
7093
- };
7094
- requestBody?: never;
7095
- responses: {
7096
- /** @description No Content */
7097
- 204: {
7098
- headers: {
7099
- [name: string]: unknown;
7100
- };
7101
- content?: never;
7102
- };
7103
- 401: components["responses"]["Unauthorized"];
7104
- 404: components["responses"]["NotFound"];
7105
- };
7106
- };
7107
- copyIntegration: {
7108
- parameters: {
7109
- query?: never;
7110
- header?: never;
7111
- path: {
7112
- /** @description Project handle (unique per organization) */
7113
- project: components["parameters"]["ProjectHandleParam"];
7114
- };
7115
- cookie?: never;
7116
- };
7117
- requestBody: {
7118
- content: {
7119
- "application/json": components["schemas"]["CopyIntegrationRequest"];
7120
- };
7121
- };
7122
- responses: {
7123
6867
  /** @description Created */
7124
6868
  201: {
7125
6869
  headers: {
7126
6870
  [name: string]: unknown;
7127
6871
  };
7128
6872
  content: {
7129
- "application/json": components["schemas"]["Integration"];
6873
+ "application/json": components["schemas"]["ProjectMember"];
7130
6874
  };
7131
6875
  };
7132
6876
  400: components["responses"]["BadRequest"];
7133
6877
  401: components["responses"]["Unauthorized"];
6878
+ 403: components["responses"]["Forbidden"];
7134
6879
  404: components["responses"]["NotFound"];
7135
6880
  };
7136
6881
  };
7137
- getProjectMetrics: {
6882
+ removeProjectMember: {
7138
6883
  parameters: {
7139
6884
  query?: never;
7140
6885
  header?: never;
7141
6886
  path: {
7142
- /** @description Project handle (unique per organization) */
7143
- project: components["parameters"]["ProjectHandleParam"];
6887
+ /** @description Resource ID. */
6888
+ id: components["parameters"]["IDParam"];
6889
+ /** @description User ID of the member to remove. */
6890
+ uid: string;
7144
6891
  };
7145
6892
  cookie?: never;
7146
6893
  };
7147
6894
  requestBody?: never;
7148
6895
  responses: {
7149
- /** @description OK */
7150
- 200: {
6896
+ /** @description No Content */
6897
+ 204: {
7151
6898
  headers: {
7152
6899
  [name: string]: unknown;
7153
6900
  };
7154
- content: {
7155
- "application/json": components["schemas"]["ProjectMetrics"];
7156
- };
6901
+ content?: never;
7157
6902
  };
6903
+ 400: components["responses"]["BadRequest"];
7158
6904
  401: components["responses"]["Unauthorized"];
6905
+ 403: components["responses"]["Forbidden"];
7159
6906
  404: components["responses"]["NotFound"];
7160
6907
  };
7161
6908
  };
7162
- listRoles: {
6909
+ listWebhooks: {
7163
6910
  parameters: {
7164
6911
  query?: {
6912
+ /** @description Filter by enabled/disabled state. */
6913
+ enabled?: boolean;
6914
+ /** @description Opaque pagination cursor returned from the previous response. */
6915
+ cursor?: string;
7165
6916
  /** @description Maximum number of results to return per page. */
7166
6917
  limit?: number;
7167
- /** @description Filter to roles scoped to a specific project. */
7168
- project_id?: string;
7169
6918
  };
7170
6919
  header?: never;
7171
- path?: never;
6920
+ path: {
6921
+ /** @description Project handle (unique per organization) */
6922
+ project: components["parameters"]["ProjectHandleParam"];
6923
+ };
7172
6924
  cookie?: never;
7173
6925
  };
7174
6926
  requestBody?: never;
@@ -7179,23 +6931,26 @@ export interface operations {
7179
6931
  [name: string]: unknown;
7180
6932
  };
7181
6933
  content: {
7182
- "application/json": components["schemas"]["RoleListResponse"];
6934
+ "application/json": components["schemas"]["WebhookListResponse"];
7183
6935
  };
7184
6936
  };
7185
6937
  401: components["responses"]["Unauthorized"];
7186
- 403: components["responses"]["Forbidden"];
6938
+ 404: components["responses"]["NotFound"];
7187
6939
  };
7188
6940
  };
7189
- createRole: {
6941
+ createWebhook: {
7190
6942
  parameters: {
7191
6943
  query?: never;
7192
6944
  header?: never;
7193
- path?: never;
6945
+ path: {
6946
+ /** @description Project handle (unique per organization) */
6947
+ project: components["parameters"]["ProjectHandleParam"];
6948
+ };
7194
6949
  cookie?: never;
7195
6950
  };
7196
6951
  requestBody: {
7197
6952
  content: {
7198
- "application/json": components["schemas"]["CreateRoleRequest"];
6953
+ "application/json": components["schemas"]["CreateWebhookRequest"];
7199
6954
  };
7200
6955
  };
7201
6956
  responses: {
@@ -7205,23 +6960,22 @@ export interface operations {
7205
6960
  [name: string]: unknown;
7206
6961
  };
7207
6962
  content: {
7208
- "application/json": components["schemas"]["Role"];
6963
+ "application/json": components["schemas"]["Webhook"];
7209
6964
  };
7210
6965
  };
7211
6966
  400: components["responses"]["BadRequest"];
7212
6967
  401: components["responses"]["Unauthorized"];
7213
- 403: components["responses"]["Forbidden"];
6968
+ 404: components["responses"]["NotFound"];
7214
6969
  409: components["responses"]["Conflict"];
7215
6970
  };
7216
6971
  };
7217
- getRole: {
6972
+ getWebhook: {
7218
6973
  parameters: {
7219
- query?: {
7220
- /** @description Provide to resolve a project-scoped role. */
7221
- project_id?: string;
7222
- };
6974
+ query?: never;
7223
6975
  header?: never;
7224
6976
  path: {
6977
+ /** @description Project handle (unique per organization) */
6978
+ project: components["parameters"]["ProjectHandleParam"];
7225
6979
  /** @description Resource ID. */
7226
6980
  id: components["parameters"]["IDParam"];
7227
6981
  };
@@ -7235,22 +6989,20 @@ export interface operations {
7235
6989
  [name: string]: unknown;
7236
6990
  };
7237
6991
  content: {
7238
- "application/json": components["schemas"]["Role"];
6992
+ "application/json": components["schemas"]["Webhook"];
7239
6993
  };
7240
6994
  };
7241
6995
  401: components["responses"]["Unauthorized"];
7242
- 403: components["responses"]["Forbidden"];
7243
6996
  404: components["responses"]["NotFound"];
7244
6997
  };
7245
6998
  };
7246
- deleteRole: {
6999
+ deleteWebhook: {
7247
7000
  parameters: {
7248
- query?: {
7249
- /** @description Scope to change this role to. Cannot change an org-scoped role to project-scoped after creation. */
7250
- project_id?: string;
7251
- };
7001
+ query?: never;
7252
7002
  header?: never;
7253
7003
  path: {
7004
+ /** @description Project handle (unique per organization) */
7005
+ project: components["parameters"]["ProjectHandleParam"];
7254
7006
  /** @description Resource ID. */
7255
7007
  id: components["parameters"]["IDParam"];
7256
7008
  };
@@ -7266,18 +7018,16 @@ export interface operations {
7266
7018
  content?: never;
7267
7019
  };
7268
7020
  401: components["responses"]["Unauthorized"];
7269
- 403: components["responses"]["Forbidden"];
7270
7021
  404: components["responses"]["NotFound"];
7271
7022
  };
7272
7023
  };
7273
- updateRole: {
7024
+ updateWebhook: {
7274
7025
  parameters: {
7275
- query?: {
7276
- /** @description Scope to change this role to. Cannot change an org-scoped role to project-scoped after creation. */
7277
- project_id?: string;
7278
- };
7026
+ query?: never;
7279
7027
  header?: never;
7280
7028
  path: {
7029
+ /** @description Project handle (unique per organization) */
7030
+ project: components["parameters"]["ProjectHandleParam"];
7281
7031
  /** @description Resource ID. */
7282
7032
  id: components["parameters"]["IDParam"];
7283
7033
  };
@@ -7285,7 +7035,7 @@ export interface operations {
7285
7035
  };
7286
7036
  requestBody: {
7287
7037
  content: {
7288
- "application/json": components["schemas"]["UpdateRoleRequest"];
7038
+ "application/json": components["schemas"]["UpdateWebhookRequest"];
7289
7039
  };
7290
7040
  };
7291
7041
  responses: {
@@ -7295,33 +7045,31 @@ export interface operations {
7295
7045
  [name: string]: unknown;
7296
7046
  };
7297
7047
  content: {
7298
- "application/json": components["schemas"]["Role"];
7048
+ "application/json": components["schemas"]["Webhook"];
7299
7049
  };
7300
7050
  };
7301
7051
  400: components["responses"]["BadRequest"];
7302
7052
  401: components["responses"]["Unauthorized"];
7303
- 403: components["responses"]["Forbidden"];
7304
7053
  404: components["responses"]["NotFound"];
7305
- 409: components["responses"]["Conflict"];
7306
7054
  };
7307
7055
  };
7308
- listRoleAssignments: {
7056
+ pingWebhook: {
7309
7057
  parameters: {
7310
- query?: {
7311
- /** @description Filter by the type of actor receiving the assignment. */
7312
- actor_type?: "user" | "service_account";
7313
- /** @description Filter to assignments for a specific actor. */
7314
- actor_id?: string;
7315
- /** @description Filter to assignments for a specific role. */
7316
- role_id?: string;
7317
- /** @description Filter to project-scoped assignments for this project. */
7318
- project_id?: string;
7319
- };
7058
+ query?: never;
7320
7059
  header?: never;
7321
- path?: never;
7060
+ path: {
7061
+ /** @description Project handle (unique per organization) */
7062
+ project: components["parameters"]["ProjectHandleParam"];
7063
+ /** @description Resource ID. */
7064
+ id: components["parameters"]["IDParam"];
7065
+ };
7322
7066
  cookie?: never;
7323
7067
  };
7324
- requestBody?: never;
7068
+ requestBody?: {
7069
+ content: {
7070
+ "application/json": components["schemas"]["PingWebhookRequest"];
7071
+ };
7072
+ };
7325
7073
  responses: {
7326
7074
  /** @description OK */
7327
7075
  200: {
@@ -7329,63 +7077,68 @@ export interface operations {
7329
7077
  [name: string]: unknown;
7330
7078
  };
7331
7079
  content: {
7332
- "application/json": components["schemas"]["RoleAssignmentListResponse"];
7080
+ "application/json": components["schemas"]["PingWebhookResult"];
7333
7081
  };
7334
7082
  };
7083
+ 400: components["responses"]["BadRequest"];
7335
7084
  401: components["responses"]["Unauthorized"];
7336
- 403: components["responses"]["Forbidden"];
7085
+ 404: components["responses"]["NotFound"];
7337
7086
  };
7338
7087
  };
7339
- createRoleAssignment: {
7088
+ listWebhookDeliveries: {
7340
7089
  parameters: {
7341
- query?: never;
7090
+ query?: {
7091
+ /** @description Opaque pagination cursor returned from the previous response. */
7092
+ cursor?: string;
7093
+ /** @description Maximum number of results to return per page. */
7094
+ limit?: number;
7095
+ };
7342
7096
  header?: never;
7343
- path?: never;
7344
- cookie?: never;
7345
- };
7346
- requestBody: {
7347
- content: {
7348
- "application/json": components["schemas"]["CreateRoleAssignmentRequest"];
7097
+ path: {
7098
+ /** @description Project handle (unique per organization) */
7099
+ project: components["parameters"]["ProjectHandleParam"];
7100
+ /** @description Resource ID. */
7101
+ id: components["parameters"]["IDParam"];
7349
7102
  };
7103
+ cookie?: never;
7350
7104
  };
7105
+ requestBody?: never;
7351
7106
  responses: {
7352
- /** @description Created */
7353
- 201: {
7107
+ /** @description OK */
7108
+ 200: {
7354
7109
  headers: {
7355
7110
  [name: string]: unknown;
7356
7111
  };
7357
7112
  content: {
7358
- "application/json": components["schemas"]["RoleAssignment"];
7113
+ "application/json": components["schemas"]["WebhookDeliveryListResponse"];
7359
7114
  };
7360
7115
  };
7361
- 400: components["responses"]["BadRequest"];
7362
7116
  401: components["responses"]["Unauthorized"];
7363
- 403: components["responses"]["Forbidden"];
7364
7117
  404: components["responses"]["NotFound"];
7365
- 409: components["responses"]["Conflict"];
7366
7118
  };
7367
7119
  };
7368
- deleteRoleAssignment: {
7120
+ getProjectMetrics: {
7369
7121
  parameters: {
7370
7122
  query?: never;
7371
7123
  header?: never;
7372
7124
  path: {
7373
- /** @description Resource ID. */
7374
- id: components["parameters"]["IDParam"];
7125
+ /** @description Project handle (unique per organization) */
7126
+ project: components["parameters"]["ProjectHandleParam"];
7375
7127
  };
7376
7128
  cookie?: never;
7377
7129
  };
7378
7130
  requestBody?: never;
7379
7131
  responses: {
7380
- /** @description No Content */
7381
- 204: {
7132
+ /** @description OK */
7133
+ 200: {
7382
7134
  headers: {
7383
7135
  [name: string]: unknown;
7384
7136
  };
7385
- content?: never;
7137
+ content: {
7138
+ "application/json": components["schemas"]["ProjectMetrics"];
7139
+ };
7386
7140
  };
7387
7141
  401: components["responses"]["Unauthorized"];
7388
- 403: components["responses"]["Forbidden"];
7389
7142
  404: components["responses"]["NotFound"];
7390
7143
  };
7391
7144
  };
@@ -7981,6 +7734,7 @@ export interface operations {
7981
7734
  400: components["responses"]["BadRequest"];
7982
7735
  401: components["responses"]["Unauthorized"];
7983
7736
  404: components["responses"]["NotFound"];
7737
+ 409: components["responses"]["Conflict"];
7984
7738
  };
7985
7739
  };
7986
7740
  listAgentSessions: {
@@ -8056,6 +7810,8 @@ export interface operations {
8056
7810
  path: {
8057
7811
  /** @description Project handle (unique per organization) */
8058
7812
  project: components["parameters"]["ProjectHandleParam"];
7813
+ /** @description Resource ID. */
7814
+ id: components["parameters"]["IDParam"];
8059
7815
  /** @description ID of the agent session. */
8060
7816
  sessionId: string;
8061
7817
  };
@@ -8083,6 +7839,8 @@ export interface operations {
8083
7839
  path: {
8084
7840
  /** @description Project handle (unique per organization) */
8085
7841
  project: components["parameters"]["ProjectHandleParam"];
7842
+ /** @description Resource ID. */
7843
+ id: components["parameters"]["IDParam"];
8086
7844
  /** @description ID of the agent session. */
8087
7845
  sessionId: string;
8088
7846
  };
@@ -8110,6 +7868,8 @@ export interface operations {
8110
7868
  path: {
8111
7869
  /** @description Project handle (unique per organization) */
8112
7870
  project: components["parameters"]["ProjectHandleParam"];
7871
+ /** @description Resource ID. */
7872
+ id: components["parameters"]["IDParam"];
8113
7873
  /** @description ID of the agent session. */
8114
7874
  sessionId: string;
8115
7875
  };