@empiricalrun/playwright-utils 0.60.1 → 0.60.2

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.
@@ -131,6 +131,26 @@ export interface paths {
131
131
  patch?: never;
132
132
  trace?: never;
133
133
  };
134
+ "/api/v2/test-runs/{id}": {
135
+ parameters: {
136
+ query?: never;
137
+ header?: never;
138
+ path?: never;
139
+ cookie?: never;
140
+ };
141
+ /**
142
+ * Get test run metadata
143
+ * @description Returns Postgres-backed metadata for a test run. This endpoint does not read the run ledger or compose per-test results.
144
+ */
145
+ get: operations["getTestRunV2"];
146
+ put?: never;
147
+ post?: never;
148
+ delete?: never;
149
+ options?: never;
150
+ head?: never;
151
+ patch?: never;
152
+ trace?: never;
153
+ };
134
154
  "/api/test-runs/{id}/share-targets": {
135
155
  parameters: {
136
156
  query?: never;
@@ -1090,6 +1110,50 @@ export interface paths {
1090
1110
  patch?: never;
1091
1111
  trace?: never;
1092
1112
  };
1113
+ "/api/slack/files/{file_id}": {
1114
+ parameters: {
1115
+ query?: never;
1116
+ header?: never;
1117
+ path?: never;
1118
+ cookie?: never;
1119
+ };
1120
+ /**
1121
+ * 🤖 Get Slack file metadata
1122
+ * @description Returns metadata for a Slack file accessible to the current sandbox-delegated chat session (private URLs stripped).
1123
+ */
1124
+ get: operations["getSlackFileMetadata"];
1125
+ put?: never;
1126
+ post?: never;
1127
+ delete?: never;
1128
+ options?: never;
1129
+ head?: never;
1130
+ patch?: never;
1131
+ trace?: never;
1132
+ };
1133
+ "/api/slack/files/{file_id}/content": {
1134
+ parameters: {
1135
+ query?: never;
1136
+ header?: never;
1137
+ path?: never;
1138
+ cookie?: never;
1139
+ };
1140
+ /**
1141
+ * 🤖 Download Slack file content
1142
+ * @description Streams the content of a Slack file accessible to the current sandbox-delegated chat session.
1143
+ */
1144
+ get: operations["getSlackFileContent"];
1145
+ put?: never;
1146
+ post?: never;
1147
+ delete?: never;
1148
+ options?: never;
1149
+ /**
1150
+ * 🤖 Slack file content headers
1151
+ * @description Returns the content headers (type, disposition, length) for a Slack file without its body.
1152
+ */
1153
+ head: operations["headSlackFileContent"];
1154
+ patch?: never;
1155
+ trace?: never;
1156
+ };
1093
1157
  "/api/slack/messages": {
1094
1158
  parameters: {
1095
1159
  query?: never;
@@ -1101,7 +1165,7 @@ export interface paths {
1101
1165
  put?: never;
1102
1166
  /**
1103
1167
  * 🤖 Post a Slack message
1104
- * @description Posts a Markdown message to a Slack channel or thread, as the Empirical bot, addressed by the `channel` and `ts` coordinates the agent was given. Sandbox-delegated principals only; the channel must be one the calling project can reach. When the coordinates match a thread linked to a chat session, the send is recorded and de-duplicated by idempotency key.
1168
+ * @description Posts Markdown to a Slack channel/thread, or a recipient-addressed DM, as the Empirical bot. Provide exactly one of channel, slack_user_id, or user_id. Recipient sends create a new DM root and require idempotency_key. Channel sends use the channel and root timestamp coordinates the agent was given. Sandbox-delegated principals only; the channel must be one the calling project can reach. Registered-root replies are recorded and de-duplicated by idempotency key for the sending session. New roots are registered and bound to the sending session after posting; if delivery or registration is uncertain, check Slack before retrying.
1105
1169
  */
1106
1170
  post: operations["slackSendMessage"];
1107
1171
  delete?: never;
@@ -1194,7 +1258,7 @@ export interface paths {
1194
1258
  patch: operations["updateSlackChannel"];
1195
1259
  trace?: never;
1196
1260
  };
1197
- "/api/slack/files/{file_id}": {
1261
+ "/api/slack/teams": {
1198
1262
  parameters: {
1199
1263
  query?: never;
1200
1264
  header?: never;
@@ -1202,10 +1266,10 @@ export interface paths {
1202
1266
  cookie?: never;
1203
1267
  };
1204
1268
  /**
1205
- * ⚙️ Get Slack file metadata
1206
- * @description Returns metadata for a Slack file accessible to the current sandbox-delegated chat session (private URLs stripped).
1269
+ * ⚙️ List Slack workspaces
1270
+ * @description Lists the Slack workspaces available to the scoped project: the shared default Empirical workspace plus any org-specific app installs.
1207
1271
  */
1208
- get: operations["getSlackFileMetadata"];
1272
+ get: operations["listSlackTeams"];
1209
1273
  put?: never;
1210
1274
  post?: never;
1211
1275
  delete?: never;
@@ -1214,31 +1278,7 @@ export interface paths {
1214
1278
  patch?: never;
1215
1279
  trace?: never;
1216
1280
  };
1217
- "/api/slack/files/{file_id}/content": {
1218
- parameters: {
1219
- query?: never;
1220
- header?: never;
1221
- path?: never;
1222
- cookie?: never;
1223
- };
1224
- /**
1225
- * ⚙️ Download Slack file content
1226
- * @description Streams the content of a Slack file accessible to the current sandbox-delegated chat session.
1227
- */
1228
- get: operations["getSlackFileContent"];
1229
- put?: never;
1230
- post?: never;
1231
- delete?: never;
1232
- options?: never;
1233
- /**
1234
- * ⚙️ Slack file content headers
1235
- * @description Returns the content headers (type, disposition, length) for a Slack file without its body.
1236
- */
1237
- head: operations["headSlackFileContent"];
1238
- patch?: never;
1239
- trace?: never;
1240
- };
1241
- "/api/slack/teams": {
1281
+ "/api/slack/threads/{id}/preview": {
1242
1282
  parameters: {
1243
1283
  query?: never;
1244
1284
  header?: never;
@@ -1246,10 +1286,10 @@ export interface paths {
1246
1286
  cookie?: never;
1247
1287
  };
1248
1288
  /**
1249
- * ⚙️ List Slack workspaces
1250
- * @description Lists the Slack workspaces available to the scoped project: the shared default Empirical workspace plus any org-specific app installs.
1289
+ * ⚙️ Preview a registered Slack thread
1290
+ * @description Fetches a compact, on-demand preview of a Slack thread registered to the scoped project.
1251
1291
  */
1252
- get: operations["listSlackTeams"];
1292
+ get: operations["previewSlackThread"];
1253
1293
  put?: never;
1254
1294
  post?: never;
1255
1295
  delete?: never;
@@ -1490,90 +1530,6 @@ export interface paths {
1490
1530
  patch?: never;
1491
1531
  trace?: never;
1492
1532
  };
1493
- "/api/beta/alert-rules": {
1494
- parameters: {
1495
- query?: never;
1496
- header?: never;
1497
- path?: never;
1498
- cookie?: never;
1499
- };
1500
- /**
1501
- * 🧪 List alert rules
1502
- * @description Returns the scoped project's alert rules, all-environments rule first.
1503
- */
1504
- get: operations["listAlertRules"];
1505
- put?: never;
1506
- /**
1507
- * 🛡️ 🧪 Create an alert rule
1508
- * @description Creates an alert rule for the scoped project. `environment_id: null` (or omitted) makes it the all-environments rule; an env-specific rule overrides the all-env rule for that environment. At most one rule per (project, environment) — a duplicate fails with 409.
1509
- */
1510
- post: operations["createAlertRule"];
1511
- delete?: never;
1512
- options?: never;
1513
- head?: never;
1514
- patch?: never;
1515
- trace?: never;
1516
- };
1517
- "/api/beta/alerts": {
1518
- parameters: {
1519
- query?: never;
1520
- header?: never;
1521
- path?: never;
1522
- cookie?: never;
1523
- };
1524
- /**
1525
- * 🧪 List alerts
1526
- * @description Returns a paginated list of the scoped project's test-case alerts, newest opened first. Filter by `state` and/or `environment_id`.
1527
- */
1528
- get: operations["listAlerts"];
1529
- put?: never;
1530
- post?: never;
1531
- delete?: never;
1532
- options?: never;
1533
- head?: never;
1534
- patch?: never;
1535
- trace?: never;
1536
- };
1537
- "/api/beta/alerts/{id}": {
1538
- parameters: {
1539
- query?: never;
1540
- header?: never;
1541
- path?: never;
1542
- cookie?: never;
1543
- };
1544
- /**
1545
- * 🧪 Get an alert
1546
- * @description Retrieves a single alert with its lifecycle events (oldest first).
1547
- */
1548
- get: operations["getAlert"];
1549
- put?: never;
1550
- post?: never;
1551
- delete?: never;
1552
- options?: never;
1553
- head?: never;
1554
- patch?: never;
1555
- trace?: never;
1556
- };
1557
- "/api/beta/alerts/events": {
1558
- parameters: {
1559
- query?: never;
1560
- header?: never;
1561
- path?: never;
1562
- cookie?: never;
1563
- };
1564
- /**
1565
- * 🧪 List recent alert events
1566
- * @description Returns the scoped project's alert opened and resolved events, newest first.
1567
- */
1568
- get: operations["listRecentAlertEvents"];
1569
- put?: never;
1570
- post?: never;
1571
- delete?: never;
1572
- options?: never;
1573
- head?: never;
1574
- patch?: never;
1575
- trace?: never;
1576
- };
1577
1533
  "/api/infra/static-ips": {
1578
1534
  parameters: {
1579
1535
  query?: never;
@@ -1713,7 +1669,7 @@ export interface paths {
1713
1669
  patch: operations["updateChatSessionAlarm"];
1714
1670
  trace?: never;
1715
1671
  };
1716
- "/api/chat-sessions/{id}/threads": {
1672
+ "/api/chat-sessions/{id}/session-state": {
1717
1673
  parameters: {
1718
1674
  query?: never;
1719
1675
  header?: never;
@@ -1721,36 +1677,12 @@ export interface paths {
1721
1677
  cookie?: never;
1722
1678
  };
1723
1679
  /**
1724
- * 🤖 List a session's threads
1725
- * @description Returns the messaging threads linked to a chat session.
1726
- */
1727
- get: operations["listChatSessionThreads"];
1728
- put?: never;
1729
- /**
1730
- * 🤖 Create a session thread
1731
- * @description Creates an agent-controlled Slack thread for explicit outbound messages and mentioned user replies (`channel_type: channel`, the default), or an agent-controlled DM to a user (`channel_type: im` with `slack_user_id` or Empirical `user_id`) whose in-thread replies are forwarded to the session.
1680
+ * 🤖 Get a session's initial state
1681
+ * @description Returns a session's recent log entries, user messages, and current sandbox state, read from pi-worker over the service binding.
1732
1682
  */
1733
- post: operations["createChatSessionThread"];
1734
- delete?: never;
1735
- options?: never;
1736
- head?: never;
1737
- patch?: never;
1738
- trace?: never;
1739
- };
1740
- "/api/chat-sessions/{id}/threads/{thread_id}/messages": {
1741
- parameters: {
1742
- query?: never;
1743
- header?: never;
1744
- path?: never;
1745
- cookie?: never;
1746
- };
1747
- get?: never;
1683
+ get: operations["getChatSessionState"];
1748
1684
  put?: never;
1749
- /**
1750
- * 🤖 Post a message to a session thread
1751
- * @description Posts an explicit Markdown message to a Slack thread the agent controls, or to the source thread that started this session. This does not create a chat-session user message and does not trigger automatic outbound mirroring.
1752
- */
1753
- post: operations["createChatSessionThreadMessage"];
1685
+ post?: never;
1754
1686
  delete?: never;
1755
1687
  options?: never;
1756
1688
  head?: never;
@@ -1880,26 +1812,6 @@ export interface paths {
1880
1812
  patch?: never;
1881
1813
  trace?: never;
1882
1814
  };
1883
- "/api/projects/clone": {
1884
- parameters: {
1885
- query?: never;
1886
- header?: never;
1887
- path?: never;
1888
- cookie?: never;
1889
- };
1890
- /**
1891
- * 🤖 Get project clone credentials
1892
- * @description Returns a short-lived GitHub installation access token and an authenticated clone URL for the scoped project's repository.
1893
- */
1894
- get: operations["getProjectClone"];
1895
- put?: never;
1896
- post?: never;
1897
- delete?: never;
1898
- options?: never;
1899
- head?: never;
1900
- patch?: never;
1901
- trace?: never;
1902
- };
1903
1815
  "/api/triage-statuses": {
1904
1816
  parameters: {
1905
1817
  query?: never;
@@ -2033,30 +1945,6 @@ export interface paths {
2033
1945
  patch: operations["updateApiKey"];
2034
1946
  trace?: never;
2035
1947
  };
2036
- "/api/beta/alert-rules/{id}": {
2037
- parameters: {
2038
- query?: never;
2039
- header?: never;
2040
- path?: never;
2041
- cookie?: never;
2042
- };
2043
- get?: never;
2044
- put?: never;
2045
- post?: never;
2046
- /**
2047
- * 🛡️ 🧪 Delete an alert rule
2048
- * @description Permanently deletes an alert rule. The project is derived from the rule itself. A rule that alerts reference cannot be deleted (the alerts FK has no cascade): the request fails with 409 — deactivate the rule (`is_active: false`) instead to stop it evaluating while keeping its alert history.
2049
- */
2050
- delete: operations["deleteAlertRule"];
2051
- options?: never;
2052
- head?: never;
2053
- /**
2054
- * 🛡️ 🧪 Update an alert rule
2055
- * @description Updates a rule's environment, config, or active state. The project is derived from the rule itself. Moving the rule onto a (project, environment) slot another rule holds fails with 409.
2056
- */
2057
- patch: operations["updateAlertRule"];
2058
- trace?: never;
2059
- };
2060
1948
  "/api/chat-sessions": {
2061
1949
  parameters: {
2062
1950
  query?: never;
@@ -2479,26 +2367,6 @@ export interface paths {
2479
2367
  patch?: never;
2480
2368
  trace?: never;
2481
2369
  };
2482
- "/api/chat-sessions/{id}/session-state": {
2483
- parameters: {
2484
- query?: never;
2485
- header?: never;
2486
- path?: never;
2487
- cookie?: never;
2488
- };
2489
- /**
2490
- * ⚙️ Get a session's initial state
2491
- * @description Returns a session's recent log entries, user messages, and current sandbox state, read from pi-worker over the service binding.
2492
- */
2493
- get: operations["getChatSessionState"];
2494
- put?: never;
2495
- post?: never;
2496
- delete?: never;
2497
- options?: never;
2498
- head?: never;
2499
- patch?: never;
2500
- trace?: never;
2501
- };
2502
2370
  "/api/chat-sessions/{id}/snapshot": {
2503
2371
  parameters: {
2504
2372
  query?: never;
@@ -2668,13 +2536,13 @@ export interface paths {
2668
2536
  };
2669
2537
  /**
2670
2538
  * ⚙️ List environment variables
2671
- * @description Lists a project's environment variables, enriched with the last editor's user details. The project comes from the x-project-id header or the project_repo_name query parameter.
2539
+ * @description Lists the scoped project's environment variables, enriched with the last editor's user details.
2672
2540
  */
2673
2541
  get: operations["listEnvironmentVariables"];
2674
2542
  put?: never;
2675
2543
  /**
2676
2544
  * ⚙️ Create an environment variable
2677
- * @description Creates an environment variable. The project comes from the body's project_id.
2545
+ * @description Creates an environment variable for the scoped project.
2678
2546
  */
2679
2547
  post: operations["createEnvironmentVariable"];
2680
2548
  delete?: never;
@@ -3737,8 +3605,8 @@ export interface paths {
3737
3605
  get: operations["listJiraInstallations"];
3738
3606
  put?: never;
3739
3607
  /**
3740
- * ⚙️ Create a Jira installation
3741
- * @description Stores a Jira app installation and optionally registers its webhook.
3608
+ * ⚙️ Create or reauthorize a Jira installation
3609
+ * @description Stores a Jira app installation, or reauthorizes the existing site while preserving mappings, and optionally registers its webhook.
3742
3610
  */
3743
3611
  post: operations["createJiraInstallation"];
3744
3612
  delete?: never;
@@ -3862,7 +3730,7 @@ export interface paths {
3862
3730
  put?: never;
3863
3731
  /**
3864
3732
  * ⚙️ Create a Linear installation
3865
- * @description Stores a new Linear app installation and its access token.
3733
+ * @description Creates or reauthorizes a Linear installation and stores its OAuth tokens.
3866
3734
  */
3867
3735
  post: operations["createLinearInstallation"];
3868
3736
  delete?: never;
@@ -4795,6 +4663,26 @@ export interface paths {
4795
4663
  patch?: never;
4796
4664
  trace?: never;
4797
4665
  };
4666
+ "/api/projects/clone": {
4667
+ parameters: {
4668
+ query?: never;
4669
+ header?: never;
4670
+ path?: never;
4671
+ cookie?: never;
4672
+ };
4673
+ /**
4674
+ * 🛡️ Get project clone URL
4675
+ * @description Returns the scoped project's repository URL on git.empirical.run. Authenticate with an Empirical credential as the HTTP password (the CLI's git credential helper does this for you). Access is read-only. No GitHub token is issued.
4676
+ */
4677
+ get: operations["getProjectClone"];
4678
+ put?: never;
4679
+ post?: never;
4680
+ delete?: never;
4681
+ options?: never;
4682
+ head?: never;
4683
+ patch?: never;
4684
+ trace?: never;
4685
+ };
4798
4686
  "/api/projects/git-token": {
4799
4687
  parameters: {
4800
4688
  query?: never;
@@ -4972,13 +4860,13 @@ export interface paths {
4972
4860
  };
4973
4861
  /**
4974
4862
  * ⚙️ List requests
4975
- * @description Returns a paginated list of requests for a project (from the `x-project-id` header, falling back to the `project_id` query param).
4863
+ * @description Returns a paginated list of requests for the scoped project.
4976
4864
  */
4977
4865
  get: operations["listRequests"];
4978
4866
  put?: never;
4979
4867
  /**
4980
4868
  * ⚙️ Create a request
4981
- * @description Creates a request and, for non-draft requests, spawns a chat session for the agent.
4869
+ * @description Creates a request for the scoped project and, for non-draft requests, spawns a chat session for the agent.
4982
4870
  */
4983
4871
  post: operations["createRequest"];
4984
4872
  delete?: never;
@@ -5203,21 +5091,41 @@ export interface paths {
5203
5091
  patch?: never;
5204
5092
  trace?: never;
5205
5093
  };
5206
- "/api/upload": {
5094
+ "/api/ui/v1/test-runs/{id}/live": {
5207
5095
  parameters: {
5208
5096
  query?: never;
5209
5097
  header?: never;
5210
5098
  path?: never;
5211
5099
  cookie?: never;
5212
5100
  };
5213
- get?: never;
5214
- put?: never;
5215
5101
  /**
5216
- * ⚙️ Create presigned upload URLs
5217
- * @description Generates S3-style presigned PUT URLs for uploading files directly to an R2 bucket. Each uploading client must send the same Content-Type used here.
5102
+ * Refresh a live test run (UI)
5103
+ * @description Returns only test-run fields that can change while the hydrated dashboard page is open. It deliberately omits ledger cases, test-case rows, static run metadata, user lookups, pull-request resolution, and chat-session lookup.
5218
5104
  */
5219
- post: operations["createUploadUrls"];
5220
- delete?: never;
5105
+ get: operations["getUiLiveTestRun"];
5106
+ put?: never;
5107
+ post?: never;
5108
+ delete?: never;
5109
+ options?: never;
5110
+ head?: never;
5111
+ patch?: never;
5112
+ trace?: never;
5113
+ };
5114
+ "/api/upload": {
5115
+ parameters: {
5116
+ query?: never;
5117
+ header?: never;
5118
+ path?: never;
5119
+ cookie?: never;
5120
+ };
5121
+ get?: never;
5122
+ put?: never;
5123
+ /**
5124
+ * ⚙️ Create presigned upload URLs
5125
+ * @description Generates S3-style presigned PUT URLs for uploading files directly to an R2 bucket. Each uploading client must send the same Content-Type used here.
5126
+ */
5127
+ post: operations["createUploadUrls"];
5128
+ delete?: never;
5221
5129
  options?: never;
5222
5130
  head?: never;
5223
5131
  patch?: never;
@@ -5300,7 +5208,7 @@ export interface paths {
5300
5208
  };
5301
5209
  /**
5302
5210
  * ⚙️ List my Slack links
5303
- * @description Returns the Slack accounts linked to the current user, re-validating them against Slack when the project's install has the `users:read` scope.
5211
+ * @description Returns the Slack accounts linked to the current user.
5304
5212
  */
5305
5213
  get: operations["listMySlackLinks"];
5306
5214
  put?: never;
@@ -5324,7 +5232,7 @@ export interface paths {
5324
5232
  };
5325
5233
  /**
5326
5234
  * ⚙️ Get customer-visible usage for a project
5327
- * @description Usage for a UTC time window, defaulting to the current calendar month-to-date. Returns AI sessions, total tokens, and credits by usage type, plus daily credit totals. Provider costs and internal attribution dimensions are omitted.
5235
+ * @description Usage for a UTC time window, defaulting to the current calendar month-to-date. Returns AI sessions, total tokens, and credits by usage type, daily credit totals, and test execution duration with UTC daily totals split by environment. Provider costs and internal attribution dimensions are omitted.
5328
5236
  */
5329
5237
  get: operations["getProjectUsageV2"];
5330
5238
  put?: never;
@@ -6350,10 +6258,10 @@ export interface components {
6350
6258
  ProjectCloneResponse: {
6351
6259
  /** @description Response payload. */
6352
6260
  data: {
6353
- /** @description GitHub installation access token for the repo. */
6354
- access_token: string;
6355
- /** @description Authenticated HTTPS clone URL embedding the access token. */
6261
+ /** @description Repository URL on git.empirical.run. Authenticate with an Empirical credential (session token or project API key) as the HTTP password. */
6356
6262
  clone_url: string;
6263
+ /** @description HTTP Basic username git-worker expects. */
6264
+ username: string;
6357
6265
  /** @description Repository name. */
6358
6266
  name: string;
6359
6267
  /** @description Default branch of the repository. */
@@ -7828,6 +7736,16 @@ export interface components {
7828
7736
  env_files: string[];
7829
7737
  /** @description Cron expression for scheduled triggers. */
7830
7738
  scheduled_trigger: string | null;
7739
+ /** @description Concurrency group and policy scheduled runs are triggered with; null uses the project's legacy concurrency setting. */
7740
+ scheduled_concurrency: {
7741
+ /** @description Concurrency group key. */
7742
+ group: string;
7743
+ /**
7744
+ * @description Policy toward an active run in the group.
7745
+ * @enum {string}
7746
+ */
7747
+ on_conflict: "cancel" | "wait";
7748
+ } | null;
7831
7749
  /** @description ISO 8601 timestamp. */
7832
7750
  created_at: string | null;
7833
7751
  /** @description ISO 8601 timestamp. */
@@ -7850,6 +7768,16 @@ export interface components {
7850
7768
  playwright_projects_ignore?: string[];
7851
7769
  /** @description Cron expression for scheduled triggers, or null. */
7852
7770
  scheduled_trigger?: string | null;
7771
+ /** @description Concurrency group and policy scheduled runs are triggered with. Omit to keep the current value; null to fall back to the project's legacy concurrency setting. */
7772
+ scheduled_concurrency?: {
7773
+ /** @description Free-form group key, scoped to the project. */
7774
+ group: string;
7775
+ /**
7776
+ * @description `cancel` cancels the group's active run and starts; `wait` queues behind it.
7777
+ * @enum {string}
7778
+ */
7779
+ on_conflict: "cancel" | "wait";
7780
+ } | null;
7853
7781
  };
7854
7782
  EnvironmentSyncResponse: {
7855
7783
  /** @description Response payload. */
@@ -7878,6 +7806,16 @@ export interface components {
7878
7806
  playwright_projects_ignore?: string[];
7879
7807
  /** @description Cron expression for scheduled triggers, or null. */
7880
7808
  scheduled_trigger?: string | null;
7809
+ /** @description Concurrency group and policy scheduled runs are triggered with. Omit to keep the current value; null to fall back to the project's legacy concurrency setting. */
7810
+ scheduled_concurrency?: {
7811
+ /** @description Free-form group key, scoped to the project. */
7812
+ group: string;
7813
+ /**
7814
+ * @description `cancel` cancels the group's active run and starts; `wait` queues behind it.
7815
+ * @enum {string}
7816
+ */
7817
+ on_conflict: "cancel" | "wait";
7818
+ } | null;
7881
7819
  };
7882
7820
  EnvironmentDeleteResponse: {
7883
7821
  /** @description Always true on success. */
@@ -8323,6 +8261,11 @@ export interface components {
8323
8261
  team_id: string;
8324
8262
  /** @description Slack workspace name. */
8325
8263
  team_name: string;
8264
+ /**
8265
+ * Format: uri
8266
+ * @description Slack workspace URL learned from auth.test.
8267
+ */
8268
+ team_url: string | null;
8326
8269
  /** @description ISO 8601 creation timestamp. */
8327
8270
  created_at: string | null;
8328
8271
  };
@@ -8349,6 +8292,11 @@ export interface components {
8349
8292
  team_id: string;
8350
8293
  /** @description Slack workspace name. */
8351
8294
  team_name: string;
8295
+ /**
8296
+ * Format: uri
8297
+ * @description Slack workspace URL learned from auth.test.
8298
+ */
8299
+ team_url: string | null;
8352
8300
  /** @description ISO 8601 creation timestamp. */
8353
8301
  created_at: string | null;
8354
8302
  };
@@ -8374,6 +8322,11 @@ export interface components {
8374
8322
  team_id: string;
8375
8323
  /** @description Slack workspace name. */
8376
8324
  team_name: string;
8325
+ /**
8326
+ * Format: uri
8327
+ * @description Slack workspace URL learned from auth.test.
8328
+ */
8329
+ team_url: string | null;
8377
8330
  /** @description ISO 8601 creation timestamp. */
8378
8331
  created_at: string | null;
8379
8332
  };
@@ -8443,6 +8396,11 @@ export interface components {
8443
8396
  recipient_user_id: string | null;
8444
8397
  /** @description Slack root message timestamp. */
8445
8398
  thread_ts: string;
8399
+ /**
8400
+ * Format: uri
8401
+ * @description Direct URL to the Slack root message, using the authenticated viewer's workspace when known and the app installation otherwise.
8402
+ */
8403
+ permalink: string | null;
8446
8404
  /**
8447
8405
  * @description Registry thread kind.
8448
8406
  * @enum {string}
@@ -8486,9 +8444,43 @@ export interface components {
8486
8444
  /** @description ISO 8601 update time. */
8487
8445
  updated_at: string;
8488
8446
  };
8447
+ SlackThreadPreviewResponse: {
8448
+ /** @description Compact Slack thread preview. */
8449
+ data: {
8450
+ /** @description The root message followed by the first replies. */
8451
+ messages: components["schemas"]["SlackThreadPreviewMessage"][];
8452
+ /** @description Total replies reported by Slack. */
8453
+ reply_count: number;
8454
+ /** @description Replies not included in this compact preview. */
8455
+ omitted_count: number;
8456
+ };
8457
+ };
8458
+ SlackThreadPreviewMessage: {
8459
+ /** @description Slack message timestamp. */
8460
+ ts: string;
8461
+ /** @description Plain Slack message text. */
8462
+ text: string;
8463
+ /** @description Author name when Slack includes one. */
8464
+ author_name: string | null;
8465
+ /** @description Whether an app posted this message. */
8466
+ is_bot: boolean;
8467
+ /** @description Emoji reactions on this Slack message. */
8468
+ reactions: {
8469
+ /** @description Slack emoji name. */
8470
+ name: string;
8471
+ /** @description Number of reactions with this emoji. */
8472
+ count: number;
8473
+ }[];
8474
+ };
8489
8475
  SlackMessageResult: {
8490
8476
  /** @enum {boolean} */
8491
8477
  ok: true;
8478
+ /** @description Resolved DM channel, returned for recipient-addressed sends. */
8479
+ channel?: string;
8480
+ /** @description Root timestamp for future replies; ts is the posted message timestamp. */
8481
+ thread_ts?: string;
8482
+ /** @description Registered physical Slack root ID. */
8483
+ slack_thread_id?: number;
8492
8484
  /** @description Timestamp id of the message that was posted. */
8493
8485
  ts: string;
8494
8486
  };
@@ -8570,7 +8562,7 @@ export interface components {
8570
8562
  field: string;
8571
8563
  /** @enum {string} */
8572
8564
  operator: "eq" | "neq" | "in" | "nin" | "gt" | "gte" | "lt" | "lte" | "contains" | "startsWith";
8573
- value?: unknown;
8565
+ value: string | number | boolean | (string | number | boolean)[];
8574
8566
  }[];
8575
8567
  userIds: string[];
8576
8568
  };
@@ -8638,76 +8630,6 @@ export interface components {
8638
8630
  chat_session: components["schemas"]["ChatSession"];
8639
8631
  };
8640
8632
  };
8641
- ChatSessionThreadsListResponse: {
8642
- /** @description Response payload. */
8643
- data: {
8644
- threads: components["schemas"]["ChatSessionThread"][];
8645
- };
8646
- };
8647
- ChatSessionThread: {
8648
- /** @description Thread ID. */
8649
- id: number;
8650
- /** @description Owning chat session ID. */
8651
- chat_session_id: number;
8652
- /** @description Messaging provider. */
8653
- provider: string;
8654
- /** @description Thread purpose. */
8655
- purpose: string;
8656
- /** @description External team/workspace ID. */
8657
- external_team_id: string | null;
8658
- /** @description External channel ID. */
8659
- external_channel_id: string;
8660
- /** @description External channel name. */
8661
- external_channel_name: string | null;
8662
- /** @description External channel type. */
8663
- external_channel_type: string | null;
8664
- /** @description External recipient user ID (DM threads). */
8665
- external_recipient_user_id: string | null;
8666
- /** @description External thread timestamp. */
8667
- external_thread_ts: string;
8668
- /** @description External root message timestamp. */
8669
- external_message_ts: string | null;
8670
- /** @description Policy for inbound replies. */
8671
- inbound_reply_policy: string;
8672
- /** @description Whether two-way sync is enabled. */
8673
- sync_enabled: boolean;
8674
- /** @description Creation timestamp (ISO). */
8675
- created_at: string;
8676
- /** @description Last update timestamp (ISO). */
8677
- updated_at: string;
8678
- };
8679
- ChatSessionThreadResponse: {
8680
- /** @description Response payload. */
8681
- data: {
8682
- thread: components["schemas"]["ChatSessionThread"];
8683
- };
8684
- };
8685
- ChatSessionThreadMessageResponse: {
8686
- /** @description Response payload. */
8687
- data: {
8688
- message: components["schemas"]["ChatSessionThreadMessage"];
8689
- };
8690
- };
8691
- ChatSessionThreadMessage: {
8692
- /** @description Thread message ID. */
8693
- id: number;
8694
- /** @description Owning chat session thread ID. */
8695
- chat_session_thread_id: number;
8696
- /** @description Caller-provided idempotency key. */
8697
- idempotency_key: string;
8698
- /** @description Original Markdown input. */
8699
- markdown: string;
8700
- /** @description Delivery status. */
8701
- status: string;
8702
- /** @description Slack message timestamp, when sent. */
8703
- external_message_ts: string | null;
8704
- /** @description Delivery error, when failed. */
8705
- error_message: string | null;
8706
- /** @description Creation timestamp (ISO). */
8707
- created_at: string;
8708
- /** @description Last update timestamp (ISO). */
8709
- updated_at: string;
8710
- };
8711
8633
  ChatSessionDetailResponse: {
8712
8634
  /** @description Response payload. */
8713
8635
  data: {
@@ -9256,6 +9178,10 @@ export interface components {
9256
9178
  jira_access_token_expires_at: string;
9257
9179
  /** @description Webhook expiry (ISO 8601), or null. */
9258
9180
  webhook_expires_at: string | null;
9181
+ /** @description When Jira OAuth reauthorization became required (ISO 8601), or null. */
9182
+ reauthorization_required_at: string | null;
9183
+ /** @description Machine-readable reason reauthorization is required. */
9184
+ reauthorization_reason: string | null;
9259
9185
  /** @description Creation timestamp (ISO 8601), or null. */
9260
9186
  created_at: string | null;
9261
9187
  /** @description Alias of `jira_access_token_expires_at` (ISO 8601). */
@@ -9328,6 +9254,10 @@ export interface components {
9328
9254
  } | null;
9329
9255
  /** @description Webhook expiry (ISO 8601), or null. */
9330
9256
  webhook_expires_at: string | null;
9257
+ /** @description When Jira OAuth reauthorization became required (ISO 8601), or null. */
9258
+ reauthorization_required_at: string | null;
9259
+ /** @description Machine-readable reason reauthorization is required. */
9260
+ reauthorization_reason: string | null;
9331
9261
  /** @description Creation timestamp (ISO 8601), or null. */
9332
9262
  created_at: string | null;
9333
9263
  } | null;
@@ -9382,7 +9312,7 @@ export interface components {
9382
9312
  created_at: string | null;
9383
9313
  /** @description ISO 8601 expiry of the stored access token. */
9384
9314
  expires_at: string;
9385
- /** @description Whether the access token is still valid. */
9315
+ /** @description Whether the access token is still valid or can be refreshed. */
9386
9316
  is_active: boolean;
9387
9317
  /** @description Actor name (only when metadata is cached). */
9388
9318
  linear_app_user_name?: string;
@@ -9402,9 +9332,9 @@ export interface components {
9402
9332
  name: string;
9403
9333
  };
9404
9334
  LinearInstallCreateResponse: {
9405
- /** @description Always true when the installation was created. */
9335
+ /** @description Always true when the installation was stored. */
9406
9336
  success: boolean;
9407
- /** @description The created installation. */
9337
+ /** @description The created or reauthorized installation. */
9408
9338
  data: {
9409
9339
  /** @description Installation ID. */
9410
9340
  id: number;
@@ -9422,7 +9352,7 @@ export interface components {
9422
9352
  created_at: string | null;
9423
9353
  /** @description ISO 8601 expiry of the stored access token. */
9424
9354
  expires_at: string;
9425
- /** @description Whether the access token is still valid. */
9355
+ /** @description Whether the access token is still valid or can be refreshed. */
9426
9356
  is_active: boolean;
9427
9357
  /** @description Actor name (only when metadata is cached). */
9428
9358
  linear_app_user_name?: string;
@@ -9459,7 +9389,7 @@ export interface components {
9459
9389
  created_at: string | null;
9460
9390
  /** @description ISO 8601 expiry of the stored access token. */
9461
9391
  expires_at: string;
9462
- /** @description Whether the access token is still valid. */
9392
+ /** @description Whether the access token is still valid or can be refreshed. */
9463
9393
  is_active: boolean;
9464
9394
  /** @description Actor name (only when metadata is cached). */
9465
9395
  linear_app_user_name?: string;
@@ -9776,6 +9706,14 @@ export interface components {
9776
9706
  history_by_test_case_id: {
9777
9707
  [key: string]: components["schemas"]["TestCaseHistoryEntry"][];
9778
9708
  };
9709
+ /** @description Map of `test_case_id` to its most recent passing run in each environment. Present when requested. */
9710
+ last_pass_by_test_case_id?: {
9711
+ [key: string]: {
9712
+ environment_id: string;
9713
+ test_run_id: string;
9714
+ executed_at: number;
9715
+ }[];
9716
+ };
9779
9717
  };
9780
9718
  /** @description Echoed query parameters and truncation metadata. */
9781
9719
  meta: {
@@ -9818,6 +9756,8 @@ export interface components {
9818
9756
  environment_id?: string;
9819
9757
  /** @description Maximum history entries returned per test case (1-1000, default 50). */
9820
9758
  limit_per_test_case?: number;
9759
+ /** @description When true, also return the most recent passing run per environment for each requested test case. */
9760
+ include_last_pass_per_env?: boolean;
9821
9761
  } & {
9822
9762
  [key: string]: unknown;
9823
9763
  };
@@ -9855,6 +9795,12 @@ export interface components {
9855
9795
  by_type: components["schemas"]["ProjectAiUsageByType"][];
9856
9796
  by_day: components["schemas"]["ProjectDailyAiUsage"][];
9857
9797
  };
9798
+ test_usage: {
9799
+ /** @description Sum of all attempt durations for completed non-skipped tests, in milliseconds. */
9800
+ duration_ms: number;
9801
+ by_day: components["schemas"]["ProjectDailyTestUsage"][];
9802
+ by_day_and_environment: components["schemas"]["ProjectDailyTestUsageByEnvironment"][];
9803
+ };
9858
9804
  };
9859
9805
  };
9860
9806
  ProjectAiUsageByType: {
@@ -9872,6 +9818,18 @@ export interface components {
9872
9818
  type: components["schemas"]["AiUsageType"];
9873
9819
  credits: number;
9874
9820
  };
9821
+ ProjectDailyTestUsage: {
9822
+ /** @description UTC date (YYYY-MM-DD). */
9823
+ date: string;
9824
+ duration_ms: number;
9825
+ };
9826
+ ProjectDailyTestUsageByEnvironment: {
9827
+ /** @description UTC date (YYYY-MM-DD). */
9828
+ date: string;
9829
+ duration_ms: number;
9830
+ environment_id: number | null;
9831
+ environment_name: string | null;
9832
+ };
9875
9833
  TestCaseTagsResponse: {
9876
9834
  /** @description Distinct tags across the project's test cases. */
9877
9835
  tags: string[];
@@ -10029,6 +9987,16 @@ export interface components {
10029
9987
  commit: string | null;
10030
9988
  /** @description ISO 8601 timestamp. */
10031
9989
  created_at: string;
9990
+ /** @description Concurrency group and policy the run was created with, or null when no limit applied. */
9991
+ concurrency: {
9992
+ /** @description Concurrency group the run was scoped to. Runs in the same group are limited to one in progress at a time. */
9993
+ group: string;
9994
+ /**
9995
+ * @description What this run did when the group already had an active run: `cancel` cancelled it, `wait` queued behind it.
9996
+ * @enum {string}
9997
+ */
9998
+ on_conflict: "cancel" | "wait";
9999
+ } | null;
10032
10000
  };
10033
10001
  CreateTestRunResponse: {
10034
10002
  data: {
@@ -10045,6 +10013,16 @@ export interface components {
10045
10013
  test_run_branch: string;
10046
10014
  /** @description ISO 8601 timestamp when the run was created. */
10047
10015
  created_at: string;
10016
+ /** @description Concurrency group and policy the run was created with, or null when no limit applied. */
10017
+ concurrency: {
10018
+ /** @description Concurrency group the run was scoped to. Runs in the same group are limited to one in progress at a time. */
10019
+ group: string;
10020
+ /**
10021
+ * @description What this run did when the group already had an active run: `cancel` cancelled it, `wait` queued behind it.
10022
+ * @enum {string}
10023
+ */
10024
+ on_conflict: "cancel" | "wait";
10025
+ } | null;
10048
10026
  };
10049
10027
  };
10050
10028
  };
@@ -10083,6 +10061,16 @@ export interface components {
10083
10061
  test_case_ids?: string[];
10084
10062
  /** @description Test repo branch to run. Useful for running tests from a feature branch before merging. Cannot be used together with `build` — pick one. */
10085
10063
  branch?: string;
10064
+ /** @description Concurrency group and policy for this run. Runs in the same group (within the project) are limited to one in progress; `on_conflict` says what this run does when the group already has an active run: `cancel` cancels it and starts now, `wait` queues behind it (a newer waiting run replaces an older one). Omit to use the project's legacy concurrency setting; `null` for no limit. */
10065
+ concurrency?: {
10066
+ /** @description Free-form group key, scoped to the project, e.g. `production`, `staging/acme/web@feat-x`, or a build URL. */
10067
+ group: string;
10068
+ /**
10069
+ * @description `cancel`: cancel the group's in-progress and waiting runs, then start. `wait`: queue behind the in-progress run; a newer waiting run replaces this one.
10070
+ * @enum {string}
10071
+ */
10072
+ on_conflict: "cancel" | "wait";
10073
+ } | null;
10086
10074
  /** @description Legacy project ID; must match the request's resolved project scope when set. The project scope itself comes from the bound principal or the x-project-id header, never from the body. */
10087
10075
  project_id?: number;
10088
10076
  /** @description Whether to send run notifications. Defaults to true. */
@@ -10428,6 +10416,16 @@ export interface components {
10428
10416
  commit: string | null;
10429
10417
  /** @description ISO 8601 timestamp. */
10430
10418
  created_at: string;
10419
+ /** @description Concurrency group and policy the run was created with, or null when no limit applied. */
10420
+ concurrency: {
10421
+ /** @description Concurrency group the run was scoped to. Runs in the same group are limited to one in progress at a time. */
10422
+ group: string;
10423
+ /**
10424
+ * @description What this run did when the group already had an active run: `cancel` cancelled it, `wait` queued behind it.
10425
+ * @enum {string}
10426
+ */
10427
+ on_conflict: "cancel" | "wait";
10428
+ } | null;
10431
10429
  /** @description Git commit SHA. */
10432
10430
  test_run_head_sha: string | null;
10433
10431
  /** @description ISO 8601 timestamp when tests started. */
@@ -10447,12 +10445,61 @@ export interface components {
10447
10445
  };
10448
10446
  };
10449
10447
  TestCaseRunEndEventRequest: {
10450
- /** @description Event name, e.g. `test_case_run_end`. */
10451
- name?: string;
10452
- /** @description The Playwright reporter's `TestCaseRunEndEventV2` payload (shape not enforced). */
10453
- data: {
10454
- [key: string]: unknown;
10455
- };
10448
+ /**
10449
+ * @description Event name, e.g. `test_case_run_end`.
10450
+ * @enum {string}
10451
+ */
10452
+ name?: "test_case_run_end";
10453
+ data: components["schemas"]["TestCaseRunEndEventV2"];
10454
+ };
10455
+ TestCaseRunEndEventV2: {
10456
+ runId: string;
10457
+ test: components["schemas"]["TestCaseRunEndPayloadTest"];
10458
+ suites: string[];
10459
+ result: components["schemas"]["TestCaseRunEndPayloadResult"];
10460
+ projectName: string;
10461
+ attachments: components["schemas"]["TestCaseRunEndAttachment"][];
10462
+ failingLine?: string;
10463
+ shardIndex?: number;
10464
+ maxFailures?: number;
10465
+ };
10466
+ TestCaseRunEndPayloadTest: {
10467
+ id: string;
10468
+ title: string;
10469
+ location: components["schemas"]["TestCaseRunEndPayloadLocation"];
10470
+ expectedStatus: components["schemas"]["TestCaseRunEndPayloadStatus"];
10471
+ retries: number;
10472
+ };
10473
+ TestCaseRunEndPayloadLocation: {
10474
+ file: string;
10475
+ line: number;
10476
+ column: number;
10477
+ };
10478
+ /** @enum {string} */
10479
+ TestCaseRunEndPayloadStatus: "passed" | "failed" | "timedOut" | "skipped" | "interrupted";
10480
+ TestCaseRunEndPayloadResult: {
10481
+ retry: number;
10482
+ status: components["schemas"]["TestCaseRunEndPayloadStatus"];
10483
+ duration: number;
10484
+ startTime: string;
10485
+ error?: components["schemas"]["TestCaseRunEndPayloadError"];
10486
+ errors?: components["schemas"]["TestCaseRunEndPayloadError"][];
10487
+ annotations?: components["schemas"]["TestCaseRunEndPayloadAnnotation"][];
10488
+ };
10489
+ TestCaseRunEndPayloadError: {
10490
+ message?: string;
10491
+ stack?: string;
10492
+ location?: components["schemas"]["TestCaseRunEndPayloadLocation"];
10493
+ };
10494
+ TestCaseRunEndPayloadAnnotation: {
10495
+ type: string;
10496
+ description?: string;
10497
+ };
10498
+ TestCaseRunEndAttachment: {
10499
+ name: string;
10500
+ path: string;
10501
+ contentType: string;
10502
+ url: string;
10456
10503
  };
10457
10504
  UpdateShardStateResponse: {
10458
10505
  /** @description Response payload. */
@@ -10873,6 +10920,53 @@ export interface components {
10873
10920
  /** @description Environment slug. */
10874
10921
  environment?: string;
10875
10922
  };
10923
+ GetTestRunV2Response: {
10924
+ /** @description Response payload. */
10925
+ data: {
10926
+ /** @description Test run database ID. */
10927
+ id: number;
10928
+ /** @description Owning project ID. */
10929
+ project_id: number;
10930
+ /** @description Current run state. */
10931
+ state: string | null;
10932
+ /** @description External run identifier, if one was assigned. */
10933
+ run_id: number | null;
10934
+ total_count: number | null;
10935
+ unique_count: number | null;
10936
+ success_count: number | null;
10937
+ failed_count: number | null;
10938
+ failed_count_after_snoozing: number | null;
10939
+ skipped_count: number | null;
10940
+ flaky_count: number | null;
10941
+ duration: number | null;
10942
+ created_at: string | null;
10943
+ run_started_at: string | null;
10944
+ run_ended_at: string | null;
10945
+ test_run_branch: string;
10946
+ test_run_head_sha: string | null;
10947
+ summary_url: string | null;
10948
+ /** @description Environment ID, if one was selected. */
10949
+ environment_id: number | null;
10950
+ /** @description Environment slug, if one was selected. */
10951
+ environment_slug: string | null;
10952
+ /** @description Environment name, if one was selected. */
10953
+ environment_name: string | null;
10954
+ /** @description Per-run environment variable overrides. */
10955
+ environment_variables_overrides: {
10956
+ name: string;
10957
+ value: string;
10958
+ }[] | null;
10959
+ build_url: string | null;
10960
+ build_branch: string | null;
10961
+ commit: string | null;
10962
+ commit_url: string | null;
10963
+ repo: string | null;
10964
+ error_code: string | null;
10965
+ cancellation_reason: string | null;
10966
+ cancelled_by_user_id: string | null;
10967
+ superseded_by_test_run_id: number | null;
10968
+ };
10969
+ };
10876
10970
  ListTestRunCasesResponse: {
10877
10971
  /** @description The page of test run cases. */
10878
10972
  data: components["schemas"]["TestRunCase"][];
@@ -11042,6 +11136,64 @@ export interface components {
11042
11136
  skipped_attempts: components["schemas"]["TestRunCaseSkippedAttempt"][] | null;
11043
11137
  };
11044
11138
  };
11139
+ UiLiveTestRunResponse: {
11140
+ /** @description Response payload. */
11141
+ data: {
11142
+ test_run: components["schemas"]["LiveTestRun"];
11143
+ };
11144
+ };
11145
+ LiveTestRun: {
11146
+ /** @description Test run database ID. */
11147
+ id: number;
11148
+ /** @description External run_id, if assigned. */
11149
+ run_id: number | null;
11150
+ /** @description ECS task ID running the run, if dispatched. */
11151
+ ecs_task_id: string | null;
11152
+ /** @description AWS region of the ECS task, if dispatched. */
11153
+ ecs_task_region: string | null;
11154
+ /** @description Total number of test cases. */
11155
+ total_count: number | null;
11156
+ /** @description Number of unique test cases. */
11157
+ unique_count: number | null;
11158
+ /** @description Number of passed tests. */
11159
+ success_count: number | null;
11160
+ /** @description Number of failed tests. */
11161
+ failed_count: number | null;
11162
+ /** @description Failed tests remaining after applying snoozes. */
11163
+ failed_count_after_snoozing: number | null;
11164
+ /** @description Number of skipped tests. */
11165
+ skipped_count: number | null;
11166
+ /** @description Number of flaky tests. */
11167
+ flaky_count: number | null;
11168
+ /** @description ISO 8601 timestamp when tests started. */
11169
+ run_started_at: string | null;
11170
+ /** @description ISO 8601 timestamp when tests ended. */
11171
+ run_ended_at: string | null;
11172
+ /** @description Run duration in milliseconds. */
11173
+ duration: number | null;
11174
+ /** @description URL of the Playwright JSON report. */
11175
+ summary_url: string | null;
11176
+ /** @description Current run state (queued, started, ended, ...). */
11177
+ state: string | null;
11178
+ /** @description Head commit SHA of the test repo. */
11179
+ test_run_head_sha: string | null;
11180
+ /** @description Head branch of the merge commit, if any. */
11181
+ merge_commit_head_branch: string | null;
11182
+ /** @description Base branch of the merge commit, if any. */
11183
+ merge_commit_base_branch: string | null;
11184
+ /** @description Whether the merge commit succeeded. */
11185
+ merge_commit_successful: boolean | null;
11186
+ /** @description Error code if the run failed. */
11187
+ error_code: string | null;
11188
+ /** @description Reason the run was cancelled, if any. */
11189
+ cancellation_reason: string | null;
11190
+ /** @description User ID that cancelled the run, if any. */
11191
+ cancelled_by_user_id: string | null;
11192
+ /** @description Artifact storage bucket for the run. */
11193
+ storage_bucket: string | null;
11194
+ /** @description ID of the run that supersedes this one, if any. */
11195
+ superseded_by_test_run_id: number | null;
11196
+ };
11045
11197
  UiGetTestRunResponse: {
11046
11198
  /** @description Response payload. */
11047
11199
  data: {
@@ -11191,6 +11343,16 @@ export interface components {
11191
11343
  tags: string[] | null;
11192
11344
  /** @description Specific test case ids (Playwright test.id) to run. */
11193
11345
  test_case_ids: string[] | null;
11346
+ /** @description Concurrency group and policy the run was created with; null when no limit applied. */
11347
+ concurrency: {
11348
+ /** @description Concurrency group the run was scoped to. */
11349
+ group: string;
11350
+ /**
11351
+ * @description Policy toward an active run in the group: cancel it, or wait behind it.
11352
+ * @enum {string}
11353
+ */
11354
+ on_conflict: "cancel" | "wait";
11355
+ } | null;
11194
11356
  /** @description GitHub PR for the build branch, resolved via the reporter app; null when there is no PR or the reporter is not installed. */
11195
11357
  pull_request: {
11196
11358
  /** @description Pull request number. */
@@ -11551,327 +11713,65 @@ export interface components {
11551
11713
  deleted: boolean;
11552
11714
  };
11553
11715
  };
11554
- AlertRuleListResponse: {
11716
+ WebhookListResponse: {
11555
11717
  /** @description Response payload. */
11556
11718
  data: {
11557
- alert_rules: components["schemas"]["AlertRule"][];
11719
+ webhooks: components["schemas"]["Webhook"][];
11558
11720
  };
11559
11721
  };
11560
- AlertRule: {
11561
- /** @description Alert rule ID. */
11722
+ Webhook: {
11723
+ /** @description Webhook ID. */
11562
11724
  id: number;
11563
- /** @description Project the rule belongs to. */
11725
+ /** @description Project the webhook belongs to. */
11564
11726
  project_id: number;
11565
- /** @description Environment this rule applies to; null means all environments. */
11566
- environment_id: number | null;
11567
- /** @description Whether the rule is active. */
11727
+ /** @description Endpoint that receives event payloads. */
11728
+ url: string;
11729
+ /** @description Event names this webhook subscribes to. */
11730
+ events: string[];
11731
+ /** @description Whether the webhook is active. */
11568
11732
  is_active: boolean;
11569
- /**
11570
- * @description Rule type. Only `consecutive` exists today.
11571
- * @enum {string}
11572
- */
11573
- type: "consecutive";
11574
- config: components["schemas"]["ConsecutiveAlertRuleConfig"];
11575
11733
  /** @description ISO 8601 creation timestamp. */
11576
11734
  created_at: string;
11577
11735
  /** @description ISO 8601 last-update timestamp. */
11578
11736
  updated_at: string;
11579
11737
  };
11580
- ConsecutiveAlertRuleConfig: {
11581
- /** @description Open an alert after this many consecutive fails. */
11582
- open_after_fails: number;
11583
- /** @description Resolve an open alert after this many consecutive passes. */
11584
- resolve_after_passes: number;
11585
- };
11586
- AlertRuleResponse: {
11738
+ WebhookCreateResponse: {
11587
11739
  /** @description Response payload. */
11588
11740
  data: {
11589
- alert_rule: components["schemas"]["AlertRule"];
11741
+ webhook: components["schemas"]["CreatedWebhook"];
11590
11742
  };
11591
11743
  };
11592
- CreateAlertRuleRequest: {
11744
+ CreatedWebhook: {
11745
+ /** @description Webhook ID. */
11746
+ id: number;
11747
+ /** @description Project the webhook belongs to. */
11748
+ project_id: number;
11749
+ /** @description Endpoint that receives event payloads. */
11750
+ url: string;
11751
+ /** @description Event names this webhook subscribes to. */
11752
+ events: string[];
11753
+ /** @description Whether the webhook is active. */
11754
+ is_active: boolean;
11755
+ /** @description ISO 8601 creation timestamp. */
11756
+ created_at: string;
11757
+ /** @description ISO 8601 last-update timestamp. */
11758
+ updated_at: string;
11759
+ /** @description Signing secret (returned only on creation). */
11760
+ secret: string;
11761
+ };
11762
+ CreateWebhookRequest: {
11593
11763
  /**
11594
- * @description Rule type. Only `consecutive` exists today.
11595
- * @enum {string}
11764
+ * Format: uri
11765
+ * @description HTTPS endpoint that will receive event payloads.
11596
11766
  */
11597
- type: "consecutive";
11598
- config: components["schemas"]["ConsecutiveAlertRuleConfig"];
11599
- /** @description Environment this rule applies to; null applies it to all environments. */
11600
- environment_id?: number | null;
11601
- /** @description Whether the rule is active. Defaults to true. */
11602
- is_active?: boolean;
11603
- };
11604
- PatchAlertRuleRequest: {
11605
- /** @description Environment this rule applies to; null applies it to all environments. */
11606
- environment_id?: number | null;
11607
- config?: components["schemas"]["ConsecutiveAlertRuleConfig"];
11608
- /** @description Whether the rule is active. */
11609
- is_active?: boolean;
11767
+ url: string;
11768
+ /** @description Event names this webhook subscribes to. */
11769
+ events: string[];
11610
11770
  };
11611
- AlertRuleDeleteResponse: {
11771
+ WebhookUpdateResponse: {
11612
11772
  /** @description Response payload. */
11613
11773
  data: {
11614
- /**
11615
- * @description Always true on success.
11616
- * @enum {boolean}
11617
- */
11618
- deleted: true;
11619
- };
11620
- };
11621
- AlertListResponse: {
11622
- data: {
11623
- alerts: components["schemas"]["Alert"][];
11624
- };
11625
- pagination: components["schemas"]["Pagination"];
11626
- };
11627
- Alert: {
11628
- /** @description Alert ID. */
11629
- id: number;
11630
- /** @description Project the alert belongs to. */
11631
- project_id: number;
11632
- /** @description Environment the alert was opened in. */
11633
- environment_id: number;
11634
- /** @description The alert rule that opened this alert. */
11635
- rule_id: number;
11636
- /** @description Playwright test ID of the alerting test. */
11637
- pw_test_id: string;
11638
- /**
11639
- * @description Alert lifecycle state.
11640
- * @enum {string}
11641
- */
11642
- state: "open" | "resolved";
11643
- /** @description Current consecutive-fail streak. */
11644
- consecutive_fails: number;
11645
- /** @description Failing runs recorded on this alert since it opened: the run that opened it plus every run that kept it failing. Unlike `consecutive_fails`, an intervening pass does not reset it. */
11646
- fails_since_opened: number;
11647
- /** @description Recent evaluated outcomes, newest last. */
11648
- recent_outcomes: components["schemas"]["AlertRunOutcome"][];
11649
- /** @description The run whose failure opened the alert. */
11650
- triggering_test_run_id: number;
11651
- /** @description ISO 8601 timestamp the alert opened. */
11652
- opened_at: string;
11653
- /** @description ISO 8601 timestamp the alert resolved, if it has. */
11654
- resolved_at: string | null;
11655
- /** @description ISO 8601 creation timestamp. */
11656
- created_at: string;
11657
- /** @description ISO 8601 last-update timestamp. */
11658
- updated_at: string;
11659
- /** @description Display info for the alerting test; null when the test is no longer in the test-case ledger. */
11660
- test_case: {
11661
- /** @description Human-readable test name. */
11662
- name: string;
11663
- /** @description Test file path. */
11664
- file_path: string;
11665
- /** @description Test tags. */
11666
- tags: string[];
11667
- } | null;
11668
- /** @description The most-recently-seen failure group this alert's test is currently attached to; null when the test is in no group. */
11669
- failure_group: {
11670
- /** @description Failure group ID. */
11671
- id: string;
11672
- /** @description Human-readable group label. */
11673
- label: string;
11674
- /**
11675
- * @description Group lifecycle status.
11676
- * @enum {string}
11677
- */
11678
- status: "open" | "resolved";
11679
- /** @description True when a membership sighting cites a run in the alert's outcome window. */
11680
- seen_in_window: boolean;
11681
- } | null;
11682
- };
11683
- AlertRunOutcome: {
11684
- /** @description The evaluated test run. */
11685
- test_run_id: number;
11686
- /**
11687
- * @description Evaluated outcome (flaky counts as pass).
11688
- * @enum {string}
11689
- */
11690
- status: "pass" | "fail";
11691
- };
11692
- RecentAlertEventListResponse: {
11693
- data: {
11694
- events: components["schemas"]["RecentAlertEvent"][];
11695
- };
11696
- pagination: components["schemas"]["Pagination"];
11697
- };
11698
- RecentAlertEvent: {
11699
- id: number;
11700
- alert_id: number;
11701
- /** @enum {string} */
11702
- type: "opened" | "resolved";
11703
- test_run_id: number | null;
11704
- environment_id: number;
11705
- pw_test_id: string;
11706
- created_at: string;
11707
- test_case: components["schemas"]["AlertTestCase"];
11708
- };
11709
- AlertTestCase: {
11710
- /** @description Human-readable test name. */
11711
- name: string;
11712
- /** @description Test file path. */
11713
- file_path: string;
11714
- /** @description Test tags. */
11715
- tags: string[];
11716
- } | null;
11717
- AlertDetailResponse: {
11718
- /** @description Response payload. */
11719
- data: {
11720
- alert: components["schemas"]["AlertDetail"];
11721
- };
11722
- };
11723
- AlertDetail: {
11724
- /** @description Alert ID. */
11725
- id: number;
11726
- /** @description Project the alert belongs to. */
11727
- project_id: number;
11728
- /** @description Environment the alert was opened in. */
11729
- environment_id: number;
11730
- /** @description The alert rule that opened this alert. */
11731
- rule_id: number;
11732
- /** @description Playwright test ID of the alerting test. */
11733
- pw_test_id: string;
11734
- /**
11735
- * @description Alert lifecycle state.
11736
- * @enum {string}
11737
- */
11738
- state: "open" | "resolved";
11739
- /** @description Current consecutive-fail streak. */
11740
- consecutive_fails: number;
11741
- /** @description Failing runs recorded on this alert since it opened: the run that opened it plus every run that kept it failing. Unlike `consecutive_fails`, an intervening pass does not reset it. */
11742
- fails_since_opened: number;
11743
- /** @description Recent evaluated outcomes, newest last. */
11744
- recent_outcomes: components["schemas"]["AlertRunOutcome"][];
11745
- /** @description The run whose failure opened the alert. */
11746
- triggering_test_run_id: number;
11747
- /** @description ISO 8601 timestamp the alert opened. */
11748
- opened_at: string;
11749
- /** @description ISO 8601 timestamp the alert resolved, if it has. */
11750
- resolved_at: string | null;
11751
- /** @description ISO 8601 creation timestamp. */
11752
- created_at: string;
11753
- /** @description ISO 8601 last-update timestamp. */
11754
- updated_at: string;
11755
- /** @description Display info for the alerting test; null when the test is no longer in the test-case ledger. */
11756
- test_case: {
11757
- /** @description Human-readable test name. */
11758
- name: string;
11759
- /** @description Test file path. */
11760
- file_path: string;
11761
- /** @description Test tags. */
11762
- tags: string[];
11763
- } | null;
11764
- /** @description The most-recently-seen failure group this alert's test is currently attached to; null when the test is in no group. */
11765
- failure_group: {
11766
- /** @description Failure group ID. */
11767
- id: string;
11768
- /** @description Human-readable group label. */
11769
- label: string;
11770
- /**
11771
- * @description Group lifecycle status.
11772
- * @enum {string}
11773
- */
11774
- status: "open" | "resolved";
11775
- /** @description True when a membership sighting cites a run in the alert's outcome window. */
11776
- seen_in_window: boolean;
11777
- } | null;
11778
- /** @description The alert's lifecycle events, oldest first. */
11779
- events: components["schemas"]["AlertEvent"][];
11780
- /** @description Failure groups the alerting test is currently attached to, most recently seen first; empty when the test is in no group. */
11781
- related_failure_groups: components["schemas"]["AlertRelatedFailureGroup"][];
11782
- };
11783
- AlertEvent: {
11784
- /** @description Alert event ID. */
11785
- id: number;
11786
- /**
11787
- * @description What happened.
11788
- * @enum {string}
11789
- */
11790
- type: "opened" | "still_failing" | "resolved";
11791
- /** @description The test run that produced this event, if any. */
11792
- test_run_id: number | null;
11793
- /** @description ISO 8601 timestamp of the event. */
11794
- created_at: string;
11795
- };
11796
- AlertRelatedFailureGroup: {
11797
- /** @description Failure group ID. */
11798
- id: string;
11799
- /** @description Human-readable group label. */
11800
- label: string;
11801
- /**
11802
- * @description Failure-mode classification.
11803
- * @enum {string}
11804
- */
11805
- type: "app" | "test" | "unknown";
11806
- /**
11807
- * @description Group lifecycle status.
11808
- * @enum {string}
11809
- */
11810
- status: "open" | "resolved";
11811
- /** @description ISO 8601 timestamp the group was last seen. */
11812
- last_seen_at: string;
11813
- /** @description True when a membership sighting for this test cites one of the runs in the alert's outcome window (deterministic test × env × run mapping). False = the test is attached to the group in this environment, but not via the runs this alert counted. */
11814
- seen_in_window: boolean;
11815
- };
11816
- WebhookListResponse: {
11817
- /** @description Response payload. */
11818
- data: {
11819
- webhooks: components["schemas"]["Webhook"][];
11820
- };
11821
- };
11822
- Webhook: {
11823
- /** @description Webhook ID. */
11824
- id: number;
11825
- /** @description Project the webhook belongs to. */
11826
- project_id: number;
11827
- /** @description Endpoint that receives event payloads. */
11828
- url: string;
11829
- /** @description Event names this webhook subscribes to. */
11830
- events: string[];
11831
- /** @description Whether the webhook is active. */
11832
- is_active: boolean;
11833
- /** @description ISO 8601 creation timestamp. */
11834
- created_at: string;
11835
- /** @description ISO 8601 last-update timestamp. */
11836
- updated_at: string;
11837
- };
11838
- WebhookCreateResponse: {
11839
- /** @description Response payload. */
11840
- data: {
11841
- webhook: components["schemas"]["CreatedWebhook"];
11842
- };
11843
- };
11844
- CreatedWebhook: {
11845
- /** @description Webhook ID. */
11846
- id: number;
11847
- /** @description Project the webhook belongs to. */
11848
- project_id: number;
11849
- /** @description Endpoint that receives event payloads. */
11850
- url: string;
11851
- /** @description Event names this webhook subscribes to. */
11852
- events: string[];
11853
- /** @description Whether the webhook is active. */
11854
- is_active: boolean;
11855
- /** @description ISO 8601 creation timestamp. */
11856
- created_at: string;
11857
- /** @description ISO 8601 last-update timestamp. */
11858
- updated_at: string;
11859
- /** @description Signing secret (returned only on creation). */
11860
- secret: string;
11861
- };
11862
- CreateWebhookRequest: {
11863
- /**
11864
- * Format: uri
11865
- * @description HTTPS endpoint that will receive event payloads.
11866
- */
11867
- url: string;
11868
- /** @description Event names this webhook subscribes to. */
11869
- events: string[];
11870
- };
11871
- WebhookUpdateResponse: {
11872
- /** @description Response payload. */
11873
- data: {
11874
- webhook: components["schemas"]["UpdatedWebhook"];
11774
+ webhook: components["schemas"]["UpdatedWebhook"];
11875
11775
  };
11876
11776
  };
11877
11777
  UpdatedWebhook: {
@@ -12138,8 +12038,15 @@ export interface components {
12138
12038
  last_validated_at: string | null;
12139
12039
  /** @description Supabase user ID. */
12140
12040
  user_id: string;
12141
- /** @description Slack team (workspace) ID. */
12041
+ /** @description Slack workspace whose app installation reaches the user. */
12142
12042
  team_id: string;
12043
+ /** @description Slack user's home workspace ID. */
12044
+ slack_home_team_id: string | null;
12045
+ /**
12046
+ * Format: uri
12047
+ * @description Slack user's home workspace URL.
12048
+ */
12049
+ slack_home_team_url: string | null;
12143
12050
  /** @description Slack user ID. */
12144
12051
  slack_user_id: string;
12145
12052
  /** @description Slack username. */
@@ -12264,6 +12171,8 @@ export interface operations {
12264
12171
  environment_id?: number;
12265
12172
  /** @description Comma-separated environment IDs to filter by. Combined with environment_id when both are provided. */
12266
12173
  environment_ids?: string;
12174
+ /** @description Filter to runs created in this concurrency group (exact match on the run's `concurrency.group`). */
12175
+ concurrency_group?: string;
12267
12176
  };
12268
12177
  header?: never;
12269
12178
  path?: never;
@@ -12307,7 +12216,7 @@ export interface operations {
12307
12216
  path?: never;
12308
12217
  cookie?: never;
12309
12218
  };
12310
- requestBody?: {
12219
+ requestBody: {
12311
12220
  content: {
12312
12221
  "application/json": components["schemas"]["TriggerTestRunRequest"];
12313
12222
  };
@@ -12414,7 +12323,7 @@ export interface operations {
12414
12323
  "application/json": components["schemas"]["GetTestRunResponse"];
12415
12324
  };
12416
12325
  };
12417
- /** @description Invalid x-project-id or x-project-slug header. */
12326
+ /** @description Invalid test run ID. */
12418
12327
  400: {
12419
12328
  headers: {
12420
12329
  [name: string]: unknown;
@@ -12588,7 +12497,7 @@ export interface operations {
12588
12497
  path?: never;
12589
12498
  cookie?: never;
12590
12499
  };
12591
- requestBody?: {
12500
+ requestBody: {
12592
12501
  content: {
12593
12502
  "application/json": components["schemas"]["SkipTestRunRequest"];
12594
12503
  };
@@ -12623,6 +12532,47 @@ export interface operations {
12623
12532
  };
12624
12533
  };
12625
12534
  };
12535
+ getTestRunV2: {
12536
+ parameters: {
12537
+ query?: never;
12538
+ header?: never;
12539
+ path: {
12540
+ /** @description Test run ID. */
12541
+ id: number;
12542
+ };
12543
+ cookie?: never;
12544
+ };
12545
+ requestBody?: never;
12546
+ responses: {
12547
+ /** @description The test run metadata. */
12548
+ 200: {
12549
+ headers: {
12550
+ [name: string]: unknown;
12551
+ };
12552
+ content: {
12553
+ "application/json": components["schemas"]["GetTestRunV2Response"];
12554
+ };
12555
+ };
12556
+ /** @description Invalid request. */
12557
+ 400: {
12558
+ headers: {
12559
+ [name: string]: unknown;
12560
+ };
12561
+ content: {
12562
+ "application/json": components["schemas"]["ErrorResponse"];
12563
+ };
12564
+ };
12565
+ /** @description Test run not found. */
12566
+ 404: {
12567
+ headers: {
12568
+ [name: string]: unknown;
12569
+ };
12570
+ content: {
12571
+ "application/json": components["schemas"]["ErrorResponse"];
12572
+ };
12573
+ };
12574
+ };
12575
+ };
12626
12576
  listTestRunShareTargets: {
12627
12577
  parameters: {
12628
12578
  query?: never;
@@ -14993,37 +14943,25 @@ export interface operations {
14993
14943
  };
14994
14944
  };
14995
14945
  };
14996
- slackSendMessage: {
14946
+ getSlackFileMetadata: {
14997
14947
  parameters: {
14998
14948
  query?: never;
14999
14949
  header?: never;
15000
- path?: never;
15001
- cookie?: never;
15002
- };
15003
- requestBody?: {
15004
- content: {
15005
- "application/json": {
15006
- /** @description Slack channel id to post in. */
15007
- channel: string;
15008
- /** @description Timestamp id of a message in the thread to reply in — pass the `ts` you were given for any message in that thread. Omit to post a new top-level message in the channel. */
15009
- thread_ts?: string;
15010
- /** @description Message body as Markdown; converted to Slack formatting. */
15011
- markdown: string;
15012
- /** @description Actions the message intentionally offers. Omit this field for informational messages, including merged or closed PR updates. */
15013
- supported_actions?: components["schemas"]["SlackSupportedAction"][];
15014
- /** @description Stable caller-generated key for safely retrying. Honoured when the thread belongs to a chat session; ignored otherwise. */
15015
- idempotency_key?: string;
15016
- };
14950
+ path: {
14951
+ /** @description Slack file ID. */
14952
+ file_id: string;
15017
14953
  };
14954
+ cookie?: never;
15018
14955
  };
14956
+ requestBody?: never;
15019
14957
  responses: {
15020
- /** @description Message posted. */
14958
+ /** @description Slack file metadata. */
15021
14959
  200: {
15022
14960
  headers: {
15023
14961
  [name: string]: unknown;
15024
14962
  };
15025
14963
  content: {
15026
- "application/json": components["schemas"]["SlackMessageResult"];
14964
+ "application/json": components["schemas"]["SlackFileMetadataResponse"];
15027
14965
  };
15028
14966
  };
15029
14967
  /** @description Invalid request. */
@@ -15032,56 +14970,301 @@ export interface operations {
15032
14970
  [name: string]: unknown;
15033
14971
  };
15034
14972
  content: {
15035
- "application/json": components["schemas"]["SlackMessageError"];
14973
+ "application/json": components["schemas"]["ErrorResponse"];
15036
14974
  };
15037
14975
  };
15038
- /** @description Sandbox authentication required, or the channel is out of scope. */
14976
+ /** @description Sandbox authentication required. */
15039
14977
  403: {
15040
14978
  headers: {
15041
14979
  [name: string]: unknown;
15042
14980
  };
15043
14981
  content: {
15044
- "application/json": components["schemas"]["SlackMessageError"];
14982
+ "application/json": components["schemas"]["ErrorResponse"];
15045
14983
  };
15046
14984
  };
15047
- /** @description Chat session or Slack connection not found. */
14985
+ /** @description File, chat session, or Slack thread not found. */
15048
14986
  404: {
15049
14987
  headers: {
15050
14988
  [name: string]: unknown;
15051
14989
  };
15052
14990
  content: {
15053
- "application/json": components["schemas"]["SlackMessageError"];
15054
- };
15055
- };
15056
- /** @description Idempotency conflict. */
15057
- 409: {
15058
- headers: {
15059
- [name: string]: unknown;
15060
- };
15061
- content: {
15062
- "application/json": components["schemas"]["SlackMessageError"];
14991
+ "application/json": components["schemas"]["ErrorResponse"] | {
14992
+ /** @description Error message. */
14993
+ error: string;
14994
+ };
15063
14995
  };
15064
14996
  };
15065
- /** @description Slack upstream error. */
14997
+ /** @description Slack file error. */
15066
14998
  502: {
15067
14999
  headers: {
15068
15000
  [name: string]: unknown;
15069
15001
  };
15070
15002
  content: {
15071
- "application/json": components["schemas"]["SlackMessageError"];
15003
+ "application/json": {
15004
+ /** @description Error message. */
15005
+ error: string;
15006
+ };
15072
15007
  };
15073
15008
  };
15074
15009
  };
15075
15010
  };
15076
- slackProxy: {
15011
+ getSlackFileContent: {
15077
15012
  parameters: {
15078
15013
  query?: never;
15079
15014
  header?: never;
15080
- path?: never;
15015
+ path: {
15016
+ /** @description Slack file ID. */
15017
+ file_id: string;
15018
+ };
15081
15019
  cookie?: never;
15082
15020
  };
15083
- requestBody?: {
15084
- content: {
15021
+ requestBody?: never;
15022
+ responses: {
15023
+ /** @description The Slack file content stream. */
15024
+ 200: {
15025
+ headers: {
15026
+ [name: string]: unknown;
15027
+ };
15028
+ content: {
15029
+ "application/octet-stream": string;
15030
+ };
15031
+ };
15032
+ /** @description Invalid request. */
15033
+ 400: {
15034
+ headers: {
15035
+ [name: string]: unknown;
15036
+ };
15037
+ content: {
15038
+ "application/json": components["schemas"]["ErrorResponse"];
15039
+ };
15040
+ };
15041
+ /** @description Sandbox authentication required. */
15042
+ 403: {
15043
+ headers: {
15044
+ [name: string]: unknown;
15045
+ };
15046
+ content: {
15047
+ "application/json": components["schemas"]["ErrorResponse"];
15048
+ };
15049
+ };
15050
+ /** @description File, chat session, or Slack thread not found, or not downloadable. */
15051
+ 404: {
15052
+ headers: {
15053
+ [name: string]: unknown;
15054
+ };
15055
+ content: {
15056
+ "application/json": components["schemas"]["ErrorResponse"] | {
15057
+ /** @description Error message. */
15058
+ error: string;
15059
+ };
15060
+ };
15061
+ };
15062
+ /** @description Slack file download failed. */
15063
+ 424: {
15064
+ headers: {
15065
+ [name: string]: unknown;
15066
+ };
15067
+ content: {
15068
+ "application/json": components["schemas"]["SlackFileDownloadError"];
15069
+ };
15070
+ };
15071
+ /** @description Slack file error. */
15072
+ 502: {
15073
+ headers: {
15074
+ [name: string]: unknown;
15075
+ };
15076
+ content: {
15077
+ "application/json": {
15078
+ /** @description Error message. */
15079
+ error: string;
15080
+ };
15081
+ };
15082
+ };
15083
+ };
15084
+ };
15085
+ headSlackFileContent: {
15086
+ parameters: {
15087
+ query?: never;
15088
+ header?: never;
15089
+ path: {
15090
+ /** @description Slack file ID. */
15091
+ file_id: string;
15092
+ };
15093
+ cookie?: never;
15094
+ };
15095
+ requestBody?: never;
15096
+ responses: {
15097
+ /** @description The Slack file content stream. */
15098
+ 200: {
15099
+ headers: {
15100
+ [name: string]: unknown;
15101
+ };
15102
+ content: {
15103
+ "application/octet-stream": string;
15104
+ };
15105
+ };
15106
+ /** @description Invalid request. */
15107
+ 400: {
15108
+ headers: {
15109
+ [name: string]: unknown;
15110
+ };
15111
+ content: {
15112
+ "application/json": components["schemas"]["ErrorResponse"];
15113
+ };
15114
+ };
15115
+ /** @description Sandbox authentication required. */
15116
+ 403: {
15117
+ headers: {
15118
+ [name: string]: unknown;
15119
+ };
15120
+ content: {
15121
+ "application/json": components["schemas"]["ErrorResponse"];
15122
+ };
15123
+ };
15124
+ /** @description File, chat session, or Slack thread not found, or not downloadable. */
15125
+ 404: {
15126
+ headers: {
15127
+ [name: string]: unknown;
15128
+ };
15129
+ content: {
15130
+ "application/json": components["schemas"]["ErrorResponse"] | {
15131
+ /** @description Error message. */
15132
+ error: string;
15133
+ };
15134
+ };
15135
+ };
15136
+ /** @description Slack file download failed. */
15137
+ 424: {
15138
+ headers: {
15139
+ [name: string]: unknown;
15140
+ };
15141
+ content: {
15142
+ "application/json": components["schemas"]["SlackFileDownloadError"];
15143
+ };
15144
+ };
15145
+ /** @description Slack file error. */
15146
+ 502: {
15147
+ headers: {
15148
+ [name: string]: unknown;
15149
+ };
15150
+ content: {
15151
+ "application/json": {
15152
+ /** @description Error message. */
15153
+ error: string;
15154
+ };
15155
+ };
15156
+ };
15157
+ };
15158
+ };
15159
+ slackSendMessage: {
15160
+ parameters: {
15161
+ query?: never;
15162
+ header?: never;
15163
+ path?: never;
15164
+ cookie?: never;
15165
+ };
15166
+ requestBody?: {
15167
+ content: {
15168
+ "application/json": {
15169
+ /** @description Markdown message body; not Slack's text field. */
15170
+ markdown: string;
15171
+ /** @description Actions the message intentionally offers. Omit this field for informational messages, including merged or closed PR updates. */
15172
+ supported_actions?: components["schemas"]["SlackSupportedAction"][];
15173
+ /** @description Slack channel or existing DM channel ID. */
15174
+ channel: string;
15175
+ /** @description Root timestamp of the thread to reply to. Omit for a top-level post. */
15176
+ thread_ts?: string;
15177
+ /** @description Required and honored for registered-root replies; optional for new roots. */
15178
+ idempotency_key?: string;
15179
+ } | {
15180
+ /** @description Markdown message body; not Slack's text field. */
15181
+ markdown: string;
15182
+ /** @description Actions the message intentionally offers. Omit this field for informational messages, including merged or closed PR updates. */
15183
+ supported_actions?: components["schemas"]["SlackSupportedAction"][];
15184
+ /** @description Recipient Slack user ID. Creates a new DM root; in-thread replies return to the sending session. */
15185
+ slack_user_id: string;
15186
+ /** @description Required for recipient-addressed sends. Each send creates a new DM root; root creation is not retry-safe if delivery or registration is uncertain. */
15187
+ idempotency_key: string;
15188
+ } | {
15189
+ /** @description Markdown message body; not Slack's text field. */
15190
+ markdown: string;
15191
+ /** @description Actions the message intentionally offers. Omit this field for informational messages, including merged or closed PR updates. */
15192
+ supported_actions?: components["schemas"]["SlackSupportedAction"][];
15193
+ /**
15194
+ * Format: uuid
15195
+ * @description Recipient Empirical UUID with one valid linked Slack account. Alternative to slack_user_id.
15196
+ */
15197
+ user_id: string;
15198
+ idempotency_key: string;
15199
+ };
15200
+ };
15201
+ };
15202
+ responses: {
15203
+ /** @description Message posted. */
15204
+ 200: {
15205
+ headers: {
15206
+ [name: string]: unknown;
15207
+ };
15208
+ content: {
15209
+ "application/json": components["schemas"]["SlackMessageResult"];
15210
+ };
15211
+ };
15212
+ /** @description Invalid request. */
15213
+ 400: {
15214
+ headers: {
15215
+ [name: string]: unknown;
15216
+ };
15217
+ content: {
15218
+ "application/json": components["schemas"]["SlackMessageError"];
15219
+ };
15220
+ };
15221
+ /** @description Sandbox authentication required, or the channel is out of scope. */
15222
+ 403: {
15223
+ headers: {
15224
+ [name: string]: unknown;
15225
+ };
15226
+ content: {
15227
+ "application/json": components["schemas"]["SlackMessageError"];
15228
+ };
15229
+ };
15230
+ /** @description Chat session or Slack connection not found. */
15231
+ 404: {
15232
+ headers: {
15233
+ [name: string]: unknown;
15234
+ };
15235
+ content: {
15236
+ "application/json": components["schemas"]["SlackMessageError"];
15237
+ };
15238
+ };
15239
+ /** @description Idempotency conflict. */
15240
+ 409: {
15241
+ headers: {
15242
+ [name: string]: unknown;
15243
+ };
15244
+ content: {
15245
+ "application/json": components["schemas"]["SlackMessageError"];
15246
+ };
15247
+ };
15248
+ /** @description Slack upstream error. */
15249
+ 502: {
15250
+ headers: {
15251
+ [name: string]: unknown;
15252
+ };
15253
+ content: {
15254
+ "application/json": components["schemas"]["SlackMessageError"];
15255
+ };
15256
+ };
15257
+ };
15258
+ };
15259
+ slackProxy: {
15260
+ parameters: {
15261
+ query?: never;
15262
+ header?: never;
15263
+ path?: never;
15264
+ cookie?: never;
15265
+ };
15266
+ requestBody?: {
15267
+ content: {
15085
15268
  "application/json": {
15086
15269
  /**
15087
15270
  * @description Slack Web API method to call. Read-only methods only.
@@ -15245,6 +15428,8 @@ export interface operations {
15245
15428
  entity_id?: string;
15246
15429
  /** @description When true, include registry history for deleted Slack roots. */
15247
15430
  include_deleted?: "true" | "false";
15431
+ /** @description When true, omit run-notification roots with no registered inbound session or sent follow-up message. Discussion roots are always included. */
15432
+ hide_inactive_run_notifications?: "true" | "false";
15248
15433
  };
15249
15434
  header?: never;
15250
15435
  path?: never;
@@ -15331,153 +15516,23 @@ export interface operations {
15331
15516
  "application/json": {
15332
15517
  /** @description Environments this channel is subscribed to. */
15333
15518
  subscribed_environments?: string[];
15334
- /** @description Whether the channel filters by environment. */
15335
- is_env_specific?: boolean;
15336
- };
15337
- };
15338
- };
15339
- responses: {
15340
- /** @description The updated channel. */
15341
- 200: {
15342
- headers: {
15343
- [name: string]: unknown;
15344
- };
15345
- content: {
15346
- "application/json": components["schemas"]["SlackChannelMutationResponse"];
15347
- };
15348
- };
15349
- /** @description Invalid request. */
15350
- 400: {
15351
- headers: {
15352
- [name: string]: unknown;
15353
- };
15354
- content: {
15355
- "application/json": components["schemas"]["ErrorResponse"] | {
15356
- /** @description Error message. */
15357
- error: string;
15358
- };
15359
- };
15360
- };
15361
- /** @description Channel not found. */
15362
- 404: {
15363
- headers: {
15364
- [name: string]: unknown;
15365
- };
15366
- content: {
15367
- "application/json": {
15368
- /** @description Error message. */
15369
- error: string;
15370
- };
15371
- };
15372
- };
15373
- };
15374
- };
15375
- getSlackFileMetadata: {
15376
- parameters: {
15377
- query?: never;
15378
- header?: never;
15379
- path: {
15380
- /** @description Slack file ID. */
15381
- file_id: string;
15382
- };
15383
- cookie?: never;
15384
- };
15385
- requestBody?: never;
15386
- responses: {
15387
- /** @description Slack file metadata. */
15388
- 200: {
15389
- headers: {
15390
- [name: string]: unknown;
15391
- };
15392
- content: {
15393
- "application/json": components["schemas"]["SlackFileMetadataResponse"];
15394
- };
15395
- };
15396
- /** @description Invalid request. */
15397
- 400: {
15398
- headers: {
15399
- [name: string]: unknown;
15400
- };
15401
- content: {
15402
- "application/json": components["schemas"]["ErrorResponse"];
15403
- };
15404
- };
15405
- /** @description Sandbox authentication required. */
15406
- 403: {
15407
- headers: {
15408
- [name: string]: unknown;
15409
- };
15410
- content: {
15411
- "application/json": components["schemas"]["ErrorResponse"];
15412
- };
15413
- };
15414
- /** @description File, chat session, or Slack thread not found. */
15415
- 404: {
15416
- headers: {
15417
- [name: string]: unknown;
15418
- };
15419
- content: {
15420
- "application/json": components["schemas"]["ErrorResponse"] | {
15421
- /** @description Error message. */
15422
- error: string;
15423
- };
15424
- };
15425
- };
15426
- /** @description Slack file error. */
15427
- 502: {
15428
- headers: {
15429
- [name: string]: unknown;
15430
- };
15431
- content: {
15432
- "application/json": {
15433
- /** @description Error message. */
15434
- error: string;
15435
- };
15436
- };
15437
- };
15438
- };
15439
- };
15440
- getSlackFileContent: {
15441
- parameters: {
15442
- query?: never;
15443
- header?: never;
15444
- path: {
15445
- /** @description Slack file ID. */
15446
- file_id: string;
15447
- };
15448
- cookie?: never;
15449
- };
15450
- requestBody?: never;
15451
- responses: {
15452
- /** @description The Slack file content stream. */
15453
- 200: {
15454
- headers: {
15455
- [name: string]: unknown;
15456
- };
15457
- content: {
15458
- "application/octet-stream": string;
15459
- };
15460
- };
15461
- /** @description Invalid request. */
15462
- 400: {
15463
- headers: {
15464
- [name: string]: unknown;
15465
- };
15466
- content: {
15467
- "application/json": components["schemas"]["ErrorResponse"];
15519
+ /** @description Whether the channel filters by environment. */
15520
+ is_env_specific?: boolean;
15468
15521
  };
15469
15522
  };
15470
- /** @description Sandbox authentication required. */
15471
- 403: {
15523
+ };
15524
+ responses: {
15525
+ /** @description The updated channel. */
15526
+ 200: {
15472
15527
  headers: {
15473
15528
  [name: string]: unknown;
15474
15529
  };
15475
15530
  content: {
15476
- "application/json": components["schemas"]["ErrorResponse"];
15531
+ "application/json": components["schemas"]["SlackChannelMutationResponse"];
15477
15532
  };
15478
15533
  };
15479
- /** @description File, chat session, or Slack thread not found, or not downloadable. */
15480
- 404: {
15534
+ /** @description Invalid request. */
15535
+ 400: {
15481
15536
  headers: {
15482
15537
  [name: string]: unknown;
15483
15538
  };
@@ -15488,17 +15543,8 @@ export interface operations {
15488
15543
  };
15489
15544
  };
15490
15545
  };
15491
- /** @description Slack file download failed. */
15492
- 424: {
15493
- headers: {
15494
- [name: string]: unknown;
15495
- };
15496
- content: {
15497
- "application/json": components["schemas"]["SlackFileDownloadError"];
15498
- };
15499
- };
15500
- /** @description Slack file error. */
15501
- 502: {
15546
+ /** @description Channel not found. */
15547
+ 404: {
15502
15548
  headers: {
15503
15549
  [name: string]: unknown;
15504
15550
  };
@@ -15511,38 +15557,49 @@ export interface operations {
15511
15557
  };
15512
15558
  };
15513
15559
  };
15514
- headSlackFileContent: {
15560
+ listSlackTeams: {
15515
15561
  parameters: {
15516
15562
  query?: never;
15517
15563
  header?: never;
15518
- path: {
15519
- /** @description Slack file ID. */
15520
- file_id: string;
15521
- };
15564
+ path?: never;
15522
15565
  cookie?: never;
15523
15566
  };
15524
15567
  requestBody?: never;
15525
15568
  responses: {
15526
- /** @description The Slack file content stream. */
15569
+ /** @description The Slack workspaces available to the project. */
15527
15570
  200: {
15528
15571
  headers: {
15529
15572
  [name: string]: unknown;
15530
15573
  };
15531
15574
  content: {
15532
- "application/octet-stream": string;
15575
+ "application/json": components["schemas"]["SlackTeamListResponse"];
15533
15576
  };
15534
15577
  };
15535
- /** @description Invalid request. */
15536
- 400: {
15578
+ };
15579
+ };
15580
+ previewSlackThread: {
15581
+ parameters: {
15582
+ query?: never;
15583
+ header?: never;
15584
+ path: {
15585
+ /** @description Registered Slack thread ID. */
15586
+ id: number;
15587
+ };
15588
+ cookie?: never;
15589
+ };
15590
+ requestBody?: never;
15591
+ responses: {
15592
+ /** @description Compact Slack thread preview. */
15593
+ 200: {
15537
15594
  headers: {
15538
15595
  [name: string]: unknown;
15539
15596
  };
15540
15597
  content: {
15541
- "application/json": components["schemas"]["ErrorResponse"];
15598
+ "application/json": components["schemas"]["SlackThreadPreviewResponse"];
15542
15599
  };
15543
15600
  };
15544
- /** @description Sandbox authentication required. */
15545
- 403: {
15601
+ /** @description Invalid request. */
15602
+ 400: {
15546
15603
  headers: {
15547
15604
  [name: string]: unknown;
15548
15605
  };
@@ -15550,57 +15607,22 @@ export interface operations {
15550
15607
  "application/json": components["schemas"]["ErrorResponse"];
15551
15608
  };
15552
15609
  };
15553
- /** @description File, chat session, or Slack thread not found, or not downloadable. */
15610
+ /** @description Slack thread not found. */
15554
15611
  404: {
15555
15612
  headers: {
15556
15613
  [name: string]: unknown;
15557
15614
  };
15558
15615
  content: {
15559
- "application/json": components["schemas"]["ErrorResponse"] | {
15560
- /** @description Error message. */
15561
- error: string;
15562
- };
15563
- };
15564
- };
15565
- /** @description Slack file download failed. */
15566
- 424: {
15567
- headers: {
15568
- [name: string]: unknown;
15569
- };
15570
- content: {
15571
- "application/json": components["schemas"]["SlackFileDownloadError"];
15616
+ "application/json": components["schemas"]["ErrorResponse"];
15572
15617
  };
15573
15618
  };
15574
- /** @description Slack file error. */
15619
+ /** @description Slack thread preview unavailable. */
15575
15620
  502: {
15576
15621
  headers: {
15577
15622
  [name: string]: unknown;
15578
15623
  };
15579
15624
  content: {
15580
- "application/json": {
15581
- /** @description Error message. */
15582
- error: string;
15583
- };
15584
- };
15585
- };
15586
- };
15587
- };
15588
- listSlackTeams: {
15589
- parameters: {
15590
- query?: never;
15591
- header?: never;
15592
- path?: never;
15593
- cookie?: never;
15594
- };
15595
- requestBody?: never;
15596
- responses: {
15597
- /** @description The Slack workspaces available to the project. */
15598
- 200: {
15599
- headers: {
15600
- [name: string]: unknown;
15601
- };
15602
- content: {
15603
- "application/json": components["schemas"]["SlackTeamListResponse"];
15625
+ "application/json": components["schemas"]["ErrorResponse"];
15604
15626
  };
15605
15627
  };
15606
15628
  };
@@ -16267,181 +16289,11 @@ export interface operations {
16267
16289
  [name: string]: unknown;
16268
16290
  };
16269
16291
  content: {
16270
- "application/json": components["schemas"]["ErrorResponse"];
16271
- };
16272
- };
16273
- /** @description File not found. */
16274
- 404: {
16275
- headers: {
16276
- [name: string]: unknown;
16277
- };
16278
- content: {
16279
- "application/json": components["schemas"]["ErrorResponse"];
16280
- };
16281
- };
16282
- };
16283
- };
16284
- uploadResourceContent: {
16285
- parameters: {
16286
- query: {
16287
- /** @description Capability scope: `r` (read) or `w` (write). */
16288
- scope: "r" | "w";
16289
- /** @description Expiry as a Unix timestamp (seconds). */
16290
- exp?: number | null;
16291
- /** @description HMAC signature for the capability. */
16292
- sig: string;
16293
- };
16294
- header?: never;
16295
- path: {
16296
- /** @description Resource ID. */
16297
- id: number;
16298
- };
16299
- cookie?: never;
16300
- };
16301
- requestBody?: {
16302
- content: {
16303
- "application/octet-stream": string;
16304
- };
16305
- };
16306
- responses: {
16307
- /** @description The upload was stored. */
16308
- 200: {
16309
- headers: {
16310
- [name: string]: unknown;
16311
- };
16312
- content: {
16313
- "application/json": components["schemas"]["ResourceUploadContentResponse"];
16314
- };
16315
- };
16316
- /** @description Invalid request or missing body. */
16317
- 400: {
16318
- headers: {
16319
- [name: string]: unknown;
16320
- };
16321
- content: {
16322
- "application/json": components["schemas"]["ErrorResponse"];
16323
- };
16324
- };
16325
- /** @description Invalid scope or expired URL. */
16326
- 403: {
16327
- headers: {
16328
- [name: string]: unknown;
16329
- };
16330
- content: {
16331
- "application/json": components["schemas"]["ErrorResponse"];
16332
- };
16333
- };
16334
- /** @description File not found. */
16335
- 404: {
16336
- headers: {
16337
- [name: string]: unknown;
16338
- };
16339
- content: {
16340
- "application/json": components["schemas"]["ErrorResponse"];
16341
- };
16342
- };
16343
- };
16344
- };
16345
- listAlertRules: {
16346
- parameters: {
16347
- query?: never;
16348
- header?: never;
16349
- path?: never;
16350
- cookie?: never;
16351
- };
16352
- requestBody?: never;
16353
- responses: {
16354
- /** @description The project's alert rules. */
16355
- 200: {
16356
- headers: {
16357
- [name: string]: unknown;
16358
- };
16359
- content: {
16360
- "application/json": components["schemas"]["AlertRuleListResponse"];
16361
- };
16362
- };
16363
- /** @description Invalid request or missing project scope. */
16364
- 400: {
16365
- headers: {
16366
- [name: string]: unknown;
16367
- };
16368
- content: {
16369
- "application/json": components["schemas"]["ErrorResponse"];
16370
- };
16371
- };
16372
- };
16373
- };
16374
- createAlertRule: {
16375
- parameters: {
16376
- query?: never;
16377
- header?: never;
16378
- path?: never;
16379
- cookie?: never;
16380
- };
16381
- requestBody?: {
16382
- content: {
16383
- "application/json": components["schemas"]["CreateAlertRuleRequest"];
16384
- };
16385
- };
16386
- responses: {
16387
- /** @description The created alert rule. */
16388
- 200: {
16389
- headers: {
16390
- [name: string]: unknown;
16391
- };
16392
- content: {
16393
- "application/json": components["schemas"]["AlertRuleResponse"];
16394
- };
16395
- };
16396
- /** @description Invalid request or missing project scope. */
16397
- 400: {
16398
- headers: {
16399
- [name: string]: unknown;
16400
- };
16401
- content: {
16402
- "application/json": components["schemas"]["ErrorResponse"];
16403
- };
16404
- };
16405
- /** @description A rule for this (project, environment) already exists. */
16406
- 409: {
16407
- headers: {
16408
- [name: string]: unknown;
16409
- };
16410
- content: {
16411
- "application/json": components["schemas"]["ErrorResponse"];
16412
- };
16413
- };
16414
- };
16415
- };
16416
- listAlerts: {
16417
- parameters: {
16418
- query?: {
16419
- /** @description Filter by alert state. Omit for all states. */
16420
- state?: "open" | "resolved";
16421
- /** @description Filter to alerts in this environment. */
16422
- environment_id?: number;
16423
- /** @description Page number (1-indexed). */
16424
- page?: number;
16425
- /** @description Items per page (max 100). */
16426
- per_page?: number;
16427
- };
16428
- header?: never;
16429
- path?: never;
16430
- cookie?: never;
16431
- };
16432
- requestBody?: never;
16433
- responses: {
16434
- /** @description Paginated alerts. */
16435
- 200: {
16436
- headers: {
16437
- [name: string]: unknown;
16438
- };
16439
- content: {
16440
- "application/json": components["schemas"]["AlertListResponse"];
16292
+ "application/json": components["schemas"]["ErrorResponse"];
16441
16293
  };
16442
16294
  };
16443
- /** @description Invalid request or missing project scope. */
16444
- 400: {
16295
+ /** @description File not found. */
16296
+ 404: {
16445
16297
  headers: {
16446
16298
  [name: string]: unknown;
16447
16299
  };
@@ -16451,29 +16303,40 @@ export interface operations {
16451
16303
  };
16452
16304
  };
16453
16305
  };
16454
- getAlert: {
16306
+ uploadResourceContent: {
16455
16307
  parameters: {
16456
- query?: never;
16308
+ query: {
16309
+ /** @description Capability scope: `r` (read) or `w` (write). */
16310
+ scope: "r" | "w";
16311
+ /** @description Expiry as a Unix timestamp (seconds). */
16312
+ exp?: number | null;
16313
+ /** @description HMAC signature for the capability. */
16314
+ sig: string;
16315
+ };
16457
16316
  header?: never;
16458
16317
  path: {
16459
- /** @description Alert ID. */
16318
+ /** @description Resource ID. */
16460
16319
  id: number;
16461
16320
  };
16462
16321
  cookie?: never;
16463
16322
  };
16464
- requestBody?: never;
16323
+ requestBody?: {
16324
+ content: {
16325
+ "application/octet-stream": string;
16326
+ };
16327
+ };
16465
16328
  responses: {
16466
- /** @description The alert with its events. */
16329
+ /** @description The upload was stored. */
16467
16330
  200: {
16468
16331
  headers: {
16469
16332
  [name: string]: unknown;
16470
16333
  };
16471
16334
  content: {
16472
- "application/json": components["schemas"]["AlertDetailResponse"];
16335
+ "application/json": components["schemas"]["ResourceUploadContentResponse"];
16473
16336
  };
16474
16337
  };
16475
- /** @description Alert not found. */
16476
- 404: {
16338
+ /** @description Invalid request or missing body. */
16339
+ 400: {
16477
16340
  headers: {
16478
16341
  [name: string]: unknown;
16479
16342
  };
@@ -16481,31 +16344,17 @@ export interface operations {
16481
16344
  "application/json": components["schemas"]["ErrorResponse"];
16482
16345
  };
16483
16346
  };
16484
- };
16485
- };
16486
- listRecentAlertEvents: {
16487
- parameters: {
16488
- query?: {
16489
- page?: number;
16490
- per_page?: number;
16491
- };
16492
- header?: never;
16493
- path?: never;
16494
- cookie?: never;
16495
- };
16496
- requestBody?: never;
16497
- responses: {
16498
- /** @description Paginated alert opened and resolved events. */
16499
- 200: {
16347
+ /** @description Invalid scope or expired URL. */
16348
+ 403: {
16500
16349
  headers: {
16501
16350
  [name: string]: unknown;
16502
16351
  };
16503
16352
  content: {
16504
- "application/json": components["schemas"]["RecentAlertEventListResponse"];
16353
+ "application/json": components["schemas"]["ErrorResponse"];
16505
16354
  };
16506
16355
  };
16507
- /** @description Invalid request or missing project scope. */
16508
- 400: {
16356
+ /** @description File not found. */
16357
+ 404: {
16509
16358
  headers: {
16510
16359
  [name: string]: unknown;
16511
16360
  };
@@ -17004,9 +16853,14 @@ export interface operations {
17004
16853
  };
17005
16854
  };
17006
16855
  };
17007
- listChatSessionThreads: {
16856
+ getChatSessionState: {
17008
16857
  parameters: {
17009
- query?: never;
16858
+ query?: {
16859
+ /** @description Page number (1-indexed). Default 1. */
16860
+ page?: number;
16861
+ /** @description Entries per page (1-100). Default 50. */
16862
+ per_page?: number;
16863
+ };
17010
16864
  header?: never;
17011
16865
  path: {
17012
16866
  /** @description Chat session ID. */
@@ -17016,112 +16870,13 @@ export interface operations {
17016
16870
  };
17017
16871
  requestBody?: never;
17018
16872
  responses: {
17019
- /** @description The session's threads. */
16873
+ /** @description A page of log entries (newest block first), plus user messages and sandbox state. */
17020
16874
  200: {
17021
16875
  headers: {
17022
16876
  [name: string]: unknown;
17023
16877
  };
17024
16878
  content: {
17025
- "application/json": components["schemas"]["ChatSessionThreadsListResponse"];
17026
- };
17027
- };
17028
- /** @description Chat session not found. */
17029
- 404: {
17030
- headers: {
17031
- [name: string]: unknown;
17032
- };
17033
- content: {
17034
- "application/json": components["schemas"]["ErrorResponse"];
17035
- };
17036
- };
17037
- };
17038
- };
17039
- createChatSessionThread: {
17040
- parameters: {
17041
- query?: never;
17042
- header?: never;
17043
- path: {
17044
- /** @description Chat session ID. */
17045
- id: number;
17046
- };
17047
- cookie?: never;
17048
- };
17049
- requestBody?: {
17050
- content: {
17051
- "application/json": {
17052
- /**
17053
- * @description Messaging provider. Only "slack" is supported.
17054
- * @default slack
17055
- * @enum {string}
17056
- */
17057
- provider?: "slack";
17058
- /**
17059
- * @description Creates an agent-controlled Slack thread: explicit outbound messages, in-thread replies forwarded to the session.
17060
- * @enum {string}
17061
- */
17062
- purpose: "agent";
17063
- /**
17064
- * @description Target type. "im" opens a DM with the recipient user.
17065
- * @enum {string}
17066
- */
17067
- channel_type: "im";
17068
- /** @description Markdown root message for the Slack DM. Empirical converts it to Slack formatting. */
17069
- markdown: string;
17070
- /** @description Actions the message intentionally offers. Omit this field for informational messages, including merged or closed PR updates. */
17071
- supported_actions?: components["schemas"]["SlackSupportedAction"][];
17072
- /**
17073
- * Format: uuid
17074
- * @description Recipient Empirical user UUID whose linked Slack account receives the agent DM. Use either user_id or slack_user_id, not both.
17075
- */
17076
- user_id?: string;
17077
- /** @description Recipient Slack user ID (for example, U069HNK3K46). Use either slack_user_id or user_id, not both; prefer slack_user_id from an inbound Slack prompt. */
17078
- slack_user_id?: string;
17079
- } | {
17080
- /**
17081
- * @description Messaging provider. Only "slack" is supported.
17082
- * @default slack
17083
- * @enum {string}
17084
- */
17085
- provider?: "slack";
17086
- /**
17087
- * @description Creates an agent-controlled Slack thread: explicit outbound messages, mentioned replies forwarded to the session.
17088
- * @enum {string}
17089
- */
17090
- purpose: "agent";
17091
- /**
17092
- * @description Target type. "channel" posts the root message into a channel.
17093
- * @default channel
17094
- * @enum {string}
17095
- */
17096
- channel_type?: "channel";
17097
- /** @description Slack workspace/team ID. */
17098
- team_id: string;
17099
- /** @description Slack channel ID. */
17100
- channel_id: string;
17101
- /** @description Markdown root message for the Slack thread. Empirical converts it to Slack formatting. */
17102
- markdown: string;
17103
- /** @description Actions the message intentionally offers. Omit this field for informational messages, including merged or closed PR updates. */
17104
- supported_actions?: components["schemas"]["SlackSupportedAction"][];
17105
- };
17106
- };
17107
- };
17108
- responses: {
17109
- /** @description The newly created thread. */
17110
- 201: {
17111
- headers: {
17112
- [name: string]: unknown;
17113
- };
17114
- content: {
17115
- "application/json": components["schemas"]["ChatSessionThreadResponse"];
17116
- };
17117
- };
17118
- /** @description Invalid request or missing Slack link. */
17119
- 400: {
17120
- headers: {
17121
- [name: string]: unknown;
17122
- };
17123
- content: {
17124
- "application/json": components["schemas"]["ErrorResponse"];
16879
+ "application/json": components["schemas"]["ChatSessionStateResponse"];
17125
16880
  };
17126
16881
  };
17127
16882
  /** @description Chat session not found. */
@@ -17133,126 +16888,6 @@ export interface operations {
17133
16888
  "application/json": components["schemas"]["ErrorResponse"];
17134
16889
  };
17135
16890
  };
17136
- /** @description Thread already exists. */
17137
- 409: {
17138
- headers: {
17139
- [name: string]: unknown;
17140
- };
17141
- content: {
17142
- "application/json": components["schemas"]["ErrorResponse"];
17143
- };
17144
- };
17145
- /** @description Slack token is not configured. */
17146
- 424: {
17147
- headers: {
17148
- [name: string]: unknown;
17149
- };
17150
- content: {
17151
- "application/json": components["schemas"]["ErrorResponse"];
17152
- };
17153
- };
17154
- /** @description Failed to create the Slack thread. */
17155
- 502: {
17156
- headers: {
17157
- [name: string]: unknown;
17158
- };
17159
- content: {
17160
- "application/json": components["schemas"]["ErrorResponse"];
17161
- };
17162
- };
17163
- };
17164
- };
17165
- createChatSessionThreadMessage: {
17166
- parameters: {
17167
- query?: never;
17168
- header?: {
17169
- /** @description Stable caller-generated key for safely retrying this Slack post. Alternative to the body `idempotency_key` field. */
17170
- "idempotency-key"?: string;
17171
- };
17172
- path: {
17173
- /** @description Chat session ID. */
17174
- id: number;
17175
- /** @description Chat session thread ID. */
17176
- thread_id: number;
17177
- };
17178
- cookie?: never;
17179
- };
17180
- requestBody?: {
17181
- content: {
17182
- "application/json": {
17183
- /** @description Markdown message to post to the Slack thread. Empirical converts it to Slack formatting. */
17184
- markdown: string;
17185
- /** @description Actions the message intentionally offers. Omit this field for informational messages, including merged or closed PR updates. */
17186
- supported_actions?: components["schemas"]["SlackSupportedAction"][];
17187
- /** @description Stable caller-generated key for safely retrying this Slack post. May be sent here or as the `Idempotency-Key` request header; the body field wins when both are present. Exactly one is required. */
17188
- idempotency_key?: string;
17189
- };
17190
- };
17191
- };
17192
- responses: {
17193
- /** @description The previously sent message. */
17194
- 200: {
17195
- headers: {
17196
- [name: string]: unknown;
17197
- };
17198
- content: {
17199
- "application/json": components["schemas"]["ChatSessionThreadMessageResponse"];
17200
- };
17201
- };
17202
- /** @description The sent message. */
17203
- 201: {
17204
- headers: {
17205
- [name: string]: unknown;
17206
- };
17207
- content: {
17208
- "application/json": components["schemas"]["ChatSessionThreadMessageResponse"];
17209
- };
17210
- };
17211
- /** @description Thread does not accept agent messages, Slack sync is disabled for it, or the idempotency key is missing. */
17212
- 400: {
17213
- headers: {
17214
- [name: string]: unknown;
17215
- };
17216
- content: {
17217
- "application/json": components["schemas"]["ErrorResponse"];
17218
- };
17219
- };
17220
- /** @description Chat session thread not found. */
17221
- 404: {
17222
- headers: {
17223
- [name: string]: unknown;
17224
- };
17225
- content: {
17226
- "application/json": components["schemas"]["ErrorResponse"];
17227
- };
17228
- };
17229
- /** @description Idempotency conflict. */
17230
- 409: {
17231
- headers: {
17232
- [name: string]: unknown;
17233
- };
17234
- content: {
17235
- "application/json": components["schemas"]["ErrorResponse"];
17236
- };
17237
- };
17238
- /** @description Slack token is not configured. */
17239
- 424: {
17240
- headers: {
17241
- [name: string]: unknown;
17242
- };
17243
- content: {
17244
- "application/json": components["schemas"]["ErrorResponse"];
17245
- };
17246
- };
17247
- /** @description Failed to post Slack message. */
17248
- 502: {
17249
- headers: {
17250
- [name: string]: unknown;
17251
- };
17252
- content: {
17253
- "application/json": components["schemas"]["ErrorResponse"];
17254
- };
17255
- };
17256
16891
  };
17257
16892
  };
17258
16893
  listChatSessionTriggers: {
@@ -17743,32 +17378,12 @@ export interface operations {
17743
17378
  [name: string]: unknown;
17744
17379
  };
17745
17380
  content: {
17746
- "application/json": components["schemas"]["GsheetPlainError"];
17747
- };
17748
- };
17749
- };
17750
- };
17751
- listPlaywrightVersions: {
17752
- parameters: {
17753
- query?: never;
17754
- header?: never;
17755
- path?: never;
17756
- cookie?: never;
17757
- };
17758
- requestBody?: never;
17759
- responses: {
17760
- /** @description Supported Playwright versions and the default version. */
17761
- 200: {
17762
- headers: {
17763
- [name: string]: unknown;
17764
- };
17765
- content: {
17766
- "application/json": components["schemas"]["PlaywrightVersionsResponse"];
17381
+ "application/json": components["schemas"]["GsheetPlainError"];
17767
17382
  };
17768
17383
  };
17769
17384
  };
17770
17385
  };
17771
- getProjectClone: {
17386
+ listPlaywrightVersions: {
17772
17387
  parameters: {
17773
17388
  query?: never;
17774
17389
  header?: never;
@@ -17777,31 +17392,13 @@ export interface operations {
17777
17392
  };
17778
17393
  requestBody?: never;
17779
17394
  responses: {
17780
- /** @description Clone credentials for the project. */
17395
+ /** @description Supported Playwright versions and the default version. */
17781
17396
  200: {
17782
17397
  headers: {
17783
17398
  [name: string]: unknown;
17784
17399
  };
17785
17400
  content: {
17786
- "application/json": components["schemas"]["ProjectCloneResponse"];
17787
- };
17788
- };
17789
- /** @description Repository host is not supported. */
17790
- 400: {
17791
- headers: {
17792
- [name: string]: unknown;
17793
- };
17794
- content: {
17795
- "application/json": components["schemas"]["ErrorResponse"];
17796
- };
17797
- };
17798
- /** @description Not authorised to access the repository. */
17799
- 403: {
17800
- headers: {
17801
- [name: string]: unknown;
17802
- };
17803
- content: {
17804
- "application/json": components["schemas"]["ErrorResponse"];
17401
+ "application/json": components["schemas"]["PlaywrightVersionsResponse"];
17805
17402
  };
17806
17403
  };
17807
17404
  };
@@ -18226,101 +17823,6 @@ export interface operations {
18226
17823
  };
18227
17824
  };
18228
17825
  };
18229
- deleteAlertRule: {
18230
- parameters: {
18231
- query?: never;
18232
- header?: never;
18233
- path: {
18234
- /** @description Alert rule ID. */
18235
- id: number;
18236
- };
18237
- cookie?: never;
18238
- };
18239
- requestBody?: never;
18240
- responses: {
18241
- /** @description The rule was deleted. */
18242
- 200: {
18243
- headers: {
18244
- [name: string]: unknown;
18245
- };
18246
- content: {
18247
- "application/json": components["schemas"]["AlertRuleDeleteResponse"];
18248
- };
18249
- };
18250
- /** @description Alert rule not found. */
18251
- 404: {
18252
- headers: {
18253
- [name: string]: unknown;
18254
- };
18255
- content: {
18256
- "application/json": components["schemas"]["ErrorResponse"];
18257
- };
18258
- };
18259
- /** @description Alerts reference this rule; it cannot be deleted. */
18260
- 409: {
18261
- headers: {
18262
- [name: string]: unknown;
18263
- };
18264
- content: {
18265
- "application/json": components["schemas"]["ErrorResponse"];
18266
- };
18267
- };
18268
- };
18269
- };
18270
- updateAlertRule: {
18271
- parameters: {
18272
- query?: never;
18273
- header?: never;
18274
- path: {
18275
- /** @description Alert rule ID. */
18276
- id: number;
18277
- };
18278
- cookie?: never;
18279
- };
18280
- requestBody?: {
18281
- content: {
18282
- "application/json": components["schemas"]["PatchAlertRuleRequest"];
18283
- };
18284
- };
18285
- responses: {
18286
- /** @description The updated alert rule. */
18287
- 200: {
18288
- headers: {
18289
- [name: string]: unknown;
18290
- };
18291
- content: {
18292
- "application/json": components["schemas"]["AlertRuleResponse"];
18293
- };
18294
- };
18295
- /** @description Invalid request. */
18296
- 400: {
18297
- headers: {
18298
- [name: string]: unknown;
18299
- };
18300
- content: {
18301
- "application/json": components["schemas"]["ErrorResponse"];
18302
- };
18303
- };
18304
- /** @description Alert rule not found. */
18305
- 404: {
18306
- headers: {
18307
- [name: string]: unknown;
18308
- };
18309
- content: {
18310
- "application/json": components["schemas"]["ErrorResponse"];
18311
- };
18312
- };
18313
- /** @description Another rule already holds this (project, environment). */
18314
- 409: {
18315
- headers: {
18316
- [name: string]: unknown;
18317
- };
18318
- content: {
18319
- "application/json": components["schemas"]["ErrorResponse"];
18320
- };
18321
- };
18322
- };
18323
- };
18324
17826
  listChatSessions: {
18325
17827
  parameters: {
18326
17828
  query?: {
@@ -19055,6 +18557,7 @@ export interface operations {
19055
18557
  /** @enum {string} */
19056
18558
  send_action: "steer" | "follow_up" | "stop";
19057
18559
  created_by?: string | null;
18560
+ rpc_command_id?: string;
19058
18561
  };
19059
18562
  };
19060
18563
  };
@@ -19457,43 +18960,6 @@ export interface operations {
19457
18960
  };
19458
18961
  };
19459
18962
  };
19460
- getChatSessionState: {
19461
- parameters: {
19462
- query?: {
19463
- /** @description Page number (1-indexed). Default 1. */
19464
- page?: number;
19465
- /** @description Entries per page (1-100). Default 50. */
19466
- per_page?: number;
19467
- };
19468
- header?: never;
19469
- path: {
19470
- /** @description Chat session ID. */
19471
- id: number;
19472
- };
19473
- cookie?: never;
19474
- };
19475
- requestBody?: never;
19476
- responses: {
19477
- /** @description A page of log entries (newest block first), plus user messages and sandbox state. */
19478
- 200: {
19479
- headers: {
19480
- [name: string]: unknown;
19481
- };
19482
- content: {
19483
- "application/json": components["schemas"]["ChatSessionStateResponse"];
19484
- };
19485
- };
19486
- /** @description Chat session not found. */
19487
- 404: {
19488
- headers: {
19489
- [name: string]: unknown;
19490
- };
19491
- content: {
19492
- "application/json": components["schemas"]["ErrorResponse"];
19493
- };
19494
- };
19495
- };
19496
- };
19497
18963
  getChatSessionSnapshot: {
19498
18964
  parameters: {
19499
18965
  query?: never;
@@ -19837,10 +19303,7 @@ export interface operations {
19837
19303
  };
19838
19304
  listEnvironmentVariables: {
19839
19305
  parameters: {
19840
- query?: {
19841
- /** @description Resolve the project by repository name instead of the x-project-id header. */
19842
- project_repo_name?: string;
19843
- };
19306
+ query?: never;
19844
19307
  header?: never;
19845
19308
  path?: never;
19846
19309
  cookie?: never;
@@ -19856,7 +19319,7 @@ export interface operations {
19856
19319
  "application/json": components["schemas"]["EnvironmentVariableListResponse"];
19857
19320
  };
19858
19321
  };
19859
- /** @description Invalid or missing project ID or project_repo_name. */
19322
+ /** @description Invalid request or missing project scope. */
19860
19323
  400: {
19861
19324
  headers: {
19862
19325
  [name: string]: unknown;
@@ -19886,8 +19349,6 @@ export interface operations {
19886
19349
  requestBody?: {
19887
19350
  content: {
19888
19351
  "application/json": {
19889
- /** @description ID of the project the variable belongs to. */
19890
- project_id: number;
19891
19352
  /** @description Variable name. */
19892
19353
  name: string;
19893
19354
  /** @description Optional human-readable description. */
@@ -22570,7 +22031,7 @@ export interface operations {
22570
22031
  };
22571
22032
  };
22572
22033
  responses: {
22573
- /** @description The created installation. */
22034
+ /** @description The created or reauthorized installation. */
22574
22035
  200: {
22575
22036
  headers: {
22576
22037
  [name: string]: unknown;
@@ -22597,6 +22058,15 @@ export interface operations {
22597
22058
  "application/json": components["schemas"]["ErrorResponse"];
22598
22059
  };
22599
22060
  };
22061
+ /** @description The Jira site belongs to another organisation. */
22062
+ 409: {
22063
+ headers: {
22064
+ [name: string]: unknown;
22065
+ };
22066
+ content: {
22067
+ "application/json": components["schemas"]["ErrorResponse"];
22068
+ };
22069
+ };
22600
22070
  /** @description Failed to save the installation. */
22601
22071
  500: {
22602
22072
  headers: {
@@ -22683,6 +22153,15 @@ export interface operations {
22683
22153
  "application/json": components["schemas"]["ErrorResponse"];
22684
22154
  };
22685
22155
  };
22156
+ /** @description Jira reauthorization is required. */
22157
+ 409: {
22158
+ headers: {
22159
+ [name: string]: unknown;
22160
+ };
22161
+ content: {
22162
+ "application/json": components["schemas"]["ErrorResponse"];
22163
+ };
22164
+ };
22686
22165
  };
22687
22166
  };
22688
22167
  revokeJiraInstallation: {
@@ -22862,6 +22341,8 @@ export interface operations {
22862
22341
  linear_organization_id: string;
22863
22342
  /** @description OAuth access token for the Linear API. */
22864
22343
  linear_access_token: string;
22344
+ /** @description OAuth refresh token for the Linear API. */
22345
+ linear_refresh_token?: string;
22865
22346
  /**
22866
22347
  * Format: date-time
22867
22348
  * @description Expiry of the access token.
@@ -22881,35 +22362,13 @@ export interface operations {
22881
22362
  id: string;
22882
22363
  name: string;
22883
22364
  key: string;
22884
- description: string | null;
22885
- states: {
22886
- id: string;
22887
- name: string;
22888
- color: string;
22889
- /** @enum {string} */
22890
- type: "backlog" | "unstarted" | "started" | "completed" | "canceled";
22891
- position: number;
22892
- }[];
22893
- labels: {
22894
- id: string;
22895
- name: string;
22896
- description?: string;
22897
- isGroup: boolean;
22898
- color: string;
22899
- /** Format: date-time */
22900
- createdAt: string | null;
22901
- /** Format: date-time */
22902
- updatedAt: string | null;
22903
- /** Format: date-time */
22904
- archivedAt?: string | null;
22905
- }[];
22906
22365
  }[];
22907
22366
  };
22908
22367
  };
22909
22368
  };
22910
22369
  };
22911
22370
  responses: {
22912
- /** @description The created installation. */
22371
+ /** @description The created or reauthorized installation. */
22913
22372
  200: {
22914
22373
  headers: {
22915
22374
  [name: string]: unknown;
@@ -24596,9 +24055,17 @@ export interface operations {
24596
24055
  has_branching_enabled?: boolean;
24597
24056
  default_branch?: string;
24598
24057
  persistent_branches?: string[];
24599
- /** @enum {string} */
24058
+ /**
24059
+ * @deprecated
24060
+ * @description Read-only. Set `concurrency` on the trigger request or `scheduled_concurrency` on the environment instead.
24061
+ * @enum {string}
24062
+ */
24600
24063
  test_run_concurrency_limit?: "none" | "project" | "environment" | "branch_environment";
24601
- /** @enum {string} */
24064
+ /**
24065
+ * @deprecated
24066
+ * @description Read-only. Set `concurrency` on the trigger request or `scheduled_concurrency` on the environment instead.
24067
+ * @enum {string}
24068
+ */
24602
24069
  test_run_concurrency_behavior?: "cancel_previous" | "queue_new";
24603
24070
  /** @enum {string} */
24604
24071
  test_run_region?: "us-east-1" | "ap-south-1";
@@ -25273,6 +24740,35 @@ export interface operations {
25273
24740
  };
25274
24741
  };
25275
24742
  };
24743
+ getProjectClone: {
24744
+ parameters: {
24745
+ query?: never;
24746
+ header?: never;
24747
+ path?: never;
24748
+ cookie?: never;
24749
+ };
24750
+ requestBody?: never;
24751
+ responses: {
24752
+ /** @description Clone URL for the project. */
24753
+ 200: {
24754
+ headers: {
24755
+ [name: string]: unknown;
24756
+ };
24757
+ content: {
24758
+ "application/json": components["schemas"]["ProjectCloneResponse"];
24759
+ };
24760
+ };
24761
+ /** @description Repository host is not supported. */
24762
+ 400: {
24763
+ headers: {
24764
+ [name: string]: unknown;
24765
+ };
24766
+ content: {
24767
+ "application/json": components["schemas"]["ErrorResponse"];
24768
+ };
24769
+ };
24770
+ };
24771
+ };
25276
24772
  getProjectGitToken: {
25277
24773
  parameters: {
25278
24774
  query?: never;
@@ -25708,8 +25204,6 @@ export interface operations {
25708
25204
  page?: number;
25709
25205
  /** @description Items per page. */
25710
25206
  per_page?: number;
25711
- /** @description Project to list requests for, when the `x-project-id` header is absent. */
25712
- project_id?: string;
25713
25207
  /** @description URL-encoded JSON array of generic filter conditions; malformed input is ignored. */
25714
25208
  filters?: string;
25715
25209
  };
@@ -25728,7 +25222,7 @@ export interface operations {
25728
25222
  "application/json": components["schemas"]["RequestListResponse"];
25729
25223
  };
25730
25224
  };
25731
- /** @description Missing or invalid project_id, or invalid query. */
25225
+ /** @description Invalid request or missing project scope. */
25732
25226
  400: {
25733
25227
  headers: {
25734
25228
  [name: string]: unknown;
@@ -25771,10 +25265,6 @@ export interface operations {
25771
25265
  * @enum {string}
25772
25266
  */
25773
25267
  status?: "draft" | "open" | "in-review" | "closed" | "resolved";
25774
- /** @description Project the request belongs to. */
25775
- project_id?: number | string | unknown;
25776
- /** @description Repository name to resolve the project, if `project_id` is absent. */
25777
- project_repo_name?: string | null;
25778
25268
  };
25779
25269
  };
25780
25270
  };
@@ -26293,6 +25783,15 @@ export interface operations {
26293
25783
  "application/json": components["schemas"]["ErrorResponse"];
26294
25784
  };
26295
25785
  };
25786
+ /** @description Run ledger unavailable; retry the event. */
25787
+ 503: {
25788
+ headers: {
25789
+ [name: string]: unknown;
25790
+ };
25791
+ content: {
25792
+ "application/json": components["schemas"]["ErrorResponse"];
25793
+ };
25794
+ };
26296
25795
  };
26297
25796
  };
26298
25797
  updateTestRunShardState: {
@@ -26452,6 +25951,47 @@ export interface operations {
26452
25951
  };
26453
25952
  };
26454
25953
  };
25954
+ getUiLiveTestRun: {
25955
+ parameters: {
25956
+ query?: never;
25957
+ header?: never;
25958
+ path: {
25959
+ /** @description Test run database identifier. */
25960
+ id: number;
25961
+ };
25962
+ cookie?: never;
25963
+ };
25964
+ requestBody?: never;
25965
+ responses: {
25966
+ /** @description The mutable test-run snapshot. */
25967
+ 200: {
25968
+ headers: {
25969
+ [name: string]: unknown;
25970
+ };
25971
+ content: {
25972
+ "application/json": components["schemas"]["UiLiveTestRunResponse"];
25973
+ };
25974
+ };
25975
+ /** @description Invalid cross-check header. */
25976
+ 400: {
25977
+ headers: {
25978
+ [name: string]: unknown;
25979
+ };
25980
+ content: {
25981
+ "application/json": components["schemas"]["ErrorResponse"];
25982
+ };
25983
+ };
25984
+ /** @description Test run not found. */
25985
+ 404: {
25986
+ headers: {
25987
+ [name: string]: unknown;
25988
+ };
25989
+ content: {
25990
+ "application/json": components["schemas"]["ErrorResponse"];
25991
+ };
25992
+ };
25993
+ };
25994
+ };
26455
25995
  createUploadUrls: {
26456
25996
  parameters: {
26457
25997
  query?: never;