@productcraft/platform-auth 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -902,10 +902,15 @@ interface paths {
902
902
  path?: never;
903
903
  cookie?: never;
904
904
  };
905
- /** List PAKs in this workspace, newest first. Plaintext tokens are NOT returned — only prefixes + metadata. Pass `?limit=`/`?cursor=` to get the standard cursor-paginated `{data, pagination}` envelope (20/page, max 100); callers that pass neither still get the legacy bare JSON array. */
905
+ /**
906
+ * List the API keys in this workspace
907
+ * @description Newest first, as the standard cursor-paginated `{data, pagination}` envelope (20 per page, at most 100). Plaintext tokens are never returned, only prefixes and metadata.
908
+ *
909
+ * **Deprecated legacy shape:** a request that sends neither `limit` nor `cursor` gets a bare JSON array of every key (capped at 1000), unless its `User-Agent` is a ProductCraft SDK (`productcraft-…`), which always gets the envelope. The array is kept only for `@productcraft/platform-auth` 0.0.x clients and is removed in the platform API's next major version; send `limit` (or use an SDK).
910
+ */
906
911
  get: operations["PlatformApiKeyController_list"];
907
912
  put?: never;
908
- /** Mint a new PAK. Choose what it can do with `preset` (a ready-made set such as `mail-send`) or `policy_ids` (managed policies you wrote), never both. The plaintext `token` is returned ONCE — store it now, then call `GET /v1/api-keys/self` with it to check what it can do. The minter can grant at most their own effective permissions. Cookie/JWT only — PAKs cannot mint other PAKs. Not idempotent on purpose: replaying a stored mint response would mean keeping the plaintext token in a cache. */
913
+ /** Mint a new PAK. Choose what it can do with `preset` (a ready-made set such as `mail-send`) or `policy_ids` (managed policies you wrote), never both. The plaintext `token` is returned ONCE — store it now, then call `GET /v1/api-keys/self` with it to check what it can do. The minter can grant at most their own effective permissions. Cookie/JWT only — PAKs cannot mint other PAKs. Send an `Idempotency-Key` to make a retry safe: a retry of a mint that succeeded mints nothing and answers `409 PAK_ALREADY_MINTED` with that key's `id` (the token itself is never cached). */
909
914
  post: operations["PlatformApiKeyController_create"];
910
915
  delete?: never;
911
916
  options?: never;
@@ -1314,6 +1319,8 @@ interface components {
1314
1319
  */
1315
1320
  code: string;
1316
1321
  };
1322
+ /** @enum {string} */
1323
+ ApiKeyPresetKey: "mail-send" | "waitlist-write" | "trawl-jobs" | "readonly" | "full";
1317
1324
  ApiKeySelfResponseDto: {
1318
1325
  /**
1319
1326
  * @description The permission catalog actions behind `allowed`, in the same order.
@@ -1341,30 +1348,55 @@ interface components {
1341
1348
  * @description Id of the key that made this request.
1342
1349
  */
1343
1350
  key_id: string;
1344
- /** @example Production mailer */
1351
+ /**
1352
+ * @description Name given to the key when it was minted.
1353
+ * @example Production mailer
1354
+ */
1345
1355
  name: string;
1356
+ /** @description The workspace the key belongs to. */
1346
1357
  workspace: components["schemas"]["ApiKeySelfWorkspaceDto"];
1358
+ /**
1359
+ * Format: uuid
1360
+ * @description Id of the workspace the key belongs to (also `workspace.id`). The SDKs read it once per process to bind `workspace_id` on product calls.
1361
+ */
1362
+ workspace_id: string;
1347
1363
  };
1348
1364
  ApiKeySelfWorkspaceDto: {
1349
- /** Format: uuid */
1365
+ /**
1366
+ * Format: uuid
1367
+ * @description Id of the workspace the key belongs to.
1368
+ */
1350
1369
  id: string;
1351
- /** @example Acme */
1370
+ /**
1371
+ * @description Display name of the workspace.
1372
+ * @example Acme
1373
+ */
1352
1374
  name: string;
1353
- /** @example acme */
1375
+ /**
1376
+ * @description Slug of the workspace (the platform routes take it positionally).
1377
+ * @example acme
1378
+ */
1354
1379
  slug: string;
1355
1380
  };
1381
+ /** @enum {string} */
1382
+ ApiKeyStatus: "active" | "expired" | "revoked";
1356
1383
  AssertionAuthorizationRequestDto: {
1357
1384
  /** @description Action to decide, `<service>.<resource>.<verb>`. */
1358
1385
  action: string;
1359
1386
  /** @description URN the action targets. Omitted means `*`, the strict reading. */
1360
1387
  resource?: string;
1361
1388
  };
1389
+ /** @enum {string} */
1390
+ AuditActorType: "platform_user" | "system" | "pat";
1362
1391
  AuditFeedResponseDto: {
1392
+ /** @description One page of feed items, newest first. */
1363
1393
  data: components["schemas"]["FeedItemDto"][];
1364
1394
  pagination: components["schemas"]["PaginationDto"];
1365
1395
  /** @description Per-source diagnostics so the UI / customer can see which sources contributed to this page and which are stubbed pending the cross-service fanout. */
1366
1396
  sources: components["schemas"]["SourceDiagnosticDto"][];
1367
1397
  };
1398
+ /** @enum {string} */
1399
+ AuditFeedSource: "workspace_audit" | "heimdall_audit" | "agora_moderation";
1368
1400
  AuthorizationServerMetadataDto: {
1369
1401
  /**
1370
1402
  * @description Non-standard. Declares that authority on this server is an IAM policy document stored on the grant, intersected per request with the authorizing human’s current workspace policy — so a demotion or an offboarding takes effect on the next call rather than at token expiry. The `scope` parameter only names a preset the human then narrows.
@@ -1381,6 +1413,7 @@ interface components {
1381
1413
  */
1382
1414
  code_challenge_methods_supported: string[];
1383
1415
  /**
1416
+ * @description OAuth grant types the token endpoint accepts (RFC 8414).
1384
1417
  * @example [
1385
1418
  * "authorization_code",
1386
1419
  * "refresh_token"
@@ -1440,6 +1473,7 @@ interface components {
1440
1473
  /** @description RFC 6749 token endpoint. */
1441
1474
  token_endpoint: string;
1442
1475
  /**
1476
+ * @description Client authentication methods the token endpoint accepts (RFC 8414).
1443
1477
  * @example [
1444
1478
  * "none",
1445
1479
  * "client_secret_basic",
@@ -1449,13 +1483,21 @@ interface components {
1449
1483
  token_endpoint_auth_methods_supported: string[];
1450
1484
  };
1451
1485
  AvatarUrlResponseDto: {
1486
+ /** @description URL of the uploaded avatar image. */
1452
1487
  avatar_url: string;
1453
1488
  };
1454
1489
  BoundPolicySummaryDto: {
1490
+ /** @description What the policy is for, when set. */
1455
1491
  description: string | null;
1456
- /** Format: uuid */
1492
+ /**
1493
+ * Format: uuid
1494
+ * @description Id of the policy.
1495
+ */
1457
1496
  id: string;
1458
- /** @example mail-readonly */
1497
+ /**
1498
+ * @description Name of the policy.
1499
+ * @example mail-readonly
1500
+ */
1459
1501
  name: string;
1460
1502
  };
1461
1503
  CallbackBodyDto: {
@@ -1569,17 +1611,26 @@ interface components {
1569
1611
  * @description The human who consented to this grant.
1570
1612
  */
1571
1613
  account_id: string;
1614
+ /** @description OAuth `client_id` of the connected app. */
1572
1615
  client_id: string;
1616
+ /** @description Name the app registered with. */
1573
1617
  client_name: string;
1574
- /** Format: date-time */
1618
+ /**
1619
+ * Format: date-time
1620
+ * @description When access was granted.
1621
+ */
1575
1622
  created_at: string;
1576
1623
  /**
1577
1624
  * Format: date-time
1578
1625
  * @description When the assistant made its first successful tool call through this connection. Null until then, which is how a client that authorized but never worked shows up.
1579
1626
  */
1580
1627
  first_tool_call_at: string | null;
1581
- /** Format: uuid */
1628
+ /**
1629
+ * Format: uuid
1630
+ * @description Id of the grant (pass it to disconnect).
1631
+ */
1582
1632
  grant_id: string;
1633
+ /** @description Whether ProductCraft verified the app (dynamically registered apps never are). */
1583
1634
  is_verified: boolean;
1584
1635
  /** @description Policy the human approved. Effective authority is this intersected with the human's current workspace policy, per request. */
1585
1636
  policy: components["schemas"]["PolicyStatementDto"][];
@@ -1594,14 +1645,22 @@ interface components {
1594
1645
  * "mail"
1595
1646
  * ]
1596
1647
  */
1597
- products: ("auth" | "mail" | "waitlist" | "social" | "trawl")[] | null;
1648
+ products: components["schemas"]["McpProduct"][] | null;
1649
+ /** @description Resource indicator the grant's tokens are bound to. */
1598
1650
  resource: string;
1599
- /** Format: date-time */
1651
+ /**
1652
+ * Format: date-time
1653
+ * @description When the grant was revoked, or `null` while it is live.
1654
+ */
1600
1655
  revoked_at: string | null;
1601
- /** Format: uuid */
1656
+ /**
1657
+ * Format: uuid
1658
+ * @description Id of the workspace the grant is scoped to.
1659
+ */
1602
1660
  workspace_id: string;
1603
1661
  };
1604
1662
  ConnectedClientListDto: {
1663
+ /** @description One page of connected apps. */
1605
1664
  data: components["schemas"]["ConnectedClientDto"][];
1606
1665
  pagination: components["schemas"]["PaginationDto"];
1607
1666
  };
@@ -1918,7 +1977,9 @@ interface components {
1918
1977
  };
1919
1978
  EnableWorkspaceServiceDto: {
1920
1979
  /** @description Optional per-service settings blob captured at enable time. */
1921
- settings?: Record<string, never>;
1980
+ settings?: {
1981
+ [key: string]: unknown;
1982
+ };
1922
1983
  };
1923
1984
  ErrorParamDto: {
1924
1985
  /**
@@ -1983,7 +2044,10 @@ interface components {
1983
2044
  * @example mail.domain.verified
1984
2045
  */
1985
2046
  action: string;
1986
- /** Format: uuid */
2047
+ /**
2048
+ * Format: uuid
2049
+ * @description Account id of the actor, or `null` for system actions.
2050
+ */
1987
2051
  actor_id: string | null;
1988
2052
  /**
1989
2053
  * @description Actor classification — one of 'platform_user' | 'end_user' | 'm2m' | 'system' | 'pat' | 'api_key'.
@@ -1991,23 +2055,33 @@ interface components {
1991
2055
  */
1992
2056
  actor_type: string;
1993
2057
  /** @description Free-form metadata (jsonb). */
1994
- metadata: Record<string, never>;
1995
- /** @example workspace_membership */
2058
+ metadata: {
2059
+ [key: string]: unknown;
2060
+ };
2061
+ /**
2062
+ * @description Kind of resource the action touched.
2063
+ * @example workspace_membership
2064
+ */
1996
2065
  resource: string;
1997
- /** Format: uuid */
2066
+ /**
2067
+ * Format: uuid
2068
+ * @description Id of the resource, when it has one.
2069
+ */
1998
2070
  resource_id: string | null;
1999
2071
  /**
2000
2072
  * @description Which audit table this row came from.
2001
2073
  * @example workspace_audit
2002
- * @enum {string}
2003
2074
  */
2004
- source: "workspace_audit" | "heimdall_audit" | "agora_moderation";
2075
+ source: components["schemas"]["AuditFeedSource"];
2005
2076
  /**
2006
2077
  * @description Stable per-source identifier. Used by the cursor to resume from the same point on the next page.
2007
2078
  * @example 4e5f5c9e-b4ee-4401-9275-283feb66c178
2008
2079
  */
2009
2080
  source_ref: string;
2010
- /** Format: date-time */
2081
+ /**
2082
+ * Format: date-time
2083
+ * @description When the action happened.
2084
+ */
2011
2085
  timestamp: string;
2012
2086
  };
2013
2087
  FeedbackResponseDto: {
@@ -2036,55 +2110,90 @@ interface components {
2036
2110
  IntrospectAccountDto: {
2037
2111
  /** @description Public HTTPS URL of the uploaded avatar, or null when no avatar is set. */
2038
2112
  avatar_url: string | null;
2113
+ /** @description Display name, when set. */
2039
2114
  display_name: string | null;
2115
+ /** @description Primary email of the account, when it has one. */
2040
2116
  email: string | null;
2041
2117
  /**
2042
2118
  * Format: date-time
2043
2119
  * @description Timestamp when this account verified its primary email, or null if unverified.
2044
2120
  */
2045
2121
  email_verified_at: string | null;
2046
- /** Format: uuid */
2122
+ /**
2123
+ * Format: uuid
2124
+ * @description Id of the account.
2125
+ */
2047
2126
  id: string;
2048
2127
  /** @description Account status (e.g. `active`, `suspended`). */
2049
2128
  status: string;
2129
+ /** @description Unique username of the account. */
2050
2130
  username: string;
2051
2131
  };
2052
2132
  IntrospectApiKeyResponseDto: {
2053
- /** Format: uuid */
2133
+ /**
2134
+ * Format: uuid
2135
+ * @description Id of the key.
2136
+ */
2054
2137
  api_key_id: string;
2055
- /** Format: uuid */
2138
+ /**
2139
+ * Format: uuid
2140
+ * @description Account id of the person who minted the key, or `null` when that account is gone.
2141
+ */
2056
2142
  created_by: string | null;
2143
+ /** @description Always `true` on a 200: unknown, revoked and expired keys answer 401. */
2057
2144
  is_valid: boolean;
2058
2145
  /** @description Merged effective policy across every managed policy bound to this PAK. */
2059
2146
  policy: components["schemas"]["PolicyStatementDto"][];
2060
- /** Format: uuid */
2147
+ /**
2148
+ * Format: uuid
2149
+ * @description Id of the workspace the key belongs to.
2150
+ */
2061
2151
  workspace_id: string;
2062
2152
  };
2063
2153
  IntrospectPrincipalDto: {
2154
+ /** @description The account's primary email, when it has one. */
2064
2155
  email: string | null;
2065
- /** Format: uuid */
2156
+ /**
2157
+ * Format: uuid
2158
+ * @description Id of the authenticated account.
2159
+ */
2066
2160
  id: string;
2161
+ /** @description The account's display name, when set. */
2067
2162
  name: string | null;
2068
- /** Format: uuid */
2163
+ /**
2164
+ * Format: uuid
2165
+ * @description JWT subject: the account id.
2166
+ */
2069
2167
  sub: string;
2070
2168
  };
2071
2169
  IntrospectResponseDto: {
2170
+ /** @description The caller's account profile, or `null` when not authenticated. */
2072
2171
  account?: components["schemas"]["IntrospectAccountDto"] | null;
2073
2172
  /** @description False for an anonymous caller and for an access token whose session has been signed out. */
2074
2173
  is_authenticated: boolean;
2174
+ /** @description The authenticated caller, or `null` when the request carries no valid session. */
2075
2175
  principal?: components["schemas"]["IntrospectPrincipalDto"] | null;
2176
+ /** @description Workspaces the caller is a member of (empty when not authenticated). */
2076
2177
  workspaces?: components["schemas"]["IntrospectWorkspaceListItemDto"][];
2077
2178
  };
2078
2179
  IntrospectRoleDto: {
2079
- /** Format: uuid */
2180
+ /**
2181
+ * Format: uuid
2182
+ * @description Id of the role (the key's workspace id for a workspace key).
2183
+ */
2080
2184
  id: string;
2185
+ /** @description Name of the role (`owner`, `admin`, `member`, a custom role, or `pak`). */
2081
2186
  name: string;
2082
2187
  };
2083
2188
  IntrospectWorkspaceListItemDto: {
2084
2189
  /** @description Workspace identity avatar (public HTTPS URL), or null when none is set. Console workspace switcher reads this. */
2085
2190
  avatar_url: string | null;
2191
+ /** @description Display name of the workspace. */
2086
2192
  display_name: string;
2087
- /** Format: uuid */
2193
+ /**
2194
+ * Format: uuid
2195
+ * @description Id of the workspace.
2196
+ */
2088
2197
  id: string;
2089
2198
  /**
2090
2199
  * @description Caller’s role name in this workspace.
@@ -2099,6 +2208,7 @@ interface components {
2099
2208
  * ]
2100
2209
  */
2101
2210
  services: string[];
2211
+ /** @description Slug of the workspace (platform routes take it positionally). */
2102
2212
  slug: string;
2103
2213
  };
2104
2214
  IntrospectWorkspaceResponseDto: {
@@ -2107,9 +2217,11 @@ interface components {
2107
2217
  * @description Canonical workspace UUID. Only present for members — non-members get a uniform low-information response.
2108
2218
  */
2109
2219
  id?: string;
2220
+ /** @description Whether the caller is a member of the workspace (a workspace key bound to it counts as one). Non-members get no `id`, no role and an empty policy. */
2110
2221
  is_member: boolean;
2111
2222
  /** @description Effective IAM-style policy for this caller in this workspace. */
2112
2223
  policy: components["schemas"]["PolicyStatementDto"][];
2224
+ /** @description The caller's role in the workspace (`{ id, name: 'pak' }` for a workspace key), or `null` for a non-member. */
2113
2225
  role: components["schemas"]["IntrospectRoleDto"] | null;
2114
2226
  /**
2115
2227
  * @description Enabled services on this workspace.
@@ -2175,38 +2287,47 @@ interface components {
2175
2287
  keys: components["schemas"]["JwkDto"][];
2176
2288
  };
2177
2289
  ListManagedPoliciesResponseDto: {
2290
+ /** @description One page of managed policies. */
2178
2291
  data: components["schemas"]["ManagedPolicyResponseDto"][];
2179
2292
  pagination: components["schemas"]["PaginationDto"];
2180
2293
  };
2181
2294
  ListPakPresetsResponseDto: {
2295
+ /** @description Every preset a key can be minted from. */
2182
2296
  data: components["schemas"]["PakPresetDto"][];
2183
2297
  /** @description Always a single page: there are five presets. */
2184
2298
  pagination: components["schemas"]["PaginationDto"];
2185
2299
  };
2186
2300
  ListPlatformApiKeysResponseDto: {
2301
+ /** @description One page of API keys, newest first. */
2187
2302
  data: components["schemas"]["PublicApiKeyDto"][];
2188
2303
  pagination: components["schemas"]["PaginationDto"];
2189
2304
  };
2190
2305
  ListWorkspaceAuditLogsResponseDto: {
2306
+ /** @description One page of audit log entries, newest first. */
2191
2307
  data: components["schemas"]["WorkspaceAuditLogEntryDto"][];
2192
2308
  pagination: components["schemas"]["PaginationDto"];
2193
2309
  };
2194
2310
  ListWorkspaceInvitesResponseDto: {
2311
+ /** @description One page of invites. */
2195
2312
  data: components["schemas"]["WorkspaceInviteListItemDto"][];
2196
2313
  pagination: components["schemas"]["PaginationDto"];
2197
2314
  };
2198
2315
  ListWorkspaceMembersResponseDto: {
2316
+ /** @description One page of workspace members. */
2199
2317
  data: components["schemas"]["WorkspaceMemberResponseDto"][];
2200
2318
  pagination: components["schemas"]["PaginationDto"];
2201
2319
  };
2202
2320
  ListWorkspaceRolesResponseDto: {
2321
+ /** @description One page of roles. */
2203
2322
  data: components["schemas"]["WorkspaceRoleResponseDto"][];
2204
2323
  pagination: components["schemas"]["PaginationDto"];
2205
2324
  };
2206
2325
  ListWorkspaceServicesResponseDto: {
2326
+ /** @description Every product service and its state in this workspace. */
2207
2327
  data: components["schemas"]["WorkspaceServiceStateDto"][];
2208
2328
  };
2209
2329
  ListWorkspacesResponseDto: {
2330
+ /** @description One page of workspaces the caller belongs to. */
2210
2331
  data: components["schemas"]["WorkspaceListItemDto"][];
2211
2332
  pagination: components["schemas"]["PaginationDto"];
2212
2333
  };
@@ -2224,10 +2345,10 @@ interface components {
2224
2345
  */
2225
2346
  bound_key_count: number;
2226
2347
  /**
2348
+ * @description Always `true`: the policy is gone.
2227
2349
  * @example true
2228
- * @enum {number}
2229
2350
  */
2230
- deleted: true;
2351
+ deleted: boolean;
2231
2352
  /**
2232
2353
  * Format: uuid
2233
2354
  * @description The deleted policy.
@@ -2242,71 +2363,109 @@ interface components {
2242
2363
  * @example 3
2243
2364
  */
2244
2365
  bound_key_count: number;
2245
- /** Format: date-time */
2366
+ /**
2367
+ * Format: date-time
2368
+ * @description When the policy was created.
2369
+ */
2246
2370
  created_at: string;
2247
2371
  /**
2248
2372
  * Format: uuid
2249
2373
  * @description Account that authored the row. Only revealed to callers with `workspace.audit.read`; plain members see null.
2250
2374
  */
2251
2375
  created_by: string | null;
2376
+ /** @description What the policy is for, when set. */
2252
2377
  description: string | null;
2253
- /** Format: uuid */
2378
+ /**
2379
+ * Format: uuid
2380
+ * @description Id of the policy.
2381
+ */
2254
2382
  id: string;
2255
- /** @example mail-readonly */
2383
+ /**
2384
+ * @description Name of the policy, unique in the workspace.
2385
+ * @example mail-readonly
2386
+ */
2256
2387
  name: string;
2257
2388
  /** @description IAM-style policy statements bound to this managed policy. */
2258
2389
  policy: components["schemas"]["PolicyStatementDto"][];
2259
2390
  /**
2260
2391
  * @description The workspace-key preset this policy was created from, or null for a policy a person wrote. Minting a key with `preset` creates this policy once per workspace and reuses it. It stays set after the policy is edited, so show it as "based on preset".
2261
2392
  * @example mail-send
2262
- * @enum {string|null}
2263
2393
  */
2264
- preset_key: "mail-send" | "waitlist-write" | "trawl-jobs" | "readonly" | "full" | null;
2265
- /** Format: date-time */
2394
+ preset_key: components["schemas"]["ApiKeyPresetKey"] | null;
2395
+ /**
2396
+ * Format: date-time
2397
+ * @description When the policy was last changed.
2398
+ */
2266
2399
  updated_at: string;
2267
- /** Format: uuid */
2400
+ /**
2401
+ * Format: uuid
2402
+ * @description Id of the workspace that owns the policy.
2403
+ */
2268
2404
  workspace_id: string;
2269
2405
  };
2270
2406
  ManagedPolicyResponseDto: {
2271
- /** Format: date-time */
2407
+ /**
2408
+ * Format: date-time
2409
+ * @description When the policy was created.
2410
+ */
2272
2411
  created_at: string;
2273
2412
  /**
2274
2413
  * Format: uuid
2275
2414
  * @description Account that authored the row. Only revealed to callers with `workspace.audit.read`; plain members see null.
2276
2415
  */
2277
2416
  created_by: string | null;
2417
+ /** @description What the policy is for, when set. */
2278
2418
  description: string | null;
2279
- /** Format: uuid */
2419
+ /**
2420
+ * Format: uuid
2421
+ * @description Id of the policy.
2422
+ */
2280
2423
  id: string;
2281
- /** @example mail-readonly */
2424
+ /**
2425
+ * @description Name of the policy, unique in the workspace.
2426
+ * @example mail-readonly
2427
+ */
2282
2428
  name: string;
2283
2429
  /** @description IAM-style policy statements bound to this managed policy. */
2284
2430
  policy: components["schemas"]["PolicyStatementDto"][];
2285
2431
  /**
2286
2432
  * @description The workspace-key preset this policy was created from, or null for a policy a person wrote. Minting a key with `preset` creates this policy once per workspace and reuses it. It stays set after the policy is edited, so show it as "based on preset".
2287
2433
  * @example mail-send
2288
- * @enum {string|null}
2289
2434
  */
2290
- preset_key: "mail-send" | "waitlist-write" | "trawl-jobs" | "readonly" | "full" | null;
2291
- /** Format: date-time */
2435
+ preset_key: components["schemas"]["ApiKeyPresetKey"] | null;
2436
+ /**
2437
+ * Format: date-time
2438
+ * @description When the policy was last changed.
2439
+ */
2292
2440
  updated_at: string;
2293
- /** Format: uuid */
2441
+ /**
2442
+ * Format: uuid
2443
+ * @description Id of the workspace that owns the policy.
2444
+ */
2294
2445
  workspace_id: string;
2295
2446
  };
2447
+ /** @enum {string} */
2448
+ McpProduct: "auth" | "mail" | "waitlist" | "social" | "trawl";
2296
2449
  MeProfileDto: {
2297
2450
  /** @description Short-lived (15 min) presigned GET URL for the avatar object in private object storage. NULL when no avatar has been set; the frontend then renders initials. The API mints a fresh URL on every response, so a stable bookmark of this value is not meaningful. */
2298
2451
  avatar_url: string | null;
2452
+ /** @description Your display name, when set. */
2299
2453
  display_name: string | null;
2454
+ /** @description Your primary email, when you have one. */
2300
2455
  email: string | null;
2301
2456
  /**
2302
2457
  * Format: date-time
2303
2458
  * @description Timestamp when this account verified its primary email, or null if unverified.
2304
2459
  */
2305
2460
  email_verified_at: string | null;
2306
- /** Format: uuid */
2461
+ /**
2462
+ * Format: uuid
2463
+ * @description Id of your account.
2464
+ */
2307
2465
  id: string;
2308
2466
  /** @description Account status (e.g. `active`, `suspended`). */
2309
2467
  status: string;
2468
+ /** @description Your username. */
2310
2469
  username: string;
2311
2470
  };
2312
2471
  MintPakResponseDto: {
@@ -2336,10 +2495,41 @@ interface components {
2336
2495
  */
2337
2496
  error_description: string;
2338
2497
  };
2498
+ OAuthTokenResponseDto: {
2499
+ /** @description Signed JWT, audience-bound to the resource indicator and carrying the workspace, the preset name and the client id. It carries no policy — authority is resolved per request from the grant row and the human’s live policy. */
2500
+ access_token: string;
2501
+ /**
2502
+ * @description Seconds until the access token expires (≤ 900).
2503
+ * @example 900
2504
+ */
2505
+ expires_in: number;
2506
+ /** @description The policy this token carries. Effective authority is this intersected with the authorizing human's current workspace policy, re-evaluated on every call. */
2507
+ policy: components["schemas"]["PolicyStatementDto"][];
2508
+ /** @description Rotating refresh token. The one presented is consumed; replaying it revokes the whole grant family. */
2509
+ refresh_token: string;
2510
+ /**
2511
+ * @description Preset name(s) the grant started from. Present for RFC 6749 §5.1 compliance; it is not the authority — `policy` is.
2512
+ * @example mail
2513
+ */
2514
+ scope: string;
2515
+ /** @example Bearer */
2516
+ token_type: string;
2517
+ /**
2518
+ * Format: uuid
2519
+ * @description Workspace the grant is scoped to.
2520
+ */
2521
+ workspace_id: string;
2522
+ };
2339
2523
  PaginationDto: {
2340
- /** @example false */
2524
+ /**
2525
+ * @description Whether another page follows this one.
2526
+ * @example false
2527
+ */
2341
2528
  has_more: boolean;
2342
- /** @example null */
2529
+ /**
2530
+ * @description Pass as `cursor` to get the next page; `null` on the last page.
2531
+ * @example null
2532
+ */
2343
2533
  next_cursor: string | null;
2344
2534
  };
2345
2535
  PakGrantPreviewDto: {
@@ -2382,14 +2572,20 @@ interface components {
2382
2572
  * ]
2383
2573
  */
2384
2574
  allowed: string[];
2385
- /** @example Send email from your verified domains and check what happened to it. Cannot read message bodies or change domains. */
2575
+ /**
2576
+ * @description What a key minted from this preset can do.
2577
+ * @example Send email from your verified domains and check what happened to it. Cannot read message bodies or change domains.
2578
+ */
2386
2579
  description: string;
2387
2580
  /**
2581
+ * @description Preset to pass as `preset` when minting a key.
2388
2582
  * @example mail-send
2389
- * @enum {string}
2390
2583
  */
2391
- key: "mail-send" | "waitlist-write" | "trawl-jobs" | "readonly" | "full";
2392
- /** @example Send email */
2584
+ key: components["schemas"]["ApiKeyPresetKey"];
2585
+ /**
2586
+ * @description Short human label for the preset.
2587
+ * @example Send email
2588
+ */
2393
2589
  label: string;
2394
2590
  /**
2395
2591
  * Format: uuid
@@ -2398,13 +2594,15 @@ interface components {
2398
2594
  policy_id: string | null;
2399
2595
  };
2400
2596
  /** @description Error codes this API returns (open set: a client must accept codes it does not know; new codes are not a breaking change). Each is documented at https://productcraft.co/docs/errors#<code>. */
2401
- PlatformErrorCode: ("BAD_REQUEST" | "VALIDATION_ERROR" | "UNAUTHORIZED" | "PAYMENT_REQUIRED" | "FORBIDDEN" | "NOT_FOUND" | "METHOD_NOT_ALLOWED" | "NOT_ACCEPTABLE" | "REQUEST_TIMEOUT" | "CONFLICT" | "GONE" | "PRECONDITION_FAILED" | "PAYLOAD_TOO_LARGE" | "UNSUPPORTED_MEDIA_TYPE" | "UNPROCESSABLE_ENTITY" | "PRECONDITION_REQUIRED" | "RATE_LIMITED" | "INTERNAL_SERVER_ERROR" | "NOT_IMPLEMENTED" | "BAD_GATEWAY" | "SERVICE_UNAVAILABLE" | "GATEWAY_TIMEOUT" | "SERVICE_NOT_ENABLED" | "INVALID_CREDENTIALS" | "SESSION_REVOKED" | "MCP_NOT_PERMITTED" | "MCP_WORKSPACE_MISMATCH" | "PAK_NOT_PERMITTED" | "ACTIONS_NOT_GRANTABLE" | "IDEMPOTENCY_KEY_REUSE" | "IDEMPOTENCY_KEY_REQUIRED" | "WEBHOOK_ENDPOINT_LIMIT" | "WEBHOOK_ENDPOINT_NOT_FOUND" | "WEBHOOK_ENDPOINT_NOT_SUBSCRIBED" | "WEBHOOK_EVENT_NOT_FOUND" | "WEBHOOK_EVENT_TYPE_UNKNOWN" | "ACCOUNT_DEACTIVATED" | "ACCOUNT_SUSPENDED" | "ALREADY_A_MEMBER" | "CROSS_ORIGIN_REJECTED" | "EMAIL_NOT_VERIFIED" | "INVITE_EMAIL_MISMATCH" | "INVITE_EXHAUSTED" | "INVITE_EXPIRED" | "INVITE_INVALID" | "INVITE_NOT_FOUND" | "INVITE_REVOKED" | "LAST_MEMBER" | "MEMBER_RANK_EXCEEDED" | "NOT_A_MEMBER" | "OAUTH_GRANT_ADMIN_REVOKED" | "OWNER_ROLE_REQUIRED" | "PAK_EXPIRED" | "PAK_NAME_REQUIRED" | "PAK_NAME_TOO_LONG" | "PAK_NOT_FOUND" | "PAK_REVOKED" | "PASSWORD_RESET_INVALID" | "POLICY_INVALID" | "POLICY_NAME_TAKEN" | "POLICY_NOT_FOUND" | "ROLE_HAS_MEMBERS" | "ROLE_NAME_TAKEN" | "ROLE_NOT_FOUND" | "ROLE_SYSTEM_IMMUTABLE" | "SERVICE_NOT_ACTIVATED" | "SERVICE_UNKNOWN" | "SOLE_OWNER" | "TOO_MANY_ATTEMPTS" | "WORKSPACE_KEY_REQUIRED") | string;
2597
+ PlatformErrorCode: ("BAD_REQUEST" | "VALIDATION_ERROR" | "UNAUTHORIZED" | "PAYMENT_REQUIRED" | "FORBIDDEN" | "NOT_FOUND" | "METHOD_NOT_ALLOWED" | "NOT_ACCEPTABLE" | "REQUEST_TIMEOUT" | "CONFLICT" | "GONE" | "PRECONDITION_FAILED" | "PAYLOAD_TOO_LARGE" | "UNSUPPORTED_MEDIA_TYPE" | "UNPROCESSABLE_ENTITY" | "PRECONDITION_REQUIRED" | "RATE_LIMITED" | "INTERNAL_SERVER_ERROR" | "NOT_IMPLEMENTED" | "BAD_GATEWAY" | "SERVICE_UNAVAILABLE" | "GATEWAY_TIMEOUT" | "SERVICE_NOT_ENABLED" | "INVALID_CREDENTIALS" | "SESSION_REVOKED" | "MCP_NOT_PERMITTED" | "MCP_WORKSPACE_MISMATCH" | "PAK_NOT_PERMITTED" | "ACTIONS_NOT_GRANTABLE" | "IDEMPOTENCY_KEY_REUSE" | "IDEMPOTENCY_KEY_REQUIRED" | "IDEMPOTENCY_IN_PROGRESS" | "WEBHOOK_ENDPOINT_LIMIT" | "WEBHOOK_ENDPOINT_NOT_FOUND" | "WEBHOOK_ENDPOINT_NOT_SUBSCRIBED" | "WEBHOOK_EVENT_NOT_FOUND" | "WEBHOOK_EVENT_TYPE_UNKNOWN" | "ACCOUNT_DEACTIVATED" | "ACCOUNT_SUSPENDED" | "ALREADY_A_MEMBER" | "CROSS_ORIGIN_REJECTED" | "EMAIL_NOT_VERIFIED" | "INVITE_EMAIL_MISMATCH" | "INVITE_EXHAUSTED" | "INVITE_EXPIRED" | "INVITE_INVALID" | "INVITE_NOT_FOUND" | "INVITE_REVOKED" | "LAST_MEMBER" | "MEMBER_RANK_EXCEEDED" | "NOT_A_MEMBER" | "OAUTH_GRANT_ADMIN_REVOKED" | "OWNER_ROLE_REQUIRED" | "PAK_ALREADY_MINTED" | "PAK_EXPIRED" | "PAK_NAME_REQUIRED" | "PAK_NAME_TOO_LONG" | "PAK_NOT_FOUND" | "PAK_REVOKED" | "PASSWORD_RESET_INVALID" | "POLICY_INVALID" | "POLICY_NAME_TAKEN" | "POLICY_NOT_FOUND" | "ROLE_HAS_MEMBERS" | "ROLE_NAME_TAKEN" | "ROLE_NOT_FOUND" | "ROLE_SYSTEM_IMMUTABLE" | "SERVICE_NOT_ACTIVATED" | "SERVICE_UNKNOWN" | "SOLE_OWNER" | "TOO_MANY_ATTEMPTS" | "WORKSPACE_KEY_REQUIRED") | string;
2402
2598
  PolicyBindingCountDto: {
2403
2599
  /** @description Number of platform API keys bound to this policy. */
2404
2600
  pak: number;
2405
2601
  /** @description Number of workspace roles bound to this policy. */
2406
2602
  role: number;
2407
2603
  };
2604
+ /** @enum {string} */
2605
+ PolicyEffect: "allow" | "deny";
2408
2606
  PolicyStatementDto: {
2409
2607
  /**
2410
2608
  * @description Action strings the statement applies to. Wildcards (e.g. `social.*`, `*.read`, `*`) supported per `actionMatches` semantics.
@@ -2417,9 +2615,8 @@ interface components {
2417
2615
  /**
2418
2616
  * @description Whether the statement allows or denies the listed actions on the listed resources.
2419
2617
  * @example allow
2420
- * @enum {string}
2421
2618
  */
2422
- effect: "allow" | "deny";
2619
+ effect: components["schemas"]["PolicyEffect"];
2423
2620
  /**
2424
2621
  * @description Resource URNs the statement applies to. Use `["*"]` for workspace-wide. Per-resource scoping (e.g. `pcft:agora:community/<uuid>`) is supported by the PAK lane today; the workspace-role authoring API restricts this to `["*"]` for now (see `tasks/platform-auth-api/001`).
2425
2622
  * @example [
@@ -2444,43 +2641,63 @@ interface components {
2444
2641
  preset?: "mail-send" | "waitlist-write" | "trawl-jobs" | "readonly" | "full";
2445
2642
  };
2446
2643
  PublicApiKeyDto: {
2447
- /** Format: date-time */
2644
+ /**
2645
+ * Format: date-time
2646
+ * @description When the key was minted.
2647
+ */
2448
2648
  created_at: string;
2449
- /** Format: uuid */
2649
+ /**
2650
+ * Format: uuid
2651
+ * @description Account id of who minted the key, or `null` when that account is gone.
2652
+ */
2450
2653
  created_by: string | null;
2654
+ /** @description What the key is for, when set. */
2451
2655
  description: string | null;
2452
2656
  /**
2453
2657
  * Format: date-time
2454
2658
  * @description When this key stops introspecting. `null` means it never expires.
2455
2659
  */
2456
2660
  expires_at: string | null;
2457
- /** Format: uuid */
2661
+ /**
2662
+ * Format: uuid
2663
+ * @description Id of the key.
2664
+ */
2458
2665
  id: string;
2459
- /** Format: date-time */
2666
+ /**
2667
+ * Format: date-time
2668
+ * @description When the key last authenticated a request, or `null` if never.
2669
+ */
2460
2670
  last_used_at: string | null;
2671
+ /** @description Name of the key. */
2461
2672
  name: string;
2462
2673
  /** @description Managed policies currently bound to this PAK. */
2463
2674
  policies: components["schemas"]["BoundPolicySummaryDto"][];
2464
- /** Format: date-time */
2675
+ /**
2676
+ * Format: date-time
2677
+ * @description When the key was revoked, or `null` while it is not.
2678
+ */
2465
2679
  revoked_at: string | null;
2466
2680
  /**
2467
2681
  * Format: uuid
2468
2682
  * @description Id of the key this one replaced, when it was minted by a rotation.
2469
2683
  */
2470
2684
  rotated_from: string | null;
2471
- /**
2472
- * @description Lifecycle state at the time of the request. Only `active` keys introspect. `revoked` beats `expired` — revocation is a deliberate act by a named actor and the row keeps saying so.
2473
- * @enum {string}
2474
- */
2475
- status: "active" | "expired" | "revoked";
2685
+ /** @description Lifecycle state at the time of the request. Only `active` keys introspect. `revoked` beats `expired` — revocation is a deliberate act by a named actor and the row keeps saying so. */
2686
+ status: components["schemas"]["ApiKeyStatus"];
2476
2687
  /**
2477
2688
  * @description The first ~14 chars of the token (prefix). Plaintext token is never returned after mint.
2478
2689
  * @example pcft_live_abc123
2479
2690
  */
2480
2691
  token_prefix: string;
2481
- /** Format: date-time */
2692
+ /**
2693
+ * Format: date-time
2694
+ * @description When the key was last changed.
2695
+ */
2482
2696
  updated_at: string;
2483
- /** Format: uuid */
2697
+ /**
2698
+ * Format: uuid
2699
+ * @description Id of the workspace the key belongs to.
2700
+ */
2484
2701
  workspace_id: string;
2485
2702
  };
2486
2703
  RefreshDto: {
@@ -2621,7 +2838,7 @@ interface components {
2621
2838
  * @description Session duration: "short" (24h), "long" (90d), or integer seconds (3600–7776000). Defaults to 30 days.
2622
2839
  * @example short
2623
2840
  */
2624
- session_duration?: Record<string, never>;
2841
+ session_duration?: ("short" | "long") | number;
2625
2842
  };
2626
2843
  SignUpDto: {
2627
2844
  /**
@@ -2643,7 +2860,7 @@ interface components {
2643
2860
  * @description Session duration: "short" (24h), "long" (90d), or integer seconds (3600–7776000). Defaults to 30 days.
2644
2861
  * @example long
2645
2862
  */
2646
- session_duration?: Record<string, never>;
2863
+ session_duration?: ("short" | "long") | number;
2647
2864
  /**
2648
2865
  * @description Unique username (letters, numbers, dot, underscore, hyphen)
2649
2866
  * @example john_doe
@@ -2651,12 +2868,19 @@ interface components {
2651
2868
  username: string;
2652
2869
  };
2653
2870
  SourceDiagnosticDto: {
2871
+ /** @description How many rows the source contributed. */
2654
2872
  count: number;
2873
+ /** @description Why the source was skipped, when it failed (the feed still answers with the others). */
2655
2874
  error?: string;
2875
+ /** @description Whether the source contributed rows to this page. */
2656
2876
  included: boolean;
2657
- /** @enum {string} */
2658
- source: "workspace_audit" | "heimdall_audit" | "agora_moderation";
2877
+ /** @description The audit source this diagnostic describes. */
2878
+ source: components["schemas"]["AuditFeedSource"];
2659
2879
  };
2880
+ /** @enum {string} */
2881
+ StatsGranularity: "day";
2882
+ /** @enum {string} */
2883
+ StatsMetric: "audit_events";
2660
2884
  StatsSeriesPointDto: {
2661
2885
  /**
2662
2886
  * Format: date
@@ -2670,6 +2894,8 @@ interface components {
2670
2894
  */
2671
2895
  value: number;
2672
2896
  };
2897
+ /** @enum {string} */
2898
+ StatsWindow: "1d" | "7d" | "30d";
2673
2899
  TokenRequestDto: {
2674
2900
  /** @description Client identifier. Required for public clients; confidential clients may instead use HTTP Basic. */
2675
2901
  client_id?: string;
@@ -2694,29 +2920,26 @@ interface components {
2694
2920
  scope?: string;
2695
2921
  };
2696
2922
  TokenResponseDto: {
2697
- /** @description Signed JWT, audience-bound to the resource indicator and carrying the workspace, the preset name and the client id. It carries no policy — authority is resolved per request from the grant row and the human’s live policy. */
2923
+ /**
2924
+ * @description Access token (JWT)
2925
+ * @example eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
2926
+ */
2698
2927
  access_token: string;
2699
2928
  /**
2700
- * @description Seconds until the access token expires (≤ 900).
2701
- * @example 900
2929
+ * @description Access token TTL in seconds
2930
+ * @example 3600
2702
2931
  */
2703
2932
  expires_in: number;
2704
- /** @description The policy this token carries. Effective authority is this intersected with the authorizing human's current workspace policy, re-evaluated on every call. */
2705
- policy: components["schemas"]["PolicyStatementDto"][];
2706
- /** @description Rotating refresh token. The one presented is consumed; replaying it revokes the whole grant family. */
2707
- refresh_token: string;
2708
2933
  /**
2709
- * @description Preset name(s) the grant started from. Present for RFC 6749 §5.1 compliance; it is not the authority — `policy` is.
2710
- * @example mail
2934
+ * @description Refresh token (JWT)
2935
+ * @example eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
2711
2936
  */
2712
- scope: string;
2713
- /** @example Bearer */
2714
- token_type: string;
2937
+ refresh_token?: string;
2715
2938
  /**
2716
- * Format: uuid
2717
- * @description Workspace the grant is scoped to.
2939
+ * @description Token type
2940
+ * @example Bearer
2718
2941
  */
2719
- workspace_id: string;
2942
+ token_type: string;
2720
2943
  };
2721
2944
  UpdateMemberRoleDto: {
2722
2945
  /**
@@ -2731,21 +2954,41 @@ interface components {
2731
2954
  role_id?: string;
2732
2955
  };
2733
2956
  UpdateMemberRoleResponseDto: {
2734
- /** Format: uuid */
2957
+ /**
2958
+ * Format: uuid
2959
+ * @description Id of the member's account.
2960
+ */
2735
2961
  account_id: string;
2736
- /** Format: uuid */
2962
+ /**
2963
+ * Format: uuid
2964
+ * @description Id of the membership.
2965
+ */
2737
2966
  id: string;
2738
- /** Format: uuid */
2967
+ /**
2968
+ * Format: uuid
2969
+ * @description Account id of the member who invited them, when they joined by invite.
2970
+ */
2739
2971
  invited_by: string | null;
2740
- /** Format: date-time */
2972
+ /**
2973
+ * Format: date-time
2974
+ * @description When the member joined the workspace.
2975
+ */
2741
2976
  joined_at: string;
2742
- /** Format: uuid */
2977
+ /**
2978
+ * Format: uuid
2979
+ * @description Id of the member's new role.
2980
+ */
2743
2981
  role_id: string;
2744
- /** Format: uuid */
2982
+ /**
2983
+ * Format: uuid
2984
+ * @description Id of the workspace.
2985
+ */
2745
2986
  workspace_id: string;
2746
2987
  };
2747
2988
  UpdatePakDto: {
2989
+ /** @description New description of the key, or `null` to clear it. */
2748
2990
  description?: string | null;
2991
+ /** @description New name of the key. */
2749
2992
  name?: string;
2750
2993
  };
2751
2994
  UpdateProfileDto: {
@@ -2753,9 +2996,12 @@ interface components {
2753
2996
  display_name?: string;
2754
2997
  };
2755
2998
  UpdateWorkspaceDto: {
2999
+ /** @description New display name of the workspace. */
2756
3000
  display_name?: string;
2757
3001
  /** @description Free-form workspace settings blob. */
2758
- settings?: Record<string, never>;
3002
+ settings?: {
3003
+ [key: string]: unknown;
3004
+ };
2759
3005
  /**
2760
3006
  * @description New URL-friendly slug. Same constraints as the create form. Renames are broadcast on the workspace events queue so denormalised consumers (waitlist-api, future product surfaces) can sync. Old URLs continue to resolve for one rename cycle.
2761
3007
  * @example acme
@@ -2791,7 +3037,9 @@ interface components {
2791
3037
  policy?: components["schemas"]["PolicyStatementDto"][];
2792
3038
  };
2793
3039
  UpdateWorkspaceRoleDto: {
3040
+ /** @description New description of the role. */
2794
3041
  description?: string;
3042
+ /** @description New name of the role. */
2795
3043
  name?: string;
2796
3044
  /** @description Replaces the role policy if provided. Omit to leave policy unchanged. */
2797
3045
  policy?: components["schemas"]["PolicyStatementDto"][];
@@ -2820,83 +3068,162 @@ interface components {
2820
3068
  /**
2821
3069
  * @description Actor classification.
2822
3070
  * @example platform_user
2823
- * @enum {string}
2824
3071
  */
2825
- actor_type: "platform_user" | "system" | "pat";
2826
- /** Format: date-time */
3072
+ actor_type: components["schemas"]["AuditActorType"];
3073
+ /**
3074
+ * Format: date-time
3075
+ * @description When the action happened.
3076
+ */
2827
3077
  created_at: string;
2828
- /** Format: uuid */
3078
+ /**
3079
+ * Format: uuid
3080
+ * @description Id of the entry.
3081
+ */
2829
3082
  id: string;
2830
3083
  /** @description Originating request IP, when available. */
2831
3084
  ip: string | null;
2832
3085
  /** @description Free-form metadata attached to the audit row (jsonb). */
2833
- metadata: Record<string, never>;
3086
+ metadata: {
3087
+ [key: string]: unknown;
3088
+ };
2834
3089
  /**
2835
3090
  * @description Resource type the action targeted.
2836
3091
  * @example workspace_membership
2837
3092
  */
2838
3093
  resource: string;
2839
- /** Format: uuid */
3094
+ /**
3095
+ * Format: uuid
3096
+ * @description Id of the resource the action touched, when it has one.
3097
+ */
2840
3098
  resource_id: string | null;
2841
- /** Format: uuid */
3099
+ /**
3100
+ * Format: uuid
3101
+ * @description Id of the workspace.
3102
+ */
2842
3103
  workspace_id: string;
2843
3104
  };
2844
3105
  WorkspaceAvatarUrlResponseDto: {
3106
+ /** @description URL of the uploaded avatar image. */
2845
3107
  avatar_url: string;
2846
3108
  };
2847
3109
  WorkspaceInviteListItemDto: {
2848
3110
  /** @description Single-use invite code embedded in the invite URL. */
2849
3111
  code: string;
2850
- /** Format: date-time */
3112
+ /**
3113
+ * Format: date-time
3114
+ * @description When the invite was created.
3115
+ */
2851
3116
  created_at: string;
2852
- /** Format: uuid */
3117
+ /**
3118
+ * Format: uuid
3119
+ * @description Account id of the member who created the invite.
3120
+ */
2853
3121
  created_by: string;
2854
- /** Format: email */
3122
+ /**
3123
+ * Format: email
3124
+ * @description Email the invite is restricted to, or `null` for an open invite link.
3125
+ */
2855
3126
  email: string | null;
2856
- /** Format: date-time */
3127
+ /**
3128
+ * Format: date-time
3129
+ * @description When the invite stops working, or `null` if it never expires.
3130
+ */
2857
3131
  expires_at: string | null;
2858
- /** Format: uuid */
3132
+ /**
3133
+ * Format: uuid
3134
+ * @description Id of the invite.
3135
+ */
2859
3136
  id: string;
3137
+ /** @description How many times the invite can be accepted, or `null` for unlimited. */
2860
3138
  max_uses: number | null;
2861
- /** Format: date-time */
3139
+ /**
3140
+ * Format: date-time
3141
+ * @description When the invite was revoked, or `null` while it is live.
3142
+ */
2862
3143
  revoked_at: string | null;
2863
- /** Format: uuid */
3144
+ /**
3145
+ * Format: uuid
3146
+ * @description Id of the role the invitee gets, or `null` for the default member role.
3147
+ */
2864
3148
  role_id: string | null;
3149
+ /** @description Name of the role the invitee gets, or `null` for the default member role. */
2865
3150
  role_name: string | null;
3151
+ /** @description How many times the invite has been accepted. */
2866
3152
  use_count: number;
2867
- /** Format: uuid */
3153
+ /**
3154
+ * Format: uuid
3155
+ * @description Id of the workspace the invite joins.
3156
+ */
2868
3157
  workspace_id: string;
2869
3158
  };
2870
3159
  WorkspaceInviteResponseDto: {
2871
3160
  /** @description Single-use invite code embedded in the invite URL. */
2872
3161
  code: string;
2873
- /** Format: date-time */
3162
+ /**
3163
+ * Format: date-time
3164
+ * @description When the invite was created.
3165
+ */
2874
3166
  created_at: string;
2875
- /** Format: uuid */
3167
+ /**
3168
+ * Format: uuid
3169
+ * @description Account id of the member who created the invite.
3170
+ */
2876
3171
  created_by: string;
2877
- /** Format: email */
3172
+ /**
3173
+ * Format: email
3174
+ * @description Email the invite is restricted to, or `null` for an open invite link.
3175
+ */
2878
3176
  email: string | null;
2879
- /** Format: date-time */
3177
+ /**
3178
+ * Format: date-time
3179
+ * @description When the invite stops working, or `null` if it never expires.
3180
+ */
2880
3181
  expires_at: string | null;
2881
- /** Format: uuid */
3182
+ /**
3183
+ * Format: uuid
3184
+ * @description Id of the invite.
3185
+ */
2882
3186
  id: string;
3187
+ /** @description How many times the invite can be accepted, or `null` for unlimited. */
2883
3188
  max_uses: number | null;
2884
- /** Format: date-time */
3189
+ /**
3190
+ * Format: date-time
3191
+ * @description When the invite was revoked, or `null` while it is live.
3192
+ */
2885
3193
  revoked_at: string | null;
2886
- /** Format: uuid */
3194
+ /**
3195
+ * Format: uuid
3196
+ * @description Id of the role the invitee gets, or `null` for the default member role.
3197
+ */
2887
3198
  role_id: string | null;
3199
+ /** @description How many times the invite has been accepted. */
2888
3200
  use_count: number;
2889
- /** Format: uuid */
3201
+ /**
3202
+ * Format: uuid
3203
+ * @description Id of the workspace the invite joins.
3204
+ */
2890
3205
  workspace_id: string;
2891
3206
  };
2892
3207
  WorkspaceListItemDto: {
2893
- /** Format: date-time */
3208
+ /**
3209
+ * Format: date-time
3210
+ * @description When the workspace was created.
3211
+ */
2894
3212
  created_at: string;
2895
- /** Format: uuid */
3213
+ /**
3214
+ * Format: uuid
3215
+ * @description Account id of the member who created the workspace.
3216
+ */
2896
3217
  created_by: string;
2897
- /** @example Acme Corp */
3218
+ /**
3219
+ * @description Display name of the workspace.
3220
+ * @example Acme Corp
3221
+ */
2898
3222
  display_name: string;
2899
- /** Format: uuid */
3223
+ /**
3224
+ * Format: uuid
3225
+ * @description Id of the workspace.
3226
+ */
2900
3227
  id: string;
2901
3228
  /**
2902
3229
  * @description Caller’s role name in this workspace.
@@ -2909,58 +3236,107 @@ interface components {
2909
3236
  */
2910
3237
  member_role_id: string | null;
2911
3238
  /** @description Free-form workspace settings blob. */
2912
- settings: Record<string, never>;
2913
- /** @example acme-corp */
3239
+ settings: {
3240
+ [key: string]: unknown;
3241
+ };
3242
+ /**
3243
+ * @description Unique URL-friendly slug; platform routes take it positionally.
3244
+ * @example acme-corp
3245
+ */
2914
3246
  slug: string;
2915
3247
  /**
2916
3248
  * @description Workspace status (e.g. `active`).
2917
3249
  * @example active
2918
3250
  */
2919
3251
  status: string;
2920
- /** Format: date-time */
3252
+ /**
3253
+ * Format: date-time
3254
+ * @description When the workspace was last changed.
3255
+ */
2921
3256
  updated_at: string;
2922
3257
  };
2923
3258
  WorkspaceMemberResponseDto: {
2924
- /** Format: uuid */
3259
+ /**
3260
+ * Format: uuid
3261
+ * @description Id of the member's account.
3262
+ */
2925
3263
  account_id: string;
2926
3264
  /** @description Presigned URL for the member's uploaded avatar, or null when they have none. Short-lived — mint a fresh one by re-reading this endpoint rather than caching the URL. */
2927
3265
  avatar_url: string | null;
3266
+ /** @description The member's display name, when set. */
2928
3267
  display_name: string | null;
2929
- /** Format: uuid */
3268
+ /**
3269
+ * Format: uuid
3270
+ * @description Id of the membership.
3271
+ */
2930
3272
  id: string;
2931
- /** Format: date-time */
3273
+ /**
3274
+ * Format: date-time
3275
+ * @description When the member joined the workspace.
3276
+ */
2932
3277
  joined_at: string;
3278
+ /** @description The member's primary email, when it has one. */
2933
3279
  primary_email: string | null;
3280
+ /** @description Name of the member's role. */
2934
3281
  role: string;
2935
- /** Format: uuid */
3282
+ /**
3283
+ * Format: uuid
3284
+ * @description Id of the member's role in this workspace.
3285
+ */
2936
3286
  role_id: string;
3287
+ /** @description Whether the role is a system role (`owner`, `admin`, `member`) rather than a custom one. */
2937
3288
  role_is_system: boolean;
3289
+ /** @description The member's username. */
2938
3290
  username: string;
2939
3291
  };
2940
3292
  WorkspaceResponseDto: {
2941
- /** Format: date-time */
3293
+ /**
3294
+ * Format: date-time
3295
+ * @description When the workspace was created.
3296
+ */
2942
3297
  created_at: string;
2943
- /** Format: uuid */
3298
+ /**
3299
+ * Format: uuid
3300
+ * @description Account id of the member who created the workspace.
3301
+ */
2944
3302
  created_by: string;
2945
- /** @example Acme Corp */
3303
+ /**
3304
+ * @description Display name of the workspace.
3305
+ * @example Acme Corp
3306
+ */
2946
3307
  display_name: string;
2947
- /** Format: uuid */
3308
+ /**
3309
+ * Format: uuid
3310
+ * @description Id of the workspace.
3311
+ */
2948
3312
  id: string;
2949
3313
  /** @description Free-form workspace settings blob. */
2950
- settings: Record<string, never>;
2951
- /** @example acme-corp */
3314
+ settings: {
3315
+ [key: string]: unknown;
3316
+ };
3317
+ /**
3318
+ * @description Unique URL-friendly slug; platform routes take it positionally.
3319
+ * @example acme-corp
3320
+ */
2952
3321
  slug: string;
2953
3322
  /**
2954
3323
  * @description Workspace status (e.g. `active`).
2955
3324
  * @example active
2956
3325
  */
2957
3326
  status: string;
2958
- /** Format: date-time */
3327
+ /**
3328
+ * Format: date-time
3329
+ * @description When the workspace was last changed.
3330
+ */
2959
3331
  updated_at: string;
2960
3332
  };
2961
3333
  WorkspaceRoleResponseDto: {
3334
+ /** @description What the role is for, when set. */
2962
3335
  description: string | null;
2963
- /** Format: uuid */
3336
+ /**
3337
+ * Format: uuid
3338
+ * @description Id of the role.
3339
+ */
2964
3340
  id: string;
2965
3341
  /** @description True for built-in system roles (owner/admin/member); false for custom roles. */
2966
3342
  is_system: boolean;
@@ -2975,14 +3351,27 @@ interface components {
2975
3351
  policy_id: string | null;
2976
3352
  };
2977
3353
  WorkspaceServiceStateDto: {
2978
- /** Format: date-time */
3354
+ /**
3355
+ * Format: date-time
3356
+ * @description When the service was last turned off, or `null`.
3357
+ */
2979
3358
  disabled_at: string | null;
2980
- /** Format: uuid */
3359
+ /**
3360
+ * Format: uuid
3361
+ * @description Account id of who last turned it off, or `null`.
3362
+ */
2981
3363
  disabled_by: string | null;
3364
+ /** @description Whether the service is on for the workspace. */
2982
3365
  enabled: boolean;
2983
- /** Format: date-time */
3366
+ /**
3367
+ * Format: date-time
3368
+ * @description When the service was last turned on, or `null` if never.
3369
+ */
2984
3370
  enabled_at: string | null;
2985
- /** Format: uuid */
3371
+ /**
3372
+ * Format: uuid
3373
+ * @description Account id of who last turned it on, or `null`.
3374
+ */
2986
3375
  enabled_by: string | null;
2987
3376
  /**
2988
3377
  * @description Service identifier (e.g. `mail`, `waitlist`, `social`, `auth`).
@@ -2990,8 +3379,13 @@ interface components {
2990
3379
  */
2991
3380
  service: string;
2992
3381
  /** @description Per-service settings blob (service-specific shape). */
2993
- settings: Record<string, never>;
2994
- /** Format: uuid */
3382
+ settings: {
3383
+ [key: string]: unknown;
3384
+ };
3385
+ /**
3386
+ * Format: uuid
3387
+ * @description Id of the workspace.
3388
+ */
2995
3389
  workspace_id: string;
2996
3390
  };
2997
3391
  WorkspaceStatsDto: {
@@ -3016,9 +3410,8 @@ interface components {
3016
3410
  /**
3017
3411
  * @description Window the counts cover.
3018
3412
  * @example 30d
3019
- * @enum {string}
3020
3413
  */
3021
- window: "1d" | "7d" | "30d";
3414
+ window: components["schemas"]["StatsWindow"];
3022
3415
  };
3023
3416
  WorkspaceStatsInWindowDto: {
3024
3417
  /**
@@ -3037,15 +3430,13 @@ interface components {
3037
3430
  /**
3038
3431
  * @description Bucket width.
3039
3432
  * @example day
3040
- * @enum {string}
3041
3433
  */
3042
- granularity: "day";
3434
+ granularity: components["schemas"]["StatsGranularity"];
3043
3435
  /**
3044
3436
  * @description Admin-change audit events per UTC day of `created_at` (same rows as `in_window.audit_events`: reads, sign-ins and MCP tool-call rows excluded).
3045
3437
  * @example audit_events
3046
- * @enum {string}
3047
3438
  */
3048
- metric: "audit_events";
3439
+ metric: components["schemas"]["StatsMetric"];
3049
3440
  /** @description Dense and zero-filled: one point per UTC day in the window, oldest first, ending today. */
3050
3441
  points: components["schemas"]["StatsSeriesPointDto"][];
3051
3442
  };
@@ -3090,6 +3481,18 @@ interface operations {
3090
3481
  "application/json": components["schemas"]["JwksResponseDto"];
3091
3482
  };
3092
3483
  };
3484
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
3485
+ 429: {
3486
+ headers: {
3487
+ /** @description Seconds to wait before retrying (the window, 60). */
3488
+ "Retry-After"?: number;
3489
+ "X-Request-Id": components["headers"]["RequestId"];
3490
+ [name: string]: unknown;
3491
+ };
3492
+ content: {
3493
+ "application/json": components["schemas"]["ErrorResponseDto"];
3494
+ };
3495
+ };
3093
3496
  };
3094
3497
  };
3095
3498
  AuthorizationServerMetadataController_metadata: {
@@ -3110,6 +3513,18 @@ interface operations {
3110
3513
  "application/json": components["schemas"]["AuthorizationServerMetadataDto"];
3111
3514
  };
3112
3515
  };
3516
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
3517
+ 429: {
3518
+ headers: {
3519
+ /** @description Seconds to wait before retrying (the window, 60). */
3520
+ "Retry-After"?: number;
3521
+ "X-Request-Id": components["headers"]["RequestId"];
3522
+ [name: string]: unknown;
3523
+ };
3524
+ content: {
3525
+ "application/json": components["schemas"]["ErrorResponseDto"];
3526
+ };
3527
+ };
3113
3528
  };
3114
3529
  };
3115
3530
  AccountController_deleteAccount: {
@@ -3159,6 +3574,18 @@ interface operations {
3159
3574
  "application/json": components["schemas"]["ErrorResponseDto"];
3160
3575
  };
3161
3576
  };
3577
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
3578
+ 429: {
3579
+ headers: {
3580
+ /** @description Seconds to wait before retrying (the window, 60). */
3581
+ "Retry-After"?: number;
3582
+ "X-Request-Id": components["headers"]["RequestId"];
3583
+ [name: string]: unknown;
3584
+ };
3585
+ content: {
3586
+ "application/json": components["schemas"]["ErrorResponseDto"];
3587
+ };
3588
+ };
3162
3589
  };
3163
3590
  };
3164
3591
  ApiKeySelfController_self: {
@@ -3209,6 +3636,18 @@ interface operations {
3209
3636
  "application/json": components["schemas"]["ErrorResponseDto"];
3210
3637
  };
3211
3638
  };
3639
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
3640
+ 429: {
3641
+ headers: {
3642
+ /** @description Seconds to wait before retrying (the window, 60). */
3643
+ "Retry-After"?: number;
3644
+ "X-Request-Id": components["headers"]["RequestId"];
3645
+ [name: string]: unknown;
3646
+ };
3647
+ content: {
3648
+ "application/json": components["schemas"]["ErrorResponseDto"];
3649
+ };
3650
+ };
3212
3651
  };
3213
3652
  };
3214
3653
  AuthenticationController_logout: {
@@ -3242,6 +3681,18 @@ interface operations {
3242
3681
  "application/json": components["schemas"]["ErrorResponseDto"];
3243
3682
  };
3244
3683
  };
3684
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
3685
+ 429: {
3686
+ headers: {
3687
+ /** @description Seconds to wait before retrying (the window, 60). */
3688
+ "Retry-After"?: number;
3689
+ "X-Request-Id": components["headers"]["RequestId"];
3690
+ [name: string]: unknown;
3691
+ };
3692
+ content: {
3693
+ "application/json": components["schemas"]["ErrorResponseDto"];
3694
+ };
3695
+ };
3245
3696
  };
3246
3697
  };
3247
3698
  AuthenticationController_logoutCurrent: {
@@ -3271,6 +3722,18 @@ interface operations {
3271
3722
  "application/json": components["schemas"]["ErrorResponseDto"];
3272
3723
  };
3273
3724
  };
3725
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
3726
+ 429: {
3727
+ headers: {
3728
+ /** @description Seconds to wait before retrying (the window, 60). */
3729
+ "Retry-After"?: number;
3730
+ "X-Request-Id": components["headers"]["RequestId"];
3731
+ [name: string]: unknown;
3732
+ };
3733
+ content: {
3734
+ "application/json": components["schemas"]["ErrorResponseDto"];
3735
+ };
3736
+ };
3274
3737
  };
3275
3738
  };
3276
3739
  OAuthController_callback: {
@@ -3278,6 +3741,10 @@ interface operations {
3278
3741
  query?: never;
3279
3742
  header?: never;
3280
3743
  path: {
3744
+ /**
3745
+ * @description The sign-in provider: `google`, `github` or `apple`.
3746
+ * @example google
3747
+ */
3281
3748
  provider: "apple" | "google" | "github";
3282
3749
  };
3283
3750
  cookie?: never;
@@ -3317,6 +3784,18 @@ interface operations {
3317
3784
  "application/json": components["schemas"]["ErrorResponseDto"];
3318
3785
  };
3319
3786
  };
3787
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
3788
+ 429: {
3789
+ headers: {
3790
+ /** @description Seconds to wait before retrying (the window, 60). */
3791
+ "Retry-After"?: number;
3792
+ "X-Request-Id": components["headers"]["RequestId"];
3793
+ [name: string]: unknown;
3794
+ };
3795
+ content: {
3796
+ "application/json": components["schemas"]["ErrorResponseDto"];
3797
+ };
3798
+ };
3320
3799
  };
3321
3800
  };
3322
3801
  OAuthController_start: {
@@ -3327,7 +3806,10 @@ interface operations {
3327
3806
  };
3328
3807
  header?: never;
3329
3808
  path: {
3330
- /** @description OAuth provider id. Providers are gated on env-var configuration; unconfigured providers 400 with UNKNOWN_OAUTH_PROVIDER. */
3809
+ /**
3810
+ * @description OAuth provider id. Providers are gated on env-var configuration; unconfigured providers 400 with UNKNOWN_OAUTH_PROVIDER.
3811
+ * @example google
3812
+ */
3331
3813
  provider: "apple" | "google" | "github";
3332
3814
  };
3333
3815
  cookie?: never;
@@ -3352,6 +3834,18 @@ interface operations {
3352
3834
  "application/json": components["schemas"]["ErrorResponseDto"];
3353
3835
  };
3354
3836
  };
3837
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
3838
+ 429: {
3839
+ headers: {
3840
+ /** @description Seconds to wait before retrying (the window, 60). */
3841
+ "Retry-After"?: number;
3842
+ "X-Request-Id": components["headers"]["RequestId"];
3843
+ [name: string]: unknown;
3844
+ };
3845
+ content: {
3846
+ "application/json": components["schemas"]["ErrorResponseDto"];
3847
+ };
3848
+ };
3355
3849
  };
3356
3850
  };
3357
3851
  PasswordController_requestPasswordReset: {
@@ -3385,9 +3879,11 @@ interface operations {
3385
3879
  "application/json": components["schemas"]["ErrorResponseDto"];
3386
3880
  };
3387
3881
  };
3388
- /** @description Rate limited: more than 10 requests/min from this IP (strict `auth` bucket). `Retry-After` header set. */
3882
+ /** @description Rate limited: more than 10 requests/min from this IP (strict `auth` bucket). `Retry-After` header set. Per-IP limit: rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
3389
3883
  429: {
3390
3884
  headers: {
3885
+ /** @description Seconds to wait before retrying (the window, 60). */
3886
+ "Retry-After"?: number;
3391
3887
  "X-Request-Id": components["headers"]["RequestId"];
3392
3888
  [name: string]: unknown;
3393
3889
  };
@@ -3428,9 +3924,11 @@ interface operations {
3428
3924
  "application/json": components["schemas"]["ErrorResponseDto"];
3429
3925
  };
3430
3926
  };
3431
- /** @description Rate limited: more than 10 requests/min from this IP (strict `auth` bucket). `Retry-After` header set. */
3927
+ /** @description Rate limited: more than 10 requests/min from this IP (strict `auth` bucket). `Retry-After` header set. Per-IP limit: rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
3432
3928
  429: {
3433
3929
  headers: {
3930
+ /** @description Seconds to wait before retrying (the window, 60). */
3931
+ "Retry-After"?: number;
3434
3932
  "X-Request-Id": components["headers"]["RequestId"];
3435
3933
  [name: string]: unknown;
3436
3934
  };
@@ -3473,6 +3971,18 @@ interface operations {
3473
3971
  "application/json": components["schemas"]["ErrorResponseDto"];
3474
3972
  };
3475
3973
  };
3974
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
3975
+ 429: {
3976
+ headers: {
3977
+ /** @description Seconds to wait before retrying (the window, 60). */
3978
+ "Retry-After"?: number;
3979
+ "X-Request-Id": components["headers"]["RequestId"];
3980
+ [name: string]: unknown;
3981
+ };
3982
+ content: {
3983
+ "application/json": components["schemas"]["ErrorResponseDto"];
3984
+ };
3985
+ };
3476
3986
  };
3477
3987
  };
3478
3988
  AuthenticationController_signin: {
@@ -3528,9 +4038,11 @@ interface operations {
3528
4038
  "application/json": components["schemas"]["ErrorResponseDto"];
3529
4039
  };
3530
4040
  };
3531
- /** @description Too many attempts for this identifier (`TOO_MANY_ATTEMPTS`). Two counters produce it, both keyed purely by the submitted identifier: a burst limit of 5 attempts per minute, and a 15-minute lock after 4 failed attempts. Both fire on the same attempt for a registered and an unregistered identifier. */
4041
+ /** @description Too many attempts for this identifier (`TOO_MANY_ATTEMPTS`). Two counters produce it, both keyed purely by the submitted identifier: a burst limit of 5 attempts per minute, and a 15-minute lock after 4 failed attempts. Both fire on the same attempt for a registered and an unregistered identifier. Per-IP limit: rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
3532
4042
  429: {
3533
4043
  headers: {
4044
+ /** @description Seconds to wait before retrying (the window, 60). */
4045
+ "Retry-After"?: number;
3534
4046
  "X-Request-Id": components["headers"]["RequestId"];
3535
4047
  [name: string]: unknown;
3536
4048
  };
@@ -3573,6 +4085,18 @@ interface operations {
3573
4085
  "application/json": components["schemas"]["ErrorResponseDto"];
3574
4086
  };
3575
4087
  };
4088
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
4089
+ 429: {
4090
+ headers: {
4091
+ /** @description Seconds to wait before retrying (the window, 60). */
4092
+ "Retry-After"?: number;
4093
+ "X-Request-Id": components["headers"]["RequestId"];
4094
+ [name: string]: unknown;
4095
+ };
4096
+ content: {
4097
+ "application/json": components["schemas"]["ErrorResponseDto"];
4098
+ };
4099
+ };
3576
4100
  };
3577
4101
  };
3578
4102
  IntrospectController_introspect: {
@@ -3593,9 +4117,11 @@ interface operations {
3593
4117
  "application/json": components["schemas"]["IntrospectResponseDto"];
3594
4118
  };
3595
4119
  };
3596
- /** @description Rate limited: more than 60 requests/min from this IP (default bucket). Anonymous callers, and callers whose session has been signed out, otherwise get 200 with `is_authenticated: false`, never 401. */
4120
+ /** @description Rate limited: more than 60 requests/min from this IP (default bucket). Anonymous callers, and callers whose session has been signed out, otherwise get 200 with `is_authenticated: false`, never 401. Per-IP limit: rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
3597
4121
  429: {
3598
4122
  headers: {
4123
+ /** @description Seconds to wait before retrying (the window, 60). */
4124
+ "Retry-After"?: number;
3599
4125
  "X-Request-Id": components["headers"]["RequestId"];
3600
4126
  [name: string]: unknown;
3601
4127
  };
@@ -3608,9 +4134,7 @@ interface operations {
3608
4134
  IntrospectController_introspectApiKey: {
3609
4135
  parameters: {
3610
4136
  query?: never;
3611
- header: {
3612
- authorization: string;
3613
- };
4137
+ header?: never;
3614
4138
  path?: never;
3615
4139
  cookie?: never;
3616
4140
  };
@@ -3635,6 +4159,18 @@ interface operations {
3635
4159
  "application/json": components["schemas"]["ErrorResponseDto"];
3636
4160
  };
3637
4161
  };
4162
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
4163
+ 429: {
4164
+ headers: {
4165
+ /** @description Seconds to wait before retrying (the window, 60). */
4166
+ "Retry-After"?: number;
4167
+ "X-Request-Id": components["headers"]["RequestId"];
4168
+ [name: string]: unknown;
4169
+ };
4170
+ content: {
4171
+ "application/json": components["schemas"]["ErrorResponseDto"];
4172
+ };
4173
+ };
3638
4174
  };
3639
4175
  };
3640
4176
  IntrospectController_introspectWorkspace: {
@@ -3642,6 +4178,10 @@ interface operations {
3642
4178
  query?: never;
3643
4179
  header?: never;
3644
4180
  path: {
4181
+ /**
4182
+ * @description Id of the workspace.
4183
+ * @example 3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f
4184
+ */
3645
4185
  workspace_id: string;
3646
4186
  };
3647
4187
  cookie?: never;
@@ -3677,6 +4217,18 @@ interface operations {
3677
4217
  "application/json": components["schemas"]["ErrorResponseDto"];
3678
4218
  };
3679
4219
  };
4220
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
4221
+ 429: {
4222
+ headers: {
4223
+ /** @description Seconds to wait before retrying (the window, 60). */
4224
+ "Retry-After"?: number;
4225
+ "X-Request-Id": components["headers"]["RequestId"];
4226
+ [name: string]: unknown;
4227
+ };
4228
+ content: {
4229
+ "application/json": components["schemas"]["ErrorResponseDto"];
4230
+ };
4231
+ };
3680
4232
  };
3681
4233
  };
3682
4234
  MeController_getMe: {
@@ -3717,6 +4269,18 @@ interface operations {
3717
4269
  "application/json": components["schemas"]["ErrorResponseDto"];
3718
4270
  };
3719
4271
  };
4272
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
4273
+ 429: {
4274
+ headers: {
4275
+ /** @description Seconds to wait before retrying (the window, 60). */
4276
+ "Retry-After"?: number;
4277
+ "X-Request-Id": components["headers"]["RequestId"];
4278
+ [name: string]: unknown;
4279
+ };
4280
+ content: {
4281
+ "application/json": components["schemas"]["ErrorResponseDto"];
4282
+ };
4283
+ };
3720
4284
  };
3721
4285
  };
3722
4286
  MeController_setAvatar: {
@@ -3767,6 +4331,18 @@ interface operations {
3767
4331
  "application/json": components["schemas"]["ErrorResponseDto"];
3768
4332
  };
3769
4333
  };
4334
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
4335
+ 429: {
4336
+ headers: {
4337
+ /** @description Seconds to wait before retrying (the window, 60). */
4338
+ "Retry-After"?: number;
4339
+ "X-Request-Id": components["headers"]["RequestId"];
4340
+ [name: string]: unknown;
4341
+ };
4342
+ content: {
4343
+ "application/json": components["schemas"]["ErrorResponseDto"];
4344
+ };
4345
+ };
3770
4346
  };
3771
4347
  };
3772
4348
  MeController_removeAvatar: {
@@ -3796,6 +4372,18 @@ interface operations {
3796
4372
  "application/json": components["schemas"]["ErrorResponseDto"];
3797
4373
  };
3798
4374
  };
4375
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
4376
+ 429: {
4377
+ headers: {
4378
+ /** @description Seconds to wait before retrying (the window, 60). */
4379
+ "Retry-After"?: number;
4380
+ "X-Request-Id": components["headers"]["RequestId"];
4381
+ [name: string]: unknown;
4382
+ };
4383
+ content: {
4384
+ "application/json": components["schemas"]["ErrorResponseDto"];
4385
+ };
4386
+ };
3799
4387
  };
3800
4388
  };
3801
4389
  HiddenGuidesController_list: {
@@ -3836,6 +4424,18 @@ interface operations {
3836
4424
  "application/json": components["schemas"]["ErrorResponseDto"];
3837
4425
  };
3838
4426
  };
4427
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
4428
+ 429: {
4429
+ headers: {
4430
+ /** @description Seconds to wait before retrying (the window, 60). */
4431
+ "Retry-After"?: number;
4432
+ "X-Request-Id": components["headers"]["RequestId"];
4433
+ [name: string]: unknown;
4434
+ };
4435
+ content: {
4436
+ "application/json": components["schemas"]["ErrorResponseDto"];
4437
+ };
4438
+ };
3839
4439
  };
3840
4440
  };
3841
4441
  HiddenGuidesController_showAll: {
@@ -3875,6 +4475,18 @@ interface operations {
3875
4475
  "application/json": components["schemas"]["ErrorResponseDto"];
3876
4476
  };
3877
4477
  };
4478
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
4479
+ 429: {
4480
+ headers: {
4481
+ /** @description Seconds to wait before retrying (the window, 60). */
4482
+ "Retry-After"?: number;
4483
+ "X-Request-Id": components["headers"]["RequestId"];
4484
+ [name: string]: unknown;
4485
+ };
4486
+ content: {
4487
+ "application/json": components["schemas"]["ErrorResponseDto"];
4488
+ };
4489
+ };
3878
4490
  };
3879
4491
  };
3880
4492
  HiddenGuidesController_hide: {
@@ -3882,7 +4494,10 @@ interface operations {
3882
4494
  query?: never;
3883
4495
  header?: never;
3884
4496
  path: {
3885
- /** @description The guide: a surface name, optionally followed by `:` and a resource id, e.g. `dashboard:<workspace id>` or `all`. */
4497
+ /**
4498
+ * @description The guide: a surface name, optionally followed by `:` and a resource id, e.g. `dashboard:<workspace id>` or `all`.
4499
+ * @example dashboard
4500
+ */
3886
4501
  key: string;
3887
4502
  };
3888
4503
  cookie?: never;
@@ -3929,6 +4544,18 @@ interface operations {
3929
4544
  "application/json": components["schemas"]["ErrorResponseDto"];
3930
4545
  };
3931
4546
  };
4547
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
4548
+ 429: {
4549
+ headers: {
4550
+ /** @description Seconds to wait before retrying (the window, 60). */
4551
+ "Retry-After"?: number;
4552
+ "X-Request-Id": components["headers"]["RequestId"];
4553
+ [name: string]: unknown;
4554
+ };
4555
+ content: {
4556
+ "application/json": components["schemas"]["ErrorResponseDto"];
4557
+ };
4558
+ };
3932
4559
  };
3933
4560
  };
3934
4561
  HiddenGuidesController_show: {
@@ -3936,7 +4563,10 @@ interface operations {
3936
4563
  query?: never;
3937
4564
  header?: never;
3938
4565
  path: {
3939
- /** @description The guide: a surface name, optionally followed by `:` and a resource id, e.g. `dashboard:<workspace id>` or `all`. */
4566
+ /**
4567
+ * @description The guide: a surface name, optionally followed by `:` and a resource id, e.g. `dashboard:<workspace id>` or `all`.
4568
+ * @example dashboard
4569
+ */
3940
4570
  key: string;
3941
4571
  };
3942
4572
  cookie?: never;
@@ -3981,6 +4611,18 @@ interface operations {
3981
4611
  "application/json": components["schemas"]["ErrorResponseDto"];
3982
4612
  };
3983
4613
  };
4614
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
4615
+ 429: {
4616
+ headers: {
4617
+ /** @description Seconds to wait before retrying (the window, 60). */
4618
+ "Retry-After"?: number;
4619
+ "X-Request-Id": components["headers"]["RequestId"];
4620
+ [name: string]: unknown;
4621
+ };
4622
+ content: {
4623
+ "application/json": components["schemas"]["ErrorResponseDto"];
4624
+ };
4625
+ };
3984
4626
  };
3985
4627
  };
3986
4628
  MeController_updateProfile: {
@@ -4035,22 +4677,42 @@ interface operations {
4035
4677
  "application/json": components["schemas"]["ErrorResponseDto"];
4036
4678
  };
4037
4679
  };
4680
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
4681
+ 429: {
4682
+ headers: {
4683
+ /** @description Seconds to wait before retrying (the window, 60). */
4684
+ "Retry-After"?: number;
4685
+ "X-Request-Id": components["headers"]["RequestId"];
4686
+ [name: string]: unknown;
4687
+ };
4688
+ content: {
4689
+ "application/json": components["schemas"]["ErrorResponseDto"];
4690
+ };
4691
+ };
4038
4692
  };
4039
4693
  };
4040
4694
  OAuthAuthorizeController_authorize: {
4041
4695
  parameters: {
4042
4696
  query: {
4043
- /** @description Comma-separated products to pre-select on the consent screen (`auth`, `mail`, `waitlist`, `social`, `trawl`). A pre-selection only: the human decides. Unknown names are ignored. */
4697
+ /**
4698
+ * @description Comma-separated products to pre-select on the consent screen (`auth`, `mail`, `waitlist`, `social`, `trawl`). A pre-selection only: the human decides. Unknown names are ignored.
4699
+ * @example mail,waitlist
4700
+ */
4044
4701
  products?: unknown;
4045
4702
  /** @description RFC 8707 resource indicator. Becomes the access token `aud`. It may carry `?products=mail,waitlist`, which pre-selects products on the consent screen and is removed from the audience. */
4046
4703
  resource?: unknown;
4047
4704
  state?: unknown;
4705
+ /** @example S256 */
4048
4706
  code_challenge_method: unknown;
4049
4707
  code_challenge: unknown;
4050
- /** @description Space-delimited preset names (`readonly`, `mail`, `support`, `full`). A preset resolves to a policy template the human narrows on the consent screen; it is never authority in itself. */
4708
+ /**
4709
+ * @description Space-delimited preset names (`readonly`, `mail`, `support`, `full`). A preset resolves to a policy template the human narrows on the consent screen; it is never authority in itself.
4710
+ * @example mail
4711
+ */
4051
4712
  scope: unknown;
4052
4713
  redirect_uri: unknown;
4053
4714
  client_id: unknown;
4715
+ /** @example code */
4054
4716
  response_type: unknown;
4055
4717
  };
4056
4718
  header?: never;
@@ -4077,14 +4739,32 @@ interface operations {
4077
4739
  "application/json": components["schemas"]["OAuthErrorResponseDto"];
4078
4740
  };
4079
4741
  };
4742
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
4743
+ 429: {
4744
+ headers: {
4745
+ /** @description Seconds to wait before retrying (the window, 60). */
4746
+ "Retry-After"?: number;
4747
+ "X-Request-Id": components["headers"]["RequestId"];
4748
+ [name: string]: unknown;
4749
+ };
4750
+ content: {
4751
+ "application/json": components["schemas"]["ErrorResponseDto"];
4752
+ };
4753
+ };
4080
4754
  };
4081
4755
  };
4082
4756
  OAuthAuthorizeController_connections: {
4083
4757
  parameters: {
4084
4758
  query?: {
4085
- /** @description Page size. Defaults to 20, clamped to 100. */
4086
- limit?: string;
4087
- /** @description Opaque `next_cursor` from the previous page. */
4759
+ /**
4760
+ * @description Page size. Defaults to 20, clamped to 100.
4761
+ * @example 20
4762
+ */
4763
+ limit?: number;
4764
+ /**
4765
+ * @description Opaque `next_cursor` from the previous page.
4766
+ * @example eyJjcmVhdGVkX2F0IjoiMjAyNi0xMS0wMVQwMDowMDowMFoifQ
4767
+ */
4088
4768
  cursor?: string;
4089
4769
  };
4090
4770
  header?: never;
@@ -4123,6 +4803,18 @@ interface operations {
4123
4803
  "application/json": components["schemas"]["ErrorResponseDto"];
4124
4804
  };
4125
4805
  };
4806
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
4807
+ 429: {
4808
+ headers: {
4809
+ /** @description Seconds to wait before retrying (the window, 60). */
4810
+ "Retry-After"?: number;
4811
+ "X-Request-Id": components["headers"]["RequestId"];
4812
+ [name: string]: unknown;
4813
+ };
4814
+ content: {
4815
+ "application/json": components["schemas"]["ErrorResponseDto"];
4816
+ };
4817
+ };
4126
4818
  };
4127
4819
  };
4128
4820
  OAuthAuthorizeController_disconnect: {
@@ -4130,6 +4822,10 @@ interface operations {
4130
4822
  query?: never;
4131
4823
  header?: never;
4132
4824
  path: {
4825
+ /**
4826
+ * @description Id of the grant.
4827
+ * @example 3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f
4828
+ */
4133
4829
  grant_id: string;
4134
4830
  };
4135
4831
  cookie?: never;
@@ -4164,6 +4860,18 @@ interface operations {
4164
4860
  "application/json": components["schemas"]["ErrorResponseDto"];
4165
4861
  };
4166
4862
  };
4863
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
4864
+ 429: {
4865
+ headers: {
4866
+ /** @description Seconds to wait before retrying (the window, 60). */
4867
+ "Retry-After"?: number;
4868
+ "X-Request-Id": components["headers"]["RequestId"];
4869
+ [name: string]: unknown;
4870
+ };
4871
+ content: {
4872
+ "application/json": components["schemas"]["ErrorResponseDto"];
4873
+ };
4874
+ };
4167
4875
  };
4168
4876
  };
4169
4877
  OAuthAuthorizeController_consentRequest: {
@@ -4171,6 +4879,10 @@ interface operations {
4171
4879
  query?: never;
4172
4880
  header?: never;
4173
4881
  path: {
4882
+ /**
4883
+ * @description Id of the request.
4884
+ * @example 3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f
4885
+ */
4174
4886
  request_id: string;
4175
4887
  };
4176
4888
  cookie?: never;
@@ -4226,6 +4938,18 @@ interface operations {
4226
4938
  "application/json": components["schemas"]["ErrorResponseDto"];
4227
4939
  };
4228
4940
  };
4941
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
4942
+ 429: {
4943
+ headers: {
4944
+ /** @description Seconds to wait before retrying (the window, 60). */
4945
+ "Retry-After"?: number;
4946
+ "X-Request-Id": components["headers"]["RequestId"];
4947
+ [name: string]: unknown;
4948
+ };
4949
+ content: {
4950
+ "application/json": components["schemas"]["ErrorResponseDto"];
4951
+ };
4952
+ };
4229
4953
  };
4230
4954
  };
4231
4955
  OAuthAuthorizeController_decide: {
@@ -4233,6 +4957,10 @@ interface operations {
4233
4957
  query?: never;
4234
4958
  header?: never;
4235
4959
  path: {
4960
+ /**
4961
+ * @description Id of the request.
4962
+ * @example 3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f
4963
+ */
4236
4964
  request_id: string;
4237
4965
  };
4238
4966
  cookie?: never;
@@ -4302,14 +5030,24 @@ interface operations {
4302
5030
  "application/json": components["schemas"]["ErrorResponseDto"];
4303
5031
  };
4304
5032
  };
5033
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
5034
+ 429: {
5035
+ headers: {
5036
+ /** @description Seconds to wait before retrying (the window, 60). */
5037
+ "Retry-After"?: number;
5038
+ "X-Request-Id": components["headers"]["RequestId"];
5039
+ [name: string]: unknown;
5040
+ };
5041
+ content: {
5042
+ "application/json": components["schemas"]["ErrorResponseDto"];
5043
+ };
5044
+ };
4305
5045
  };
4306
5046
  };
4307
5047
  OAuthDelegatedAuthorizationController_authorize: {
4308
5048
  parameters: {
4309
5049
  query?: never;
4310
- header: {
4311
- authorization: string;
4312
- };
5050
+ header?: never;
4313
5051
  path?: never;
4314
5052
  cookie?: never;
4315
5053
  };
@@ -4338,14 +5076,24 @@ interface operations {
4338
5076
  "application/json": components["schemas"]["ErrorResponseDto"];
4339
5077
  };
4340
5078
  };
5079
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
5080
+ 429: {
5081
+ headers: {
5082
+ /** @description Seconds to wait before retrying (the window, 60). */
5083
+ "Retry-After"?: number;
5084
+ "X-Request-Id": components["headers"]["RequestId"];
5085
+ [name: string]: unknown;
5086
+ };
5087
+ content: {
5088
+ "application/json": components["schemas"]["ErrorResponseDto"];
5089
+ };
5090
+ };
4341
5091
  };
4342
5092
  };
4343
5093
  OAuthDelegatedAuthorizationController_authorizeAssertion: {
4344
5094
  parameters: {
4345
5095
  query?: never;
4346
- header: {
4347
- authorization: string;
4348
- };
5096
+ header?: never;
4349
5097
  path?: never;
4350
5098
  cookie?: never;
4351
5099
  };
@@ -4374,14 +5122,24 @@ interface operations {
4374
5122
  "application/json": components["schemas"]["ErrorResponseDto"];
4375
5123
  };
4376
5124
  };
5125
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
5126
+ 429: {
5127
+ headers: {
5128
+ /** @description Seconds to wait before retrying (the window, 60). */
5129
+ "Retry-After"?: number;
5130
+ "X-Request-Id": components["headers"]["RequestId"];
5131
+ [name: string]: unknown;
5132
+ };
5133
+ content: {
5134
+ "application/json": components["schemas"]["ErrorResponseDto"];
5135
+ };
5136
+ };
4377
5137
  };
4378
5138
  };
4379
5139
  OAuthDelegatedAuthorizationController_authorizeBatch: {
4380
5140
  parameters: {
4381
5141
  query?: never;
4382
- header: {
4383
- authorization: string;
4384
- };
5142
+ header?: never;
4385
5143
  path?: never;
4386
5144
  cookie?: never;
4387
5145
  };
@@ -4420,14 +5178,24 @@ interface operations {
4420
5178
  "application/json": components["schemas"]["ErrorResponseDto"];
4421
5179
  };
4422
5180
  };
5181
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
5182
+ 429: {
5183
+ headers: {
5184
+ /** @description Seconds to wait before retrying (the window, 60). */
5185
+ "Retry-After"?: number;
5186
+ "X-Request-Id": components["headers"]["RequestId"];
5187
+ [name: string]: unknown;
5188
+ };
5189
+ content: {
5190
+ "application/json": components["schemas"]["ErrorResponseDto"];
5191
+ };
5192
+ };
4423
5193
  };
4424
5194
  };
4425
5195
  OAuthDelegatedAuthorizationController_downstreamAssertion: {
4426
5196
  parameters: {
4427
5197
  query?: never;
4428
- header: {
4429
- authorization: string;
4430
- };
5198
+ header?: never;
4431
5199
  path?: never;
4432
5200
  cookie?: never;
4433
5201
  };
@@ -4466,14 +5234,24 @@ interface operations {
4466
5234
  "application/json": components["schemas"]["ErrorResponseDto"];
4467
5235
  };
4468
5236
  };
5237
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
5238
+ 429: {
5239
+ headers: {
5240
+ /** @description Seconds to wait before retrying (the window, 60). */
5241
+ "Retry-After"?: number;
5242
+ "X-Request-Id": components["headers"]["RequestId"];
5243
+ [name: string]: unknown;
5244
+ };
5245
+ content: {
5246
+ "application/json": components["schemas"]["ErrorResponseDto"];
5247
+ };
5248
+ };
4469
5249
  };
4470
5250
  };
4471
5251
  OAuthDelegatedAuthorizationController_firstToolCall: {
4472
5252
  parameters: {
4473
5253
  query?: never;
4474
- header: {
4475
- authorization: string;
4476
- };
5254
+ header?: never;
4477
5255
  path?: never;
4478
5256
  cookie?: never;
4479
5257
  };
@@ -4497,6 +5275,18 @@ interface operations {
4497
5275
  "application/json": components["schemas"]["ErrorResponseDto"];
4498
5276
  };
4499
5277
  };
5278
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
5279
+ 429: {
5280
+ headers: {
5281
+ /** @description Seconds to wait before retrying (the window, 60). */
5282
+ "Retry-After"?: number;
5283
+ "X-Request-Id": components["headers"]["RequestId"];
5284
+ [name: string]: unknown;
5285
+ };
5286
+ content: {
5287
+ "application/json": components["schemas"]["ErrorResponseDto"];
5288
+ };
5289
+ };
4500
5290
  };
4501
5291
  };
4502
5292
  OAuthTokenController_introspect: {
@@ -4531,6 +5321,18 @@ interface operations {
4531
5321
  "application/json": components["schemas"]["OAuthErrorResponseDto"];
4532
5322
  };
4533
5323
  };
5324
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
5325
+ 429: {
5326
+ headers: {
5327
+ /** @description Seconds to wait before retrying (the window, 60). */
5328
+ "Retry-After"?: number;
5329
+ "X-Request-Id": components["headers"]["RequestId"];
5330
+ [name: string]: unknown;
5331
+ };
5332
+ content: {
5333
+ "application/json": components["schemas"]["ErrorResponseDto"];
5334
+ };
5335
+ };
4534
5336
  };
4535
5337
  };
4536
5338
  OAuthRegistrationController_register: {
@@ -4565,9 +5367,11 @@ interface operations {
4565
5367
  "application/json": components["schemas"]["OAuthErrorResponseDto"];
4566
5368
  };
4567
5369
  };
4568
- /** @description `invalid_request` — too many registrations from this IP. */
5370
+ /** @description `invalid_request` — too many registrations from this IP. Per-IP limit: rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
4569
5371
  429: {
4570
5372
  headers: {
5373
+ /** @description Seconds to wait before retrying (the window, 60). */
5374
+ "Retry-After"?: number;
4571
5375
  "X-Request-Id": components["headers"]["RequestId"];
4572
5376
  [name: string]: unknown;
4573
5377
  };
@@ -4618,6 +5422,18 @@ interface operations {
4618
5422
  "application/json": components["schemas"]["ErrorResponseDto"];
4619
5423
  };
4620
5424
  };
5425
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
5426
+ 429: {
5427
+ headers: {
5428
+ /** @description Seconds to wait before retrying (the window, 60). */
5429
+ "Retry-After"?: number;
5430
+ "X-Request-Id": components["headers"]["RequestId"];
5431
+ [name: string]: unknown;
5432
+ };
5433
+ content: {
5434
+ "application/json": components["schemas"]["ErrorResponseDto"];
5435
+ };
5436
+ };
4621
5437
  };
4622
5438
  };
4623
5439
  OAuthRegistrationController_update: {
@@ -4655,6 +5471,18 @@ interface operations {
4655
5471
  "application/json": components["schemas"]["ErrorResponseDto"];
4656
5472
  };
4657
5473
  };
5474
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
5475
+ 429: {
5476
+ headers: {
5477
+ /** @description Seconds to wait before retrying (the window, 60). */
5478
+ "Retry-After"?: number;
5479
+ "X-Request-Id": components["headers"]["RequestId"];
5480
+ [name: string]: unknown;
5481
+ };
5482
+ content: {
5483
+ "application/json": components["schemas"]["ErrorResponseDto"];
5484
+ };
5485
+ };
4658
5486
  };
4659
5487
  };
4660
5488
  OAuthTokenController_revoke: {
@@ -4688,6 +5516,18 @@ interface operations {
4688
5516
  "application/json": components["schemas"]["OAuthErrorResponseDto"];
4689
5517
  };
4690
5518
  };
5519
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
5520
+ 429: {
5521
+ headers: {
5522
+ /** @description Seconds to wait before retrying (the window, 60). */
5523
+ "Retry-After"?: number;
5524
+ "X-Request-Id": components["headers"]["RequestId"];
5525
+ [name: string]: unknown;
5526
+ };
5527
+ content: {
5528
+ "application/json": components["schemas"]["ErrorResponseDto"];
5529
+ };
5530
+ };
4691
5531
  };
4692
5532
  };
4693
5533
  OAuthTokenController_token: {
@@ -4709,7 +5549,7 @@ interface operations {
4709
5549
  [name: string]: unknown;
4710
5550
  };
4711
5551
  content: {
4712
- "application/json": components["schemas"]["TokenResponseDto"];
5552
+ "application/json": components["schemas"]["OAuthTokenResponseDto"];
4713
5553
  };
4714
5554
  };
4715
5555
  /** @description `invalid_request`, `invalid_grant`, `invalid_scope`, `invalid_target`, or `unsupported_grant_type`. */
@@ -4732,18 +5572,40 @@ interface operations {
4732
5572
  "application/json": components["schemas"]["OAuthErrorResponseDto"];
4733
5573
  };
4734
5574
  };
5575
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
5576
+ 429: {
5577
+ headers: {
5578
+ /** @description Seconds to wait before retrying (the window, 60). */
5579
+ "Retry-After"?: number;
5580
+ "X-Request-Id": components["headers"]["RequestId"];
5581
+ [name: string]: unknown;
5582
+ };
5583
+ content: {
5584
+ "application/json": components["schemas"]["ErrorResponseDto"];
5585
+ };
5586
+ };
4735
5587
  };
4736
5588
  };
4737
5589
  OAuthAuthorizeController_workspaceConnections: {
4738
5590
  parameters: {
4739
5591
  query?: {
4740
- /** @description Page size. Defaults to 20, clamped to 100. */
4741
- limit?: string;
4742
- /** @description Opaque `next_cursor` from the previous page. */
5592
+ /**
5593
+ * @description Page size. Defaults to 20, clamped to 100.
5594
+ * @example 20
5595
+ */
5596
+ limit?: number;
5597
+ /**
5598
+ * @description Opaque `next_cursor` from the previous page.
5599
+ * @example eyJjcmVhdGVkX2F0IjoiMjAyNi0xMS0wMVQwMDowMDowMFoifQ
5600
+ */
4743
5601
  cursor?: string;
4744
5602
  };
4745
5603
  header?: never;
4746
5604
  path: {
5605
+ /**
5606
+ * @description Id of the workspace.
5607
+ * @example 3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f
5608
+ */
4747
5609
  workspace_id: string;
4748
5610
  };
4749
5611
  cookie?: never;
@@ -4790,6 +5652,18 @@ interface operations {
4790
5652
  "application/json": components["schemas"]["ErrorResponseDto"];
4791
5653
  };
4792
5654
  };
5655
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
5656
+ 429: {
5657
+ headers: {
5658
+ /** @description Seconds to wait before retrying (the window, 60). */
5659
+ "Retry-After"?: number;
5660
+ "X-Request-Id": components["headers"]["RequestId"];
5661
+ [name: string]: unknown;
5662
+ };
5663
+ content: {
5664
+ "application/json": components["schemas"]["ErrorResponseDto"];
5665
+ };
5666
+ };
4793
5667
  };
4794
5668
  };
4795
5669
  OAuthAuthorizeController_disconnectWorkspaceConnection: {
@@ -4797,7 +5671,15 @@ interface operations {
4797
5671
  query?: never;
4798
5672
  header?: never;
4799
5673
  path: {
5674
+ /**
5675
+ * @description Id of the workspace.
5676
+ * @example 3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f
5677
+ */
4800
5678
  workspace_id: string;
5679
+ /**
5680
+ * @description Id of the grant.
5681
+ * @example 3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f
5682
+ */
4801
5683
  grant_id: string;
4802
5684
  };
4803
5685
  cookie?: never;
@@ -4842,6 +5724,18 @@ interface operations {
4842
5724
  "application/json": components["schemas"]["ErrorResponseDto"];
4843
5725
  };
4844
5726
  };
5727
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
5728
+ 429: {
5729
+ headers: {
5730
+ /** @description Seconds to wait before retrying (the window, 60). */
5731
+ "Retry-After"?: number;
5732
+ "X-Request-Id": components["headers"]["RequestId"];
5733
+ [name: string]: unknown;
5734
+ };
5735
+ content: {
5736
+ "application/json": components["schemas"]["ErrorResponseDto"];
5737
+ };
5738
+ };
4845
5739
  };
4846
5740
  };
4847
5741
  OAuthAuthorizeController_restoreWorkspaceConnection: {
@@ -4849,7 +5743,15 @@ interface operations {
4849
5743
  query?: never;
4850
5744
  header?: never;
4851
5745
  path: {
5746
+ /**
5747
+ * @description Id of the workspace.
5748
+ * @example 3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f
5749
+ */
4852
5750
  workspace_id: string;
5751
+ /**
5752
+ * @description Id of the grant.
5753
+ * @example 3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f
5754
+ */
4853
5755
  grant_id: string;
4854
5756
  };
4855
5757
  cookie?: never;
@@ -4904,6 +5806,18 @@ interface operations {
4904
5806
  "application/json": components["schemas"]["ErrorResponseDto"];
4905
5807
  };
4906
5808
  };
5809
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
5810
+ 429: {
5811
+ headers: {
5812
+ /** @description Seconds to wait before retrying (the window, 60). */
5813
+ "Retry-After"?: number;
5814
+ "X-Request-Id": components["headers"]["RequestId"];
5815
+ [name: string]: unknown;
5816
+ };
5817
+ content: {
5818
+ "application/json": components["schemas"]["ErrorResponseDto"];
5819
+ };
5820
+ };
4907
5821
  };
4908
5822
  };
4909
5823
  SessionController_getSessions: {
@@ -4935,6 +5849,18 @@ interface operations {
4935
5849
  "application/json": components["schemas"]["ErrorResponseDto"];
4936
5850
  };
4937
5851
  };
5852
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
5853
+ 429: {
5854
+ headers: {
5855
+ /** @description Seconds to wait before retrying (the window, 60). */
5856
+ "Retry-After"?: number;
5857
+ "X-Request-Id": components["headers"]["RequestId"];
5858
+ [name: string]: unknown;
5859
+ };
5860
+ content: {
5861
+ "application/json": components["schemas"]["ErrorResponseDto"];
5862
+ };
5863
+ };
4938
5864
  };
4939
5865
  };
4940
5866
  SessionController_revokeOtherSessions: {
@@ -4975,6 +5901,18 @@ interface operations {
4975
5901
  "application/json": components["schemas"]["ErrorResponseDto"];
4976
5902
  };
4977
5903
  };
5904
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
5905
+ 429: {
5906
+ headers: {
5907
+ /** @description Seconds to wait before retrying (the window, 60). */
5908
+ "Retry-After"?: number;
5909
+ "X-Request-Id": components["headers"]["RequestId"];
5910
+ [name: string]: unknown;
5911
+ };
5912
+ content: {
5913
+ "application/json": components["schemas"]["ErrorResponseDto"];
5914
+ };
5915
+ };
4978
5916
  };
4979
5917
  };
4980
5918
  SessionController_revokeSession: {
@@ -4982,6 +5920,10 @@ interface operations {
4982
5920
  query?: never;
4983
5921
  header?: never;
4984
5922
  path: {
5923
+ /**
5924
+ * @description Id of the session.
5925
+ * @example 3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f
5926
+ */
4985
5927
  id: string;
4986
5928
  };
4987
5929
  cookie?: never;
@@ -5028,6 +5970,18 @@ interface operations {
5028
5970
  "application/json": components["schemas"]["ErrorResponseDto"];
5029
5971
  };
5030
5972
  };
5973
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
5974
+ 429: {
5975
+ headers: {
5976
+ /** @description Seconds to wait before retrying (the window, 60). */
5977
+ "Retry-After"?: number;
5978
+ "X-Request-Id": components["headers"]["RequestId"];
5979
+ [name: string]: unknown;
5980
+ };
5981
+ content: {
5982
+ "application/json": components["schemas"]["ErrorResponseDto"];
5983
+ };
5984
+ };
5031
5985
  };
5032
5986
  };
5033
5987
  VerificationController_resend: {
@@ -5059,6 +6013,18 @@ interface operations {
5059
6013
  "application/json": components["schemas"]["ErrorResponseDto"];
5060
6014
  };
5061
6015
  };
6016
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
6017
+ 429: {
6018
+ headers: {
6019
+ /** @description Seconds to wait before retrying (the window, 60). */
6020
+ "Retry-After"?: number;
6021
+ "X-Request-Id": components["headers"]["RequestId"];
6022
+ [name: string]: unknown;
6023
+ };
6024
+ content: {
6025
+ "application/json": components["schemas"]["ErrorResponseDto"];
6026
+ };
6027
+ };
5062
6028
  };
5063
6029
  };
5064
6030
  VerificationController_verify: {
@@ -5094,13 +6060,33 @@ interface operations {
5094
6060
  "application/json": components["schemas"]["ErrorResponseDto"];
5095
6061
  };
5096
6062
  };
6063
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
6064
+ 429: {
6065
+ headers: {
6066
+ /** @description Seconds to wait before retrying (the window, 60). */
6067
+ "Retry-After"?: number;
6068
+ "X-Request-Id": components["headers"]["RequestId"];
6069
+ [name: string]: unknown;
6070
+ };
6071
+ content: {
6072
+ "application/json": components["schemas"]["ErrorResponseDto"];
6073
+ };
6074
+ };
5097
6075
  };
5098
6076
  };
5099
6077
  WorkspaceController_listWorkspaces: {
5100
6078
  parameters: {
5101
- query: {
5102
- limit: string;
5103
- cursor: string;
6079
+ query?: {
6080
+ /**
6081
+ * @description Page size. Defaults to 20, clamped to 100.
6082
+ * @example 20
6083
+ */
6084
+ limit?: number;
6085
+ /**
6086
+ * @description Opaque `next_cursor` from the previous page.
6087
+ * @example eyJjcmVhdGVkX2F0IjoiMjAyNi0xMS0wMVQwMDowMDowMFoifQ
6088
+ */
6089
+ cursor?: string;
5104
6090
  };
5105
6091
  header?: never;
5106
6092
  path?: never;
@@ -5137,12 +6123,27 @@ interface operations {
5137
6123
  "application/json": components["schemas"]["ErrorResponseDto"];
5138
6124
  };
5139
6125
  };
6126
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
6127
+ 429: {
6128
+ headers: {
6129
+ /** @description Seconds to wait before retrying (the window, 60). */
6130
+ "Retry-After"?: number;
6131
+ "X-Request-Id": components["headers"]["RequestId"];
6132
+ [name: string]: unknown;
6133
+ };
6134
+ content: {
6135
+ "application/json": components["schemas"]["ErrorResponseDto"];
6136
+ };
6137
+ };
5140
6138
  };
5141
6139
  };
5142
6140
  WorkspaceController_createWorkspace: {
5143
6141
  parameters: {
5144
6142
  query?: never;
5145
- header?: never;
6143
+ header?: {
6144
+ /** @description Opaque client-generated string (1-256 chars, `[A-Za-z0-9_-:]`) that deduplicates retries for 24 h. A retry with the same key and body returns the first response with `Idempotent-Replay: true` instead of creating a second resource. The SDKs send one on every create. */
6145
+ "Idempotency-Key"?: string;
6146
+ };
5146
6147
  path?: never;
5147
6148
  cookie?: never;
5148
6149
  };
@@ -5154,6 +6155,8 @@ interface operations {
5154
6155
  responses: {
5155
6156
  201: {
5156
6157
  headers: {
6158
+ /** @description `true` when this response is a replay of an earlier request with the same `Idempotency-Key`. */
6159
+ "Idempotent-Replay"?: "true";
5157
6160
  "X-Request-Id": components["headers"]["RequestId"];
5158
6161
  [name: string]: unknown;
5159
6162
  };
@@ -5181,6 +6184,30 @@ interface operations {
5181
6184
  "application/json": components["schemas"]["ErrorResponseDto"];
5182
6185
  };
5183
6186
  };
6187
+ /** @description Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key). */
6188
+ 409: {
6189
+ headers: {
6190
+ /** @description Seconds to wait before retrying with the same key (sent with `IDEMPOTENCY_IN_PROGRESS`). */
6191
+ "Retry-After"?: number;
6192
+ "X-Request-Id": components["headers"]["RequestId"];
6193
+ [name: string]: unknown;
6194
+ };
6195
+ content: {
6196
+ "application/json": components["schemas"]["ErrorResponseDto"];
6197
+ };
6198
+ };
6199
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
6200
+ 429: {
6201
+ headers: {
6202
+ /** @description Seconds to wait before retrying (the window, 60). */
6203
+ "Retry-After"?: number;
6204
+ "X-Request-Id": components["headers"]["RequestId"];
6205
+ [name: string]: unknown;
6206
+ };
6207
+ content: {
6208
+ "application/json": components["schemas"]["ErrorResponseDto"];
6209
+ };
6210
+ };
5184
6211
  };
5185
6212
  };
5186
6213
  WorkspaceController_acceptInvite: {
@@ -5266,9 +6293,11 @@ interface operations {
5266
6293
  "application/json": components["schemas"]["ErrorResponseDto"];
5267
6294
  };
5268
6295
  };
5269
- /** @description Rate limited: more than 10 requests/min from this IP (strict `auth` bucket). `Retry-After` header set. */
6296
+ /** @description Rate limited: more than 10 requests/min from this IP (strict `auth` bucket). `Retry-After` header set. Per-IP limit: rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
5270
6297
  429: {
5271
6298
  headers: {
6299
+ /** @description Seconds to wait before retrying (the window, 60). */
6300
+ "Retry-After"?: number;
5272
6301
  "X-Request-Id": components["headers"]["RequestId"];
5273
6302
  [name: string]: unknown;
5274
6303
  };
@@ -5281,12 +6310,18 @@ interface operations {
5281
6310
  WorkspaceStatsController_get: {
5282
6311
  parameters: {
5283
6312
  query?: {
5284
- /** @description Window for `in_window` and the length of `series`, in UTC days ending today. */
6313
+ /**
6314
+ * @description Window for `in_window` and the length of `series`, in UTC days ending today.
6315
+ * @example 30d
6316
+ */
5285
6317
  window?: "1d" | "7d" | "30d";
5286
6318
  };
5287
6319
  header?: never;
5288
6320
  path: {
5289
- /** @description Workspace id. */
6321
+ /**
6322
+ * @description Workspace id.
6323
+ * @example 3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f
6324
+ */
5290
6325
  workspace_id: string;
5291
6326
  };
5292
6327
  cookie?: never;
@@ -5343,6 +6378,18 @@ interface operations {
5343
6378
  "application/json": components["schemas"]["ErrorResponseDto"];
5344
6379
  };
5345
6380
  };
6381
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
6382
+ 429: {
6383
+ headers: {
6384
+ /** @description Seconds to wait before retrying (the window, 60). */
6385
+ "Retry-After"?: number;
6386
+ "X-Request-Id": components["headers"]["RequestId"];
6387
+ [name: string]: unknown;
6388
+ };
6389
+ content: {
6390
+ "application/json": components["schemas"]["ErrorResponseDto"];
6391
+ };
6392
+ };
5346
6393
  };
5347
6394
  };
5348
6395
  WorkspaceController_getWorkspace: {
@@ -5350,6 +6397,10 @@ interface operations {
5350
6397
  query?: never;
5351
6398
  header?: never;
5352
6399
  path: {
6400
+ /**
6401
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
6402
+ * @example acme
6403
+ */
5353
6404
  workspace_slug: string;
5354
6405
  };
5355
6406
  cookie?: never;
@@ -5395,6 +6446,18 @@ interface operations {
5395
6446
  "application/json": components["schemas"]["ErrorResponseDto"];
5396
6447
  };
5397
6448
  };
6449
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
6450
+ 429: {
6451
+ headers: {
6452
+ /** @description Seconds to wait before retrying (the window, 60). */
6453
+ "Retry-After"?: number;
6454
+ "X-Request-Id": components["headers"]["RequestId"];
6455
+ [name: string]: unknown;
6456
+ };
6457
+ content: {
6458
+ "application/json": components["schemas"]["ErrorResponseDto"];
6459
+ };
6460
+ };
5398
6461
  };
5399
6462
  };
5400
6463
  WorkspaceController_deleteWorkspace: {
@@ -5402,6 +6465,10 @@ interface operations {
5402
6465
  query?: never;
5403
6466
  header?: never;
5404
6467
  path: {
6468
+ /**
6469
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
6470
+ * @example acme
6471
+ */
5405
6472
  workspace_slug: string;
5406
6473
  };
5407
6474
  cookie?: never;
@@ -5436,6 +6503,18 @@ interface operations {
5436
6503
  "application/json": components["schemas"]["ErrorResponseDto"];
5437
6504
  };
5438
6505
  };
6506
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
6507
+ 429: {
6508
+ headers: {
6509
+ /** @description Seconds to wait before retrying (the window, 60). */
6510
+ "Retry-After"?: number;
6511
+ "X-Request-Id": components["headers"]["RequestId"];
6512
+ [name: string]: unknown;
6513
+ };
6514
+ content: {
6515
+ "application/json": components["schemas"]["ErrorResponseDto"];
6516
+ };
6517
+ };
5439
6518
  };
5440
6519
  };
5441
6520
  WorkspaceController_updateWorkspace: {
@@ -5443,6 +6522,10 @@ interface operations {
5443
6522
  query?: never;
5444
6523
  header?: never;
5445
6524
  path: {
6525
+ /**
6526
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
6527
+ * @example acme
6528
+ */
5446
6529
  workspace_slug: string;
5447
6530
  };
5448
6531
  cookie?: never;
@@ -5503,39 +6586,59 @@ interface operations {
5503
6586
  "application/json": components["schemas"]["ErrorResponseDto"];
5504
6587
  };
5505
6588
  };
6589
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
6590
+ 429: {
6591
+ headers: {
6592
+ /** @description Seconds to wait before retrying (the window, 60). */
6593
+ "Retry-After"?: number;
6594
+ "X-Request-Id": components["headers"]["RequestId"];
6595
+ [name: string]: unknown;
6596
+ };
6597
+ content: {
6598
+ "application/json": components["schemas"]["ErrorResponseDto"];
6599
+ };
6600
+ };
5506
6601
  };
5507
6602
  };
5508
6603
  PlatformApiKeyController_list: {
5509
6604
  parameters: {
5510
6605
  query?: {
5511
- /** @description Page size. Defaults to 20, clamped to 100. Sending it (at any value) also opts the response into the `{data, pagination}` envelope. */
5512
- limit?: string;
5513
- /** @description Opaque `next_cursor` from the previous page. Sending it also opts the response into the `{data, pagination}` envelope. */
6606
+ /**
6607
+ * @description Page size. Defaults to 20, clamped to 100.
6608
+ * @example 20
6609
+ */
6610
+ limit?: number;
6611
+ /**
6612
+ * @description Opaque `next_cursor` from the previous page.
6613
+ * @example eyJjcmVhdGVkX2F0IjoiMjAyNi0xMS0wMVQwMDowMDowMFoifQ
6614
+ */
5514
6615
  cursor?: string;
5515
- /** @description Send `false` to leave revoked keys out (the console's default view). Expired keys are still listed: they show what needs replacing. Applies to the paginated envelope only; the legacy bare array always lists every key. */
6616
+ /**
6617
+ * @description Send `false` to leave revoked keys out (the console's default view). Expired keys are still listed: they show what needs replacing. The deprecated bare array ignores it.
6618
+ * @example true
6619
+ */
5516
6620
  include_revoked?: "true" | "false";
5517
6621
  };
5518
6622
  header?: never;
5519
6623
  path: {
6624
+ /**
6625
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
6626
+ * @example acme
6627
+ */
5520
6628
  workspace_slug: string;
5521
6629
  };
5522
6630
  cookie?: never;
5523
6631
  };
5524
6632
  requestBody?: never;
5525
6633
  responses: {
5526
- /**
5527
- * @description Two shapes, selected by the request — see `oneOf`.
5528
- *
5529
- * - **`?limit=` or `?cursor=` present** → the standard `{data, pagination}` envelope with `next_cursor` + `has_more`. Use this; it is the only shape that pages.
5530
- * - **neither present** → the legacy bare JSON array of every PAK in the workspace (capped at 1000). DEPRECATED as of 2026-09 and retained only so `@productcraft/platform-auth` <= 0.0.12 clients, which cannot send either query param, keep working. It will be removed once those clients are off it; new integrations must send `?limit=`.
5531
- */
6634
+ /** @description One page of keys. */
5532
6635
  200: {
5533
6636
  headers: {
5534
6637
  "X-Request-Id": components["headers"]["RequestId"];
5535
6638
  [name: string]: unknown;
5536
6639
  };
5537
6640
  content: {
5538
- "application/json": components["schemas"]["ListPlatformApiKeysResponseDto"] | components["schemas"]["PublicApiKeyDto"][];
6641
+ "application/json": components["schemas"]["ListPlatformApiKeysResponseDto"];
5539
6642
  };
5540
6643
  };
5541
6644
  /** @description Malformed `cursor`, or `include_revoked` is not `true` or `false` (`VALIDATION_ERROR`). */
@@ -5558,13 +6661,32 @@ interface operations {
5558
6661
  "application/json": components["schemas"]["ErrorResponseDto"];
5559
6662
  };
5560
6663
  };
6664
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
6665
+ 429: {
6666
+ headers: {
6667
+ /** @description Seconds to wait before retrying (the window, 60). */
6668
+ "Retry-After"?: number;
6669
+ "X-Request-Id": components["headers"]["RequestId"];
6670
+ [name: string]: unknown;
6671
+ };
6672
+ content: {
6673
+ "application/json": components["schemas"]["ErrorResponseDto"];
6674
+ };
6675
+ };
5561
6676
  };
5562
6677
  };
5563
6678
  PlatformApiKeyController_create: {
5564
6679
  parameters: {
5565
6680
  query?: never;
5566
- header?: never;
6681
+ header?: {
6682
+ /** @description Opaque client-generated string (1-256 chars, `[A-Za-z0-9_-:]`) that deduplicates retries for 24 h. A retry with the same key and body mints nothing and answers `409 PAK_ALREADY_MINTED` with the first key's `id` in `details` (the token is shown once and never cached; rotate the key for a new one). The SDKs send one on every create. */
6683
+ "Idempotency-Key"?: string;
6684
+ };
5567
6685
  path: {
6686
+ /**
6687
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
6688
+ * @example acme
6689
+ */
5568
6690
  workspace_slug: string;
5569
6691
  };
5570
6692
  cookie?: never;
@@ -5577,6 +6699,8 @@ interface operations {
5577
6699
  responses: {
5578
6700
  201: {
5579
6701
  headers: {
6702
+ /** @description `true` when this response is a replay of an earlier request with the same `Idempotency-Key`. */
6703
+ "Idempotent-Replay"?: "true";
5580
6704
  "X-Request-Id": components["headers"]["RequestId"];
5581
6705
  [name: string]: unknown;
5582
6706
  };
@@ -5624,6 +6748,30 @@ interface operations {
5624
6748
  "application/json": components["schemas"]["ErrorResponseDto"];
5625
6749
  };
5626
6750
  };
6751
+ /** @description `PAK_ALREADY_MINTED`: this `Idempotency-Key` already minted a key (its `id` is in `details`); the token was shown once, so rotate that key for a new one. Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key). */
6752
+ 409: {
6753
+ headers: {
6754
+ /** @description Seconds to wait before retrying with the same key (sent with `IDEMPOTENCY_IN_PROGRESS`). */
6755
+ "Retry-After"?: number;
6756
+ "X-Request-Id": components["headers"]["RequestId"];
6757
+ [name: string]: unknown;
6758
+ };
6759
+ content: {
6760
+ "application/json": components["schemas"]["ErrorResponseDto"];
6761
+ };
6762
+ };
6763
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
6764
+ 429: {
6765
+ headers: {
6766
+ /** @description Seconds to wait before retrying (the window, 60). */
6767
+ "Retry-After"?: number;
6768
+ "X-Request-Id": components["headers"]["RequestId"];
6769
+ [name: string]: unknown;
6770
+ };
6771
+ content: {
6772
+ "application/json": components["schemas"]["ErrorResponseDto"];
6773
+ };
6774
+ };
5627
6775
  };
5628
6776
  };
5629
6777
  PlatformApiKeyController_presets: {
@@ -5631,6 +6779,10 @@ interface operations {
5631
6779
  query?: never;
5632
6780
  header?: never;
5633
6781
  path: {
6782
+ /**
6783
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
6784
+ * @example acme
6785
+ */
5634
6786
  workspace_slug: string;
5635
6787
  };
5636
6788
  cookie?: never;
@@ -5676,6 +6828,18 @@ interface operations {
5676
6828
  "application/json": components["schemas"]["ErrorResponseDto"];
5677
6829
  };
5678
6830
  };
6831
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
6832
+ 429: {
6833
+ headers: {
6834
+ /** @description Seconds to wait before retrying (the window, 60). */
6835
+ "Retry-After"?: number;
6836
+ "X-Request-Id": components["headers"]["RequestId"];
6837
+ [name: string]: unknown;
6838
+ };
6839
+ content: {
6840
+ "application/json": components["schemas"]["ErrorResponseDto"];
6841
+ };
6842
+ };
5679
6843
  };
5680
6844
  };
5681
6845
  PlatformApiKeyController_preview: {
@@ -5683,6 +6847,10 @@ interface operations {
5683
6847
  query?: never;
5684
6848
  header?: never;
5685
6849
  path: {
6850
+ /**
6851
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
6852
+ * @example acme
6853
+ */
5686
6854
  workspace_slug: string;
5687
6855
  };
5688
6856
  cookie?: never;
@@ -5742,6 +6910,18 @@ interface operations {
5742
6910
  "application/json": components["schemas"]["ErrorResponseDto"];
5743
6911
  };
5744
6912
  };
6913
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
6914
+ 429: {
6915
+ headers: {
6916
+ /** @description Seconds to wait before retrying (the window, 60). */
6917
+ "Retry-After"?: number;
6918
+ "X-Request-Id": components["headers"]["RequestId"];
6919
+ [name: string]: unknown;
6920
+ };
6921
+ content: {
6922
+ "application/json": components["schemas"]["ErrorResponseDto"];
6923
+ };
6924
+ };
5745
6925
  };
5746
6926
  };
5747
6927
  PlatformApiKeyController_get: {
@@ -5749,7 +6929,15 @@ interface operations {
5749
6929
  query?: never;
5750
6930
  header?: never;
5751
6931
  path: {
6932
+ /**
6933
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
6934
+ * @example acme
6935
+ */
5752
6936
  workspace_slug: string;
6937
+ /**
6938
+ * @description Id of the api key.
6939
+ * @example 3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f
6940
+ */
5753
6941
  id: string;
5754
6942
  };
5755
6943
  cookie?: never;
@@ -5805,17 +6993,40 @@ interface operations {
5805
6993
  "application/json": components["schemas"]["ErrorResponseDto"];
5806
6994
  };
5807
6995
  };
6996
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
6997
+ 429: {
6998
+ headers: {
6999
+ /** @description Seconds to wait before retrying (the window, 60). */
7000
+ "Retry-After"?: number;
7001
+ "X-Request-Id": components["headers"]["RequestId"];
7002
+ [name: string]: unknown;
7003
+ };
7004
+ content: {
7005
+ "application/json": components["schemas"]["ErrorResponseDto"];
7006
+ };
7007
+ };
5808
7008
  };
5809
7009
  };
5810
7010
  PlatformApiKeyController_revoke: {
5811
7011
  parameters: {
5812
7012
  query?: {
5813
- /** @description When `true`, publish a `pak:revoked` Redis fan-out so subscribed services evict their caches immediately instead of waiting out the 60s TTL. */
7013
+ /**
7014
+ * @description When `true`, publish a `pak:revoked` Redis fan-out so subscribed services evict their caches immediately instead of waiting out the 60s TTL.
7015
+ * @example true
7016
+ */
5814
7017
  force?: boolean;
5815
7018
  };
5816
7019
  header?: never;
5817
7020
  path: {
7021
+ /**
7022
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
7023
+ * @example acme
7024
+ */
5818
7025
  workspace_slug: string;
7026
+ /**
7027
+ * @description Id of the api key.
7028
+ * @example 3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f
7029
+ */
5819
7030
  id: string;
5820
7031
  };
5821
7032
  cookie?: never;
@@ -5870,6 +7081,18 @@ interface operations {
5870
7081
  "application/json": components["schemas"]["ErrorResponseDto"];
5871
7082
  };
5872
7083
  };
7084
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
7085
+ 429: {
7086
+ headers: {
7087
+ /** @description Seconds to wait before retrying (the window, 60). */
7088
+ "Retry-After"?: number;
7089
+ "X-Request-Id": components["headers"]["RequestId"];
7090
+ [name: string]: unknown;
7091
+ };
7092
+ content: {
7093
+ "application/json": components["schemas"]["ErrorResponseDto"];
7094
+ };
7095
+ };
5873
7096
  };
5874
7097
  };
5875
7098
  PlatformApiKeyController_update: {
@@ -5877,7 +7100,15 @@ interface operations {
5877
7100
  query?: never;
5878
7101
  header?: never;
5879
7102
  path: {
7103
+ /**
7104
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
7105
+ * @example acme
7106
+ */
5880
7107
  workspace_slug: string;
7108
+ /**
7109
+ * @description Id of the api key.
7110
+ * @example 3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f
7111
+ */
5881
7112
  id: string;
5882
7113
  };
5883
7114
  cookie?: never;
@@ -5947,6 +7178,18 @@ interface operations {
5947
7178
  "application/json": components["schemas"]["ErrorResponseDto"];
5948
7179
  };
5949
7180
  };
7181
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
7182
+ 429: {
7183
+ headers: {
7184
+ /** @description Seconds to wait before retrying (the window, 60). */
7185
+ "Retry-After"?: number;
7186
+ "X-Request-Id": components["headers"]["RequestId"];
7187
+ [name: string]: unknown;
7188
+ };
7189
+ content: {
7190
+ "application/json": components["schemas"]["ErrorResponseDto"];
7191
+ };
7192
+ };
5950
7193
  };
5951
7194
  };
5952
7195
  PlatformApiKeyController_setBindings: {
@@ -5954,7 +7197,15 @@ interface operations {
5954
7197
  query?: never;
5955
7198
  header?: never;
5956
7199
  path: {
7200
+ /**
7201
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
7202
+ * @example acme
7203
+ */
5957
7204
  workspace_slug: string;
7205
+ /**
7206
+ * @description Id of the api key.
7207
+ * @example 3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f
7208
+ */
5958
7209
  id: string;
5959
7210
  };
5960
7211
  cookie?: never;
@@ -6025,6 +7276,18 @@ interface operations {
6025
7276
  "application/json": components["schemas"]["ErrorResponseDto"];
6026
7277
  };
6027
7278
  };
7279
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
7280
+ 429: {
7281
+ headers: {
7282
+ /** @description Seconds to wait before retrying (the window, 60). */
7283
+ "Retry-After"?: number;
7284
+ "X-Request-Id": components["headers"]["RequestId"];
7285
+ [name: string]: unknown;
7286
+ };
7287
+ content: {
7288
+ "application/json": components["schemas"]["ErrorResponseDto"];
7289
+ };
7290
+ };
6028
7291
  };
6029
7292
  };
6030
7293
  PlatformApiKeyController_rotate: {
@@ -6032,7 +7295,15 @@ interface operations {
6032
7295
  query?: never;
6033
7296
  header?: never;
6034
7297
  path: {
7298
+ /**
7299
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
7300
+ * @example acme
7301
+ */
6035
7302
  workspace_slug: string;
7303
+ /**
7304
+ * @description Id of the api key.
7305
+ * @example 3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f
7306
+ */
6036
7307
  id: string;
6037
7308
  };
6038
7309
  cookie?: never;
@@ -6092,30 +7363,70 @@ interface operations {
6092
7363
  "application/json": components["schemas"]["ErrorResponseDto"];
6093
7364
  };
6094
7365
  };
7366
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
7367
+ 429: {
7368
+ headers: {
7369
+ /** @description Seconds to wait before retrying (the window, 60). */
7370
+ "Retry-After"?: number;
7371
+ "X-Request-Id": components["headers"]["RequestId"];
7372
+ [name: string]: unknown;
7373
+ };
7374
+ content: {
7375
+ "application/json": components["schemas"]["ErrorResponseDto"];
7376
+ };
7377
+ };
6095
7378
  };
6096
7379
  };
6097
7380
  WorkspaceAuditFeedController_listFeed: {
6098
7381
  parameters: {
6099
7382
  query?: {
6100
- /** @description ISO-8601 inclusive lower bound on `timestamp`. Items older than `since` are not returned. */
7383
+ /**
7384
+ * @description ISO-8601 inclusive lower bound on `timestamp`. Items older than `since` are not returned.
7385
+ * @example 2026-11-01T00:00:00Z
7386
+ */
6101
7387
  since?: string;
6102
- /** @description ISO-8601 inclusive upper bound on `timestamp`. Composes with `since`, `action`, `actor_id` and with the cursor. A bare date resolves to midnight UTC, so `until=2026-05-01` excludes that day’s later entries. */
7388
+ /**
7389
+ * @description ISO-8601 inclusive upper bound on `timestamp`. Composes with `since`, `action`, `actor_id` and with the cursor. A bare date resolves to midnight UTC, so `until=2026-05-01` excludes that day’s later entries.
7390
+ * @example 2026-11-01T00:00:00Z
7391
+ */
6103
7392
  until?: string;
6104
- /** @description Exact-match filter on the action identifier (e.g. `workspace.member.removed`). A partial string matches nothing. Mail, Waitlist, Social and Auth actions are reported under the product name (`mail.domain.verified`); the older internal spellings (`envoi.*`, `rally.*`, `agora.*`, `heimdall.*`) are still accepted here and match the same rows. */
7393
+ /**
7394
+ * @description Exact-match filter on the action identifier (e.g. `workspace.member.removed`). A partial string matches nothing. Mail, Waitlist, Social and Auth actions are reported under the product name (`mail.domain.verified`); the older internal spellings (`envoi.*`, `rally.*`, `agora.*`, `heimdall.*`) are still accepted here and match the same rows.
7395
+ * @example workspace.member.removed
7396
+ */
6105
7397
  action?: string;
6106
- /** @description Exact-match filter on the acting account UUID. Must be a well-formed UUID — anything else is a 400, not an empty page. System rows have a null actor and are excluded by this filter. */
7398
+ /**
7399
+ * @description Exact-match filter on the acting account UUID. Must be a well-formed UUID — anything else is a 400, not an empty page. System rows have a null actor and are excluded by this filter.
7400
+ * @example 3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f
7401
+ */
6107
7402
  actor_id?: string;
6108
- /** @description When `true`, return only admin changes: reads (any action ending `.read`), successful sign-ins (`auth.signin.succeeded`) and MCP tool-call rows (`workspace.mcp_tool.*`) are left out. The same rows the dashboard stats count as admin changes. Composes with every other filter and with the cursor; pass it on every page. Any value other than `true` or `1` means `false`. */
7403
+ /**
7404
+ * @description When `true`, return only admin changes: reads (any action ending `.read`), successful sign-ins (`auth.signin.succeeded`) and MCP tool-call rows (`workspace.mcp_tool.*`) are left out. The same rows the dashboard stats count as admin changes. Composes with every other filter and with the cursor; pass it on every page. Any value other than `true` or `1` means `false`.
7405
+ * @example false
7406
+ */
6109
7407
  changes_only?: boolean;
6110
- /** @description Opaque cursor from a previous response's `pagination.next_cursor`. Resumes the feed at the same merge boundary. */
7408
+ /**
7409
+ * @description Opaque cursor from a previous response's `pagination.next_cursor`. Resumes the feed at the same merge boundary.
7410
+ * @example eyJjcmVhdGVkX2F0IjoiMjAyNi0xMS0wMVQwMDowMDowMFoifQ
7411
+ */
6111
7412
  cursor?: string;
6112
- /** @description Per-page cap. Clamped to 1..500; default 100. */
7413
+ /**
7414
+ * @description Per-page cap. Clamped to 1..500; default 100.
7415
+ * @example 100
7416
+ */
6113
7417
  limit?: number;
6114
- /** @description Comma-separated subset of sources to include (e.g. `workspace_audit,heimdall_audit`). Omitted = all enabled sources. */
7418
+ /**
7419
+ * @description Comma-separated subset of sources to include (e.g. `workspace_audit,heimdall_audit`). Omitted = all enabled sources.
7420
+ * @example workspace_audit,heimdall_audit
7421
+ */
6115
7422
  sources?: string;
6116
7423
  };
6117
7424
  header?: never;
6118
7425
  path: {
7426
+ /**
7427
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
7428
+ * @example acme
7429
+ */
6119
7430
  workspace_slug: string;
6120
7431
  };
6121
7432
  cookie?: never;
@@ -6171,26 +7482,60 @@ interface operations {
6171
7482
  "application/json": components["schemas"]["ErrorResponseDto"];
6172
7483
  };
6173
7484
  };
7485
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
7486
+ 429: {
7487
+ headers: {
7488
+ /** @description Seconds to wait before retrying (the window, 60). */
7489
+ "Retry-After"?: number;
7490
+ "X-Request-Id": components["headers"]["RequestId"];
7491
+ [name: string]: unknown;
7492
+ };
7493
+ content: {
7494
+ "application/json": components["schemas"]["ErrorResponseDto"];
7495
+ };
7496
+ };
6174
7497
  };
6175
7498
  };
6176
7499
  WorkspaceAuditController_listAuditLogs: {
6177
7500
  parameters: {
6178
7501
  query?: {
6179
- /** @description Page size. Defaults to 20, clamped to 100. */
6180
- limit?: string;
6181
- /** @description Opaque `next_cursor` from the previous page. */
7502
+ /**
7503
+ * @description Page size. Defaults to 20, clamped to 100.
7504
+ * @example 20
7505
+ */
7506
+ limit?: number;
7507
+ /**
7508
+ * @description Opaque `next_cursor` from the previous page.
7509
+ * @example eyJjcmVhdGVkX2F0IjoiMjAyNi0xMS0wMVQwMDowMDowMFoifQ
7510
+ */
6182
7511
  cursor?: string;
6183
- /** @description Exact-match filter on the action identifier (e.g. `workspace.member.removed`). Mail, Waitlist, Social and Auth actions are reported under the product name (`mail.domain.verified`); the older internal spellings (`envoi.*`, `rally.*`, `agora.*`, `heimdall.*`) are still accepted here and match the same rows. */
7512
+ /**
7513
+ * @description Exact-match filter on the action identifier (e.g. `workspace.member.removed`). Mail, Waitlist, Social and Auth actions are reported under the product name (`mail.domain.verified`); the older internal spellings (`envoi.*`, `rally.*`, `agora.*`, `heimdall.*`) are still accepted here and match the same rows.
7514
+ * @example workspace.member.removed
7515
+ */
6184
7516
  action?: string;
6185
- /** @description Exact-match filter on the acting account UUID. System rows have a null actor and are excluded by this filter. */
7517
+ /**
7518
+ * @description Exact-match filter on the acting account UUID. System rows have a null actor and are excluded by this filter.
7519
+ * @example 3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f
7520
+ */
6186
7521
  actor_id?: string;
6187
- /** @description Inclusive lower bound on `created_at`. ISO-8601 date (`2026-05-01`, midnight UTC) or date-time (`2026-05-01T09:00:00Z`). Composes with `action` / `actor_id` / `until` and with the cursor. */
7522
+ /**
7523
+ * @description Inclusive lower bound on `created_at`. ISO-8601 date (`2026-05-01`, midnight UTC) or date-time (`2026-05-01T09:00:00Z`). Composes with `action` / `actor_id` / `until` and with the cursor.
7524
+ * @example 2026-11-01T00:00:00Z
7525
+ */
6188
7526
  since?: string;
6189
- /** @description Inclusive upper bound on `created_at`. Same formats as `since`. Note a bare date resolves to midnight UTC, so `until=2026-05-01` excludes that day’s later entries. */
7527
+ /**
7528
+ * @description Inclusive upper bound on `created_at`. Same formats as `since`. Note a bare date resolves to midnight UTC, so `until=2026-05-01` excludes that day’s later entries.
7529
+ * @example 2026-11-01T00:00:00Z
7530
+ */
6190
7531
  until?: string;
6191
7532
  };
6192
7533
  header?: never;
6193
7534
  path: {
7535
+ /**
7536
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
7537
+ * @example acme
7538
+ */
6194
7539
  workspace_slug: string;
6195
7540
  };
6196
7541
  cookie?: never;
@@ -6227,21 +7572,55 @@ interface operations {
6227
7572
  "application/json": components["schemas"]["ErrorResponseDto"];
6228
7573
  };
6229
7574
  };
7575
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
7576
+ 429: {
7577
+ headers: {
7578
+ /** @description Seconds to wait before retrying (the window, 60). */
7579
+ "Retry-After"?: number;
7580
+ "X-Request-Id": components["headers"]["RequestId"];
7581
+ [name: string]: unknown;
7582
+ };
7583
+ content: {
7584
+ "application/json": components["schemas"]["ErrorResponseDto"];
7585
+ };
7586
+ };
6230
7587
  };
6231
7588
  };
6232
7589
  WorkspaceAuditController_exportAuditLogs: {
6233
7590
  parameters: {
6234
7591
  query?: {
6235
- /** @description Defaults to `ndjson`. */
7592
+ /**
7593
+ * @description Defaults to `ndjson`.
7594
+ * @example ndjson
7595
+ */
6236
7596
  format?: "ndjson" | "csv";
6237
- /** @description Exact-match filter on the action identifier, same rules as the list. Mail, Waitlist, Social and Auth actions are reported under the product name (`mail.domain.verified`); the older internal spellings (`envoi.*`, `rally.*`, `agora.*`, `heimdall.*`) are still accepted here and match the same rows. */
7597
+ /**
7598
+ * @description Exact-match filter on the action identifier, same rules as the list. Mail, Waitlist, Social and Auth actions are reported under the product name (`mail.domain.verified`); the older internal spellings (`envoi.*`, `rally.*`, `agora.*`, `heimdall.*`) are still accepted here and match the same rows.
7599
+ * @example workspace.member.removed
7600
+ */
6238
7601
  action?: string;
7602
+ /**
7603
+ * @description Exact-match filter on the acting account UUID, same rules as the list.
7604
+ * @example 3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f
7605
+ */
6239
7606
  actor_id?: string;
7607
+ /**
7608
+ * @description Inclusive lower bound on `created_at`, same formats as the list.
7609
+ * @example 2026-11-01T00:00:00Z
7610
+ */
6240
7611
  since?: string;
7612
+ /**
7613
+ * @description Inclusive upper bound on `created_at`, same formats as the list.
7614
+ * @example 2026-11-01T00:00:00Z
7615
+ */
6241
7616
  until?: string;
6242
7617
  };
6243
7618
  header?: never;
6244
7619
  path: {
7620
+ /**
7621
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
7622
+ * @example acme
7623
+ */
6245
7624
  workspace_slug: string;
6246
7625
  };
6247
7626
  cookie?: never;
@@ -6309,6 +7688,18 @@ interface operations {
6309
7688
  "application/json": components["schemas"]["ErrorResponseDto"];
6310
7689
  };
6311
7690
  };
7691
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
7692
+ 429: {
7693
+ headers: {
7694
+ /** @description Seconds to wait before retrying (the window, 60). */
7695
+ "Retry-After"?: number;
7696
+ "X-Request-Id": components["headers"]["RequestId"];
7697
+ [name: string]: unknown;
7698
+ };
7699
+ content: {
7700
+ "application/json": components["schemas"]["ErrorResponseDto"];
7701
+ };
7702
+ };
6312
7703
  };
6313
7704
  };
6314
7705
  WorkspaceController_setAvatar: {
@@ -6316,6 +7707,10 @@ interface operations {
6316
7707
  query?: never;
6317
7708
  header?: never;
6318
7709
  path: {
7710
+ /**
7711
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
7712
+ * @example acme
7713
+ */
6319
7714
  workspace_slug: string;
6320
7715
  };
6321
7716
  cookie?: never;
@@ -6361,6 +7756,18 @@ interface operations {
6361
7756
  "application/json": components["schemas"]["ErrorResponseDto"];
6362
7757
  };
6363
7758
  };
7759
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
7760
+ 429: {
7761
+ headers: {
7762
+ /** @description Seconds to wait before retrying (the window, 60). */
7763
+ "Retry-After"?: number;
7764
+ "X-Request-Id": components["headers"]["RequestId"];
7765
+ [name: string]: unknown;
7766
+ };
7767
+ content: {
7768
+ "application/json": components["schemas"]["ErrorResponseDto"];
7769
+ };
7770
+ };
6364
7771
  };
6365
7772
  };
6366
7773
  WorkspaceController_removeAvatar: {
@@ -6368,6 +7775,10 @@ interface operations {
6368
7775
  query?: never;
6369
7776
  header?: never;
6370
7777
  path: {
7778
+ /**
7779
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
7780
+ * @example acme
7781
+ */
6371
7782
  workspace_slug: string;
6372
7783
  };
6373
7784
  cookie?: never;
@@ -6412,18 +7823,40 @@ interface operations {
6412
7823
  "application/json": components["schemas"]["ErrorResponseDto"];
6413
7824
  };
6414
7825
  };
7826
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
7827
+ 429: {
7828
+ headers: {
7829
+ /** @description Seconds to wait before retrying (the window, 60). */
7830
+ "Retry-After"?: number;
7831
+ "X-Request-Id": components["headers"]["RequestId"];
7832
+ [name: string]: unknown;
7833
+ };
7834
+ content: {
7835
+ "application/json": components["schemas"]["ErrorResponseDto"];
7836
+ };
7837
+ };
6415
7838
  };
6416
7839
  };
6417
7840
  WorkspaceController_listInvites: {
6418
7841
  parameters: {
6419
7842
  query?: {
6420
- /** @description Page size. Defaults to 20, clamped to 100. */
6421
- limit?: string;
6422
- /** @description Opaque `next_cursor` from the previous page. */
7843
+ /**
7844
+ * @description Page size. Defaults to 20, clamped to 100.
7845
+ * @example 20
7846
+ */
7847
+ limit?: number;
7848
+ /**
7849
+ * @description Opaque `next_cursor` from the previous page.
7850
+ * @example eyJjcmVhdGVkX2F0IjoiMjAyNi0xMS0wMVQwMDowMDowMFoifQ
7851
+ */
6423
7852
  cursor?: string;
6424
7853
  };
6425
7854
  header?: never;
6426
7855
  path: {
7856
+ /**
7857
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
7858
+ * @example acme
7859
+ */
6427
7860
  workspace_slug: string;
6428
7861
  };
6429
7862
  cookie?: never;
@@ -6479,13 +7912,32 @@ interface operations {
6479
7912
  "application/json": components["schemas"]["ErrorResponseDto"];
6480
7913
  };
6481
7914
  };
7915
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
7916
+ 429: {
7917
+ headers: {
7918
+ /** @description Seconds to wait before retrying (the window, 60). */
7919
+ "Retry-After"?: number;
7920
+ "X-Request-Id": components["headers"]["RequestId"];
7921
+ [name: string]: unknown;
7922
+ };
7923
+ content: {
7924
+ "application/json": components["schemas"]["ErrorResponseDto"];
7925
+ };
7926
+ };
6482
7927
  };
6483
7928
  };
6484
7929
  WorkspaceController_createInvite: {
6485
7930
  parameters: {
6486
7931
  query?: never;
6487
- header?: never;
7932
+ header?: {
7933
+ /** @description Opaque client-generated string (1-256 chars, `[A-Za-z0-9_-:]`) that deduplicates retries for 24 h. A retry with the same key and body returns the first response with `Idempotent-Replay: true` instead of creating a second resource. The SDKs send one on every create. */
7934
+ "Idempotency-Key"?: string;
7935
+ };
6488
7936
  path: {
7937
+ /**
7938
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
7939
+ * @example acme
7940
+ */
6489
7941
  workspace_slug: string;
6490
7942
  };
6491
7943
  cookie?: never;
@@ -6498,6 +7950,8 @@ interface operations {
6498
7950
  responses: {
6499
7951
  201: {
6500
7952
  headers: {
7953
+ /** @description `true` when this response is a replay of an earlier request with the same `Idempotency-Key`. */
7954
+ "Idempotent-Replay"?: "true";
6501
7955
  "X-Request-Id": components["headers"]["RequestId"];
6502
7956
  [name: string]: unknown;
6503
7957
  };
@@ -6545,6 +7999,30 @@ interface operations {
6545
7999
  "application/json": components["schemas"]["ErrorResponseDto"];
6546
8000
  };
6547
8001
  };
8002
+ /** @description Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key). */
8003
+ 409: {
8004
+ headers: {
8005
+ /** @description Seconds to wait before retrying with the same key (sent with `IDEMPOTENCY_IN_PROGRESS`). */
8006
+ "Retry-After"?: number;
8007
+ "X-Request-Id": components["headers"]["RequestId"];
8008
+ [name: string]: unknown;
8009
+ };
8010
+ content: {
8011
+ "application/json": components["schemas"]["ErrorResponseDto"];
8012
+ };
8013
+ };
8014
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
8015
+ 429: {
8016
+ headers: {
8017
+ /** @description Seconds to wait before retrying (the window, 60). */
8018
+ "Retry-After"?: number;
8019
+ "X-Request-Id": components["headers"]["RequestId"];
8020
+ [name: string]: unknown;
8021
+ };
8022
+ content: {
8023
+ "application/json": components["schemas"]["ErrorResponseDto"];
8024
+ };
8025
+ };
6548
8026
  };
6549
8027
  };
6550
8028
  WorkspaceController_revokeInvite: {
@@ -6552,7 +8030,15 @@ interface operations {
6552
8030
  query?: never;
6553
8031
  header?: never;
6554
8032
  path: {
8033
+ /**
8034
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
8035
+ * @example acme
8036
+ */
6555
8037
  workspace_slug: string;
8038
+ /**
8039
+ * @description Id of the invite.
8040
+ * @example 3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f
8041
+ */
6556
8042
  invite_id: string;
6557
8043
  };
6558
8044
  cookie?: never;
@@ -6597,22 +8083,50 @@ interface operations {
6597
8083
  "application/json": components["schemas"]["ErrorResponseDto"];
6598
8084
  };
6599
8085
  };
8086
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
8087
+ 429: {
8088
+ headers: {
8089
+ /** @description Seconds to wait before retrying (the window, 60). */
8090
+ "Retry-After"?: number;
8091
+ "X-Request-Id": components["headers"]["RequestId"];
8092
+ [name: string]: unknown;
8093
+ };
8094
+ content: {
8095
+ "application/json": components["schemas"]["ErrorResponseDto"];
8096
+ };
8097
+ };
6600
8098
  };
6601
8099
  };
6602
8100
  WorkspaceController_listMembers: {
6603
8101
  parameters: {
6604
8102
  query?: {
6605
- /** @description Page size. Defaults to 20, clamped to 100. */
6606
- limit?: string;
6607
- /** @description Opaque `next_cursor` from the previous page. */
8103
+ /**
8104
+ * @description Page size. Defaults to 20, clamped to 100.
8105
+ * @example 20
8106
+ */
8107
+ limit?: number;
8108
+ /**
8109
+ * @description Opaque `next_cursor` from the previous page.
8110
+ * @example eyJjcmVhdGVkX2F0IjoiMjAyNi0xMS0wMVQwMDowMDowMFoifQ
8111
+ */
6608
8112
  cursor?: string;
6609
- /** @description Case-insensitive substring matched against the member’s display name, username OR primary email. `%` and `_` are matched literally. */
8113
+ /**
8114
+ * @description Case-insensitive substring matched against the member’s display name, username OR primary email. `%` and `_` are matched literally.
8115
+ * @example ada
8116
+ */
6610
8117
  q?: string;
6611
- /** @description Exact role name the membership is bound to — `owner`, `admin`, `member`, or a custom role’s name. Composes with `q` and with the cursor. */
8118
+ /**
8119
+ * @description Exact role name the membership is bound to — `owner`, `admin`, `member`, or a custom role’s name. Composes with `q` and with the cursor.
8120
+ * @example admin
8121
+ */
6612
8122
  role?: string;
6613
8123
  };
6614
8124
  header?: never;
6615
8125
  path: {
8126
+ /**
8127
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
8128
+ * @example acme
8129
+ */
6616
8130
  workspace_slug: string;
6617
8131
  };
6618
8132
  cookie?: never;
@@ -6668,6 +8182,18 @@ interface operations {
6668
8182
  "application/json": components["schemas"]["ErrorResponseDto"];
6669
8183
  };
6670
8184
  };
8185
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
8186
+ 429: {
8187
+ headers: {
8188
+ /** @description Seconds to wait before retrying (the window, 60). */
8189
+ "Retry-After"?: number;
8190
+ "X-Request-Id": components["headers"]["RequestId"];
8191
+ [name: string]: unknown;
8192
+ };
8193
+ content: {
8194
+ "application/json": components["schemas"]["ErrorResponseDto"];
8195
+ };
8196
+ };
6671
8197
  };
6672
8198
  };
6673
8199
  WorkspaceController_removeMember: {
@@ -6675,7 +8201,15 @@ interface operations {
6675
8201
  query?: never;
6676
8202
  header?: never;
6677
8203
  path: {
8204
+ /**
8205
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
8206
+ * @example acme
8207
+ */
6678
8208
  workspace_slug: string;
8209
+ /**
8210
+ * @description Id of the account.
8211
+ * @example 3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f
8212
+ */
6679
8213
  account_id: string;
6680
8214
  };
6681
8215
  cookie?: never;
@@ -6730,6 +8264,18 @@ interface operations {
6730
8264
  "application/json": components["schemas"]["ErrorResponseDto"];
6731
8265
  };
6732
8266
  };
8267
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
8268
+ 429: {
8269
+ headers: {
8270
+ /** @description Seconds to wait before retrying (the window, 60). */
8271
+ "Retry-After"?: number;
8272
+ "X-Request-Id": components["headers"]["RequestId"];
8273
+ [name: string]: unknown;
8274
+ };
8275
+ content: {
8276
+ "application/json": components["schemas"]["ErrorResponseDto"];
8277
+ };
8278
+ };
6733
8279
  };
6734
8280
  };
6735
8281
  WorkspaceController_updateMemberRole: {
@@ -6737,7 +8283,15 @@ interface operations {
6737
8283
  query?: never;
6738
8284
  header?: never;
6739
8285
  path: {
8286
+ /**
8287
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
8288
+ * @example acme
8289
+ */
6740
8290
  workspace_slug: string;
8291
+ /**
8292
+ * @description Id of the account.
8293
+ * @example 3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f
8294
+ */
6741
8295
  account_id: string;
6742
8296
  };
6743
8297
  cookie?: never;
@@ -6807,18 +8361,40 @@ interface operations {
6807
8361
  "application/json": components["schemas"]["ErrorResponseDto"];
6808
8362
  };
6809
8363
  };
8364
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
8365
+ 429: {
8366
+ headers: {
8367
+ /** @description Seconds to wait before retrying (the window, 60). */
8368
+ "Retry-After"?: number;
8369
+ "X-Request-Id": components["headers"]["RequestId"];
8370
+ [name: string]: unknown;
8371
+ };
8372
+ content: {
8373
+ "application/json": components["schemas"]["ErrorResponseDto"];
8374
+ };
8375
+ };
6810
8376
  };
6811
8377
  };
6812
8378
  WorkspacePolicyController_list: {
6813
8379
  parameters: {
6814
8380
  query?: {
6815
- /** @description Page size. Defaults to 20, clamped to 100. */
6816
- limit?: string;
6817
- /** @description Opaque `next_cursor` from the previous page. */
8381
+ /**
8382
+ * @description Page size. Defaults to 20, clamped to 100.
8383
+ * @example 20
8384
+ */
8385
+ limit?: number;
8386
+ /**
8387
+ * @description Opaque `next_cursor` from the previous page.
8388
+ * @example eyJjcmVhdGVkX2F0IjoiMjAyNi0xMS0wMVQwMDowMDowMFoifQ
8389
+ */
6818
8390
  cursor?: string;
6819
8391
  };
6820
8392
  header?: never;
6821
8393
  path: {
8394
+ /**
8395
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
8396
+ * @example acme
8397
+ */
6822
8398
  workspace_slug: string;
6823
8399
  };
6824
8400
  cookie?: never;
@@ -6855,13 +8431,32 @@ interface operations {
6855
8431
  "application/json": components["schemas"]["ErrorResponseDto"];
6856
8432
  };
6857
8433
  };
8434
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
8435
+ 429: {
8436
+ headers: {
8437
+ /** @description Seconds to wait before retrying (the window, 60). */
8438
+ "Retry-After"?: number;
8439
+ "X-Request-Id": components["headers"]["RequestId"];
8440
+ [name: string]: unknown;
8441
+ };
8442
+ content: {
8443
+ "application/json": components["schemas"]["ErrorResponseDto"];
8444
+ };
8445
+ };
6858
8446
  };
6859
8447
  };
6860
8448
  WorkspacePolicyController_create: {
6861
8449
  parameters: {
6862
8450
  query?: never;
6863
- header?: never;
8451
+ header?: {
8452
+ /** @description Opaque client-generated string (1-256 chars, `[A-Za-z0-9_-:]`) that deduplicates retries for 24 h. A retry with the same key and body returns the first response with `Idempotent-Replay: true` instead of creating a second resource. The SDKs send one on every create. */
8453
+ "Idempotency-Key"?: string;
8454
+ };
6864
8455
  path: {
8456
+ /**
8457
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
8458
+ * @example acme
8459
+ */
6865
8460
  workspace_slug: string;
6866
8461
  };
6867
8462
  cookie?: never;
@@ -6875,6 +8470,8 @@ interface operations {
6875
8470
  /** @description Policy created. */
6876
8471
  201: {
6877
8472
  headers: {
8473
+ /** @description `true` when this response is a replay of an earlier request with the same `Idempotency-Key`. */
8474
+ "Idempotent-Replay"?: "true";
6878
8475
  "X-Request-Id": components["headers"]["RequestId"];
6879
8476
  [name: string]: unknown;
6880
8477
  };
@@ -6912,9 +8509,23 @@ interface operations {
6912
8509
  "application/json": components["schemas"]["ErrorResponseDto"];
6913
8510
  };
6914
8511
  };
6915
- /** @description Name already in use, or the workspace already has 100 policies. */
8512
+ /** @description Name already in use, or the workspace already has 100 policies. Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key). */
6916
8513
  409: {
6917
8514
  headers: {
8515
+ /** @description Seconds to wait before retrying with the same key (sent with `IDEMPOTENCY_IN_PROGRESS`). */
8516
+ "Retry-After"?: number;
8517
+ "X-Request-Id": components["headers"]["RequestId"];
8518
+ [name: string]: unknown;
8519
+ };
8520
+ content: {
8521
+ "application/json": components["schemas"]["ErrorResponseDto"];
8522
+ };
8523
+ };
8524
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
8525
+ 429: {
8526
+ headers: {
8527
+ /** @description Seconds to wait before retrying (the window, 60). */
8528
+ "Retry-After"?: number;
6918
8529
  "X-Request-Id": components["headers"]["RequestId"];
6919
8530
  [name: string]: unknown;
6920
8531
  };
@@ -6929,6 +8540,10 @@ interface operations {
6929
8540
  query?: never;
6930
8541
  header?: never;
6931
8542
  path: {
8543
+ /**
8544
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
8545
+ * @example acme
8546
+ */
6932
8547
  workspace_slug: string;
6933
8548
  };
6934
8549
  cookie?: never;
@@ -6974,6 +8589,18 @@ interface operations {
6974
8589
  "application/json": components["schemas"]["ErrorResponseDto"];
6975
8590
  };
6976
8591
  };
8592
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
8593
+ 429: {
8594
+ headers: {
8595
+ /** @description Seconds to wait before retrying (the window, 60). */
8596
+ "Retry-After"?: number;
8597
+ "X-Request-Id": components["headers"]["RequestId"];
8598
+ [name: string]: unknown;
8599
+ };
8600
+ content: {
8601
+ "application/json": components["schemas"]["ErrorResponseDto"];
8602
+ };
8603
+ };
6977
8604
  };
6978
8605
  };
6979
8606
  WorkspacePolicyController_get: {
@@ -6981,7 +8608,15 @@ interface operations {
6981
8608
  query?: never;
6982
8609
  header?: never;
6983
8610
  path: {
8611
+ /**
8612
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
8613
+ * @example acme
8614
+ */
6984
8615
  workspace_slug: string;
8616
+ /**
8617
+ * @description Id of the policy.
8618
+ * @example 3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f
8619
+ */
6985
8620
  policy_id: string;
6986
8621
  };
6987
8622
  cookie?: never;
@@ -7018,6 +8653,18 @@ interface operations {
7018
8653
  "application/json": components["schemas"]["ErrorResponseDto"];
7019
8654
  };
7020
8655
  };
8656
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
8657
+ 429: {
8658
+ headers: {
8659
+ /** @description Seconds to wait before retrying (the window, 60). */
8660
+ "Retry-After"?: number;
8661
+ "X-Request-Id": components["headers"]["RequestId"];
8662
+ [name: string]: unknown;
8663
+ };
8664
+ content: {
8665
+ "application/json": components["schemas"]["ErrorResponseDto"];
8666
+ };
8667
+ };
7021
8668
  };
7022
8669
  };
7023
8670
  WorkspacePolicyController_delete: {
@@ -7025,7 +8672,15 @@ interface operations {
7025
8672
  query?: never;
7026
8673
  header?: never;
7027
8674
  path: {
8675
+ /**
8676
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
8677
+ * @example acme
8678
+ */
7028
8679
  workspace_slug: string;
8680
+ /**
8681
+ * @description Id of the policy.
8682
+ * @example 3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f
8683
+ */
7029
8684
  policy_id: string;
7030
8685
  };
7031
8686
  cookie?: never;
@@ -7072,6 +8727,18 @@ interface operations {
7072
8727
  "application/json": components["schemas"]["ErrorResponseDto"];
7073
8728
  };
7074
8729
  };
8730
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
8731
+ 429: {
8732
+ headers: {
8733
+ /** @description Seconds to wait before retrying (the window, 60). */
8734
+ "Retry-After"?: number;
8735
+ "X-Request-Id": components["headers"]["RequestId"];
8736
+ [name: string]: unknown;
8737
+ };
8738
+ content: {
8739
+ "application/json": components["schemas"]["ErrorResponseDto"];
8740
+ };
8741
+ };
7075
8742
  };
7076
8743
  };
7077
8744
  WorkspacePolicyController_update: {
@@ -7079,7 +8746,15 @@ interface operations {
7079
8746
  query?: never;
7080
8747
  header?: never;
7081
8748
  path: {
8749
+ /**
8750
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
8751
+ * @example acme
8752
+ */
7082
8753
  workspace_slug: string;
8754
+ /**
8755
+ * @description Id of the policy.
8756
+ * @example 3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f
8757
+ */
7083
8758
  policy_id: string;
7084
8759
  };
7085
8760
  cookie?: never;
@@ -7150,18 +8825,40 @@ interface operations {
7150
8825
  "application/json": components["schemas"]["ErrorResponseDto"];
7151
8826
  };
7152
8827
  };
8828
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
8829
+ 429: {
8830
+ headers: {
8831
+ /** @description Seconds to wait before retrying (the window, 60). */
8832
+ "Retry-After"?: number;
8833
+ "X-Request-Id": components["headers"]["RequestId"];
8834
+ [name: string]: unknown;
8835
+ };
8836
+ content: {
8837
+ "application/json": components["schemas"]["ErrorResponseDto"];
8838
+ };
8839
+ };
7153
8840
  };
7154
8841
  };
7155
8842
  WorkspaceRoleController_list: {
7156
8843
  parameters: {
7157
8844
  query?: {
7158
- /** @description Page size. Defaults to 20, clamped to 100. */
7159
- limit?: string;
7160
- /** @description Opaque `next_cursor` from the previous page. */
8845
+ /**
8846
+ * @description Page size. Defaults to 20, clamped to 100.
8847
+ * @example 20
8848
+ */
8849
+ limit?: number;
8850
+ /**
8851
+ * @description Opaque `next_cursor` from the previous page.
8852
+ * @example eyJjcmVhdGVkX2F0IjoiMjAyNi0xMS0wMVQwMDowMDowMFoifQ
8853
+ */
7161
8854
  cursor?: string;
7162
8855
  };
7163
8856
  header?: never;
7164
8857
  path: {
8858
+ /**
8859
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
8860
+ * @example acme
8861
+ */
7165
8862
  workspace_slug: string;
7166
8863
  };
7167
8864
  cookie?: never;
@@ -7198,13 +8895,32 @@ interface operations {
7198
8895
  "application/json": components["schemas"]["ErrorResponseDto"];
7199
8896
  };
7200
8897
  };
8898
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
8899
+ 429: {
8900
+ headers: {
8901
+ /** @description Seconds to wait before retrying (the window, 60). */
8902
+ "Retry-After"?: number;
8903
+ "X-Request-Id": components["headers"]["RequestId"];
8904
+ [name: string]: unknown;
8905
+ };
8906
+ content: {
8907
+ "application/json": components["schemas"]["ErrorResponseDto"];
8908
+ };
8909
+ };
7201
8910
  };
7202
8911
  };
7203
8912
  WorkspaceRoleController_create: {
7204
8913
  parameters: {
7205
8914
  query?: never;
7206
- header?: never;
8915
+ header?: {
8916
+ /** @description Opaque client-generated string (1-256 chars, `[A-Za-z0-9_-:]`) that deduplicates retries for 24 h. A retry with the same key and body returns the first response with `Idempotent-Replay: true` instead of creating a second resource. The SDKs send one on every create. */
8917
+ "Idempotency-Key"?: string;
8918
+ };
7207
8919
  path: {
8920
+ /**
8921
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
8922
+ * @example acme
8923
+ */
7208
8924
  workspace_slug: string;
7209
8925
  };
7210
8926
  cookie?: never;
@@ -7217,6 +8933,8 @@ interface operations {
7217
8933
  responses: {
7218
8934
  201: {
7219
8935
  headers: {
8936
+ /** @description `true` when this response is a replay of an earlier request with the same `Idempotency-Key`. */
8937
+ "Idempotent-Replay"?: "true";
7220
8938
  "X-Request-Id": components["headers"]["RequestId"];
7221
8939
  [name: string]: unknown;
7222
8940
  };
@@ -7264,9 +8982,23 @@ interface operations {
7264
8982
  "application/json": components["schemas"]["ErrorResponseDto"];
7265
8983
  };
7266
8984
  };
7267
- /** @description Role name already in use or reserved for a system role (`ROLE_NAME_TAKEN`). */
8985
+ /** @description Role name already in use or reserved for a system role (`ROLE_NAME_TAKEN`). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key). */
7268
8986
  409: {
7269
8987
  headers: {
8988
+ /** @description Seconds to wait before retrying with the same key (sent with `IDEMPOTENCY_IN_PROGRESS`). */
8989
+ "Retry-After"?: number;
8990
+ "X-Request-Id": components["headers"]["RequestId"];
8991
+ [name: string]: unknown;
8992
+ };
8993
+ content: {
8994
+ "application/json": components["schemas"]["ErrorResponseDto"];
8995
+ };
8996
+ };
8997
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
8998
+ 429: {
8999
+ headers: {
9000
+ /** @description Seconds to wait before retrying (the window, 60). */
9001
+ "Retry-After"?: number;
7270
9002
  "X-Request-Id": components["headers"]["RequestId"];
7271
9003
  [name: string]: unknown;
7272
9004
  };
@@ -7281,7 +9013,15 @@ interface operations {
7281
9013
  query?: never;
7282
9014
  header?: never;
7283
9015
  path: {
9016
+ /**
9017
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
9018
+ * @example acme
9019
+ */
7284
9020
  workspace_slug: string;
9021
+ /**
9022
+ * @description Id of the role.
9023
+ * @example 3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f
9024
+ */
7285
9025
  role_id: string;
7286
9026
  };
7287
9027
  cookie?: never;
@@ -7337,6 +9077,18 @@ interface operations {
7337
9077
  "application/json": components["schemas"]["ErrorResponseDto"];
7338
9078
  };
7339
9079
  };
9080
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
9081
+ 429: {
9082
+ headers: {
9083
+ /** @description Seconds to wait before retrying (the window, 60). */
9084
+ "Retry-After"?: number;
9085
+ "X-Request-Id": components["headers"]["RequestId"];
9086
+ [name: string]: unknown;
9087
+ };
9088
+ content: {
9089
+ "application/json": components["schemas"]["ErrorResponseDto"];
9090
+ };
9091
+ };
7340
9092
  };
7341
9093
  };
7342
9094
  WorkspaceRoleController_delete: {
@@ -7344,7 +9096,15 @@ interface operations {
7344
9096
  query?: never;
7345
9097
  header?: never;
7346
9098
  path: {
9099
+ /**
9100
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
9101
+ * @example acme
9102
+ */
7347
9103
  workspace_slug: string;
9104
+ /**
9105
+ * @description Id of the role.
9106
+ * @example 3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f
9107
+ */
7348
9108
  role_id: string;
7349
9109
  };
7350
9110
  cookie?: never;
@@ -7409,6 +9169,18 @@ interface operations {
7409
9169
  "application/json": components["schemas"]["ErrorResponseDto"];
7410
9170
  };
7411
9171
  };
9172
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
9173
+ 429: {
9174
+ headers: {
9175
+ /** @description Seconds to wait before retrying (the window, 60). */
9176
+ "Retry-After"?: number;
9177
+ "X-Request-Id": components["headers"]["RequestId"];
9178
+ [name: string]: unknown;
9179
+ };
9180
+ content: {
9181
+ "application/json": components["schemas"]["ErrorResponseDto"];
9182
+ };
9183
+ };
7412
9184
  };
7413
9185
  };
7414
9186
  WorkspaceRoleController_update: {
@@ -7416,7 +9188,15 @@ interface operations {
7416
9188
  query?: never;
7417
9189
  header?: never;
7418
9190
  path: {
9191
+ /**
9192
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
9193
+ * @example acme
9194
+ */
7419
9195
  workspace_slug: string;
9196
+ /**
9197
+ * @description Id of the role.
9198
+ * @example 3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f
9199
+ */
7420
9200
  role_id: string;
7421
9201
  };
7422
9202
  cookie?: never;
@@ -7486,6 +9266,18 @@ interface operations {
7486
9266
  "application/json": components["schemas"]["ErrorResponseDto"];
7487
9267
  };
7488
9268
  };
9269
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
9270
+ 429: {
9271
+ headers: {
9272
+ /** @description Seconds to wait before retrying (the window, 60). */
9273
+ "Retry-After"?: number;
9274
+ "X-Request-Id": components["headers"]["RequestId"];
9275
+ [name: string]: unknown;
9276
+ };
9277
+ content: {
9278
+ "application/json": components["schemas"]["ErrorResponseDto"];
9279
+ };
9280
+ };
7489
9281
  };
7490
9282
  };
7491
9283
  WorkspaceServiceController_list: {
@@ -7493,6 +9285,10 @@ interface operations {
7493
9285
  query?: never;
7494
9286
  header?: never;
7495
9287
  path: {
9288
+ /**
9289
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
9290
+ * @example acme
9291
+ */
7496
9292
  workspace_slug: string;
7497
9293
  };
7498
9294
  cookie?: never;
@@ -7538,6 +9334,18 @@ interface operations {
7538
9334
  "application/json": components["schemas"]["ErrorResponseDto"];
7539
9335
  };
7540
9336
  };
9337
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
9338
+ 429: {
9339
+ headers: {
9340
+ /** @description Seconds to wait before retrying (the window, 60). */
9341
+ "Retry-After"?: number;
9342
+ "X-Request-Id": components["headers"]["RequestId"];
9343
+ [name: string]: unknown;
9344
+ };
9345
+ content: {
9346
+ "application/json": components["schemas"]["ErrorResponseDto"];
9347
+ };
9348
+ };
7541
9349
  };
7542
9350
  };
7543
9351
  WorkspaceServiceController_enable: {
@@ -7545,7 +9353,15 @@ interface operations {
7545
9353
  query?: never;
7546
9354
  header?: never;
7547
9355
  path: {
9356
+ /**
9357
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
9358
+ * @example acme
9359
+ */
7548
9360
  workspace_slug: string;
9361
+ /**
9362
+ * @description The product: `auth`, `mail`, `waitlist`, `social` or `trawl`.
9363
+ * @example mail
9364
+ */
7549
9365
  service: string;
7550
9366
  };
7551
9367
  cookie?: never;
@@ -7605,6 +9421,18 @@ interface operations {
7605
9421
  "application/json": components["schemas"]["ErrorResponseDto"];
7606
9422
  };
7607
9423
  };
9424
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
9425
+ 429: {
9426
+ headers: {
9427
+ /** @description Seconds to wait before retrying (the window, 60). */
9428
+ "Retry-After"?: number;
9429
+ "X-Request-Id": components["headers"]["RequestId"];
9430
+ [name: string]: unknown;
9431
+ };
9432
+ content: {
9433
+ "application/json": components["schemas"]["ErrorResponseDto"];
9434
+ };
9435
+ };
7608
9436
  };
7609
9437
  };
7610
9438
  WorkspaceServiceController_disable: {
@@ -7612,7 +9440,15 @@ interface operations {
7612
9440
  query?: never;
7613
9441
  header?: never;
7614
9442
  path: {
9443
+ /**
9444
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
9445
+ * @example acme
9446
+ */
7615
9447
  workspace_slug: string;
9448
+ /**
9449
+ * @description The product: `auth`, `mail`, `waitlist`, `social` or `trawl`.
9450
+ * @example mail
9451
+ */
7616
9452
  service: string;
7617
9453
  };
7618
9454
  cookie?: never;
@@ -7677,6 +9513,18 @@ interface operations {
7677
9513
  "application/json": components["schemas"]["ErrorResponseDto"];
7678
9514
  };
7679
9515
  };
9516
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
9517
+ 429: {
9518
+ headers: {
9519
+ /** @description Seconds to wait before retrying (the window, 60). */
9520
+ "Retry-After"?: number;
9521
+ "X-Request-Id": components["headers"]["RequestId"];
9522
+ [name: string]: unknown;
9523
+ };
9524
+ content: {
9525
+ "application/json": components["schemas"]["ErrorResponseDto"];
9526
+ };
9527
+ };
7680
9528
  };
7681
9529
  };
7682
9530
  WorkspaceServiceController_updateSettings: {
@@ -7684,7 +9532,15 @@ interface operations {
7684
9532
  query?: never;
7685
9533
  header?: never;
7686
9534
  path: {
9535
+ /**
9536
+ * @description Slug of the workspace. Platform routes name the workspace by slug, positionally in the SDK (`platform.workspaces.retrieve("acme")`); the product APIs bind `workspace_id` instead.
9537
+ * @example acme
9538
+ */
7687
9539
  workspace_slug: string;
9540
+ /**
9541
+ * @description The product: `auth`, `mail`, `waitlist`, `social` or `trawl`.
9542
+ * @example mail
9543
+ */
7688
9544
  service: string;
7689
9545
  };
7690
9546
  cookie?: never;
@@ -7747,6 +9603,18 @@ interface operations {
7747
9603
  "application/json": components["schemas"]["ErrorResponseDto"];
7748
9604
  };
7749
9605
  };
9606
+ /** @description Rate limited: too many requests from this client IP in the last 60 seconds (`RATE_LIMITED`); wait `Retry-After` seconds. */
9607
+ 429: {
9608
+ headers: {
9609
+ /** @description Seconds to wait before retrying (the window, 60). */
9610
+ "Retry-After"?: number;
9611
+ "X-Request-Id": components["headers"]["RequestId"];
9612
+ [name: string]: unknown;
9613
+ };
9614
+ content: {
9615
+ "application/json": components["schemas"]["ErrorResponseDto"];
9616
+ };
9617
+ };
7750
9618
  };
7751
9619
  };
7752
9620
  }