codai-sdk 0.70.0__tar.gz → 0.72.0__tar.gz

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.
Files changed (99) hide show
  1. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/CHANGELOG.md +18 -0
  2. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/PKG-INFO +1 -1
  3. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/pyproject.toml +1 -1
  4. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/__init__.py +1 -1
  5. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/_operations.py +24 -0
  6. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/_types.py +392 -3
  7. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/productions.py +17 -6
  8. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/vault.py +214 -1
  9. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_resources.py +1 -1
  10. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_vault.py +109 -0
  11. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  12. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  13. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/.github/dependabot.yml +0 -0
  14. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/.github/pull_request_template.md +0 -0
  15. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/.github/workflows/publish.yml +0 -0
  16. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/.gitignore +0 -0
  17. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/CODE_OF_CONDUCT.md +0 -0
  18. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/CONTRIBUTING.md +0 -0
  19. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/LICENSE +0 -0
  20. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/README.md +0 -0
  21. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/SECURITY.md +0 -0
  22. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/examples/agent.py +0 -0
  23. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/examples/chat.py +0 -0
  24. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/examples/feedback.py +0 -0
  25. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/examples/streaming.py +0 -0
  26. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/scripts/gen-types.py +0 -0
  27. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/scripts/smoke_local.py +0 -0
  28. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/_http.py +0 -0
  29. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/_resolve_types.py +0 -0
  30. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/__init__.py +0 -0
  31. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/_base.py +0 -0
  32. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/abuse_reports.py +0 -0
  33. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/agents.py +0 -0
  34. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/batches.py +0 -0
  35. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/billing.py +0 -0
  36. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/brand_kits.py +0 -0
  37. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/cards.py +0 -0
  38. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/chat.py +0 -0
  39. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/core.py +0 -0
  40. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/creatives.py +0 -0
  41. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/environments.py +0 -0
  42. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/exports.py +0 -0
  43. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/lists.py +0 -0
  44. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/lyrics.py +0 -0
  45. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/media_ops.py +0 -0
  46. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/memory.py +0 -0
  47. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/messages.py +0 -0
  48. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/music_room.py +0 -0
  49. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/platform.py +0 -0
  50. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/prompts.py +0 -0
  51. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/provenance.py +0 -0
  52. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/referrals.py +0 -0
  53. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/research.py +0 -0
  54. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/resolve.py +0 -0
  55. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/responses.py +0 -0
  56. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/sandboxes.py +0 -0
  57. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/schedules.py +0 -0
  58. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/sessions.py +0 -0
  59. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/shares.py +0 -0
  60. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/templates.py +0 -0
  61. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/transcripts.py +0 -0
  62. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/triggers.py +0 -0
  63. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/usage_keys.py +0 -0
  64. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/voice_revocations.py +0 -0
  65. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/src/codai/resources/voices.py +0 -0
  66. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/conftest.py +0 -0
  67. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_abuse_reports.py +0 -0
  68. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_batches.py +0 -0
  69. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_billing_referrals.py +0 -0
  70. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_brand_kits.py +0 -0
  71. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_cards.py +0 -0
  72. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_creatives.py +0 -0
  73. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_creatives_cx07.py +0 -0
  74. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_creatives_documents.py +0 -0
  75. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_creatives_e11.py +0 -0
  76. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_creatives_e11b.py +0 -0
  77. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_environments_exec.py +0 -0
  78. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_exports.py +0 -0
  79. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_http.py +0 -0
  80. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_lists.py +0 -0
  81. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_lyrics.py +0 -0
  82. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_media_ops.py +0 -0
  83. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_memory.py +0 -0
  84. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_music_room.py +0 -0
  85. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_os_gate.py +0 -0
  86. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_parity.py +0 -0
  87. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_productions.py +0 -0
  88. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_prompts.py +0 -0
  89. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_provenance.py +0 -0
  90. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_research.py +0 -0
  91. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_resolve.py +0 -0
  92. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_sandboxes.py +0 -0
  93. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_settings.py +0 -0
  94. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_shares_e12a.py +0 -0
  95. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_templates.py +0 -0
  96. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_transcripts.py +0 -0
  97. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_voice_revocations.py +0 -0
  98. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/tests/test_voices.py +0 -0
  99. {codai_sdk-0.70.0 → codai_sdk-0.72.0}/uv.lock +0 -0
@@ -6,6 +6,24 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.72.0] - 2026-10-24
10
+
11
+ - Vault wave 2 (ADR `docs/decisions/2026-10-24-vault-wave2.md`), mirroring `codai-sdk` 0.73.0:
12
+ - `vault.add_requests.create / get / cancel / lookup / complete` (`/v1/vault/add-requests*`): an agent asks the
13
+ user to add a missing secret and polls until `handle` is set. No secret passes through these calls.
14
+ - `vault.emergency.list / invite / accept / seal / update / revoke / request / deny / approve / vault_data`
15
+ (`/v1/vault/emergency*`): emergency contacts with vault keys sealed client-side and a 24/48/72 h wait.
16
+ - `vault.hibp_range(prefix)` (text, k-anonymity), `vault.rotation()`, `vault.set_rotation(item_id, ...)`,
17
+ `vault.mark_rotated(item_id)`, `vault.report_breaches(results)`: rotation queue and client-side breach checks.
18
+ - `vault.derivers()`, `vault.set_deriver(...)`, `vault.delete_deriver(item_id)`, `vault.derive(body)`: short-lived
19
+ credentials for codai brokers; HTTP 202 (approval required) is returned, not raised.
20
+
21
+ ## [0.71.0] - 2026-10-24
22
+
23
+ - `productions.create(kind=..., duration_s=...)`: 8 production kinds (video, image, deck, doc, sheet, audio,
24
+ carousel, print) and a 15-60 s target length for video; non-video responses carry `kind`, `output_asset_id` and
25
+ `outputs`.
26
+
9
27
  ## [0.70.0] - 2026-10-24
10
28
 
11
29
  - `vault.resolve_challenge()` (`POST /v1/vault/resolve/challenge`) and a required `proof` on `vault.resolve()`: local
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: codai-sdk
3
- Version: 0.70.0
3
+ Version: 0.72.0
4
4
  Summary: Official Python SDK for the codai AI gateway — chat, messages, responses, streaming, agents, sessions, hosts, tasks, account.
5
5
  Project-URL: Homepage, https://codai.ro
6
6
  Project-URL: Repository, https://github.com/codai-ro/codai-sdk-python
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "codai-sdk"
7
- version = "0.70.0"
7
+ version = "0.72.0"
8
8
  description = "Official Python SDK for the codai AI gateway — chat, messages, responses, streaming, agents, sessions, hosts, tasks, account."
9
9
  readme = "README.md"
10
10
 
@@ -172,7 +172,7 @@ __all__ = [
172
172
  "vault_resolve_message",
173
173
  "vault_unlock_message",
174
174
  ]
175
- __version__ = "0.70.0"
175
+ __version__ = "0.72.0"
176
176
  class _CallableGroup:
177
177
  """A resource group that is also callable — keeps ``client.chat(...)``,
178
178
  ``client.embeddings(...)``, ``client.models()`` and ``client.feedback(...)``
@@ -140,6 +140,30 @@ OPERATION_METHODS: Dict[str, str] = {
140
140
  "vaultHttp": "vault.http_call",
141
141
  "vaultResolve": "vault.resolve",
142
142
  "createVaultResolveChallenge": "vault.resolve_challenge",
143
+ "createVaultAddRequest": "vault.add_requests.create",
144
+ "getVaultAddRequest": "vault.add_requests.get",
145
+ "cancelVaultAddRequest": "vault.add_requests.cancel",
146
+ "lookupVaultAddRequest": "vault.add_requests.lookup",
147
+ "completeVaultAddRequest": "vault.add_requests.complete",
148
+ "listVaultEmergency": "vault.emergency.list",
149
+ "inviteVaultEmergency": "vault.emergency.invite",
150
+ "acceptVaultEmergency": "vault.emergency.accept",
151
+ "sealVaultEmergency": "vault.emergency.seal",
152
+ "updateVaultEmergency": "vault.emergency.update",
153
+ "revokeVaultEmergency": "vault.emergency.revoke",
154
+ "requestVaultEmergency": "vault.emergency.request",
155
+ "denyVaultEmergency": "vault.emergency.deny",
156
+ "approveVaultEmergency": "vault.emergency.approve",
157
+ "getVaultEmergencyData": "vault.emergency.vault_data",
158
+ "getVaultHibpRange": "vault.hibp_range",
159
+ "listVaultRotation": "vault.rotation",
160
+ "setVaultItemRotation": "vault.set_rotation",
161
+ "markVaultItemRotated": "vault.mark_rotated",
162
+ "reportVaultBreaches": "vault.report_breaches",
163
+ "listVaultDerivers": "vault.derivers",
164
+ "setVaultItemDeriver": "vault.set_deriver",
165
+ "deleteVaultItemDeriver": "vault.delete_deriver",
166
+ "deriveVaultCredential": "vault.derive",
143
167
  "createStudioAbuseReport": "abuse_reports.create",
144
168
  "checkProvenance": "provenance.check",
145
169
  "createStudioBatch": "batches.create",
@@ -2518,14 +2518,20 @@ class MediaOpJob(TypedDict):
2518
2518
  updated_at: str
2519
2519
 
2520
2520
 
2521
+ # What the production builds: `video` (MP4), `image` (PNG), `deck` (PPTX), `doc` (DOCX), `sheet` (XLSX), `audio`…
2522
+ StudioProductionKind = Literal['video', 'image', 'deck', 'doc', 'sheet', 'audio', 'carousel', 'print']
2523
+
2524
+
2521
2525
  class _StudioProductionCreateRequired(TypedDict):
2522
2526
  brief: str
2523
2527
 
2524
2528
 
2525
2529
  class StudioProductionCreate(_StudioProductionCreateRequired, total=False):
2526
2530
  """Studio production request"""
2531
+ kind: StudioProductionKind
2527
2532
  language: Literal['en', 'ro']
2528
2533
  aspect_ratio: Literal['16:9', '9:16', '1:1']
2534
+ duration_s: int
2529
2535
  starter: str
2530
2536
  voice: str
2531
2537
  narration: bool
@@ -2539,8 +2545,24 @@ class StudioProductionQa(TypedDict, total=False):
2539
2545
  skipped: str
2540
2546
 
2541
2547
 
2542
- class StudioProduction(TypedDict):
2543
- """Studio production"""
2548
+ class StudioProductionOutput(TypedDict):
2549
+ """A built output of a non-video production: the regular Studio asset plus its `role`. `url` is a 1 h signed GET,…"""
2550
+ asset_id: str
2551
+ kind: AssetKind
2552
+ status: Literal['pending', 'ready', 'failed', 'deleted']
2553
+ model: str
2554
+ url: Optional[str]
2555
+ mime_type: str
2556
+ bytes: int
2557
+ duration_seconds: Optional[float]
2558
+ width: Optional[int]
2559
+ height: Optional[int]
2560
+ created_at: str
2561
+ expires_at: Optional[str]
2562
+ role: Literal['image', 'cover', 'document', 'pages', 'pdf', 'audio']
2563
+
2564
+
2565
+ class _StudioProductionRequired(TypedDict):
2544
2566
  id: str
2545
2567
  object: Literal['studio.production']
2546
2568
  status: Literal['running', 'succeeded', 'failed']
@@ -2562,6 +2584,14 @@ class StudioProduction(TypedDict):
2562
2584
  created_at: str
2563
2585
 
2564
2586
 
2587
+ class StudioProduction(_StudioProductionRequired, total=False):
2588
+ """Studio production"""
2589
+ duration_s: Optional[int]
2590
+ kind: StudioProductionKind
2591
+ output_asset_id: Optional[str]
2592
+ outputs: List[StudioProductionOutput]
2593
+
2594
+
2565
2595
  class _MusicRoomCreateRequired(TypedDict):
2566
2596
  brief: str
2567
2597
 
@@ -5745,7 +5775,7 @@ class AccountPatchResponse(TypedDict):
5745
5775
  training_opt_out: bool
5746
5776
  consents: List[AccountConsent]
5747
5777
  username_error: Optional[Literal['invalid', 'taken', 'change_limit']]
5748
- referral_result: Optional[Literal['window_closed', 'none', 'invalid_code', 'self', 'already_referred', 'flagged', 'granted', 'cap_reached']]
5778
+ referral_result: Optional[Literal['window_closed', 'none', 'invalid_code', 'self', 'already_referred', 'flagged', 'pending_payment', 'granted', 'cap_reached']]
5749
5779
 
5750
5780
 
5751
5781
  class BillingSubscription(TypedDict):
@@ -7160,6 +7190,127 @@ class VaultApprovalProofOption2(TypedDict):
7160
7190
  VaultApprovalProof = Union[VaultApprovalProofOption1, VaultApprovalProofOption2]
7161
7191
 
7162
7192
 
7193
+ class _VaultAddRequestCreateRequired(TypedDict):
7194
+ kind: Literal['login', 'api_key', 'env', 'ssh_key', 'oauth_token', 'note', 'card', 'identity', 'passkey']
7195
+ title: str
7196
+ purpose: str
7197
+
7198
+
7199
+ class VaultAddRequestCreate(_VaultAddRequestCreateRequired, total=False):
7200
+ slug: str
7201
+ hosts: List[str]
7202
+ env_var: str
7203
+ fields: List[str]
7204
+ task: str
7205
+
7206
+
7207
+ class VaultAddRequestCreated(TypedDict):
7208
+ id: str
7209
+ url: Optional[str]
7210
+ status: Literal['pending', 'completed', 'cancelled', 'expired']
7211
+ expires_at: str
7212
+
7213
+
7214
+ class VaultAddRequestStatus(TypedDict):
7215
+ id: str
7216
+ status: Literal['pending', 'completed', 'cancelled', 'expired']
7217
+ slug: Optional[str]
7218
+ handle: Optional[str]
7219
+ item_id: Optional[str]
7220
+ expires_at: str
7221
+
7222
+
7223
+ class VaultAddRequest(TypedDict):
7224
+ id: str
7225
+ status: Literal['pending', 'completed', 'cancelled', 'expired']
7226
+ agent: str
7227
+ kind: Literal['login', 'api_key', 'env', 'ssh_key', 'oauth_token', 'note', 'card', 'identity', 'passkey']
7228
+ title: str
7229
+ slug: Optional[str]
7230
+ hosts: List[str]
7231
+ env_var: Optional[str]
7232
+ fields: List[str]
7233
+ purpose: str
7234
+ task: Optional[str]
7235
+ handle: Optional[str]
7236
+ item_id: Optional[str]
7237
+ expires_at: str
7238
+ completed_at: Optional[str]
7239
+ created_at: str
7240
+
7241
+
7242
+ class VaultEmergencyContact(TypedDict):
7243
+ id: str
7244
+ role: Literal['grantor', 'grantee']
7245
+ email: Optional[str]
7246
+ other_name: Optional[str]
7247
+ status: Literal['invited', 'accepted', 'sealed', 'requested', 'granted', 'revoked']
7248
+ delay_hours: Literal[24, 48, 72]
7249
+ vault_ids: List[str]
7250
+ grantee_fingerprint: Optional[str]
7251
+ grantee_public_keys: Optional[Dict[str, Any]]
7252
+ request_reason: Optional[str]
7253
+ requested_at: Optional[str]
7254
+ release_at: Optional[str]
7255
+ granted_at: Optional[str]
7256
+ denied_at: Optional[str]
7257
+ created_at: str
7258
+
7259
+
7260
+ class VaultEmergencyDataVaultsItem(TypedDict):
7261
+ id: str
7262
+ encrypted_meta: str
7263
+ sealed_key: Dict[str, Any]
7264
+
7265
+
7266
+ class VaultEmergencyDataItemsItem(TypedDict):
7267
+ id: str
7268
+ vault_id: str
7269
+ revision: int
7270
+ wrapped_key: str
7271
+ ciphertext: str
7272
+ kind: str
7273
+ slug: Optional[str]
7274
+ agent_meta: Any
7275
+
7276
+
7277
+ class VaultEmergencyData(TypedDict):
7278
+ vaults: List[VaultEmergencyDataVaultsItem]
7279
+ items: List[VaultEmergencyDataItemsItem]
7280
+
7281
+
7282
+ class VaultRotationEntry(TypedDict):
7283
+ item_id: str
7284
+ slug: Optional[str]
7285
+ title: Optional[str]
7286
+ kind: str
7287
+ interval_days: Optional[int]
7288
+ rotated_at: Optional[str]
7289
+ due_at: Optional[str]
7290
+ overdue: bool
7291
+ breached: bool
7292
+ breach_count: int
7293
+ breach_checked_at: Optional[str]
7294
+ snoozed_until: Optional[str]
7295
+ provider: Optional[Literal['stripe', 'github_pat', 'openai', 'google_api_key', 'other']]
7296
+ create_url: Optional[str]
7297
+
7298
+
7299
+ class VaultDeriver(TypedDict):
7300
+ item_id: str
7301
+ provider: Literal['aws_sts', 'gcp_sa', 'cloudflare', 'github_app']
7302
+ config: Dict[str, Any]
7303
+ max_ttl_s: int
7304
+ updated_at: str
7305
+
7306
+
7307
+ class VaultDerived(TypedDict):
7308
+ provider: Literal['aws_sts', 'gcp_sa', 'cloudflare', 'github_app']
7309
+ values: Dict[str, str]
7310
+ env: Dict[str, str]
7311
+ expires_at: str
7312
+
7313
+
7163
7314
  # POST /v1/chat/completions — request body
7164
7315
  CreateChatCompletionBody = ChatCompletionRequest
7165
7316
 
@@ -9740,8 +9891,197 @@ class VaultResolveBody(_VaultResolveBodyRequired, total=False):
9740
9891
  VaultResolveResponse = Dict[str, Any]
9741
9892
 
9742
9893
 
9894
+ # POST /v1/vault/add-requests — request body
9895
+ CreateVaultAddRequestBody = VaultAddRequestCreate
9896
+
9897
+
9898
+ # POST /v1/vault/add-requests — 201 response
9899
+ CreateVaultAddRequestResponse = VaultAddRequestCreated
9900
+
9901
+
9902
+ class LookupVaultAddRequestBody(TypedDict):
9903
+ token: str
9904
+
9905
+
9906
+ # POST /v1/vault/add-requests/lookup — 200 response
9907
+ LookupVaultAddRequestResponse = VaultAddRequest
9908
+
9909
+
9910
+ # GET /v1/vault/add-requests/{id} — 200 response
9911
+ GetVaultAddRequestResponse = VaultAddRequestStatus
9912
+
9913
+
9914
+ # DELETE /v1/vault/add-requests/{id} — 200 response
9915
+ CancelVaultAddRequestResponse = VaultAddRequestStatus
9916
+
9917
+
9918
+ class CompleteVaultAddRequestBody(TypedDict):
9919
+ item_id: str
9920
+
9921
+
9922
+ # POST /v1/vault/add-requests/{id}/complete — 200 response
9923
+ CompleteVaultAddRequestResponse = VaultAddRequestStatus
9924
+
9925
+
9926
+ class ListVaultEmergencyResponse(TypedDict):
9927
+ outgoing: List[VaultEmergencyContact]
9928
+ incoming: List[VaultEmergencyContact]
9929
+
9930
+
9931
+ class _InviteVaultEmergencyBodyRequired(TypedDict):
9932
+ email: str
9933
+ delay_hours: Literal[24, 48, 72]
9934
+
9935
+
9936
+ class InviteVaultEmergencyBody(_InviteVaultEmergencyBodyRequired, total=False):
9937
+ vault_ids: List[str]
9938
+
9939
+
9940
+ class InviteVaultEmergencyResponse(TypedDict):
9941
+ id: str
9942
+
9943
+
9944
+ class AcceptVaultEmergencyBody(TypedDict):
9945
+ token: str
9946
+
9947
+
9948
+ # POST /v1/vault/emergency/accept — 200 response
9949
+ AcceptVaultEmergencyResponse = VaultEmergencyContact
9950
+
9951
+
9952
+ class SealVaultEmergencyBodySealedKeysValue(TypedDict):
9953
+ alg: Literal['xwing-hkdf-xchacha20poly1305']
9954
+ ct: str
9955
+ wrapped: str
9956
+
9957
+
9958
+ class SealVaultEmergencyBody(TypedDict):
9959
+ grantee_fingerprint: str
9960
+ sealed_keys: Dict[str, SealVaultEmergencyBodySealedKeysValue]
9961
+
9962
+
9963
+ # PUT /v1/vault/emergency/{id}/seal — 200 response
9964
+ SealVaultEmergencyResponse = VaultEmergencyContact
9965
+
9966
+
9967
+ class UpdateVaultEmergencyBody(TypedDict, total=False):
9968
+ delay_hours: Literal[24, 48, 72]
9969
+ vault_ids: List[str]
9970
+
9971
+
9972
+ # PATCH /v1/vault/emergency/{id} — 200 response
9973
+ UpdateVaultEmergencyResponse = VaultEmergencyContact
9974
+
9975
+
9976
+ class RevokeVaultEmergencyResponse(TypedDict):
9977
+ id: str
9978
+ status: Literal['revoked']
9979
+
9980
+
9981
+ class RequestVaultEmergencyBody(TypedDict, total=False):
9982
+ reason: str
9983
+
9984
+
9985
+ # POST /v1/vault/emergency/{id}/request — 200 response
9986
+ RequestVaultEmergencyResponse = VaultEmergencyContact
9987
+
9988
+
9989
+ # POST /v1/vault/emergency/{id}/deny — 200 response
9990
+ DenyVaultEmergencyResponse = VaultEmergencyContact
9991
+
9992
+
9993
+ # POST /v1/vault/emergency/{id}/approve — 200 response
9994
+ ApproveVaultEmergencyResponse = VaultEmergencyContact
9995
+
9996
+
9997
+ # GET /v1/vault/emergency/{id}/vault-data — 200 response
9998
+ GetVaultEmergencyDataResponse = VaultEmergencyData
9999
+
10000
+
10001
+ class ListVaultRotationResponse(TypedDict):
10002
+ items: List[VaultRotationEntry]
10003
+
10004
+
10005
+ class SetVaultItemRotationBody(TypedDict, total=False):
10006
+ interval_days: Optional[int]
10007
+ provider: Optional[Literal['stripe', 'github_pat', 'openai', 'google_api_key', 'other']]
10008
+ snoozed_until: Optional[str]
10009
+
10010
+
10011
+ class SetVaultItemRotationResponse(TypedDict):
10012
+ item_id: str
10013
+ interval_days: Optional[int]
10014
+ provider: Optional[Literal['stripe', 'github_pat', 'openai', 'google_api_key', 'other']]
10015
+ snoozed_until: Optional[str]
10016
+
10017
+
10018
+ class MarkVaultItemRotatedResponse(TypedDict):
10019
+ item_id: str
10020
+ rotated_at: Optional[str]
10021
+
10022
+
10023
+ class ReportVaultBreachesBodyResultsItem(TypedDict):
10024
+ item_id: str
10025
+ count: int
10026
+
10027
+
10028
+ class ReportVaultBreachesBody(TypedDict):
10029
+ results: List[ReportVaultBreachesBodyResultsItem]
10030
+
10031
+
10032
+ class ReportVaultBreachesResponse(TypedDict):
10033
+ recorded: int
10034
+ newly_breached: int
10035
+
10036
+
10037
+ class ListVaultDeriversResponse(TypedDict):
10038
+ derivers: List[VaultDeriver]
10039
+
10040
+
10041
+ class SetVaultItemDeriverBody(TypedDict):
10042
+ provider: Literal['aws_sts', 'gcp_sa', 'cloudflare', 'github_app']
10043
+ config: Dict[str, Any]
10044
+ max_ttl_s: int
10045
+
10046
+
10047
+ class SetVaultItemDeriverResponse(TypedDict):
10048
+ deriver: VaultDeriver
10049
+
10050
+
10051
+ class DeleteVaultItemDeriverResponse(TypedDict):
10052
+ deleted: bool
10053
+
10054
+
10055
+ class _DeriveVaultCredentialBodyRequired(TypedDict):
10056
+ handle: str
10057
+ action: str
10058
+ proof: VaultResolveProof
10059
+
10060
+
10061
+ class DeriveVaultCredentialBody(_DeriveVaultCredentialBodyRequired, total=False):
10062
+ purpose: str
10063
+ provenance: Literal['user', 'agent', 'untrusted']
10064
+ chain: List[str]
10065
+ task: Optional[str]
10066
+ ttl_s: int
10067
+
10068
+
10069
+ # POST /v1/vault/derive — 200 response
10070
+ DeriveVaultCredentialResponse = VaultDerived
10071
+
10072
+
10073
+ class DeriveVaultCredentialResponse202(TypedDict):
10074
+ status: Literal['approval_required']
10075
+ tier: str
10076
+ approval_id: str
10077
+ match_number: Optional[str]
10078
+ reasons: List[str]
10079
+
10080
+
9743
10081
  __all__ = [
9744
10082
  'AcceptTranscriptPromptResponse',
10083
+ 'AcceptVaultEmergencyBody',
10084
+ 'AcceptVaultEmergencyResponse',
9745
10085
  'AccountConsent',
9746
10086
  'AccountFeedbackRequest',
9747
10087
  'AccountGrowth',
@@ -9797,6 +10137,7 @@ __all__ = [
9797
10137
  'ApplyCreativeOpsResponse',
9798
10138
  'ApproveScheduleCommandBody',
9799
10139
  'ApproveScheduleCommandResponse',
10140
+ 'ApproveVaultEmergencyResponse',
9800
10141
  'ArchiveEnvironmentResponse',
9801
10142
  'AskTranscriptsBody',
9802
10143
  'AskTranscriptsResponse',
@@ -9836,6 +10177,7 @@ __all__ = [
9836
10177
  'BulkPromptsResponse',
9837
10178
  'CancelAgentRunResponse',
9838
10179
  'CancelStudioBatchResponse',
10180
+ 'CancelVaultAddRequestResponse',
9839
10181
  'CaptionCreativeBody',
9840
10182
  'CaptionCreativeResponse',
9841
10183
  'CaptionPresetId',
@@ -9892,6 +10234,8 @@ __all__ = [
9892
10234
  'ClaimSessionLeaseResponse',
9893
10235
  'CommentCreativeBody',
9894
10236
  'CommentCreativeResponse',
10237
+ 'CompleteVaultAddRequestBody',
10238
+ 'CompleteVaultAddRequestResponse',
9895
10239
  'ConfirmTaskBody',
9896
10240
  'ConfirmTaskResponse',
9897
10241
  'Control',
@@ -10020,6 +10364,8 @@ __all__ = [
10020
10364
  'CreateTranscriptionResponse',
10021
10365
  'CreateTriggerBody',
10022
10366
  'CreateTriggerResponse',
10367
+ 'CreateVaultAddRequestBody',
10368
+ 'CreateVaultAddRequestResponse',
10023
10369
  'CreateVaultBody',
10024
10370
  'CreateVaultDeviceChallengeResponse',
10025
10371
  'CreateVaultResolveChallengeResponse',
@@ -10173,8 +10519,13 @@ __all__ = [
10173
10519
  'DeleteSessionResponse',
10174
10520
  'DeleteSessionShareResponse',
10175
10521
  'DeleteTriggerResponse',
10522
+ 'DeleteVaultItemDeriverResponse',
10176
10523
  'DeleteVaultItemResponse',
10177
10524
  'DeleteVaultRuleResponse',
10525
+ 'DenyVaultEmergencyResponse',
10526
+ 'DeriveVaultCredentialBody',
10527
+ 'DeriveVaultCredentialResponse',
10528
+ 'DeriveVaultCredentialResponse202',
10178
10529
  'DestroyEnvironmentResponse',
10179
10530
  'DeviceListItem',
10180
10531
  'DevicePatch',
@@ -10340,7 +10691,9 @@ __all__ = [
10340
10691
  'GetTranscriptVocabularyResponse',
10341
10692
  'GetUsageResponse',
10342
10693
  'GetVaultAccountResponse',
10694
+ 'GetVaultAddRequestResponse',
10343
10695
  'GetVaultApprovalResponse',
10696
+ 'GetVaultEmergencyDataResponse',
10344
10697
  'GetVideoResponse',
10345
10698
  'GetVideoResponseDataItemOption1',
10346
10699
  'HeartbeatMonitor',
@@ -10358,6 +10711,8 @@ __all__ = [
10358
10711
  'InsufficientBalanceErrorError',
10359
10712
  'InsufficientFundsError',
10360
10713
  'InsufficientFundsErrorError',
10714
+ 'InviteVaultEmergencyBody',
10715
+ 'InviteVaultEmergencyResponse',
10361
10716
  'IssueMyEnvironmentSshCertBody',
10362
10717
  'IssueMyEnvironmentSshCertResponse',
10363
10718
  'LaunchPromptBody',
@@ -10432,20 +10787,26 @@ __all__ = [
10432
10787
  'ListTriggerEventsResponse',
10433
10788
  'ListTriggersResponse',
10434
10789
  'ListVaultApprovalsResponse',
10790
+ 'ListVaultDeriversResponse',
10435
10791
  'ListVaultDevicesResponse',
10792
+ 'ListVaultEmergencyResponse',
10436
10793
  'ListVaultEventsResponse',
10437
10794
  'ListVaultGrantsResponse',
10438
10795
  'ListVaultItemsResponse',
10439
10796
  'ListVaultLimitsResponse',
10797
+ 'ListVaultRotationResponse',
10440
10798
  'ListVaultRulesResponse',
10441
10799
  'ListVaultsResponse',
10442
10800
  'LocalizeCreativeBody',
10443
10801
  'LocalizeCreativeResponse',
10444
10802
  'LockVaultBody',
10445
10803
  'LockVaultResponse',
10804
+ 'LookupVaultAddRequestBody',
10805
+ 'LookupVaultAddRequestResponse',
10446
10806
  'MarkNotificationsReadBody',
10447
10807
  'MarkNotificationsReadResponse',
10448
10808
  'MarkSessionControlAppliedResponse',
10809
+ 'MarkVaultItemRotatedResponse',
10449
10810
  'MatchPromptBody',
10450
10811
  'MatchPromptResponse',
10451
10812
  'MediaOp',
@@ -10625,6 +10986,11 @@ __all__ = [
10625
10986
  'ReplyPublicReviewThreadResponse',
10626
10987
  'ReportScheduleRunResultBody',
10627
10988
  'ReportScheduleRunResultResponse',
10989
+ 'ReportVaultBreachesBody',
10990
+ 'ReportVaultBreachesBodyResultsItem',
10991
+ 'ReportVaultBreachesResponse',
10992
+ 'RequestVaultEmergencyBody',
10993
+ 'RequestVaultEmergencyResponse',
10628
10994
  'ResearchJob',
10629
10995
  'ResearchJobError',
10630
10996
  'ResearchRequest',
@@ -10646,6 +11012,7 @@ __all__ = [
10646
11012
  'RevertCreativeResponse',
10647
11013
  'RevokeSelfKeyResponse',
10648
11014
  'RevokeVaultDeviceResponse',
11015
+ 'RevokeVaultEmergencyResponse',
10649
11016
  'RevokeVaultGrantResponse',
10650
11017
  'RevokeVaultTaskGrantsBody',
10651
11018
  'RevokeVaultTaskGrantsResponse',
@@ -10707,6 +11074,9 @@ __all__ = [
10707
11074
  'ScheduleInput',
10708
11075
  'ScheduleRun',
10709
11076
  'SchedulerHost',
11077
+ 'SealVaultEmergencyBody',
11078
+ 'SealVaultEmergencyBodySealedKeysValue',
11079
+ 'SealVaultEmergencyResponse',
10710
11080
  'SearchMemoriesResponse',
10711
11081
  'SearchSfxResponse',
10712
11082
  'SearchTranscriptsResponse',
@@ -10753,8 +11123,12 @@ __all__ = [
10753
11123
  'SetTriggerSecretResponse',
10754
11124
  'SetVaultItemCloudBody',
10755
11125
  'SetVaultItemCloudResponse',
11126
+ 'SetVaultItemDeriverBody',
11127
+ 'SetVaultItemDeriverResponse',
10756
11128
  'SetVaultItemLimitsBody',
10757
11129
  'SetVaultItemLimitsResponse',
11130
+ 'SetVaultItemRotationBody',
11131
+ 'SetVaultItemRotationResponse',
10758
11132
  'SettingsConflict',
10759
11133
  'SettingsConflictError',
10760
11134
  'SettingsPatchRequest',
@@ -10832,6 +11206,8 @@ __all__ = [
10832
11206
  'StudioPostCopyRequest',
10833
11207
  'StudioProduction',
10834
11208
  'StudioProductionCreate',
11209
+ 'StudioProductionKind',
11210
+ 'StudioProductionOutput',
10835
11211
  'StudioProductionQa',
10836
11212
  'StudioPublicDecisionRequest',
10837
11213
  'StudioPublicNameRequest',
@@ -11012,22 +11388,34 @@ __all__ = [
11012
11388
  'UpdateTranscriptUtteranceResponse',
11013
11389
  'UpdateTriggerBody',
11014
11390
  'UpdateTriggerResponse',
11391
+ 'UpdateVaultEmergencyBody',
11392
+ 'UpdateVaultEmergencyResponse',
11015
11393
  'UsageReport',
11016
11394
  'UsageRow',
11017
11395
  'UserSettings',
11018
11396
  'Utterance',
11019
11397
  'UtteranceWordsItem',
11020
11398
  'VaultAccount',
11399
+ 'VaultAddRequest',
11400
+ 'VaultAddRequestCreate',
11401
+ 'VaultAddRequestCreated',
11402
+ 'VaultAddRequestStatus',
11021
11403
  'VaultApprovalProof',
11022
11404
  'VaultApprovalProofOption1',
11023
11405
  'VaultApprovalProofOption2',
11024
11406
  'VaultCatalogResponse',
11407
+ 'VaultDerived',
11408
+ 'VaultDeriver',
11025
11409
  'VaultDeviceChallenge',
11026
11410
  'VaultDeviceEnroll',
11027
11411
  'VaultDeviceEnrollAttestationOption1',
11028
11412
  'VaultDeviceEnrollAttestationOption2',
11029
11413
  'VaultDeviceEnrollAttestationOption2Tpm',
11030
11414
  'VaultDeviceKey',
11415
+ 'VaultEmergencyContact',
11416
+ 'VaultEmergencyData',
11417
+ 'VaultEmergencyDataItemsItem',
11418
+ 'VaultEmergencyDataVaultsItem',
11031
11419
  'VaultGuards',
11032
11420
  'VaultHttpBody',
11033
11421
  'VaultHttpResponse',
@@ -11038,6 +11426,7 @@ __all__ = [
11038
11426
  'VaultResolveChallenge',
11039
11427
  'VaultResolveProof',
11040
11428
  'VaultResolveResponse',
11429
+ 'VaultRotationEntry',
11041
11430
  'VaultUnlockChallenge',
11042
11431
  'VaultUseBody',
11043
11432
  'VaultUseDecision',