@1claw/openapi-spec 0.53.0 → 0.53.1

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 (3) hide show
  1. package/openapi.json +1715 -562
  2. package/openapi.yaml +782 -1
  3. package/package.json +1 -1
package/openapi.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "openapi": "3.1.0",
3
3
  "info": {
4
4
  "title": "1Claw API",
5
- "version": "0.53.0",
5
+ "version": "0.53.1",
6
6
  "description": "Secure secret management for AI agents. Provides vaults, secrets,\npolicy-based access control, agent identity, Intents API,\nsharing, billing, and audit logging. Automations (workflow_spec,\nwebhook tokens, event triggers, Assist), cloud runtimes with\ninteractive shell sessions, agent memory, and discovery.\n\nAll endpoints require JWT Bearer authentication unless marked with\n`security: []`.\n",
7
7
  "contact": {
8
8
  "email": "ops@1claw.xyz"
@@ -194,6 +194,18 @@
194
194
  {
195
195
  "name": "Environment Variables",
196
196
  "description": "Per-vault and org-shared environment variable management"
197
+ },
198
+ {
199
+ "name": "Wallet Access",
200
+ "description": "Role-based wallet access policies for agents and users"
201
+ },
202
+ {
203
+ "name": "Credential Recovery",
204
+ "description": "MFA/passkey/password recovery escape hatch with admin approval"
205
+ },
206
+ {
207
+ "name": "Shamir KEK",
208
+ "description": "Shamir secret-sharing for org-level Key Encryption Keys"
197
209
  }
198
210
  ],
199
211
  "paths": {
@@ -16032,187 +16044,816 @@
16032
16044
  }
16033
16045
  }
16034
16046
  }
16035
- }
16036
- },
16037
- "components": {
16038
- "securitySchemes": {
16039
- "BearerAuth": {
16040
- "type": "http",
16041
- "scheme": "bearer",
16042
- "bearerFormat": "JWT"
16043
- },
16044
- "ApiKeyAuth": {
16045
- "type": "http",
16046
- "scheme": "bearer",
16047
- "description": "1ck_ prefixed API key used as Bearer token"
16048
- }
16049
- },
16050
- "parameters": {
16051
- "VaultId": {
16052
- "name": "vault_id",
16053
- "in": "path",
16054
- "required": true,
16055
- "schema": {
16056
- "type": "string",
16057
- "format": "uuid"
16058
- }
16059
- },
16060
- "SecretPath": {
16061
- "name": "path",
16062
- "in": "path",
16063
- "required": true,
16064
- "schema": {
16065
- "type": "string"
16066
- },
16067
- "description": "Secret path (e.g. \"db/credentials\")"
16068
- },
16069
- "AgentId": {
16070
- "name": "agent_id",
16071
- "in": "path",
16072
- "required": true,
16073
- "schema": {
16074
- "type": "string",
16075
- "format": "uuid"
16076
- }
16077
- },
16078
- "PolicyId": {
16079
- "name": "policy_id",
16080
- "in": "path",
16081
- "required": true,
16082
- "schema": {
16083
- "type": "string",
16084
- "format": "uuid"
16085
- }
16086
- },
16087
- "CardId": {
16088
- "name": "card_id",
16089
- "in": "path",
16090
- "required": true,
16091
- "schema": {
16092
- "type": "string",
16093
- "format": "uuid"
16094
- }
16095
- },
16096
- "IncludeSignedTx": {
16097
- "name": "include_signed_tx",
16098
- "in": "query",
16099
- "required": false,
16100
- "description": "Set to `true` or `1` to include the raw signed transaction hex in the response. Omitted by default to reduce key exfiltration risk. Only the literal values \"true\" or \"1\" enable inclusion; any other value or omission returns responses without signed_tx. Applies to GET /v1/agents/{agent_id}/transactions and GET /v1/agents/{agent_id}/transactions/{tx_id}.\n",
16101
- "schema": {
16102
- "type": "boolean",
16103
- "default": false,
16104
- "example": false
16105
- }
16106
- }
16107
16047
  },
16108
- "responses": {
16109
- "BadRequest": {
16110
- "description": "Invalid request",
16111
- "content": {
16112
- "application/json": {
16113
- "schema": {
16114
- "$ref": "#/components/schemas/ProblemDetails"
16115
- }
16048
+ "/v1/wallets/access-policies": {
16049
+ "post": {
16050
+ "tags": [
16051
+ "Wallet Access"
16052
+ ],
16053
+ "summary": "Create a wallet access policy",
16054
+ "description": "Create a role-based wallet access policy granting an agent or user\nspecific permissions (send, swap, receive) on a treasury wallet chain.\n",
16055
+ "operationId": "createWalletAccessPolicy",
16056
+ "security": [
16057
+ {
16058
+ "BearerAuth": []
16116
16059
  }
16117
- }
16118
- },
16119
- "Unauthorized": {
16120
- "description": "Authentication required or invalid",
16121
- "content": {
16122
- "application/json": {
16123
- "schema": {
16124
- "$ref": "#/components/schemas/ProblemDetails"
16060
+ ],
16061
+ "requestBody": {
16062
+ "required": true,
16063
+ "content": {
16064
+ "application/json": {
16065
+ "schema": {
16066
+ "$ref": "#/components/schemas/CreateWalletAccessPolicyRequest"
16067
+ }
16125
16068
  }
16126
16069
  }
16127
- }
16128
- },
16129
- "Forbidden": {
16130
- "description": "Insufficient permissions",
16131
- "content": {
16132
- "application/json": {
16133
- "schema": {
16134
- "$ref": "#/components/schemas/ProblemDetails"
16070
+ },
16071
+ "responses": {
16072
+ "201": {
16073
+ "description": "Policy created",
16074
+ "content": {
16075
+ "application/json": {
16076
+ "schema": {
16077
+ "$ref": "#/components/schemas/WalletAccessPolicyResponse"
16078
+ }
16079
+ }
16135
16080
  }
16081
+ },
16082
+ "400": {
16083
+ "$ref": "#/components/responses/BadRequest"
16084
+ },
16085
+ "401": {
16086
+ "$ref": "#/components/responses/Unauthorized"
16087
+ },
16088
+ "403": {
16089
+ "$ref": "#/components/responses/Forbidden"
16136
16090
  }
16137
16091
  }
16138
16092
  },
16139
- "NotFound": {
16140
- "description": "Resource not found",
16141
- "content": {
16142
- "application/json": {
16143
- "schema": {
16144
- "$ref": "#/components/schemas/ProblemDetails"
16145
- }
16093
+ "get": {
16094
+ "tags": [
16095
+ "Wallet Access"
16096
+ ],
16097
+ "summary": "List wallet access policies for the org",
16098
+ "operationId": "listWalletAccessPolicies",
16099
+ "security": [
16100
+ {
16101
+ "BearerAuth": []
16146
16102
  }
16147
- }
16148
- },
16149
- "PaymentRequired": {
16150
- "description": "x402 payment required",
16151
- "content": {
16152
- "application/json": {
16103
+ ],
16104
+ "parameters": [
16105
+ {
16106
+ "name": "wallet_chain",
16107
+ "in": "query",
16153
16108
  "schema": {
16154
- "$ref": "#/components/schemas/PaymentRequirement"
16155
- }
16156
- }
16157
- }
16158
- },
16159
- "Conflict": {
16160
- "description": "Resource already exists or conflict",
16161
- "content": {
16162
- "application/json": {
16109
+ "type": "string"
16110
+ },
16111
+ "description": "Filter by chain (e.g. ethereum, solana)"
16112
+ },
16113
+ {
16114
+ "name": "target_agent_id",
16115
+ "in": "query",
16163
16116
  "schema": {
16164
- "$ref": "#/components/schemas/ProblemDetails"
16117
+ "type": "string",
16118
+ "format": "uuid"
16119
+ },
16120
+ "description": "Filter by target agent"
16121
+ }
16122
+ ],
16123
+ "responses": {
16124
+ "200": {
16125
+ "description": "Policy list",
16126
+ "content": {
16127
+ "application/json": {
16128
+ "schema": {
16129
+ "$ref": "#/components/schemas/WalletAccessPolicyListResponse"
16130
+ }
16131
+ }
16165
16132
  }
16133
+ },
16134
+ "401": {
16135
+ "$ref": "#/components/responses/Unauthorized"
16166
16136
  }
16167
16137
  }
16168
16138
  }
16169
16139
  },
16170
- "schemas": {
16171
- "OrderCardRequest": {
16172
- "type": "object",
16173
- "required": [
16174
- "kind",
16175
- "amount_usd"
16140
+ "/v1/wallets/access-policies/{id}": {
16141
+ "delete": {
16142
+ "tags": [
16143
+ "Wallet Access"
16176
16144
  ],
16177
- "properties": {
16178
- "kind": {
16179
- "type": "string",
16180
- "enum": [
16181
- "prepaid",
16182
- "gift_card"
16183
- ]
16145
+ "summary": "Delete a wallet access policy",
16146
+ "operationId": "deleteWalletAccessPolicy",
16147
+ "security": [
16148
+ {
16149
+ "BearerAuth": []
16150
+ }
16151
+ ],
16152
+ "parameters": [
16153
+ {
16154
+ "name": "id",
16155
+ "in": "path",
16156
+ "required": true,
16157
+ "schema": {
16158
+ "type": "string",
16159
+ "format": "uuid"
16160
+ }
16161
+ }
16162
+ ],
16163
+ "responses": {
16164
+ "204": {
16165
+ "description": "Policy deleted"
16184
16166
  },
16185
- "amount_usd": {
16186
- "type": "string",
16187
- "description": "USD amount to load onto the card.",
16188
- "example": "25.00"
16167
+ "401": {
16168
+ "$ref": "#/components/responses/Unauthorized"
16189
16169
  },
16190
- "laso_server_id": {
16191
- "type": "string",
16192
- "description": "Optional Laso gift-card server/brand id (gift cards only)."
16170
+ "403": {
16171
+ "$ref": "#/components/responses/Forbidden"
16193
16172
  },
16194
- "country": {
16195
- "type": "string",
16196
- "description": "Optional country (prepaid cards; defaults to US)."
16173
+ "404": {
16174
+ "$ref": "#/components/responses/NotFound"
16197
16175
  }
16198
16176
  }
16199
- },
16200
- "CardResponse": {
16201
- "type": "object",
16202
- "description": "Masked card view — never contains PAN/CVV.",
16203
- "required": [
16204
- "id",
16205
- "issuer",
16206
- "kind",
16207
- "currency",
16208
- "status",
16209
- "storage_mode",
16210
- "reveal_policy",
16211
- "created_at",
16212
- "updated_at"
16177
+ }
16178
+ },
16179
+ "/v1/auth/credential-recovery/request": {
16180
+ "post": {
16181
+ "tags": [
16182
+ "Credential Recovery"
16213
16183
  ],
16214
- "properties": {
16215
- "id": {
16184
+ "summary": "Initiate credential recovery",
16185
+ "description": "Start a credential recovery request for MFA reset, passkey reset,\nor password reset. Requires admin approval per org policy.\n",
16186
+ "operationId": "requestCredentialRecovery",
16187
+ "security": [
16188
+ {
16189
+ "BearerAuth": []
16190
+ }
16191
+ ],
16192
+ "requestBody": {
16193
+ "required": true,
16194
+ "content": {
16195
+ "application/json": {
16196
+ "schema": {
16197
+ "$ref": "#/components/schemas/CredentialRecoveryRequest"
16198
+ }
16199
+ }
16200
+ }
16201
+ },
16202
+ "responses": {
16203
+ "201": {
16204
+ "description": "Recovery request created",
16205
+ "content": {
16206
+ "application/json": {
16207
+ "schema": {
16208
+ "$ref": "#/components/schemas/CredentialRecoveryResponse"
16209
+ }
16210
+ }
16211
+ }
16212
+ },
16213
+ "400": {
16214
+ "$ref": "#/components/responses/BadRequest"
16215
+ },
16216
+ "401": {
16217
+ "$ref": "#/components/responses/Unauthorized"
16218
+ }
16219
+ }
16220
+ }
16221
+ },
16222
+ "/v1/auth/credential-recovery/requests": {
16223
+ "get": {
16224
+ "tags": [
16225
+ "Credential Recovery"
16226
+ ],
16227
+ "summary": "List recovery requests for the org",
16228
+ "description": "Admin/owner only. Returns pending, approved, and rejected recovery requests.",
16229
+ "operationId": "listCredentialRecoveryRequests",
16230
+ "security": [
16231
+ {
16232
+ "BearerAuth": []
16233
+ }
16234
+ ],
16235
+ "parameters": [
16236
+ {
16237
+ "name": "status",
16238
+ "in": "query",
16239
+ "schema": {
16240
+ "type": "string",
16241
+ "enum": [
16242
+ "pending_approval",
16243
+ "approved",
16244
+ "rejected",
16245
+ "expired"
16246
+ ]
16247
+ },
16248
+ "description": "Filter by status"
16249
+ }
16250
+ ],
16251
+ "responses": {
16252
+ "200": {
16253
+ "description": "Recovery request list",
16254
+ "content": {
16255
+ "application/json": {
16256
+ "schema": {
16257
+ "$ref": "#/components/schemas/CredentialRecoveryListResponse"
16258
+ }
16259
+ }
16260
+ }
16261
+ },
16262
+ "401": {
16263
+ "$ref": "#/components/responses/Unauthorized"
16264
+ },
16265
+ "403": {
16266
+ "$ref": "#/components/responses/Forbidden"
16267
+ }
16268
+ }
16269
+ }
16270
+ },
16271
+ "/v1/auth/credential-recovery/requests/{id}/approve": {
16272
+ "post": {
16273
+ "tags": [
16274
+ "Credential Recovery"
16275
+ ],
16276
+ "summary": "Approve a recovery request",
16277
+ "description": "Admin/owner approves a pending recovery request. May return a one-time recovery code.",
16278
+ "operationId": "approveCredentialRecovery",
16279
+ "security": [
16280
+ {
16281
+ "BearerAuth": []
16282
+ }
16283
+ ],
16284
+ "parameters": [
16285
+ {
16286
+ "name": "id",
16287
+ "in": "path",
16288
+ "required": true,
16289
+ "schema": {
16290
+ "type": "string",
16291
+ "format": "uuid"
16292
+ }
16293
+ }
16294
+ ],
16295
+ "responses": {
16296
+ "200": {
16297
+ "description": "Request approved",
16298
+ "content": {
16299
+ "application/json": {
16300
+ "schema": {
16301
+ "$ref": "#/components/schemas/CredentialRecoveryApproveResponse"
16302
+ }
16303
+ }
16304
+ }
16305
+ },
16306
+ "401": {
16307
+ "$ref": "#/components/responses/Unauthorized"
16308
+ },
16309
+ "403": {
16310
+ "$ref": "#/components/responses/Forbidden"
16311
+ },
16312
+ "404": {
16313
+ "$ref": "#/components/responses/NotFound"
16314
+ }
16315
+ }
16316
+ }
16317
+ },
16318
+ "/v1/auth/credential-recovery/requests/{id}/execute": {
16319
+ "post": {
16320
+ "tags": [
16321
+ "Credential Recovery"
16322
+ ],
16323
+ "summary": "Execute an approved credential recovery request",
16324
+ "description": "Execute an approved credential recovery request after the delay window has elapsed. Only org owners or admins can execute.",
16325
+ "operationId": "executeCredentialRecovery",
16326
+ "security": [
16327
+ {
16328
+ "BearerAuth": []
16329
+ }
16330
+ ],
16331
+ "parameters": [
16332
+ {
16333
+ "name": "id",
16334
+ "in": "path",
16335
+ "required": true,
16336
+ "schema": {
16337
+ "type": "string",
16338
+ "format": "uuid"
16339
+ }
16340
+ }
16341
+ ],
16342
+ "responses": {
16343
+ "200": {
16344
+ "description": "Recovery executed",
16345
+ "content": {
16346
+ "application/json": {
16347
+ "schema": {
16348
+ "$ref": "#/components/schemas/CredentialRecoveryExecuteResponse"
16349
+ }
16350
+ }
16351
+ }
16352
+ },
16353
+ "401": {
16354
+ "$ref": "#/components/responses/Unauthorized"
16355
+ },
16356
+ "403": {
16357
+ "$ref": "#/components/responses/Forbidden"
16358
+ },
16359
+ "404": {
16360
+ "$ref": "#/components/responses/NotFound"
16361
+ }
16362
+ }
16363
+ }
16364
+ },
16365
+ "/v1/auth/credential-recovery/requests/{id}": {
16366
+ "delete": {
16367
+ "tags": [
16368
+ "Credential Recovery"
16369
+ ],
16370
+ "summary": "Cancel or reject a recovery request",
16371
+ "operationId": "cancelCredentialRecovery",
16372
+ "security": [
16373
+ {
16374
+ "BearerAuth": []
16375
+ }
16376
+ ],
16377
+ "parameters": [
16378
+ {
16379
+ "name": "id",
16380
+ "in": "path",
16381
+ "required": true,
16382
+ "schema": {
16383
+ "type": "string",
16384
+ "format": "uuid"
16385
+ }
16386
+ }
16387
+ ],
16388
+ "responses": {
16389
+ "204": {
16390
+ "description": "Request cancelled"
16391
+ },
16392
+ "401": {
16393
+ "$ref": "#/components/responses/Unauthorized"
16394
+ },
16395
+ "403": {
16396
+ "$ref": "#/components/responses/Forbidden"
16397
+ },
16398
+ "404": {
16399
+ "$ref": "#/components/responses/NotFound"
16400
+ }
16401
+ }
16402
+ }
16403
+ },
16404
+ "/v1/org/credential-recovery-policy": {
16405
+ "get": {
16406
+ "tags": [
16407
+ "Credential Recovery"
16408
+ ],
16409
+ "summary": "Get org credential recovery policy",
16410
+ "operationId": "getCredentialRecoveryPolicy",
16411
+ "security": [
16412
+ {
16413
+ "BearerAuth": []
16414
+ }
16415
+ ],
16416
+ "responses": {
16417
+ "200": {
16418
+ "description": "Recovery policy",
16419
+ "content": {
16420
+ "application/json": {
16421
+ "schema": {
16422
+ "$ref": "#/components/schemas/CredentialRecoveryPolicyResponse"
16423
+ }
16424
+ }
16425
+ }
16426
+ },
16427
+ "401": {
16428
+ "$ref": "#/components/responses/Unauthorized"
16429
+ }
16430
+ }
16431
+ },
16432
+ "patch": {
16433
+ "tags": [
16434
+ "Credential Recovery"
16435
+ ],
16436
+ "summary": "Update org credential recovery policy",
16437
+ "operationId": "updateCredentialRecoveryPolicy",
16438
+ "security": [
16439
+ {
16440
+ "BearerAuth": []
16441
+ }
16442
+ ],
16443
+ "requestBody": {
16444
+ "required": true,
16445
+ "content": {
16446
+ "application/json": {
16447
+ "schema": {
16448
+ "$ref": "#/components/schemas/CredentialRecoveryPolicyRequest"
16449
+ }
16450
+ }
16451
+ }
16452
+ },
16453
+ "responses": {
16454
+ "200": {
16455
+ "description": "Policy updated",
16456
+ "content": {
16457
+ "application/json": {
16458
+ "schema": {
16459
+ "$ref": "#/components/schemas/CredentialRecoveryPolicyResponse"
16460
+ }
16461
+ }
16462
+ }
16463
+ },
16464
+ "400": {
16465
+ "$ref": "#/components/responses/BadRequest"
16466
+ },
16467
+ "401": {
16468
+ "$ref": "#/components/responses/Unauthorized"
16469
+ },
16470
+ "403": {
16471
+ "$ref": "#/components/responses/Forbidden"
16472
+ }
16473
+ }
16474
+ }
16475
+ },
16476
+ "/v1/org/shamir-kek/setup": {
16477
+ "post": {
16478
+ "tags": [
16479
+ "Shamir KEK"
16480
+ ],
16481
+ "summary": "Set up Shamir KEK for the org",
16482
+ "description": "Initialize a Shamir secret-sharing KEK for the org. Splits the master\nkey into shares distributed to custodians. Shares are returned one-time\nonly and must be stored securely by each custodian.\n",
16483
+ "operationId": "setupShamirKek",
16484
+ "security": [
16485
+ {
16486
+ "BearerAuth": []
16487
+ }
16488
+ ],
16489
+ "requestBody": {
16490
+ "required": true,
16491
+ "content": {
16492
+ "application/json": {
16493
+ "schema": {
16494
+ "$ref": "#/components/schemas/ShamirKekSetupRequest"
16495
+ }
16496
+ }
16497
+ }
16498
+ },
16499
+ "responses": {
16500
+ "201": {
16501
+ "description": "Shamir KEK configured (shares returned one-time)",
16502
+ "content": {
16503
+ "application/json": {
16504
+ "schema": {
16505
+ "$ref": "#/components/schemas/ShamirKekSetupResponse"
16506
+ }
16507
+ }
16508
+ }
16509
+ },
16510
+ "400": {
16511
+ "$ref": "#/components/responses/BadRequest"
16512
+ },
16513
+ "401": {
16514
+ "$ref": "#/components/responses/Unauthorized"
16515
+ },
16516
+ "403": {
16517
+ "$ref": "#/components/responses/Forbidden"
16518
+ }
16519
+ }
16520
+ }
16521
+ },
16522
+ "/v1/org/shamir-kek": {
16523
+ "get": {
16524
+ "tags": [
16525
+ "Shamir KEK"
16526
+ ],
16527
+ "summary": "Get Shamir KEK status",
16528
+ "description": "Returns the current Shamir KEK configuration status for the org.",
16529
+ "operationId": "getShamirKekStatus",
16530
+ "security": [
16531
+ {
16532
+ "BearerAuth": []
16533
+ }
16534
+ ],
16535
+ "responses": {
16536
+ "200": {
16537
+ "description": "Shamir KEK status",
16538
+ "content": {
16539
+ "application/json": {
16540
+ "schema": {
16541
+ "$ref": "#/components/schemas/ShamirKekStatusResponse"
16542
+ }
16543
+ }
16544
+ }
16545
+ },
16546
+ "401": {
16547
+ "$ref": "#/components/responses/Unauthorized"
16548
+ }
16549
+ }
16550
+ }
16551
+ },
16552
+ "/v1/org/shamir-kek/reconstruct": {
16553
+ "post": {
16554
+ "tags": [
16555
+ "Shamir KEK"
16556
+ ],
16557
+ "summary": "Reconstruct KEK from shares",
16558
+ "description": "Submit Shamir shares to reconstruct the org KEK. Requires at least\n`threshold` valid shares. Used during disaster recovery.\n",
16559
+ "operationId": "reconstructShamirKek",
16560
+ "security": [
16561
+ {
16562
+ "BearerAuth": []
16563
+ }
16564
+ ],
16565
+ "requestBody": {
16566
+ "required": true,
16567
+ "content": {
16568
+ "application/json": {
16569
+ "schema": {
16570
+ "$ref": "#/components/schemas/ShamirKekReconstructRequest"
16571
+ }
16572
+ }
16573
+ }
16574
+ },
16575
+ "responses": {
16576
+ "200": {
16577
+ "description": "Reconstruction result",
16578
+ "content": {
16579
+ "application/json": {
16580
+ "schema": {
16581
+ "$ref": "#/components/schemas/ShamirKekReconstructResponse"
16582
+ }
16583
+ }
16584
+ }
16585
+ },
16586
+ "400": {
16587
+ "$ref": "#/components/responses/BadRequest"
16588
+ },
16589
+ "401": {
16590
+ "$ref": "#/components/responses/Unauthorized"
16591
+ },
16592
+ "403": {
16593
+ "$ref": "#/components/responses/Forbidden"
16594
+ }
16595
+ }
16596
+ }
16597
+ },
16598
+ "/v1/org/shamir-kek/recovery-codes": {
16599
+ "get": {
16600
+ "tags": [
16601
+ "Shamir KEK"
16602
+ ],
16603
+ "summary": "Get Shamir recovery codes (one-time)",
16604
+ "description": "Returns the one-time recovery codes for the Shamir KEK. These codes\ncan be used as an emergency fallback if custodian shares are lost.\nCodes are only returned once — subsequent calls return 410.\n",
16605
+ "operationId": "getShamirKekRecoveryCodes",
16606
+ "security": [
16607
+ {
16608
+ "BearerAuth": []
16609
+ }
16610
+ ],
16611
+ "responses": {
16612
+ "200": {
16613
+ "description": "Recovery codes (one-time)",
16614
+ "content": {
16615
+ "application/json": {
16616
+ "schema": {
16617
+ "$ref": "#/components/schemas/ShamirKekRecoveryCodesResponse"
16618
+ }
16619
+ }
16620
+ }
16621
+ },
16622
+ "401": {
16623
+ "$ref": "#/components/responses/Unauthorized"
16624
+ },
16625
+ "403": {
16626
+ "$ref": "#/components/responses/Forbidden"
16627
+ },
16628
+ "410": {
16629
+ "description": "Codes already retrieved"
16630
+ }
16631
+ }
16632
+ }
16633
+ },
16634
+ "/v1/org/shamir-kek/verify-recovery-code": {
16635
+ "post": {
16636
+ "tags": [
16637
+ "Shamir KEK"
16638
+ ],
16639
+ "summary": "Verify a Shamir recovery code",
16640
+ "description": "Check whether a recovery code is valid without consuming it.",
16641
+ "operationId": "verifyShamirKekRecoveryCode",
16642
+ "security": [
16643
+ {
16644
+ "BearerAuth": []
16645
+ }
16646
+ ],
16647
+ "requestBody": {
16648
+ "required": true,
16649
+ "content": {
16650
+ "application/json": {
16651
+ "schema": {
16652
+ "$ref": "#/components/schemas/ShamirKekVerifyCodeRequest"
16653
+ }
16654
+ }
16655
+ }
16656
+ },
16657
+ "responses": {
16658
+ "200": {
16659
+ "description": "Verification result",
16660
+ "content": {
16661
+ "application/json": {
16662
+ "schema": {
16663
+ "$ref": "#/components/schemas/ShamirKekVerifyCodeResponse"
16664
+ }
16665
+ }
16666
+ }
16667
+ },
16668
+ "400": {
16669
+ "$ref": "#/components/responses/BadRequest"
16670
+ },
16671
+ "401": {
16672
+ "$ref": "#/components/responses/Unauthorized"
16673
+ }
16674
+ }
16675
+ }
16676
+ }
16677
+ },
16678
+ "components": {
16679
+ "securitySchemes": {
16680
+ "BearerAuth": {
16681
+ "type": "http",
16682
+ "scheme": "bearer",
16683
+ "bearerFormat": "JWT"
16684
+ },
16685
+ "ApiKeyAuth": {
16686
+ "type": "http",
16687
+ "scheme": "bearer",
16688
+ "description": "1ck_ prefixed API key used as Bearer token"
16689
+ }
16690
+ },
16691
+ "parameters": {
16692
+ "VaultId": {
16693
+ "name": "vault_id",
16694
+ "in": "path",
16695
+ "required": true,
16696
+ "schema": {
16697
+ "type": "string",
16698
+ "format": "uuid"
16699
+ }
16700
+ },
16701
+ "SecretPath": {
16702
+ "name": "path",
16703
+ "in": "path",
16704
+ "required": true,
16705
+ "schema": {
16706
+ "type": "string"
16707
+ },
16708
+ "description": "Secret path (e.g. \"db/credentials\")"
16709
+ },
16710
+ "AgentId": {
16711
+ "name": "agent_id",
16712
+ "in": "path",
16713
+ "required": true,
16714
+ "schema": {
16715
+ "type": "string",
16716
+ "format": "uuid"
16717
+ }
16718
+ },
16719
+ "PolicyId": {
16720
+ "name": "policy_id",
16721
+ "in": "path",
16722
+ "required": true,
16723
+ "schema": {
16724
+ "type": "string",
16725
+ "format": "uuid"
16726
+ }
16727
+ },
16728
+ "CardId": {
16729
+ "name": "card_id",
16730
+ "in": "path",
16731
+ "required": true,
16732
+ "schema": {
16733
+ "type": "string",
16734
+ "format": "uuid"
16735
+ }
16736
+ },
16737
+ "IncludeSignedTx": {
16738
+ "name": "include_signed_tx",
16739
+ "in": "query",
16740
+ "required": false,
16741
+ "description": "Set to `true` or `1` to include the raw signed transaction hex in the response. Omitted by default to reduce key exfiltration risk. Only the literal values \"true\" or \"1\" enable inclusion; any other value or omission returns responses without signed_tx. Applies to GET /v1/agents/{agent_id}/transactions and GET /v1/agents/{agent_id}/transactions/{tx_id}.\n",
16742
+ "schema": {
16743
+ "type": "boolean",
16744
+ "default": false,
16745
+ "example": false
16746
+ }
16747
+ }
16748
+ },
16749
+ "responses": {
16750
+ "BadRequest": {
16751
+ "description": "Invalid request",
16752
+ "content": {
16753
+ "application/json": {
16754
+ "schema": {
16755
+ "$ref": "#/components/schemas/ProblemDetails"
16756
+ }
16757
+ }
16758
+ }
16759
+ },
16760
+ "Unauthorized": {
16761
+ "description": "Authentication required or invalid",
16762
+ "content": {
16763
+ "application/json": {
16764
+ "schema": {
16765
+ "$ref": "#/components/schemas/ProblemDetails"
16766
+ }
16767
+ }
16768
+ }
16769
+ },
16770
+ "Forbidden": {
16771
+ "description": "Insufficient permissions",
16772
+ "content": {
16773
+ "application/json": {
16774
+ "schema": {
16775
+ "$ref": "#/components/schemas/ProblemDetails"
16776
+ }
16777
+ }
16778
+ }
16779
+ },
16780
+ "NotFound": {
16781
+ "description": "Resource not found",
16782
+ "content": {
16783
+ "application/json": {
16784
+ "schema": {
16785
+ "$ref": "#/components/schemas/ProblemDetails"
16786
+ }
16787
+ }
16788
+ }
16789
+ },
16790
+ "PaymentRequired": {
16791
+ "description": "x402 payment required",
16792
+ "content": {
16793
+ "application/json": {
16794
+ "schema": {
16795
+ "$ref": "#/components/schemas/PaymentRequirement"
16796
+ }
16797
+ }
16798
+ }
16799
+ },
16800
+ "Conflict": {
16801
+ "description": "Resource already exists or conflict",
16802
+ "content": {
16803
+ "application/json": {
16804
+ "schema": {
16805
+ "$ref": "#/components/schemas/ProblemDetails"
16806
+ }
16807
+ }
16808
+ }
16809
+ }
16810
+ },
16811
+ "schemas": {
16812
+ "OrderCardRequest": {
16813
+ "type": "object",
16814
+ "required": [
16815
+ "kind",
16816
+ "amount_usd"
16817
+ ],
16818
+ "properties": {
16819
+ "kind": {
16820
+ "type": "string",
16821
+ "enum": [
16822
+ "prepaid",
16823
+ "gift_card"
16824
+ ]
16825
+ },
16826
+ "amount_usd": {
16827
+ "type": "string",
16828
+ "description": "USD amount to load onto the card.",
16829
+ "example": "25.00"
16830
+ },
16831
+ "laso_server_id": {
16832
+ "type": "string",
16833
+ "description": "Optional Laso gift-card server/brand id (gift cards only)."
16834
+ },
16835
+ "country": {
16836
+ "type": "string",
16837
+ "description": "Optional country (prepaid cards; defaults to US)."
16838
+ }
16839
+ }
16840
+ },
16841
+ "CardResponse": {
16842
+ "type": "object",
16843
+ "description": "Masked card view — never contains PAN/CVV.",
16844
+ "required": [
16845
+ "id",
16846
+ "issuer",
16847
+ "kind",
16848
+ "currency",
16849
+ "status",
16850
+ "storage_mode",
16851
+ "reveal_policy",
16852
+ "created_at",
16853
+ "updated_at"
16854
+ ],
16855
+ "properties": {
16856
+ "id": {
16216
16857
  "type": "string",
16217
16858
  "format": "uuid"
16218
16859
  },
@@ -19338,6 +19979,15 @@
19338
19979
  "type": "string",
19339
19980
  "format": "uuid",
19340
19981
  "description": "Optional pending approval ID. When consensus policies match, clients resubmit with this field set to bypass the 202 gate after the approval has been executed.\n"
19982
+ },
19983
+ "raw_transaction": {
19984
+ "type": "string",
19985
+ "description": "Pre-built raw transaction as a base64-encoded byte string. When provided, the handler decodes and deep-inspects the transaction for policy evaluation before signing. Supported for non-EVM chains where the client constructs the transaction payload.\n"
19986
+ },
19987
+ "tron_transaction": {
19988
+ "type": "object",
19989
+ "additionalProperties": true,
19990
+ "description": "Pre-built Tron transaction JSON object. When provided, the handler signs the transaction as-is using the Tron protobuf format. Enables full Tron transaction type coverage beyond simple TRX/TRC-20 transfers.\n"
19341
19991
  }
19342
19992
  }
19343
19993
  },
@@ -19992,6 +20642,15 @@
19992
20642
  "type": "string",
19993
20643
  "format": "uuid",
19994
20644
  "description": "Optional pending approval ID. When consensus policies match, clients resubmit with this field set to bypass the 202 gate after the approval has been executed.\n"
20645
+ },
20646
+ "raw_transaction": {
20647
+ "type": "string",
20648
+ "description": "Pre-built raw transaction as a base64-encoded byte string. When provided, the handler decodes and deep-inspects the transaction for policy evaluation before signing. Supported for non-EVM chains where the client constructs the transaction payload.\n"
20649
+ },
20650
+ "tron_transaction": {
20651
+ "type": "object",
20652
+ "additionalProperties": true,
20653
+ "description": "Pre-built Tron transaction JSON object. When provided, the handler signs the transaction as-is using the Tron protobuf format. Enables full Tron transaction type coverage beyond simple TRX/TRC-20 transfers.\n"
19995
20654
  }
19996
20655
  }
19997
20656
  },
@@ -27353,734 +28012,1228 @@
27353
28012
  }
27354
28013
  }
27355
28014
  },
27356
- "SubmitPendingApprovalRequest": {
28015
+ "SubmitPendingApprovalRequest": {
28016
+ "type": "object",
28017
+ "required": [
28018
+ "policy_id",
28019
+ "action",
28020
+ "action_payload"
28021
+ ],
28022
+ "properties": {
28023
+ "policy_id": {
28024
+ "type": "string",
28025
+ "format": "uuid"
28026
+ },
28027
+ "action": {
28028
+ "type": "string"
28029
+ },
28030
+ "action_payload": {
28031
+ "type": "object"
28032
+ }
28033
+ }
28034
+ },
28035
+ "SubmitPendingApprovalResponse": {
28036
+ "type": "object",
28037
+ "properties": {
28038
+ "pending_approval_id": {
28039
+ "type": "string",
28040
+ "format": "uuid"
28041
+ },
28042
+ "required_approvals": {
28043
+ "type": "integer"
28044
+ },
28045
+ "current_approvals": {
28046
+ "type": "integer"
28047
+ },
28048
+ "expires_at": {
28049
+ "type": "string",
28050
+ "format": "date-time"
28051
+ },
28052
+ "status": {
28053
+ "type": "string"
28054
+ },
28055
+ "message": {
28056
+ "type": "string"
28057
+ }
28058
+ }
28059
+ },
28060
+ "ApprovePendingApprovalRequest": {
28061
+ "type": "object",
28062
+ "required": [
28063
+ "decision",
28064
+ "payload_hash"
28065
+ ],
28066
+ "properties": {
28067
+ "decision": {
28068
+ "type": "string",
28069
+ "enum": [
28070
+ "approve",
28071
+ "reject"
28072
+ ]
28073
+ },
28074
+ "payload_hash": {
28075
+ "type": "string"
28076
+ },
28077
+ "reason": {
28078
+ "type": "string"
28079
+ },
28080
+ "credential_type": {
28081
+ "type": "string",
28082
+ "enum": [
28083
+ "password",
28084
+ "passkey",
28085
+ "totp",
28086
+ "biometric",
28087
+ "api_key"
28088
+ ],
28089
+ "description": "Authentication method used for this approval vote"
28090
+ }
28091
+ }
28092
+ },
28093
+ "PendingApprovalResponse": {
28094
+ "type": "object",
28095
+ "properties": {
28096
+ "id": {
28097
+ "type": "string",
28098
+ "format": "uuid"
28099
+ },
28100
+ "org_id": {
28101
+ "type": "string",
28102
+ "format": "uuid"
28103
+ },
28104
+ "policy_id": {
28105
+ "type": "string",
28106
+ "format": "uuid"
28107
+ },
28108
+ "action": {
28109
+ "type": "string"
28110
+ },
28111
+ "action_payload": {
28112
+ "type": "object"
28113
+ },
28114
+ "payload_hash": {
28115
+ "type": "string"
28116
+ },
28117
+ "submitted_by": {
28118
+ "type": "string",
28119
+ "format": "uuid"
28120
+ },
28121
+ "submitted_by_type": {
28122
+ "type": "string"
28123
+ },
28124
+ "status": {
28125
+ "type": "string"
28126
+ },
28127
+ "required_approvals": {
28128
+ "type": "integer"
28129
+ },
28130
+ "current_approvals": {
28131
+ "type": "integer"
28132
+ },
28133
+ "expires_at": {
28134
+ "type": "string",
28135
+ "format": "date-time"
28136
+ },
28137
+ "executed_at": {
28138
+ "type": "string",
28139
+ "format": "date-time"
28140
+ },
28141
+ "created_at": {
28142
+ "type": "string",
28143
+ "format": "date-time"
28144
+ },
28145
+ "updated_at": {
28146
+ "type": "string",
28147
+ "format": "date-time"
28148
+ },
28149
+ "signatures": {
28150
+ "type": "array",
28151
+ "items": {
28152
+ "$ref": "#/components/schemas/ApprovalSignatureResponse"
28153
+ }
28154
+ }
28155
+ }
28156
+ },
28157
+ "ApprovalSignatureResponse": {
28158
+ "type": "object",
28159
+ "properties": {
28160
+ "id": {
28161
+ "type": "string",
28162
+ "format": "uuid"
28163
+ },
28164
+ "approver_id": {
28165
+ "type": "string",
28166
+ "format": "uuid"
28167
+ },
28168
+ "approver_type": {
28169
+ "type": "string"
28170
+ },
28171
+ "decision": {
28172
+ "type": "string"
28173
+ },
28174
+ "reason": {
28175
+ "type": "string"
28176
+ },
28177
+ "created_at": {
28178
+ "type": "string",
28179
+ "format": "date-time"
28180
+ }
28181
+ }
28182
+ },
28183
+ "PendingApprovalListResponse": {
27357
28184
  "type": "object",
27358
- "required": [
27359
- "policy_id",
27360
- "action",
27361
- "action_payload"
27362
- ],
27363
28185
  "properties": {
27364
- "policy_id": {
27365
- "type": "string",
27366
- "format": "uuid"
27367
- },
27368
- "action": {
27369
- "type": "string"
28186
+ "pending_approvals": {
28187
+ "type": "array",
28188
+ "items": {
28189
+ "$ref": "#/components/schemas/PendingApprovalResponse"
28190
+ }
27370
28191
  },
27371
- "action_payload": {
27372
- "type": "object"
28192
+ "total": {
28193
+ "type": "integer",
28194
+ "format": "int64"
27373
28195
  }
27374
28196
  }
27375
28197
  },
27376
- "SubmitPendingApprovalResponse": {
28198
+ "ExecutePendingApprovalResponse": {
27377
28199
  "type": "object",
27378
28200
  "properties": {
27379
28201
  "pending_approval_id": {
27380
28202
  "type": "string",
27381
28203
  "format": "uuid"
27382
28204
  },
27383
- "required_approvals": {
27384
- "type": "integer"
27385
- },
27386
- "current_approvals": {
27387
- "type": "integer"
28205
+ "status": {
28206
+ "type": "string"
27388
28207
  },
27389
- "expires_at": {
28208
+ "executed_at": {
27390
28209
  "type": "string",
27391
28210
  "format": "date-time"
27392
28211
  },
27393
- "status": {
27394
- "type": "string"
27395
- },
27396
- "message": {
27397
- "type": "string"
28212
+ "result": {
28213
+ "type": "object"
27398
28214
  }
27399
28215
  }
27400
28216
  },
27401
- "ApprovePendingApprovalRequest": {
28217
+ "CreateSubOrgRequest": {
27402
28218
  "type": "object",
27403
28219
  "required": [
27404
- "decision",
27405
- "payload_hash"
28220
+ "name"
27406
28221
  ],
27407
28222
  "properties": {
27408
- "decision": {
28223
+ "name": {
27409
28224
  "type": "string",
27410
- "enum": [
27411
- "approve",
27412
- "reject"
27413
- ]
27414
- },
27415
- "payload_hash": {
27416
- "type": "string"
28225
+ "minLength": 1,
28226
+ "maxLength": 128
27417
28227
  },
27418
- "reason": {
28228
+ "description": {
27419
28229
  "type": "string"
27420
28230
  },
27421
- "credential_type": {
28231
+ "billing_model": {
27422
28232
  "type": "string",
27423
28233
  "enum": [
27424
- "password",
27425
- "passkey",
27426
- "totp",
27427
- "biometric",
27428
- "api_key"
28234
+ "inherit",
28235
+ "independent"
27429
28236
  ],
27430
- "description": "Authentication method used for this approval vote"
28237
+ "default": "inherit"
27431
28238
  }
27432
28239
  }
27433
28240
  },
27434
- "PendingApprovalResponse": {
28241
+ "SubOrgResponse": {
27435
28242
  "type": "object",
27436
28243
  "properties": {
27437
28244
  "id": {
27438
28245
  "type": "string",
27439
28246
  "format": "uuid"
27440
28247
  },
27441
- "org_id": {
28248
+ "parent_org_id": {
27442
28249
  "type": "string",
27443
28250
  "format": "uuid"
27444
28251
  },
27445
- "policy_id": {
28252
+ "name": {
28253
+ "type": "string"
28254
+ },
28255
+ "description": {
28256
+ "type": "string"
28257
+ },
28258
+ "billing_model": {
28259
+ "type": "string"
28260
+ },
28261
+ "status": {
28262
+ "type": "string",
28263
+ "enum": [
28264
+ "active",
28265
+ "archived"
28266
+ ]
28267
+ },
28268
+ "created_at": {
28269
+ "type": "string",
28270
+ "format": "date-time"
28271
+ }
28272
+ }
28273
+ },
28274
+ "SubOrgListResponse": {
28275
+ "type": "object",
28276
+ "properties": {
28277
+ "sub_orgs": {
28278
+ "type": "array",
28279
+ "items": {
28280
+ "$ref": "#/components/schemas/SubOrgResponse"
28281
+ }
28282
+ }
28283
+ }
28284
+ },
28285
+ "SubOrgPermissionRequest": {
28286
+ "type": "object",
28287
+ "required": [
28288
+ "permission"
28289
+ ],
28290
+ "properties": {
28291
+ "permission": {
28292
+ "type": "string",
28293
+ "description": "Permission to grant (e.g. vaults:read, agents:write)"
28294
+ },
28295
+ "resource_ids": {
28296
+ "type": "array",
28297
+ "items": {
28298
+ "type": "string",
28299
+ "format": "uuid"
28300
+ }
28301
+ }
28302
+ }
28303
+ },
28304
+ "SubOrgAddUserRequest": {
28305
+ "type": "object",
28306
+ "required": [
28307
+ "user_id"
28308
+ ],
28309
+ "properties": {
28310
+ "user_id": {
27446
28311
  "type": "string",
27447
28312
  "format": "uuid"
27448
28313
  },
27449
- "action": {
28314
+ "role": {
28315
+ "type": "string",
28316
+ "enum": [
28317
+ "admin",
28318
+ "member",
28319
+ "viewer"
28320
+ ],
28321
+ "default": "member"
28322
+ }
28323
+ }
28324
+ },
28325
+ "SubOrgGenerateWalletsRequest": {
28326
+ "type": "object",
28327
+ "properties": {
28328
+ "chains": {
28329
+ "type": "array",
28330
+ "items": {
28331
+ "type": "string"
28332
+ }
28333
+ }
28334
+ }
28335
+ },
28336
+ "PortfolioResponse": {
28337
+ "type": "object",
28338
+ "properties": {
28339
+ "wallets": {
28340
+ "type": "array",
28341
+ "items": {
28342
+ "$ref": "#/components/schemas/PortfolioWalletEntry"
28343
+ }
28344
+ },
28345
+ "total_usd_estimate": {
27450
28346
  "type": "string"
28347
+ }
28348
+ }
28349
+ },
28350
+ "PortfolioWalletEntry": {
28351
+ "type": "object",
28352
+ "properties": {
28353
+ "wallet_type": {
28354
+ "type": "string",
28355
+ "enum": [
28356
+ "treasury",
28357
+ "signing_key",
28358
+ "smart_account"
28359
+ ]
27451
28360
  },
27452
- "action_payload": {
27453
- "type": "object"
28361
+ "chain": {
28362
+ "type": "string"
27454
28363
  },
27455
- "payload_hash": {
28364
+ "address": {
27456
28365
  "type": "string"
27457
28366
  },
27458
- "submitted_by": {
27459
- "type": "string",
27460
- "format": "uuid"
28367
+ "native_balance": {
28368
+ "type": "string"
27461
28369
  },
27462
- "submitted_by_type": {
28370
+ "native_balance_usd": {
27463
28371
  "type": "string"
27464
28372
  },
27465
- "status": {
28373
+ "tokens": {
28374
+ "type": "array",
28375
+ "items": {
28376
+ "$ref": "#/components/schemas/PortfolioTokenBalance"
28377
+ }
28378
+ }
28379
+ }
28380
+ },
28381
+ "PortfolioTokenBalance": {
28382
+ "type": "object",
28383
+ "properties": {
28384
+ "contract_address": {
27466
28385
  "type": "string"
27467
28386
  },
27468
- "required_approvals": {
27469
- "type": "integer"
28387
+ "symbol": {
28388
+ "type": "string"
27470
28389
  },
27471
- "current_approvals": {
27472
- "type": "integer"
28390
+ "name": {
28391
+ "type": "string"
27473
28392
  },
27474
- "expires_at": {
27475
- "type": "string",
27476
- "format": "date-time"
28393
+ "balance": {
28394
+ "type": "string"
27477
28395
  },
27478
- "executed_at": {
27479
- "type": "string",
27480
- "format": "date-time"
28396
+ "balance_usd": {
28397
+ "type": "string"
27481
28398
  },
27482
- "created_at": {
27483
- "type": "string",
27484
- "format": "date-time"
28399
+ "decimals": {
28400
+ "type": "integer"
28401
+ }
28402
+ }
28403
+ },
28404
+ "ImportSmartAccountRequest": {
28405
+ "type": "object",
28406
+ "required": [
28407
+ "chain",
28408
+ "chain_id",
28409
+ "safe_address"
28410
+ ],
28411
+ "properties": {
28412
+ "chain": {
28413
+ "type": "string"
27485
28414
  },
27486
- "updated_at": {
27487
- "type": "string",
27488
- "format": "date-time"
28415
+ "chain_id": {
28416
+ "type": "integer"
27489
28417
  },
27490
- "signatures": {
27491
- "type": "array",
27492
- "items": {
27493
- "$ref": "#/components/schemas/ApprovalSignatureResponse"
27494
- }
28418
+ "safe_address": {
28419
+ "type": "string"
28420
+ },
28421
+ "verify": {
28422
+ "type": "boolean",
28423
+ "default": true,
28424
+ "description": "Verify on-chain Safe ownership"
27495
28425
  }
27496
28426
  }
27497
28427
  },
27498
- "ApprovalSignatureResponse": {
28428
+ "ImportSmartAccountResponse": {
27499
28429
  "type": "object",
27500
28430
  "properties": {
27501
28431
  "id": {
27502
28432
  "type": "string",
27503
28433
  "format": "uuid"
27504
28434
  },
27505
- "approver_id": {
28435
+ "agent_id": {
27506
28436
  "type": "string",
27507
28437
  "format": "uuid"
27508
28438
  },
27509
- "approver_type": {
28439
+ "chain": {
27510
28440
  "type": "string"
27511
28441
  },
27512
- "decision": {
27513
- "type": "string"
28442
+ "chain_id": {
28443
+ "type": "integer"
27514
28444
  },
27515
- "reason": {
28445
+ "safe_address": {
27516
28446
  "type": "string"
27517
28447
  },
28448
+ "nonce": {
28449
+ "type": "integer",
28450
+ "nullable": true
28451
+ },
27518
28452
  "created_at": {
27519
28453
  "type": "string",
27520
28454
  "format": "date-time"
27521
28455
  }
27522
28456
  }
27523
28457
  },
27524
- "PendingApprovalListResponse": {
28458
+ "EnvVar": {
27525
28459
  "type": "object",
27526
28460
  "properties": {
27527
- "pending_approvals": {
28461
+ "id": {
28462
+ "type": "string",
28463
+ "format": "uuid"
28464
+ },
28465
+ "key": {
28466
+ "type": "string"
28467
+ },
28468
+ "environments": {
27528
28469
  "type": "array",
27529
28470
  "items": {
27530
- "$ref": "#/components/schemas/PendingApprovalResponse"
28471
+ "type": "string"
27531
28472
  }
27532
28473
  },
27533
- "total": {
27534
- "type": "integer",
27535
- "format": "int64"
27536
- }
27537
- }
27538
- },
27539
- "ExecutePendingApprovalResponse": {
27540
- "type": "object",
27541
- "properties": {
27542
- "pending_approval_id": {
28474
+ "git_branch": {
27543
28475
  "type": "string",
27544
- "format": "uuid"
28476
+ "nullable": true
27545
28477
  },
27546
- "status": {
27547
- "type": "string"
28478
+ "sensitive": {
28479
+ "type": "boolean"
27548
28480
  },
27549
- "executed_at": {
28481
+ "comment": {
28482
+ "type": "string",
28483
+ "nullable": true
28484
+ },
28485
+ "value": {
28486
+ "type": "string",
28487
+ "nullable": true,
28488
+ "description": "Null for sensitive vars in list responses"
28489
+ },
28490
+ "version": {
28491
+ "type": "integer"
28492
+ },
28493
+ "created_by": {
28494
+ "type": "string",
28495
+ "nullable": true
28496
+ },
28497
+ "created_at": {
27550
28498
  "type": "string",
27551
28499
  "format": "date-time"
27552
28500
  },
27553
- "result": {
27554
- "type": "object"
28501
+ "updated_at": {
28502
+ "type": "string",
28503
+ "format": "date-time"
27555
28504
  }
27556
28505
  }
27557
28506
  },
27558
- "CreateSubOrgRequest": {
28507
+ "CreateEnvVarRequest": {
27559
28508
  "type": "object",
27560
28509
  "required": [
27561
- "name"
28510
+ "key",
28511
+ "value"
27562
28512
  ],
27563
28513
  "properties": {
27564
- "name": {
28514
+ "key": {
27565
28515
  "type": "string",
27566
- "minLength": 1,
27567
- "maxLength": 128
28516
+ "description": "Uppercase alphanumeric + underscore, 1-256 chars"
27568
28517
  },
27569
- "description": {
28518
+ "value": {
27570
28519
  "type": "string"
27571
28520
  },
27572
- "billing_model": {
27573
- "type": "string",
27574
- "enum": [
27575
- "inherit",
27576
- "independent"
27577
- ],
27578
- "default": "inherit"
27579
- }
27580
- }
27581
- },
27582
- "SubOrgResponse": {
27583
- "type": "object",
27584
- "properties": {
27585
- "id": {
27586
- "type": "string",
27587
- "format": "uuid"
28521
+ "environments": {
28522
+ "type": "array",
28523
+ "items": {
28524
+ "type": "string"
28525
+ },
28526
+ "default": [
28527
+ "production",
28528
+ "preview",
28529
+ "development"
28530
+ ]
27588
28531
  },
27589
- "parent_org_id": {
28532
+ "git_branch": {
27590
28533
  "type": "string",
27591
- "format": "uuid"
27592
- },
27593
- "name": {
27594
- "type": "string"
28534
+ "description": "Branch override (preview only)"
27595
28535
  },
27596
- "description": {
27597
- "type": "string"
28536
+ "sensitive": {
28537
+ "type": "boolean",
28538
+ "default": false
27598
28539
  },
27599
- "billing_model": {
28540
+ "comment": {
27600
28541
  "type": "string"
27601
- },
27602
- "status": {
27603
- "type": "string",
27604
- "enum": [
27605
- "active",
27606
- "archived"
27607
- ]
27608
- },
27609
- "created_at": {
27610
- "type": "string",
27611
- "format": "date-time"
27612
28542
  }
27613
28543
  }
27614
28544
  },
27615
- "SubOrgListResponse": {
28545
+ "UpdateEnvVarRequest": {
27616
28546
  "type": "object",
27617
28547
  "properties": {
27618
- "sub_orgs": {
28548
+ "value": {
28549
+ "type": "string"
28550
+ },
28551
+ "environments": {
27619
28552
  "type": "array",
27620
28553
  "items": {
27621
- "$ref": "#/components/schemas/SubOrgResponse"
28554
+ "type": "string"
27622
28555
  }
28556
+ },
28557
+ "sensitive": {
28558
+ "type": "boolean"
28559
+ },
28560
+ "comment": {
28561
+ "type": "string"
27623
28562
  }
27624
28563
  }
27625
28564
  },
27626
- "SubOrgPermissionRequest": {
28565
+ "ResolveEnvVarsResponse": {
27627
28566
  "type": "object",
27628
- "required": [
27629
- "permission"
27630
- ],
27631
28567
  "properties": {
27632
- "permission": {
27633
- "type": "string",
27634
- "description": "Permission to grant (e.g. vaults:read, agents:write)"
28568
+ "vars": {
28569
+ "type": "object",
28570
+ "additionalProperties": {
28571
+ "type": "string"
28572
+ }
27635
28573
  },
27636
- "resource_ids": {
27637
- "type": "array",
27638
- "items": {
28574
+ "sources": {
28575
+ "type": "object",
28576
+ "additionalProperties": {
27639
28577
  "type": "string",
27640
- "format": "uuid"
28578
+ "enum": [
28579
+ "shared",
28580
+ "vault",
28581
+ "branch_override"
28582
+ ]
27641
28583
  }
28584
+ },
28585
+ "environment": {
28586
+ "type": "string"
28587
+ },
28588
+ "git_branch": {
28589
+ "type": "string",
28590
+ "nullable": true
28591
+ },
28592
+ "resolved_at": {
28593
+ "type": "string",
28594
+ "format": "date-time"
27642
28595
  }
27643
28596
  }
27644
28597
  },
27645
- "SubOrgAddUserRequest": {
28598
+ "VaultEnvironment": {
27646
28599
  "type": "object",
27647
- "required": [
27648
- "user_id"
27649
- ],
27650
28600
  "properties": {
27651
- "user_id": {
28601
+ "id": {
27652
28602
  "type": "string",
27653
28603
  "format": "uuid"
27654
28604
  },
27655
- "role": {
28605
+ "slug": {
28606
+ "type": "string"
28607
+ },
28608
+ "description": {
27656
28609
  "type": "string",
27657
- "enum": [
27658
- "admin",
27659
- "member",
27660
- "viewer"
27661
- ],
27662
- "default": "member"
27663
- }
27664
- }
27665
- },
27666
- "SubOrgGenerateWalletsRequest": {
27667
- "type": "object",
27668
- "properties": {
27669
- "chains": {
27670
- "type": "array",
27671
- "items": {
27672
- "type": "string"
27673
- }
28610
+ "nullable": true
28611
+ },
28612
+ "is_builtin": {
28613
+ "type": "boolean"
28614
+ },
28615
+ "copied_from": {
28616
+ "type": "string",
28617
+ "nullable": true
28618
+ },
28619
+ "is_detached": {
28620
+ "type": "boolean"
28621
+ },
28622
+ "created_at": {
28623
+ "type": "string",
28624
+ "format": "date-time"
27674
28625
  }
27675
28626
  }
27676
28627
  },
27677
- "PortfolioResponse": {
28628
+ "CreateEnvironmentRequest": {
27678
28629
  "type": "object",
28630
+ "required": [
28631
+ "slug"
28632
+ ],
27679
28633
  "properties": {
27680
- "wallets": {
27681
- "type": "array",
27682
- "items": {
27683
- "$ref": "#/components/schemas/PortfolioWalletEntry"
27684
- }
28634
+ "slug": {
28635
+ "type": "string",
28636
+ "description": "Lowercase alphanumeric + hyphens, 2-30 chars"
27685
28637
  },
27686
- "total_usd_estimate": {
28638
+ "description": {
27687
28639
  "type": "string"
28640
+ },
28641
+ "copy_from": {
28642
+ "type": "string",
28643
+ "description": "Copy env vars from this environment"
27688
28644
  }
27689
28645
  }
27690
28646
  },
27691
- "PortfolioWalletEntry": {
28647
+ "OrgEnvVar": {
27692
28648
  "type": "object",
27693
28649
  "properties": {
27694
- "wallet_type": {
28650
+ "id": {
27695
28651
  "type": "string",
27696
- "enum": [
27697
- "treasury",
27698
- "signing_key",
27699
- "smart_account"
27700
- ]
28652
+ "format": "uuid"
27701
28653
  },
27702
- "chain": {
28654
+ "key": {
27703
28655
  "type": "string"
27704
28656
  },
27705
- "address": {
27706
- "type": "string"
28657
+ "environments": {
28658
+ "type": "array",
28659
+ "items": {
28660
+ "type": "string"
28661
+ }
27707
28662
  },
27708
- "native_balance": {
27709
- "type": "string"
28663
+ "sensitive": {
28664
+ "type": "boolean"
27710
28665
  },
27711
- "native_balance_usd": {
27712
- "type": "string"
28666
+ "comment": {
28667
+ "type": "string",
28668
+ "nullable": true
27713
28669
  },
27714
- "tokens": {
28670
+ "value": {
28671
+ "type": "string",
28672
+ "nullable": true
28673
+ },
28674
+ "version": {
28675
+ "type": "integer"
28676
+ },
28677
+ "linked_vaults": {
27715
28678
  "type": "array",
27716
28679
  "items": {
27717
- "$ref": "#/components/schemas/PortfolioTokenBalance"
28680
+ "type": "string",
28681
+ "format": "uuid"
27718
28682
  }
28683
+ },
28684
+ "created_at": {
28685
+ "type": "string",
28686
+ "format": "date-time"
28687
+ },
28688
+ "updated_at": {
28689
+ "type": "string",
28690
+ "format": "date-time"
27719
28691
  }
27720
28692
  }
27721
28693
  },
27722
- "PortfolioTokenBalance": {
28694
+ "CreateOrgEnvVarRequest": {
27723
28695
  "type": "object",
28696
+ "required": [
28697
+ "key",
28698
+ "value"
28699
+ ],
27724
28700
  "properties": {
27725
- "contract_address": {
28701
+ "key": {
27726
28702
  "type": "string"
27727
28703
  },
27728
- "symbol": {
28704
+ "value": {
27729
28705
  "type": "string"
27730
28706
  },
27731
- "name": {
27732
- "type": "string"
28707
+ "environments": {
28708
+ "type": "array",
28709
+ "items": {
28710
+ "type": "string"
28711
+ },
28712
+ "default": [
28713
+ "production",
28714
+ "preview",
28715
+ "development"
28716
+ ]
27733
28717
  },
27734
- "balance": {
27735
- "type": "string"
28718
+ "sensitive": {
28719
+ "type": "boolean",
28720
+ "default": false
27736
28721
  },
27737
- "balance_usd": {
28722
+ "comment": {
27738
28723
  "type": "string"
27739
- },
27740
- "decimals": {
27741
- "type": "integer"
27742
28724
  }
27743
28725
  }
27744
28726
  },
27745
- "ImportSmartAccountRequest": {
28727
+ "UpdateOrgEnvVarRequest": {
27746
28728
  "type": "object",
27747
- "required": [
27748
- "chain",
27749
- "chain_id",
27750
- "safe_address"
27751
- ],
27752
28729
  "properties": {
27753
- "chain": {
28730
+ "value": {
27754
28731
  "type": "string"
27755
28732
  },
27756
- "chain_id": {
27757
- "type": "integer"
28733
+ "environments": {
28734
+ "type": "array",
28735
+ "items": {
28736
+ "type": "string"
28737
+ }
27758
28738
  },
27759
- "safe_address": {
28739
+ "comment": {
27760
28740
  "type": "string"
27761
- },
27762
- "verify": {
27763
- "type": "boolean",
27764
- "default": true,
27765
- "description": "Verify on-chain Safe ownership"
27766
28741
  }
27767
28742
  }
27768
28743
  },
27769
- "ImportSmartAccountResponse": {
28744
+ "CreateWalletAccessPolicyRequest": {
27770
28745
  "type": "object",
28746
+ "required": [
28747
+ "wallet_chain",
28748
+ "permissions"
28749
+ ],
27771
28750
  "properties": {
27772
- "id": {
28751
+ "wallet_chain": {
27773
28752
  "type": "string",
27774
- "format": "uuid"
28753
+ "description": "Chain for which the policy applies (e.g. ethereum, solana)"
27775
28754
  },
27776
- "agent_id": {
28755
+ "target_agent_id": {
27777
28756
  "type": "string",
27778
- "format": "uuid"
27779
- },
27780
- "chain": {
27781
- "type": "string"
28757
+ "format": "uuid",
28758
+ "description": "Agent granted access (mutually exclusive with target_user_id)"
27782
28759
  },
27783
- "chain_id": {
27784
- "type": "integer"
28760
+ "target_user_id": {
28761
+ "type": "string",
28762
+ "format": "uuid",
28763
+ "description": "User granted access (mutually exclusive with target_agent_id)"
27785
28764
  },
27786
- "safe_address": {
27787
- "type": "string"
28765
+ "permissions": {
28766
+ "type": "array",
28767
+ "items": {
28768
+ "type": "string",
28769
+ "enum": [
28770
+ "send",
28771
+ "swap",
28772
+ "receive"
28773
+ ]
28774
+ }
27788
28775
  },
27789
- "nonce": {
27790
- "type": "integer",
27791
- "nullable": true
28776
+ "conditions": {
28777
+ "type": "object",
28778
+ "properties": {
28779
+ "max_value_per_tx_eth": {
28780
+ "type": "string",
28781
+ "description": "Max value per transaction in ETH"
28782
+ },
28783
+ "daily_limit_eth": {
28784
+ "type": "string",
28785
+ "description": "Daily spend limit in ETH"
28786
+ },
28787
+ "allowed_chains": {
28788
+ "type": "array",
28789
+ "items": {
28790
+ "type": "string"
28791
+ }
28792
+ },
28793
+ "allowed_tokens": {
28794
+ "type": "array",
28795
+ "items": {
28796
+ "type": "string"
28797
+ }
28798
+ }
28799
+ }
27792
28800
  },
27793
- "created_at": {
28801
+ "expires_at": {
27794
28802
  "type": "string",
27795
28803
  "format": "date-time"
27796
28804
  }
27797
28805
  }
27798
28806
  },
27799
- "EnvVar": {
28807
+ "WalletAccessPolicyResponse": {
27800
28808
  "type": "object",
27801
28809
  "properties": {
27802
28810
  "id": {
27803
28811
  "type": "string",
27804
28812
  "format": "uuid"
27805
28813
  },
27806
- "key": {
27807
- "type": "string"
28814
+ "org_id": {
28815
+ "type": "string",
28816
+ "format": "uuid"
27808
28817
  },
27809
- "environments": {
27810
- "type": "array",
27811
- "items": {
27812
- "type": "string"
27813
- }
28818
+ "wallet_chain": {
28819
+ "type": "string"
27814
28820
  },
27815
- "git_branch": {
28821
+ "target_agent_id": {
27816
28822
  "type": "string",
28823
+ "format": "uuid",
27817
28824
  "nullable": true
27818
28825
  },
27819
- "sensitive": {
27820
- "type": "boolean"
27821
- },
27822
- "comment": {
28826
+ "target_user_id": {
27823
28827
  "type": "string",
28828
+ "format": "uuid",
27824
28829
  "nullable": true
27825
28830
  },
27826
- "value": {
27827
- "type": "string",
27828
- "nullable": true,
27829
- "description": "Null for sensitive vars in list responses"
28831
+ "permissions": {
28832
+ "type": "array",
28833
+ "items": {
28834
+ "type": "string",
28835
+ "enum": [
28836
+ "send",
28837
+ "swap",
28838
+ "receive"
28839
+ ]
28840
+ }
27830
28841
  },
27831
- "version": {
27832
- "type": "integer"
28842
+ "conditions": {
28843
+ "type": "object",
28844
+ "nullable": true,
28845
+ "properties": {
28846
+ "max_value_per_tx_eth": {
28847
+ "type": "string",
28848
+ "nullable": true
28849
+ },
28850
+ "daily_limit_eth": {
28851
+ "type": "string",
28852
+ "nullable": true
28853
+ },
28854
+ "allowed_chains": {
28855
+ "type": "array",
28856
+ "items": {
28857
+ "type": "string"
28858
+ },
28859
+ "nullable": true
28860
+ },
28861
+ "allowed_tokens": {
28862
+ "type": "array",
28863
+ "items": {
28864
+ "type": "string"
28865
+ },
28866
+ "nullable": true
28867
+ }
28868
+ }
27833
28869
  },
27834
- "created_by": {
28870
+ "expires_at": {
27835
28871
  "type": "string",
28872
+ "format": "date-time",
27836
28873
  "nullable": true
27837
28874
  },
27838
28875
  "created_at": {
27839
28876
  "type": "string",
27840
28877
  "format": "date-time"
27841
- },
27842
- "updated_at": {
27843
- "type": "string",
27844
- "format": "date-time"
27845
28878
  }
27846
28879
  }
27847
28880
  },
27848
- "CreateEnvVarRequest": {
28881
+ "WalletAccessPolicyListResponse": {
28882
+ "type": "object",
28883
+ "properties": {
28884
+ "policies": {
28885
+ "type": "array",
28886
+ "items": {
28887
+ "$ref": "#/components/schemas/WalletAccessPolicyResponse"
28888
+ }
28889
+ }
28890
+ }
28891
+ },
28892
+ "CredentialRecoveryRequest": {
27849
28893
  "type": "object",
27850
28894
  "required": [
27851
- "key",
27852
- "value"
28895
+ "recovery_type"
27853
28896
  ],
27854
28897
  "properties": {
27855
- "key": {
28898
+ "recovery_type": {
27856
28899
  "type": "string",
27857
- "description": "Uppercase alphanumeric + underscore, 1-256 chars"
28900
+ "enum": [
28901
+ "mfa_reset",
28902
+ "passkey_reset",
28903
+ "password_reset"
28904
+ ]
27858
28905
  },
27859
- "value": {
27860
- "type": "string"
28906
+ "reason": {
28907
+ "type": "string",
28908
+ "description": "Optional justification for the recovery request"
28909
+ }
28910
+ }
28911
+ },
28912
+ "CredentialRecoveryResponse": {
28913
+ "type": "object",
28914
+ "properties": {
28915
+ "request_id": {
28916
+ "type": "string",
28917
+ "format": "uuid"
27861
28918
  },
27862
- "environments": {
27863
- "type": "array",
27864
- "items": {
27865
- "type": "string"
27866
- },
27867
- "default": [
27868
- "production",
27869
- "preview",
27870
- "development"
28919
+ "status": {
28920
+ "type": "string",
28921
+ "enum": [
28922
+ "pending_approval",
28923
+ "approved",
28924
+ "rejected",
28925
+ "expired"
27871
28926
  ]
27872
28927
  },
27873
- "git_branch": {
28928
+ "recovery_type": {
27874
28929
  "type": "string",
27875
- "description": "Branch override (preview only)"
27876
- },
27877
- "sensitive": {
27878
- "type": "boolean",
27879
- "default": false
28930
+ "enum": [
28931
+ "mfa_reset",
28932
+ "passkey_reset",
28933
+ "password_reset"
28934
+ ]
27880
28935
  },
27881
- "comment": {
27882
- "type": "string"
28936
+ "created_at": {
28937
+ "type": "string",
28938
+ "format": "date-time"
27883
28939
  }
27884
28940
  }
27885
28941
  },
27886
- "UpdateEnvVarRequest": {
28942
+ "CredentialRecoveryListResponse": {
27887
28943
  "type": "object",
27888
28944
  "properties": {
27889
- "value": {
27890
- "type": "string"
27891
- },
27892
- "environments": {
28945
+ "requests": {
27893
28946
  "type": "array",
27894
28947
  "items": {
27895
- "type": "string"
28948
+ "$ref": "#/components/schemas/CredentialRecoveryResponse"
27896
28949
  }
27897
- },
27898
- "sensitive": {
27899
- "type": "boolean"
27900
- },
27901
- "comment": {
27902
- "type": "string"
27903
28950
  }
27904
28951
  }
27905
28952
  },
27906
- "ResolveEnvVarsResponse": {
28953
+ "CredentialRecoveryApproveResponse": {
27907
28954
  "type": "object",
27908
28955
  "properties": {
27909
- "vars": {
27910
- "type": "object",
27911
- "additionalProperties": {
27912
- "type": "string"
27913
- }
27914
- },
27915
- "sources": {
27916
- "type": "object",
27917
- "additionalProperties": {
27918
- "type": "string",
27919
- "enum": [
27920
- "shared",
27921
- "vault",
27922
- "branch_override"
27923
- ]
27924
- }
27925
- },
27926
- "environment": {
27927
- "type": "string"
28956
+ "request_id": {
28957
+ "type": "string",
28958
+ "format": "uuid"
27928
28959
  },
27929
- "git_branch": {
28960
+ "status": {
27930
28961
  "type": "string",
27931
- "nullable": true
28962
+ "enum": [
28963
+ "approved"
28964
+ ]
27932
28965
  },
27933
- "resolved_at": {
28966
+ "recovery_code": {
27934
28967
  "type": "string",
27935
- "format": "date-time"
28968
+ "nullable": true,
28969
+ "description": "One-time recovery code (only present for certain recovery types)"
27936
28970
  }
27937
28971
  }
27938
28972
  },
27939
- "VaultEnvironment": {
28973
+ "CredentialRecoveryExecuteResponse": {
27940
28974
  "type": "object",
27941
28975
  "properties": {
27942
- "id": {
28976
+ "request_id": {
27943
28977
  "type": "string",
27944
28978
  "format": "uuid"
27945
28979
  },
27946
- "slug": {
28980
+ "status": {
28981
+ "type": "string",
28982
+ "enum": [
28983
+ "executed"
28984
+ ]
28985
+ },
28986
+ "recovery_type": {
27947
28987
  "type": "string"
27948
28988
  },
27949
- "description": {
28989
+ "executed_at": {
27950
28990
  "type": "string",
27951
- "nullable": true
28991
+ "format": "date-time"
28992
+ }
28993
+ }
28994
+ },
28995
+ "CredentialRecoveryPolicyResponse": {
28996
+ "type": "object",
28997
+ "properties": {
28998
+ "enabled": {
28999
+ "type": "boolean"
27952
29000
  },
27953
- "is_builtin": {
29001
+ "require_admin_approval": {
27954
29002
  "type": "boolean"
27955
29003
  },
27956
- "copied_from": {
27957
- "type": "string",
27958
- "nullable": true
29004
+ "delay_hours": {
29005
+ "type": "integer",
29006
+ "description": "Waiting period before recovery takes effect"
27959
29007
  },
27960
- "is_detached": {
29008
+ "allowed_types": {
29009
+ "type": "array",
29010
+ "items": {
29011
+ "type": "string",
29012
+ "enum": [
29013
+ "mfa_reset",
29014
+ "passkey_reset",
29015
+ "password_reset"
29016
+ ]
29017
+ }
29018
+ }
29019
+ }
29020
+ },
29021
+ "CredentialRecoveryPolicyRequest": {
29022
+ "type": "object",
29023
+ "properties": {
29024
+ "enabled": {
27961
29025
  "type": "boolean"
27962
29026
  },
27963
- "created_at": {
27964
- "type": "string",
27965
- "format": "date-time"
29027
+ "require_admin_approval": {
29028
+ "type": "boolean"
29029
+ },
29030
+ "delay_hours": {
29031
+ "type": "integer"
29032
+ },
29033
+ "allowed_types": {
29034
+ "type": "array",
29035
+ "items": {
29036
+ "type": "string",
29037
+ "enum": [
29038
+ "mfa_reset",
29039
+ "passkey_reset",
29040
+ "password_reset"
29041
+ ]
29042
+ }
27966
29043
  }
27967
29044
  }
27968
29045
  },
27969
- "CreateEnvironmentRequest": {
29046
+ "ShamirKekSetupRequest": {
27970
29047
  "type": "object",
27971
29048
  "required": [
27972
- "slug"
29049
+ "threshold",
29050
+ "total_shares",
29051
+ "custodian_emails"
27973
29052
  ],
27974
29053
  "properties": {
27975
- "slug": {
27976
- "type": "string",
27977
- "description": "Lowercase alphanumeric + hyphens, 2-30 chars"
29054
+ "threshold": {
29055
+ "type": "integer",
29056
+ "enum": [
29057
+ 2,
29058
+ 3
29059
+ ],
29060
+ "description": "Minimum shares required to reconstruct the KEK"
27978
29061
  },
27979
- "description": {
27980
- "type": "string"
29062
+ "total_shares": {
29063
+ "type": "integer",
29064
+ "enum": [
29065
+ 3,
29066
+ 5
29067
+ ],
29068
+ "description": "Total number of shares to generate"
27981
29069
  },
27982
- "copy_from": {
27983
- "type": "string",
27984
- "description": "Copy env vars from this environment"
29070
+ "custodian_emails": {
29071
+ "type": "array",
29072
+ "items": {
29073
+ "type": "string",
29074
+ "format": "email"
29075
+ },
29076
+ "description": "Email addresses of share custodians"
27985
29077
  }
27986
29078
  }
27987
29079
  },
27988
- "OrgEnvVar": {
29080
+ "ShamirKekSetupResponse": {
27989
29081
  "type": "object",
27990
29082
  "properties": {
27991
- "id": {
27992
- "type": "string",
27993
- "format": "uuid"
27994
- },
27995
- "key": {
29083
+ "kek_id": {
27996
29084
  "type": "string"
27997
29085
  },
27998
- "environments": {
29086
+ "threshold": {
29087
+ "type": "integer"
29088
+ },
29089
+ "total_shares": {
29090
+ "type": "integer"
29091
+ },
29092
+ "shares": {
27999
29093
  "type": "array",
29094
+ "description": "One-time share distribution (never returned again)",
28000
29095
  "items": {
28001
- "type": "string"
29096
+ "type": "object",
29097
+ "properties": {
29098
+ "index": {
29099
+ "type": "integer"
29100
+ },
29101
+ "custodian_email": {
29102
+ "type": "string",
29103
+ "format": "email"
29104
+ },
29105
+ "share_b64": {
29106
+ "type": "string",
29107
+ "description": "Base64-encoded share"
29108
+ }
29109
+ }
28002
29110
  }
28003
29111
  },
28004
- "sensitive": {
29112
+ "custody_mode": {
29113
+ "type": "string"
29114
+ },
29115
+ "created_at": {
29116
+ "type": "string",
29117
+ "format": "date-time"
29118
+ }
29119
+ }
29120
+ },
29121
+ "ShamirKekStatusResponse": {
29122
+ "type": "object",
29123
+ "properties": {
29124
+ "configured": {
28005
29125
  "type": "boolean"
28006
29126
  },
28007
- "comment": {
29127
+ "kek_id": {
28008
29128
  "type": "string",
28009
29129
  "nullable": true
28010
29130
  },
28011
- "value": {
28012
- "type": "string",
29131
+ "threshold": {
29132
+ "type": "integer",
28013
29133
  "nullable": true
28014
29134
  },
28015
- "version": {
28016
- "type": "integer"
29135
+ "total_shares": {
29136
+ "type": "integer",
29137
+ "nullable": true
28017
29138
  },
28018
- "linked_vaults": {
29139
+ "custody_mode": {
29140
+ "type": "string",
29141
+ "nullable": true
29142
+ },
29143
+ "custodians": {
28019
29144
  "type": "array",
29145
+ "nullable": true,
28020
29146
  "items": {
28021
- "type": "string",
28022
- "format": "uuid"
29147
+ "type": "object",
29148
+ "properties": {
29149
+ "email": {
29150
+ "type": "string",
29151
+ "format": "email"
29152
+ },
29153
+ "share_provided": {
29154
+ "type": "boolean"
29155
+ }
29156
+ }
28023
29157
  }
28024
29158
  },
28025
29159
  "created_at": {
28026
29160
  "type": "string",
28027
- "format": "date-time"
28028
- },
28029
- "updated_at": {
28030
- "type": "string",
28031
- "format": "date-time"
29161
+ "format": "date-time",
29162
+ "nullable": true
28032
29163
  }
28033
29164
  }
28034
29165
  },
28035
- "CreateOrgEnvVarRequest": {
29166
+ "ShamirKekReconstructRequest": {
28036
29167
  "type": "object",
28037
29168
  "required": [
28038
- "key",
28039
- "value"
29169
+ "shares"
28040
29170
  ],
28041
29171
  "properties": {
28042
- "key": {
28043
- "type": "string"
28044
- },
28045
- "value": {
28046
- "type": "string"
28047
- },
28048
- "environments": {
29172
+ "shares": {
28049
29173
  "type": "array",
28050
29174
  "items": {
28051
- "type": "string"
28052
- },
28053
- "default": [
28054
- "production",
28055
- "preview",
28056
- "development"
29175
+ "type": "object",
29176
+ "required": [
29177
+ "index",
29178
+ "share_b64"
29179
+ ],
29180
+ "properties": {
29181
+ "index": {
29182
+ "type": "integer"
29183
+ },
29184
+ "share_b64": {
29185
+ "type": "string",
29186
+ "description": "Base64-encoded share"
29187
+ }
29188
+ }
29189
+ }
29190
+ }
29191
+ }
29192
+ },
29193
+ "ShamirKekReconstructResponse": {
29194
+ "type": "object",
29195
+ "properties": {
29196
+ "status": {
29197
+ "type": "string",
29198
+ "enum": [
29199
+ "accepted",
29200
+ "reconstructed"
28057
29201
  ]
28058
29202
  },
28059
- "sensitive": {
28060
- "type": "boolean",
28061
- "default": false
28062
- },
28063
- "comment": {
29203
+ "message": {
28064
29204
  "type": "string"
28065
29205
  }
28066
29206
  }
28067
29207
  },
28068
- "UpdateOrgEnvVarRequest": {
29208
+ "ShamirKekRecoveryCodesResponse": {
28069
29209
  "type": "object",
28070
29210
  "properties": {
28071
- "value": {
28072
- "type": "string"
28073
- },
28074
- "environments": {
29211
+ "codes": {
28075
29212
  "type": "array",
28076
29213
  "items": {
28077
29214
  "type": "string"
28078
29215
  }
28079
- },
28080
- "comment": {
29216
+ }
29217
+ }
29218
+ },
29219
+ "ShamirKekVerifyCodeRequest": {
29220
+ "type": "object",
29221
+ "required": [
29222
+ "code"
29223
+ ],
29224
+ "properties": {
29225
+ "code": {
28081
29226
  "type": "string"
28082
29227
  }
28083
29228
  }
29229
+ },
29230
+ "ShamirKekVerifyCodeResponse": {
29231
+ "type": "object",
29232
+ "properties": {
29233
+ "valid": {
29234
+ "type": "boolean"
29235
+ }
29236
+ }
28084
29237
  }
28085
29238
  }
28086
29239
  }