@1claw/openapi-spec 0.22.1 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/openapi.json CHANGED
@@ -98,6 +98,10 @@
98
98
  {
99
99
  "name": "Health",
100
100
  "description": "Service health checks"
101
+ },
102
+ {
103
+ "name": "Platform",
104
+ "description": "Platform API for developers building on 1Claw (plt_ keys, user provisioning, bootstrap templates)"
101
105
  }
102
106
  ],
103
107
  "paths": {
@@ -5125,166 +5129,693 @@
5125
5129
  }
5126
5130
  }
5127
5131
  }
5128
- }
5129
- },
5130
- "components": {
5131
- "securitySchemes": {
5132
- "BearerAuth": {
5133
- "type": "http",
5134
- "scheme": "bearer",
5135
- "bearerFormat": "JWT"
5136
- },
5137
- "ApiKeyAuth": {
5138
- "type": "http",
5139
- "scheme": "bearer",
5140
- "description": "1ck_ prefixed API key used as Bearer token"
5141
- }
5142
5132
  },
5143
- "parameters": {
5144
- "VaultId": {
5145
- "name": "vault_id",
5146
- "in": "path",
5147
- "required": true,
5148
- "schema": {
5149
- "type": "string",
5150
- "format": "uuid"
5151
- }
5152
- },
5153
- "SecretPath": {
5154
- "name": "path",
5155
- "in": "path",
5156
- "required": true,
5157
- "schema": {
5158
- "type": "string"
5133
+ "/v1/platform/apps": {
5134
+ "post": {
5135
+ "tags": [
5136
+ "Platform"
5137
+ ],
5138
+ "summary": "Register a platform app",
5139
+ "description": "Register a new platform app for building on top of 1Claw. Returns an API key (plt_ prefix) that must be saved immediately.",
5140
+ "security": [
5141
+ {
5142
+ "BearerAuth": []
5143
+ }
5144
+ ],
5145
+ "requestBody": {
5146
+ "required": true,
5147
+ "content": {
5148
+ "application/json": {
5149
+ "schema": {
5150
+ "$ref": "#/components/schemas/CreatePlatformAppRequest"
5151
+ }
5152
+ }
5153
+ }
5159
5154
  },
5160
- "description": "Secret path (e.g. \"db/credentials\")"
5161
- },
5162
- "AgentId": {
5163
- "name": "agent_id",
5164
- "in": "path",
5165
- "required": true,
5166
- "schema": {
5167
- "type": "string",
5168
- "format": "uuid"
5169
- }
5170
- },
5171
- "PolicyId": {
5172
- "name": "policy_id",
5173
- "in": "path",
5174
- "required": true,
5175
- "schema": {
5176
- "type": "string",
5177
- "format": "uuid"
5155
+ "responses": {
5156
+ "201": {
5157
+ "description": "Platform app created",
5158
+ "content": {
5159
+ "application/json": {
5160
+ "schema": {
5161
+ "$ref": "#/components/schemas/PlatformAppCreatedResponse"
5162
+ }
5163
+ }
5164
+ }
5165
+ },
5166
+ "400": {
5167
+ "description": "Invalid request"
5168
+ },
5169
+ "403": {
5170
+ "description": "Only human users can register platform apps"
5171
+ }
5178
5172
  }
5179
5173
  },
5180
- "IncludeSignedTx": {
5181
- "name": "include_signed_tx",
5182
- "in": "query",
5183
- "required": false,
5184
- "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",
5185
- "schema": {
5186
- "type": "boolean",
5187
- "default": false,
5188
- "example": false
5174
+ "get": {
5175
+ "tags": [
5176
+ "Platform"
5177
+ ],
5178
+ "summary": "List platform apps",
5179
+ "description": "List all platform apps in the organization.",
5180
+ "security": [
5181
+ {
5182
+ "BearerAuth": []
5183
+ }
5184
+ ],
5185
+ "responses": {
5186
+ "200": {
5187
+ "description": "List of platform apps",
5188
+ "content": {
5189
+ "application/json": {
5190
+ "schema": {
5191
+ "type": "array",
5192
+ "items": {
5193
+ "$ref": "#/components/schemas/PlatformAppResponse"
5194
+ }
5195
+ }
5196
+ }
5197
+ }
5198
+ }
5189
5199
  }
5190
5200
  }
5191
5201
  },
5192
- "responses": {
5193
- "BadRequest": {
5194
- "description": "Invalid request",
5195
- "content": {
5196
- "application/json": {
5202
+ "/v1/platform/apps/{appId}": {
5203
+ "get": {
5204
+ "tags": [
5205
+ "Platform"
5206
+ ],
5207
+ "summary": "Get platform app details",
5208
+ "security": [
5209
+ {
5210
+ "BearerAuth": []
5211
+ }
5212
+ ],
5213
+ "parameters": [
5214
+ {
5215
+ "in": "path",
5216
+ "name": "appId",
5217
+ "required": true,
5197
5218
  "schema": {
5198
- "$ref": "#/components/schemas/ProblemDetails"
5219
+ "type": "string",
5220
+ "format": "uuid"
5199
5221
  }
5200
5222
  }
5201
- }
5202
- },
5203
- "Unauthorized": {
5204
- "description": "Authentication required or invalid",
5205
- "content": {
5206
- "application/json": {
5207
- "schema": {
5208
- "$ref": "#/components/schemas/ProblemDetails"
5223
+ ],
5224
+ "responses": {
5225
+ "200": {
5226
+ "description": "Platform app details",
5227
+ "content": {
5228
+ "application/json": {
5229
+ "schema": {
5230
+ "$ref": "#/components/schemas/PlatformAppResponse"
5231
+ }
5232
+ }
5209
5233
  }
5234
+ },
5235
+ "404": {
5236
+ "description": "Not found"
5210
5237
  }
5211
5238
  }
5212
5239
  },
5213
- "Forbidden": {
5214
- "description": "Insufficient permissions",
5215
- "content": {
5216
- "application/json": {
5240
+ "patch": {
5241
+ "tags": [
5242
+ "Platform"
5243
+ ],
5244
+ "summary": "Update platform app",
5245
+ "security": [
5246
+ {
5247
+ "BearerAuth": []
5248
+ }
5249
+ ],
5250
+ "parameters": [
5251
+ {
5252
+ "in": "path",
5253
+ "name": "appId",
5254
+ "required": true,
5217
5255
  "schema": {
5218
- "$ref": "#/components/schemas/ProblemDetails"
5256
+ "type": "string",
5257
+ "format": "uuid"
5219
5258
  }
5220
5259
  }
5221
- }
5222
- },
5223
- "NotFound": {
5224
- "description": "Resource not found",
5225
- "content": {
5226
- "application/json": {
5227
- "schema": {
5228
- "$ref": "#/components/schemas/ProblemDetails"
5260
+ ],
5261
+ "requestBody": {
5262
+ "required": true,
5263
+ "content": {
5264
+ "application/json": {
5265
+ "schema": {
5266
+ "$ref": "#/components/schemas/UpdatePlatformAppRequest"
5267
+ }
5229
5268
  }
5230
5269
  }
5231
- }
5232
- },
5233
- "PaymentRequired": {
5234
- "description": "x402 payment required",
5235
- "content": {
5236
- "application/json": {
5237
- "schema": {
5238
- "$ref": "#/components/schemas/PaymentRequirement"
5270
+ },
5271
+ "responses": {
5272
+ "200": {
5273
+ "description": "Updated platform app",
5274
+ "content": {
5275
+ "application/json": {
5276
+ "schema": {
5277
+ "$ref": "#/components/schemas/PlatformAppResponse"
5278
+ }
5279
+ }
5239
5280
  }
5240
5281
  }
5241
5282
  }
5242
5283
  },
5243
- "Conflict": {
5244
- "description": "Resource already exists or conflict",
5245
- "content": {
5246
- "application/json": {
5284
+ "delete": {
5285
+ "tags": [
5286
+ "Platform"
5287
+ ],
5288
+ "summary": "Delete platform app",
5289
+ "security": [
5290
+ {
5291
+ "BearerAuth": []
5292
+ }
5293
+ ],
5294
+ "parameters": [
5295
+ {
5296
+ "in": "path",
5297
+ "name": "appId",
5298
+ "required": true,
5247
5299
  "schema": {
5248
- "$ref": "#/components/schemas/ProblemDetails"
5300
+ "type": "string",
5301
+ "format": "uuid"
5249
5302
  }
5250
5303
  }
5251
- }
5252
- }
5253
- },
5254
- "schemas": {
5255
- "ProblemDetails": {
5256
- "type": "object",
5257
- "description": "RFC 7807 error envelope",
5258
- "properties": {
5259
- "type": {
5260
- "type": "string"
5261
- },
5262
- "title": {
5263
- "type": "string"
5264
- },
5265
- "status": {
5266
- "type": "integer"
5304
+ ],
5305
+ "responses": {
5306
+ "204": {
5307
+ "description": "Deleted"
5267
5308
  },
5268
- "detail": {
5269
- "type": "string"
5309
+ "403": {
5310
+ "description": "Only human users can delete platform apps"
5270
5311
  }
5271
5312
  }
5272
- },
5273
- "ResetUsageEventsResponse": {
5274
- "type": "object",
5275
- "required": [
5276
- "deleted_events"
5313
+ }
5314
+ },
5315
+ "/v1/platform/apps/{appId}/templates": {
5316
+ "post": {
5317
+ "tags": [
5318
+ "Platform"
5277
5319
  ],
5278
- "properties": {
5279
- "deleted_events": {
5280
- "type": "integer",
5281
- "format": "int64",
5282
- "description": "Number of usage_events rows removed"
5320
+ "summary": "Create bootstrap template",
5321
+ "description": "Create a template that defines what vault, agents, and policies to bootstrap for each connected user.",
5322
+ "security": [
5323
+ {
5324
+ "BearerAuth": []
5283
5325
  }
5284
- }
5285
- },
5286
- "ResetUsageForUserEmailRequest": {
5287
- "type": "object",
5326
+ ],
5327
+ "parameters": [
5328
+ {
5329
+ "in": "path",
5330
+ "name": "appId",
5331
+ "required": true,
5332
+ "schema": {
5333
+ "type": "string",
5334
+ "format": "uuid"
5335
+ }
5336
+ }
5337
+ ],
5338
+ "requestBody": {
5339
+ "required": true,
5340
+ "content": {
5341
+ "application/json": {
5342
+ "schema": {
5343
+ "$ref": "#/components/schemas/CreateTemplateRequest"
5344
+ }
5345
+ }
5346
+ }
5347
+ },
5348
+ "responses": {
5349
+ "201": {
5350
+ "description": "Template created",
5351
+ "content": {
5352
+ "application/json": {
5353
+ "schema": {
5354
+ "$ref": "#/components/schemas/PlatformTemplateResponse"
5355
+ }
5356
+ }
5357
+ }
5358
+ }
5359
+ }
5360
+ },
5361
+ "get": {
5362
+ "tags": [
5363
+ "Platform"
5364
+ ],
5365
+ "summary": "List templates",
5366
+ "security": [
5367
+ {
5368
+ "BearerAuth": []
5369
+ }
5370
+ ],
5371
+ "parameters": [
5372
+ {
5373
+ "in": "path",
5374
+ "name": "appId",
5375
+ "required": true,
5376
+ "schema": {
5377
+ "type": "string",
5378
+ "format": "uuid"
5379
+ }
5380
+ }
5381
+ ],
5382
+ "responses": {
5383
+ "200": {
5384
+ "description": "List of templates",
5385
+ "content": {
5386
+ "application/json": {
5387
+ "schema": {
5388
+ "type": "array",
5389
+ "items": {
5390
+ "$ref": "#/components/schemas/PlatformTemplateResponse"
5391
+ }
5392
+ }
5393
+ }
5394
+ }
5395
+ }
5396
+ }
5397
+ }
5398
+ },
5399
+ "/v1/platform/users/upsert": {
5400
+ "post": {
5401
+ "tags": [
5402
+ "Platform"
5403
+ ],
5404
+ "summary": "Provision or look up a platform user",
5405
+ "description": "Upserts a user using either an OIDC subject_token (verified against the platform app's JWKS) or an email address. Returns the user handle and connection ID.",
5406
+ "security": [
5407
+ {
5408
+ "BearerAuth": []
5409
+ }
5410
+ ],
5411
+ "requestBody": {
5412
+ "required": true,
5413
+ "content": {
5414
+ "application/json": {
5415
+ "schema": {
5416
+ "$ref": "#/components/schemas/UpsertPlatformUserRequest"
5417
+ }
5418
+ }
5419
+ }
5420
+ },
5421
+ "responses": {
5422
+ "200": {
5423
+ "description": "Existing user found",
5424
+ "content": {
5425
+ "application/json": {
5426
+ "schema": {
5427
+ "$ref": "#/components/schemas/PlatformUserResponse"
5428
+ }
5429
+ }
5430
+ }
5431
+ },
5432
+ "201": {
5433
+ "description": "New user created",
5434
+ "content": {
5435
+ "application/json": {
5436
+ "schema": {
5437
+ "$ref": "#/components/schemas/PlatformUserResponse"
5438
+ }
5439
+ }
5440
+ }
5441
+ }
5442
+ }
5443
+ }
5444
+ },
5445
+ "/v1/platform/apps/{appId}/users": {
5446
+ "get": {
5447
+ "tags": [
5448
+ "Platform"
5449
+ ],
5450
+ "summary": "List connected users",
5451
+ "description": "List all users connected to this platform app.",
5452
+ "security": [
5453
+ {
5454
+ "BearerAuth": []
5455
+ }
5456
+ ],
5457
+ "parameters": [
5458
+ {
5459
+ "in": "path",
5460
+ "name": "appId",
5461
+ "required": true,
5462
+ "schema": {
5463
+ "type": "string",
5464
+ "format": "uuid"
5465
+ }
5466
+ }
5467
+ ],
5468
+ "responses": {
5469
+ "200": {
5470
+ "description": "Connected users",
5471
+ "content": {
5472
+ "application/json": {
5473
+ "schema": {
5474
+ "type": "array",
5475
+ "items": {
5476
+ "$ref": "#/components/schemas/PlatformConnectedUserResponse"
5477
+ }
5478
+ }
5479
+ }
5480
+ }
5481
+ }
5482
+ }
5483
+ }
5484
+ },
5485
+ "/v1/platform/connections/{connectionId}/bootstrap": {
5486
+ "post": {
5487
+ "tags": [
5488
+ "Platform"
5489
+ ],
5490
+ "summary": "Bootstrap resources for a connected user",
5491
+ "description": "Executes a template to create vault, agent, and policies for the connected user. Returns a claim URL and token for the user to claim their resources.",
5492
+ "security": [
5493
+ {
5494
+ "BearerAuth": []
5495
+ }
5496
+ ],
5497
+ "parameters": [
5498
+ {
5499
+ "in": "path",
5500
+ "name": "connectionId",
5501
+ "required": true,
5502
+ "schema": {
5503
+ "type": "string",
5504
+ "format": "uuid"
5505
+ }
5506
+ }
5507
+ ],
5508
+ "requestBody": {
5509
+ "required": true,
5510
+ "content": {
5511
+ "application/json": {
5512
+ "schema": {
5513
+ "$ref": "#/components/schemas/BootstrapRequest"
5514
+ }
5515
+ }
5516
+ }
5517
+ },
5518
+ "responses": {
5519
+ "201": {
5520
+ "description": "Resources bootstrapped",
5521
+ "content": {
5522
+ "application/json": {
5523
+ "schema": {
5524
+ "$ref": "#/components/schemas/BootstrapResponse"
5525
+ }
5526
+ }
5527
+ }
5528
+ }
5529
+ }
5530
+ }
5531
+ },
5532
+ "/v1/platform/apps/{appId}/audit": {
5533
+ "get": {
5534
+ "tags": [
5535
+ "Platform"
5536
+ ],
5537
+ "summary": "Platform audit log",
5538
+ "description": "Returns audit events related to this platform app.",
5539
+ "security": [
5540
+ {
5541
+ "BearerAuth": []
5542
+ }
5543
+ ],
5544
+ "parameters": [
5545
+ {
5546
+ "in": "path",
5547
+ "name": "appId",
5548
+ "required": true,
5549
+ "schema": {
5550
+ "type": "string",
5551
+ "format": "uuid"
5552
+ }
5553
+ },
5554
+ {
5555
+ "in": "query",
5556
+ "name": "limit",
5557
+ "schema": {
5558
+ "type": "integer",
5559
+ "default": 50
5560
+ }
5561
+ },
5562
+ {
5563
+ "in": "query",
5564
+ "name": "offset",
5565
+ "schema": {
5566
+ "type": "integer",
5567
+ "default": 0
5568
+ }
5569
+ }
5570
+ ],
5571
+ "responses": {
5572
+ "200": {
5573
+ "description": "Audit events",
5574
+ "content": {
5575
+ "application/json": {
5576
+ "schema": {
5577
+ "type": "object",
5578
+ "properties": {
5579
+ "events": {
5580
+ "type": "array",
5581
+ "items": {
5582
+ "type": "object"
5583
+ }
5584
+ }
5585
+ }
5586
+ }
5587
+ }
5588
+ }
5589
+ }
5590
+ }
5591
+ }
5592
+ },
5593
+ "/v1/platform/connected-apps": {
5594
+ "get": {
5595
+ "tags": [
5596
+ "Platform"
5597
+ ],
5598
+ "summary": "List connected apps (user side)",
5599
+ "description": "Returns platform apps connected to the calling user's account.",
5600
+ "security": [
5601
+ {
5602
+ "BearerAuth": []
5603
+ }
5604
+ ],
5605
+ "responses": {
5606
+ "200": {
5607
+ "description": "Connected apps",
5608
+ "content": {
5609
+ "application/json": {
5610
+ "schema": {
5611
+ "type": "object",
5612
+ "properties": {
5613
+ "connected_apps": {
5614
+ "type": "array",
5615
+ "items": {
5616
+ "$ref": "#/components/schemas/ConnectedAppResponse"
5617
+ }
5618
+ }
5619
+ }
5620
+ }
5621
+ }
5622
+ }
5623
+ }
5624
+ }
5625
+ }
5626
+ },
5627
+ "/v1/platform/connected-apps/{connectionId}": {
5628
+ "delete": {
5629
+ "tags": [
5630
+ "Platform"
5631
+ ],
5632
+ "summary": "Disconnect a platform app",
5633
+ "description": "Disconnect the calling user from a platform app.",
5634
+ "security": [
5635
+ {
5636
+ "BearerAuth": []
5637
+ }
5638
+ ],
5639
+ "parameters": [
5640
+ {
5641
+ "in": "path",
5642
+ "name": "connectionId",
5643
+ "required": true,
5644
+ "schema": {
5645
+ "type": "string",
5646
+ "format": "uuid"
5647
+ }
5648
+ }
5649
+ ],
5650
+ "responses": {
5651
+ "204": {
5652
+ "description": "Disconnected"
5653
+ },
5654
+ "404": {
5655
+ "description": "Connection not found"
5656
+ }
5657
+ }
5658
+ }
5659
+ }
5660
+ },
5661
+ "components": {
5662
+ "securitySchemes": {
5663
+ "BearerAuth": {
5664
+ "type": "http",
5665
+ "scheme": "bearer",
5666
+ "bearerFormat": "JWT"
5667
+ },
5668
+ "ApiKeyAuth": {
5669
+ "type": "http",
5670
+ "scheme": "bearer",
5671
+ "description": "1ck_ prefixed API key used as Bearer token"
5672
+ }
5673
+ },
5674
+ "parameters": {
5675
+ "VaultId": {
5676
+ "name": "vault_id",
5677
+ "in": "path",
5678
+ "required": true,
5679
+ "schema": {
5680
+ "type": "string",
5681
+ "format": "uuid"
5682
+ }
5683
+ },
5684
+ "SecretPath": {
5685
+ "name": "path",
5686
+ "in": "path",
5687
+ "required": true,
5688
+ "schema": {
5689
+ "type": "string"
5690
+ },
5691
+ "description": "Secret path (e.g. \"db/credentials\")"
5692
+ },
5693
+ "AgentId": {
5694
+ "name": "agent_id",
5695
+ "in": "path",
5696
+ "required": true,
5697
+ "schema": {
5698
+ "type": "string",
5699
+ "format": "uuid"
5700
+ }
5701
+ },
5702
+ "PolicyId": {
5703
+ "name": "policy_id",
5704
+ "in": "path",
5705
+ "required": true,
5706
+ "schema": {
5707
+ "type": "string",
5708
+ "format": "uuid"
5709
+ }
5710
+ },
5711
+ "IncludeSignedTx": {
5712
+ "name": "include_signed_tx",
5713
+ "in": "query",
5714
+ "required": false,
5715
+ "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",
5716
+ "schema": {
5717
+ "type": "boolean",
5718
+ "default": false,
5719
+ "example": false
5720
+ }
5721
+ }
5722
+ },
5723
+ "responses": {
5724
+ "BadRequest": {
5725
+ "description": "Invalid request",
5726
+ "content": {
5727
+ "application/json": {
5728
+ "schema": {
5729
+ "$ref": "#/components/schemas/ProblemDetails"
5730
+ }
5731
+ }
5732
+ }
5733
+ },
5734
+ "Unauthorized": {
5735
+ "description": "Authentication required or invalid",
5736
+ "content": {
5737
+ "application/json": {
5738
+ "schema": {
5739
+ "$ref": "#/components/schemas/ProblemDetails"
5740
+ }
5741
+ }
5742
+ }
5743
+ },
5744
+ "Forbidden": {
5745
+ "description": "Insufficient permissions",
5746
+ "content": {
5747
+ "application/json": {
5748
+ "schema": {
5749
+ "$ref": "#/components/schemas/ProblemDetails"
5750
+ }
5751
+ }
5752
+ }
5753
+ },
5754
+ "NotFound": {
5755
+ "description": "Resource not found",
5756
+ "content": {
5757
+ "application/json": {
5758
+ "schema": {
5759
+ "$ref": "#/components/schemas/ProblemDetails"
5760
+ }
5761
+ }
5762
+ }
5763
+ },
5764
+ "PaymentRequired": {
5765
+ "description": "x402 payment required",
5766
+ "content": {
5767
+ "application/json": {
5768
+ "schema": {
5769
+ "$ref": "#/components/schemas/PaymentRequirement"
5770
+ }
5771
+ }
5772
+ }
5773
+ },
5774
+ "Conflict": {
5775
+ "description": "Resource already exists or conflict",
5776
+ "content": {
5777
+ "application/json": {
5778
+ "schema": {
5779
+ "$ref": "#/components/schemas/ProblemDetails"
5780
+ }
5781
+ }
5782
+ }
5783
+ }
5784
+ },
5785
+ "schemas": {
5786
+ "ProblemDetails": {
5787
+ "type": "object",
5788
+ "description": "RFC 7807 error envelope",
5789
+ "properties": {
5790
+ "type": {
5791
+ "type": "string"
5792
+ },
5793
+ "title": {
5794
+ "type": "string"
5795
+ },
5796
+ "status": {
5797
+ "type": "integer"
5798
+ },
5799
+ "detail": {
5800
+ "type": "string"
5801
+ }
5802
+ }
5803
+ },
5804
+ "ResetUsageEventsResponse": {
5805
+ "type": "object",
5806
+ "required": [
5807
+ "deleted_events"
5808
+ ],
5809
+ "properties": {
5810
+ "deleted_events": {
5811
+ "type": "integer",
5812
+ "format": "int64",
5813
+ "description": "Number of usage_events rows removed"
5814
+ }
5815
+ }
5816
+ },
5817
+ "ResetUsageForUserEmailRequest": {
5818
+ "type": "object",
5288
5819
  "required": [
5289
5820
  "email"
5290
5821
  ],
@@ -7491,7 +8022,8 @@
7491
8022
  "description": "Hex-encoded calldata"
7492
8023
  },
7493
8024
  "signing_key_path": {
7494
- "type": "string"
8025
+ "type": "string",
8026
+ "description": "Vault path to signing key. Auto-resolves per-chain signing key if provisioned, otherwise keys/{chain}-signer."
7495
8027
  },
7496
8028
  "nonce": {
7497
8029
  "type": "integer"
@@ -7548,7 +8080,8 @@
7548
8080
  "description": "Hex-encoded calldata"
7549
8081
  },
7550
8082
  "signing_key_path": {
7551
- "type": "string"
8083
+ "type": "string",
8084
+ "description": "Vault path to signing key. Auto-resolves per-chain signing key if provisioned, otherwise keys/{chain}-signer."
7552
8085
  },
7553
8086
  "nonce": {
7554
8087
  "type": "integer"
@@ -7641,7 +8174,8 @@
7641
8174
  "type": "string"
7642
8175
  },
7643
8176
  "signing_key_path": {
7644
- "type": "string"
8177
+ "type": "string",
8178
+ "description": "Vault path to signing key. Auto-resolves per-chain signing key if provisioned, otherwise keys/{chain}-signer."
7645
8179
  },
7646
8180
  "gas_limit": {
7647
8181
  "type": "integer"
@@ -7752,7 +8286,8 @@
7752
8286
  "type": "string"
7753
8287
  },
7754
8288
  "signing_key_path": {
7755
- "type": "string"
8289
+ "type": "string",
8290
+ "description": "Vault path to signing key. Auto-resolves per-chain signing key if provisioned, otherwise keys/{chain}-signer."
7756
8291
  },
7757
8292
  "message": {
7758
8293
  "type": "string",
@@ -8650,74 +9185,302 @@
8650
9185
  }
8651
9186
  }
8652
9187
  },
8653
- "LlmTokenBillingStatus": {
9188
+ "LlmTokenBillingStatus": {
9189
+ "type": "object",
9190
+ "required": [
9191
+ "enabled"
9192
+ ],
9193
+ "properties": {
9194
+ "enabled": {
9195
+ "type": "boolean"
9196
+ },
9197
+ "subscription_status": {
9198
+ "type": "string",
9199
+ "enum": [
9200
+ "active",
9201
+ "inactive"
9202
+ ]
9203
+ },
9204
+ "credit_balance": {
9205
+ "$ref": "#/components/schemas/LlmCreditBalance"
9206
+ },
9207
+ "billing_cycle_usage": {
9208
+ "$ref": "#/components/schemas/LlmBillingCycleUsage"
9209
+ }
9210
+ }
9211
+ },
9212
+ "LlmCheckoutResponse": {
9213
+ "type": "object",
9214
+ "properties": {
9215
+ "checkout_url": {
9216
+ "type": "string",
9217
+ "format": "uri"
9218
+ }
9219
+ }
9220
+ },
9221
+ "LlmDisableResponse": {
9222
+ "type": "object",
9223
+ "properties": {
9224
+ "enabled": {
9225
+ "type": "boolean"
9226
+ }
9227
+ }
9228
+ },
9229
+ "CreditBalanceResponse": {
9230
+ "type": "object",
9231
+ "properties": {
9232
+ "balance_cents": {
9233
+ "type": "integer"
9234
+ },
9235
+ "balance_usd": {
9236
+ "type": "string"
9237
+ },
9238
+ "expiring_within_90_days": {
9239
+ "type": "object",
9240
+ "properties": {
9241
+ "amount_cents": {
9242
+ "type": "integer"
9243
+ },
9244
+ "earliest_expiry": {
9245
+ "type": "string",
9246
+ "format": "date-time"
9247
+ }
9248
+ }
9249
+ }
9250
+ }
9251
+ },
9252
+ "CreditTransactionsListResponse": {
9253
+ "type": "object",
9254
+ "properties": {
9255
+ "transactions": {
9256
+ "type": "array",
9257
+ "items": {
9258
+ "type": "object",
9259
+ "properties": {
9260
+ "id": {
9261
+ "type": "string",
9262
+ "format": "uuid"
9263
+ },
9264
+ "type": {
9265
+ "type": "string"
9266
+ },
9267
+ "amount_cents": {
9268
+ "type": "integer"
9269
+ },
9270
+ "balance_after_cents": {
9271
+ "type": "integer"
9272
+ },
9273
+ "description": {
9274
+ "type": "string"
9275
+ },
9276
+ "created_at": {
9277
+ "type": "string",
9278
+ "format": "date-time"
9279
+ }
9280
+ }
9281
+ }
9282
+ },
9283
+ "page": {
9284
+ "type": "integer"
9285
+ },
9286
+ "limit": {
9287
+ "type": "integer"
9288
+ }
9289
+ }
9290
+ },
9291
+ "OverageMethodResponse": {
9292
+ "type": "object",
9293
+ "properties": {
9294
+ "overage_method": {
9295
+ "type": "string"
9296
+ }
9297
+ }
9298
+ },
9299
+ "AuditEventsResponse": {
9300
+ "type": "object",
9301
+ "properties": {
9302
+ "events": {
9303
+ "type": "array",
9304
+ "items": {
9305
+ "$ref": "#/components/schemas/AuditEvent"
9306
+ }
9307
+ },
9308
+ "count": {
9309
+ "type": "integer"
9310
+ }
9311
+ }
9312
+ },
9313
+ "AuditEvent": {
9314
+ "type": "object",
9315
+ "properties": {
9316
+ "id": {
9317
+ "type": "string",
9318
+ "format": "uuid"
9319
+ },
9320
+ "action": {
9321
+ "type": "string"
9322
+ },
9323
+ "actor_id": {
9324
+ "type": "string"
9325
+ },
9326
+ "actor_type": {
9327
+ "type": "string"
9328
+ },
9329
+ "resource_type": {
9330
+ "type": "string"
9331
+ },
9332
+ "resource_id": {
9333
+ "type": "string"
9334
+ },
9335
+ "org_id": {
9336
+ "type": "string",
9337
+ "format": "uuid"
9338
+ },
9339
+ "details": {
9340
+ "type": "object",
9341
+ "additionalProperties": true
9342
+ },
9343
+ "ip_address": {
9344
+ "type": "string"
9345
+ },
9346
+ "created_at": {
9347
+ "type": "string",
9348
+ "format": "date-time"
9349
+ }
9350
+ }
9351
+ },
9352
+ "CreateIpRuleRequest": {
9353
+ "type": "object",
9354
+ "required": [
9355
+ "rule_type",
9356
+ "cidr"
9357
+ ],
9358
+ "properties": {
9359
+ "rule_type": {
9360
+ "type": "string",
9361
+ "enum": [
9362
+ "allow",
9363
+ "deny"
9364
+ ]
9365
+ },
9366
+ "cidr": {
9367
+ "type": "string"
9368
+ },
9369
+ "label": {
9370
+ "type": "string"
9371
+ },
9372
+ "applies_to": {
9373
+ "type": "string"
9374
+ }
9375
+ }
9376
+ },
9377
+ "IpRuleResponse": {
9378
+ "type": "object",
9379
+ "properties": {
9380
+ "id": {
9381
+ "type": "string",
9382
+ "format": "uuid"
9383
+ },
9384
+ "org_id": {
9385
+ "type": "string",
9386
+ "format": "uuid"
9387
+ },
9388
+ "rule_type": {
9389
+ "type": "string"
9390
+ },
9391
+ "cidr": {
9392
+ "type": "string"
9393
+ },
9394
+ "label": {
9395
+ "type": "string"
9396
+ },
9397
+ "applies_to": {
9398
+ "type": "string"
9399
+ },
9400
+ "created_by": {
9401
+ "type": "string"
9402
+ },
9403
+ "created_at": {
9404
+ "type": "string",
9405
+ "format": "date-time"
9406
+ }
9407
+ }
9408
+ },
9409
+ "IpRulesListResponse": {
9410
+ "type": "object",
9411
+ "properties": {
9412
+ "rules": {
9413
+ "type": "array",
9414
+ "items": {
9415
+ "$ref": "#/components/schemas/IpRuleResponse"
9416
+ }
9417
+ }
9418
+ }
9419
+ },
9420
+ "SettingResponse": {
8654
9421
  "type": "object",
8655
- "required": [
8656
- "enabled"
8657
- ],
8658
9422
  "properties": {
8659
- "enabled": {
8660
- "type": "boolean"
9423
+ "key": {
9424
+ "type": "string"
8661
9425
  },
8662
- "subscription_status": {
8663
- "type": "string",
8664
- "enum": [
8665
- "active",
8666
- "inactive"
8667
- ]
9426
+ "value": {
9427
+ "type": "string"
8668
9428
  },
8669
- "credit_balance": {
8670
- "$ref": "#/components/schemas/LlmCreditBalance"
9429
+ "updated_by": {
9430
+ "type": "string"
8671
9431
  },
8672
- "billing_cycle_usage": {
8673
- "$ref": "#/components/schemas/LlmBillingCycleUsage"
9432
+ "updated_at": {
9433
+ "type": "string",
9434
+ "format": "date-time"
8674
9435
  }
8675
9436
  }
8676
9437
  },
8677
- "LlmCheckoutResponse": {
9438
+ "SettingsListResponse": {
8678
9439
  "type": "object",
8679
9440
  "properties": {
8680
- "checkout_url": {
8681
- "type": "string",
8682
- "format": "uri"
9441
+ "settings": {
9442
+ "type": "array",
9443
+ "items": {
9444
+ "$ref": "#/components/schemas/SettingResponse"
9445
+ }
8683
9446
  }
8684
9447
  }
8685
9448
  },
8686
- "LlmDisableResponse": {
9449
+ "UpdateSettingRequest": {
8687
9450
  "type": "object",
9451
+ "required": [
9452
+ "value"
9453
+ ],
8688
9454
  "properties": {
8689
- "enabled": {
8690
- "type": "boolean"
9455
+ "value": {
9456
+ "type": "string"
8691
9457
  }
8692
9458
  }
8693
9459
  },
8694
- "CreditBalanceResponse": {
9460
+ "X402ConfigResponse": {
8695
9461
  "type": "object",
8696
9462
  "properties": {
8697
- "balance_cents": {
8698
- "type": "integer"
9463
+ "pay_to": {
9464
+ "type": "string"
8699
9465
  },
8700
- "balance_usd": {
9466
+ "network": {
8701
9467
  "type": "string"
8702
9468
  },
8703
- "expiring_within_90_days": {
8704
- "type": "object",
8705
- "properties": {
8706
- "amount_cents": {
8707
- "type": "integer"
8708
- },
8709
- "earliest_expiry": {
8710
- "type": "string",
8711
- "format": "date-time"
8712
- }
8713
- }
9469
+ "scheme": {
9470
+ "type": "string"
9471
+ },
9472
+ "free_tier_limit": {
9473
+ "type": "integer"
9474
+ },
9475
+ "facilitator_url": {
9476
+ "type": "string"
8714
9477
  }
8715
9478
  }
8716
9479
  },
8717
- "CreditTransactionsListResponse": {
9480
+ "AdminUsersListResponse": {
8718
9481
  "type": "object",
8719
9482
  "properties": {
8720
- "transactions": {
9483
+ "users": {
8721
9484
  "type": "array",
8722
9485
  "items": {
8723
9486
  "type": "object",
@@ -8726,911 +9489,1109 @@
8726
9489
  "type": "string",
8727
9490
  "format": "uuid"
8728
9491
  },
8729
- "type": {
9492
+ "email": {
8730
9493
  "type": "string"
8731
9494
  },
8732
- "amount_cents": {
8733
- "type": "integer"
9495
+ "display_name": {
9496
+ "type": "string"
8734
9497
  },
8735
- "balance_after_cents": {
8736
- "type": "integer"
9498
+ "role": {
9499
+ "type": "string"
8737
9500
  },
8738
- "description": {
9501
+ "auth_method": {
9502
+ "type": "string"
9503
+ },
9504
+ "org_id": {
9505
+ "type": "string",
9506
+ "format": "uuid"
9507
+ },
9508
+ "org_name": {
9509
+ "type": "string"
9510
+ },
9511
+ "billing_tier": {
8739
9512
  "type": "string"
8740
9513
  },
8741
9514
  "created_at": {
8742
9515
  "type": "string",
8743
9516
  "format": "date-time"
9517
+ },
9518
+ "free_tier_override": {
9519
+ "type": "integer"
9520
+ },
9521
+ "is_sponsored": {
9522
+ "type": "boolean"
9523
+ },
9524
+ "current_month_requests": {
9525
+ "type": "integer"
8744
9526
  }
8745
9527
  }
8746
9528
  }
8747
9529
  },
8748
- "page": {
9530
+ "total": {
9531
+ "type": "integer"
9532
+ }
9533
+ }
9534
+ },
9535
+ "UpdateOrgLimitsRequest": {
9536
+ "type": "object",
9537
+ "properties": {
9538
+ "free_tier_override": {
8749
9539
  "type": "integer"
8750
9540
  },
8751
- "limit": {
9541
+ "is_sponsored": {
9542
+ "type": "boolean"
9543
+ }
9544
+ }
9545
+ },
9546
+ "OrgLimitsResponse": {
9547
+ "type": "object",
9548
+ "properties": {
9549
+ "org_id": {
9550
+ "type": "string",
9551
+ "format": "uuid"
9552
+ },
9553
+ "free_tier_override": {
8752
9554
  "type": "integer"
9555
+ },
9556
+ "is_sponsored": {
9557
+ "type": "boolean"
8753
9558
  }
8754
9559
  }
8755
9560
  },
8756
- "OverageMethodResponse": {
9561
+ "SetBillingTierRequest": {
8757
9562
  "type": "object",
9563
+ "required": [
9564
+ "tier"
9565
+ ],
8758
9566
  "properties": {
8759
- "overage_method": {
8760
- "type": "string"
9567
+ "tier": {
9568
+ "type": "string",
9569
+ "enum": [
9570
+ "free",
9571
+ "pro",
9572
+ "business",
9573
+ "enterprise"
9574
+ ]
9575
+ },
9576
+ "duration_days": {
9577
+ "type": "integer",
9578
+ "description": "How many days the tier lasts (default 365). Use 90 for a 3-month trial.",
9579
+ "minimum": 1,
9580
+ "maximum": 3650
8761
9581
  }
8762
9582
  }
8763
9583
  },
8764
- "AuditEventsResponse": {
9584
+ "CreateTreasuryRequest": {
8765
9585
  "type": "object",
9586
+ "required": [
9587
+ "name",
9588
+ "safe_address"
9589
+ ],
8766
9590
  "properties": {
8767
- "events": {
9591
+ "name": {
9592
+ "type": "string",
9593
+ "description": "Display name (1–128 characters)"
9594
+ },
9595
+ "safe_address": {
9596
+ "type": "string",
9597
+ "description": "Deployed Safe contract address (0x-prefixed, 42 characters)"
9598
+ },
9599
+ "chain": {
9600
+ "type": "string",
9601
+ "description": "Chain name (default base)"
9602
+ },
9603
+ "chain_id": {
9604
+ "type": "integer",
9605
+ "description": "EVM chain ID (default 8453 for Base)"
9606
+ },
9607
+ "threshold": {
9608
+ "type": "integer",
9609
+ "minimum": 1,
9610
+ "description": "Safe threshold (default 1)"
9611
+ },
9612
+ "signers": {
8768
9613
  "type": "array",
8769
9614
  "items": {
8770
- "$ref": "#/components/schemas/AuditEvent"
9615
+ "$ref": "#/components/schemas/CreateTreasurySignerEntry"
8771
9616
  }
9617
+ }
9618
+ }
9619
+ },
9620
+ "CreateTreasurySignerEntry": {
9621
+ "type": "object",
9622
+ "required": [
9623
+ "signer_type",
9624
+ "signer_id",
9625
+ "signer_address"
9626
+ ],
9627
+ "properties": {
9628
+ "signer_type": {
9629
+ "type": "string",
9630
+ "enum": [
9631
+ "user",
9632
+ "agent"
9633
+ ]
8772
9634
  },
8773
- "count": {
8774
- "type": "integer"
9635
+ "signer_id": {
9636
+ "type": "string",
9637
+ "format": "uuid"
9638
+ },
9639
+ "signer_address": {
9640
+ "type": "string",
9641
+ "description": "EVM address (0x-prefixed)"
8775
9642
  }
8776
9643
  }
8777
9644
  },
8778
- "AuditEvent": {
9645
+ "UpdateTreasuryRequest": {
9646
+ "type": "object",
9647
+ "properties": {
9648
+ "name": {
9649
+ "type": "string"
9650
+ },
9651
+ "threshold": {
9652
+ "type": "integer",
9653
+ "minimum": 1
9654
+ }
9655
+ }
9656
+ },
9657
+ "TreasuryResponse": {
8779
9658
  "type": "object",
8780
9659
  "properties": {
8781
9660
  "id": {
8782
9661
  "type": "string",
8783
9662
  "format": "uuid"
8784
9663
  },
8785
- "action": {
9664
+ "name": {
8786
9665
  "type": "string"
8787
9666
  },
8788
- "actor_id": {
9667
+ "safe_address": {
8789
9668
  "type": "string"
8790
9669
  },
8791
- "actor_type": {
9670
+ "chain": {
8792
9671
  "type": "string"
8793
9672
  },
8794
- "resource_type": {
8795
- "type": "string"
9673
+ "chain_id": {
9674
+ "type": "integer"
9675
+ },
9676
+ "threshold": {
9677
+ "type": "integer"
9678
+ },
9679
+ "created_by": {
9680
+ "type": "string",
9681
+ "format": "uuid"
9682
+ },
9683
+ "signers": {
9684
+ "type": "array",
9685
+ "items": {
9686
+ "$ref": "#/components/schemas/TreasurySignerResponse"
9687
+ }
9688
+ },
9689
+ "created_at": {
9690
+ "type": "string",
9691
+ "format": "date-time"
9692
+ }
9693
+ }
9694
+ },
9695
+ "TreasurySignerResponse": {
9696
+ "type": "object",
9697
+ "properties": {
9698
+ "id": {
9699
+ "type": "string",
9700
+ "format": "uuid"
8796
9701
  },
8797
- "resource_id": {
8798
- "type": "string"
9702
+ "signer_type": {
9703
+ "type": "string",
9704
+ "enum": [
9705
+ "user",
9706
+ "agent"
9707
+ ]
8799
9708
  },
8800
- "org_id": {
9709
+ "signer_id": {
8801
9710
  "type": "string",
8802
9711
  "format": "uuid"
8803
9712
  },
8804
- "details": {
8805
- "type": "object",
8806
- "additionalProperties": true
8807
- },
8808
- "ip_address": {
9713
+ "signer_address": {
8809
9714
  "type": "string"
8810
9715
  },
8811
- "created_at": {
9716
+ "added_at": {
8812
9717
  "type": "string",
8813
9718
  "format": "date-time"
8814
9719
  }
8815
9720
  }
8816
9721
  },
8817
- "CreateIpRuleRequest": {
9722
+ "AddSignerRequest": {
8818
9723
  "type": "object",
8819
9724
  "required": [
8820
- "rule_type",
8821
- "cidr"
9725
+ "signer_type",
9726
+ "signer_id",
9727
+ "signer_address"
8822
9728
  ],
8823
9729
  "properties": {
8824
- "rule_type": {
9730
+ "signer_type": {
8825
9731
  "type": "string",
8826
9732
  "enum": [
8827
- "allow",
8828
- "deny"
9733
+ "user",
9734
+ "agent"
8829
9735
  ]
8830
9736
  },
8831
- "cidr": {
8832
- "type": "string"
8833
- },
8834
- "label": {
8835
- "type": "string"
9737
+ "signer_id": {
9738
+ "type": "string",
9739
+ "format": "uuid"
8836
9740
  },
8837
- "applies_to": {
9741
+ "signer_address": {
8838
9742
  "type": "string"
8839
9743
  }
8840
9744
  }
8841
9745
  },
8842
- "IpRuleResponse": {
9746
+ "AccessRequestResponse": {
8843
9747
  "type": "object",
8844
9748
  "properties": {
8845
9749
  "id": {
8846
9750
  "type": "string",
8847
9751
  "format": "uuid"
8848
9752
  },
8849
- "org_id": {
9753
+ "treasury_id": {
8850
9754
  "type": "string",
8851
9755
  "format": "uuid"
8852
9756
  },
8853
- "rule_type": {
8854
- "type": "string"
9757
+ "agent_id": {
9758
+ "type": "string",
9759
+ "format": "uuid"
8855
9760
  },
8856
- "cidr": {
8857
- "type": "string"
9761
+ "status": {
9762
+ "type": "string",
9763
+ "enum": [
9764
+ "pending",
9765
+ "approved",
9766
+ "denied"
9767
+ ]
8858
9768
  },
8859
- "label": {
9769
+ "reason": {
8860
9770
  "type": "string"
8861
9771
  },
8862
- "applies_to": {
8863
- "type": "string"
9772
+ "requested_at": {
9773
+ "type": "string",
9774
+ "format": "date-time"
8864
9775
  },
8865
- "created_by": {
8866
- "type": "string"
9776
+ "resolved_by": {
9777
+ "type": "string",
9778
+ "format": "uuid"
8867
9779
  },
8868
- "created_at": {
9780
+ "resolved_at": {
8869
9781
  "type": "string",
8870
9782
  "format": "date-time"
8871
9783
  }
8872
9784
  }
8873
9785
  },
8874
- "IpRulesListResponse": {
9786
+ "GenerateTreasuryWalletsRequest": {
8875
9787
  "type": "object",
8876
9788
  "properties": {
8877
- "rules": {
9789
+ "chains": {
8878
9790
  "type": "array",
8879
9791
  "items": {
8880
- "$ref": "#/components/schemas/IpRuleResponse"
8881
- }
9792
+ "type": "string"
9793
+ },
9794
+ "description": "Chains to generate wallets for (e.g. [\"ethereum\", \"solana\"]). Omit for all supported chains."
8882
9795
  }
8883
9796
  }
8884
9797
  },
8885
- "SettingResponse": {
9798
+ "TreasuryWalletResponse": {
8886
9799
  "type": "object",
8887
9800
  "properties": {
8888
- "key": {
9801
+ "id": {
9802
+ "type": "string",
9803
+ "format": "uuid"
9804
+ },
9805
+ "chain": {
8889
9806
  "type": "string"
8890
9807
  },
8891
- "value": {
9808
+ "curve": {
9809
+ "type": "string",
9810
+ "description": "Cryptographic curve (e.g. secp256k1, ed25519)"
9811
+ },
9812
+ "public_key_hex": {
8892
9813
  "type": "string"
8893
9814
  },
8894
- "updated_by": {
9815
+ "address": {
8895
9816
  "type": "string"
8896
9817
  },
8897
- "updated_at": {
9818
+ "is_active": {
9819
+ "type": "boolean"
9820
+ },
9821
+ "created_at": {
8898
9822
  "type": "string",
8899
9823
  "format": "date-time"
8900
9824
  }
8901
9825
  }
8902
9826
  },
8903
- "SettingsListResponse": {
9827
+ "TreasuryWalletListResponse": {
8904
9828
  "type": "object",
8905
9829
  "properties": {
8906
- "settings": {
9830
+ "wallets": {
8907
9831
  "type": "array",
8908
9832
  "items": {
8909
- "$ref": "#/components/schemas/SettingResponse"
9833
+ "$ref": "#/components/schemas/TreasuryWalletResponse"
8910
9834
  }
8911
9835
  }
8912
9836
  }
8913
9837
  },
8914
- "UpdateSettingRequest": {
8915
- "type": "object",
8916
- "required": [
8917
- "value"
8918
- ],
8919
- "properties": {
8920
- "value": {
8921
- "type": "string"
8922
- }
8923
- }
8924
- },
8925
- "X402ConfigResponse": {
9838
+ "TreasuryWalletExportResponse": {
8926
9839
  "type": "object",
8927
9840
  "properties": {
8928
- "pay_to": {
8929
- "type": "string"
8930
- },
8931
- "network": {
9841
+ "chain": {
8932
9842
  "type": "string"
8933
9843
  },
8934
- "scheme": {
9844
+ "address": {
8935
9845
  "type": "string"
8936
9846
  },
8937
- "free_tier_limit": {
8938
- "type": "integer"
8939
- },
8940
- "facilitator_url": {
8941
- "type": "string"
9847
+ "private_key_hex": {
9848
+ "type": "string",
9849
+ "description": "Raw private key in hex encoding. Handle with extreme care."
8942
9850
  }
8943
9851
  }
8944
9852
  },
8945
- "AdminUsersListResponse": {
9853
+ "PaymentRequirement": {
8946
9854
  "type": "object",
8947
9855
  "properties": {
8948
- "users": {
9856
+ "x402Version": {
9857
+ "type": "integer"
9858
+ },
9859
+ "accepts": {
8949
9860
  "type": "array",
8950
9861
  "items": {
8951
9862
  "type": "object",
8952
9863
  "properties": {
8953
- "id": {
8954
- "type": "string",
8955
- "format": "uuid"
8956
- },
8957
- "email": {
8958
- "type": "string"
8959
- },
8960
- "display_name": {
8961
- "type": "string"
8962
- },
8963
- "role": {
9864
+ "scheme": {
8964
9865
  "type": "string"
8965
9866
  },
8966
- "auth_method": {
9867
+ "network": {
8967
9868
  "type": "string"
8968
9869
  },
8969
- "org_id": {
8970
- "type": "string",
8971
- "format": "uuid"
8972
- },
8973
- "org_name": {
9870
+ "payTo": {
8974
9871
  "type": "string"
8975
9872
  },
8976
- "billing_tier": {
9873
+ "price": {
8977
9874
  "type": "string"
8978
9875
  },
8979
- "created_at": {
8980
- "type": "string",
8981
- "format": "date-time"
8982
- },
8983
- "free_tier_override": {
8984
- "type": "integer"
8985
- },
8986
- "is_sponsored": {
8987
- "type": "boolean"
8988
- },
8989
- "current_month_requests": {
9876
+ "requiredDeadlineSeconds": {
8990
9877
  "type": "integer"
8991
9878
  }
8992
9879
  }
8993
9880
  }
8994
9881
  },
8995
- "total": {
8996
- "type": "integer"
8997
- }
8998
- }
8999
- },
9000
- "UpdateOrgLimitsRequest": {
9001
- "type": "object",
9002
- "properties": {
9003
- "free_tier_override": {
9004
- "type": "integer"
9882
+ "description": {
9883
+ "type": "string"
9884
+ }
9885
+ }
9886
+ },
9887
+ "ShroudActivityEvent": {
9888
+ "type": "object",
9889
+ "properties": {
9890
+ "id": {
9891
+ "type": "string",
9892
+ "format": "uuid"
9893
+ },
9894
+ "org_id": {
9895
+ "type": "string",
9896
+ "format": "uuid"
9897
+ },
9898
+ "agent_id": {
9899
+ "type": "string"
9900
+ },
9901
+ "provider": {
9902
+ "type": "string"
9903
+ },
9904
+ "model": {
9905
+ "type": "string"
9906
+ },
9907
+ "action": {
9908
+ "type": "string",
9909
+ "description": "Action taken (allowed, blocked, warned)"
9910
+ },
9911
+ "request_tokens": {
9912
+ "type": "integer"
9913
+ },
9914
+ "response_tokens": {
9915
+ "type": "integer"
9916
+ },
9917
+ "latency_ms": {
9918
+ "type": "integer"
9919
+ },
9920
+ "had_secrets_redacted": {
9921
+ "type": "boolean"
9922
+ },
9923
+ "had_pii_detected": {
9924
+ "type": "boolean"
9925
+ },
9926
+ "injection_score": {
9927
+ "type": "number"
9928
+ },
9929
+ "policy_violations": {
9930
+ "type": "array",
9931
+ "items": {
9932
+ "type": "string"
9933
+ }
9934
+ },
9935
+ "response_injection_score": {
9936
+ "type": "number",
9937
+ "description": "Response-side prompt-injection score (0.0–1.0)."
9938
+ },
9939
+ "response_context_injection_score": {
9940
+ "type": "number",
9941
+ "description": "Response-side context-injection score (0.0–1.0)."
9942
+ },
9943
+ "response_injection_categories": {
9944
+ "type": "array",
9945
+ "items": {
9946
+ "type": "string"
9947
+ },
9948
+ "description": "Category tags emitted by the response-side filters (e.g. `markdown_image_exfil`, `data_uri_blob`, `echoed_instruction`)."
9949
+ },
9950
+ "external_urls_flagged": {
9951
+ "type": "array",
9952
+ "items": {
9953
+ "type": "string"
9954
+ },
9955
+ "description": "URLs emitted by the model that were flagged as potential exfil / callback targets."
9956
+ },
9957
+ "unexpected_code_blocks": {
9958
+ "type": "integer",
9959
+ "description": "Number of code fences in the response that were not expected for the agent's allowed task set."
9005
9960
  },
9006
- "is_sponsored": {
9007
- "type": "boolean"
9008
- }
9009
- }
9010
- },
9011
- "OrgLimitsResponse": {
9012
- "type": "object",
9013
- "properties": {
9014
- "org_id": {
9015
- "type": "string",
9016
- "format": "uuid"
9961
+ "content_filtered": {
9962
+ "type": "boolean",
9963
+ "description": "True when Shroud rewrote or blocked response content before returning it to the agent."
9017
9964
  },
9018
- "free_tier_override": {
9019
- "type": "integer"
9965
+ "metadata": {
9966
+ "type": "object"
9020
9967
  },
9021
- "is_sponsored": {
9022
- "type": "boolean"
9023
- }
9024
- }
9025
- },
9026
- "SetBillingTierRequest": {
9027
- "type": "object",
9028
- "required": [
9029
- "tier"
9030
- ],
9031
- "properties": {
9032
- "tier": {
9968
+ "timestamp": {
9033
9969
  "type": "string",
9034
- "enum": [
9035
- "free",
9036
- "pro",
9037
- "business",
9038
- "enterprise"
9039
- ]
9040
- },
9041
- "duration_days": {
9042
- "type": "integer",
9043
- "description": "How many days the tier lasts (default 365). Use 90 for a 3-month trial.",
9044
- "minimum": 1,
9045
- "maximum": 3650
9970
+ "format": "date-time"
9046
9971
  }
9047
9972
  }
9048
9973
  },
9049
- "CreateTreasuryRequest": {
9974
+ "IngestShroudActivityRequest": {
9050
9975
  "type": "object",
9051
9976
  "required": [
9052
- "name",
9053
- "safe_address"
9977
+ "agent_id",
9978
+ "action"
9054
9979
  ],
9055
9980
  "properties": {
9056
- "name": {
9057
- "type": "string",
9058
- "description": "Display name (1–128 characters)"
9981
+ "agent_id": {
9982
+ "type": "string"
9059
9983
  },
9060
- "safe_address": {
9061
- "type": "string",
9062
- "description": "Deployed Safe contract address (0x-prefixed, 42 characters)"
9984
+ "provider": {
9985
+ "type": "string"
9063
9986
  },
9064
- "chain": {
9065
- "type": "string",
9066
- "description": "Chain name (default base)"
9987
+ "model": {
9988
+ "type": "string"
9067
9989
  },
9068
- "chain_id": {
9990
+ "action": {
9991
+ "type": "string"
9992
+ },
9993
+ "request_tokens": {
9069
9994
  "type": "integer",
9070
- "description": "EVM chain ID (default 8453 for Base)"
9995
+ "default": 0
9071
9996
  },
9072
- "threshold": {
9997
+ "response_tokens": {
9073
9998
  "type": "integer",
9074
- "minimum": 1,
9075
- "description": "Safe threshold (default 1)"
9999
+ "default": 0
9076
10000
  },
9077
- "signers": {
10001
+ "latency_ms": {
10002
+ "type": "integer"
10003
+ },
10004
+ "had_secrets_redacted": {
10005
+ "type": "boolean",
10006
+ "default": false
10007
+ },
10008
+ "had_pii_detected": {
10009
+ "type": "boolean",
10010
+ "default": false
10011
+ },
10012
+ "injection_score": {
10013
+ "type": "number",
10014
+ "default": 0
10015
+ },
10016
+ "policy_violations": {
9078
10017
  "type": "array",
9079
10018
  "items": {
9080
- "$ref": "#/components/schemas/CreateTreasurySignerEntry"
10019
+ "type": "string"
9081
10020
  }
9082
- }
9083
- }
9084
- },
9085
- "CreateTreasurySignerEntry": {
9086
- "type": "object",
9087
- "required": [
9088
- "signer_type",
9089
- "signer_id",
9090
- "signer_address"
9091
- ],
9092
- "properties": {
9093
- "signer_type": {
9094
- "type": "string",
9095
- "enum": [
9096
- "user",
9097
- "agent"
9098
- ]
9099
10021
  },
9100
- "signer_id": {
9101
- "type": "string",
9102
- "format": "uuid"
10022
+ "metadata": {
10023
+ "type": "object"
9103
10024
  },
9104
- "signer_address": {
9105
- "type": "string",
9106
- "description": "EVM address (0x-prefixed)"
9107
- }
9108
- }
9109
- },
9110
- "UpdateTreasuryRequest": {
9111
- "type": "object",
9112
- "properties": {
9113
- "name": {
9114
- "type": "string"
10025
+ "response_injection_score": {
10026
+ "type": "number",
10027
+ "default": 0
9115
10028
  },
9116
- "threshold": {
10029
+ "response_context_injection_score": {
10030
+ "type": "number",
10031
+ "default": 0
10032
+ },
10033
+ "response_injection_categories": {
10034
+ "type": "array",
10035
+ "items": {
10036
+ "type": "string"
10037
+ }
10038
+ },
10039
+ "external_urls_flagged": {
10040
+ "type": "array",
10041
+ "items": {
10042
+ "type": "string"
10043
+ }
10044
+ },
10045
+ "unexpected_code_blocks": {
9117
10046
  "type": "integer",
9118
- "minimum": 1
10047
+ "default": 0
10048
+ },
10049
+ "content_filtered": {
10050
+ "type": "boolean",
10051
+ "default": false
9119
10052
  }
9120
10053
  }
9121
10054
  },
9122
- "TreasuryResponse": {
10055
+ "ShroudThreatSummary": {
9123
10056
  "type": "object",
9124
10057
  "properties": {
9125
- "id": {
9126
- "type": "string",
9127
- "format": "uuid"
9128
- },
9129
- "name": {
9130
- "type": "string"
10058
+ "total_requests": {
10059
+ "type": "integer",
10060
+ "format": "int64"
9131
10061
  },
9132
- "safe_address": {
9133
- "type": "string"
10062
+ "total_requests_prev": {
10063
+ "type": "integer",
10064
+ "format": "int64"
9134
10065
  },
9135
- "chain": {
9136
- "type": "string"
10066
+ "blocked_requests": {
10067
+ "type": "integer",
10068
+ "format": "int64"
9137
10069
  },
9138
- "chain_id": {
9139
- "type": "integer"
10070
+ "detectors_triggered": {
10071
+ "type": "integer",
10072
+ "format": "int64"
9140
10073
  },
9141
- "threshold": {
9142
- "type": "integer"
10074
+ "active_agents": {
10075
+ "type": "integer",
10076
+ "format": "int64"
9143
10077
  },
9144
- "created_by": {
9145
- "type": "string",
9146
- "format": "uuid"
10078
+ "detectors": {
10079
+ "type": "array",
10080
+ "items": {
10081
+ "$ref": "#/components/schemas/ShroudDetectorStats"
10082
+ }
9147
10083
  },
9148
- "signers": {
10084
+ "flagged_requests": {
9149
10085
  "type": "array",
9150
10086
  "items": {
9151
- "$ref": "#/components/schemas/TreasurySignerResponse"
10087
+ "$ref": "#/components/schemas/ShroudFlaggedRequest"
9152
10088
  }
10089
+ }
10090
+ }
10091
+ },
10092
+ "ShroudDetectorStats": {
10093
+ "type": "object",
10094
+ "properties": {
10095
+ "detector": {
10096
+ "type": "string"
9153
10097
  },
9154
- "created_at": {
9155
- "type": "string",
9156
- "format": "date-time"
10098
+ "detections": {
10099
+ "type": "integer",
10100
+ "format": "int64"
10101
+ },
10102
+ "blocks": {
10103
+ "type": "integer",
10104
+ "format": "int64"
10105
+ },
10106
+ "actions": {
10107
+ "type": "object",
10108
+ "properties": {
10109
+ "blocked": {
10110
+ "type": "integer",
10111
+ "format": "int64"
10112
+ },
10113
+ "warned": {
10114
+ "type": "integer",
10115
+ "format": "int64"
10116
+ },
10117
+ "logged": {
10118
+ "type": "integer",
10119
+ "format": "int64"
10120
+ }
10121
+ }
9157
10122
  }
9158
10123
  }
9159
10124
  },
9160
- "TreasurySignerResponse": {
10125
+ "ShroudFlaggedRequest": {
9161
10126
  "type": "object",
9162
10127
  "properties": {
9163
10128
  "id": {
9164
- "type": "string",
9165
- "format": "uuid"
10129
+ "type": "string"
9166
10130
  },
9167
- "signer_type": {
10131
+ "timestamp": {
9168
10132
  "type": "string",
9169
- "enum": [
9170
- "user",
9171
- "agent"
9172
- ]
10133
+ "format": "date-time"
9173
10134
  },
9174
- "signer_id": {
9175
- "type": "string",
9176
- "format": "uuid"
10135
+ "agent_id": {
10136
+ "type": "string"
9177
10137
  },
9178
- "signer_address": {
10138
+ "agent_name": {
9179
10139
  "type": "string"
9180
10140
  },
9181
- "added_at": {
10141
+ "score": {
10142
+ "type": "number"
10143
+ },
10144
+ "reason": {
10145
+ "type": "string"
10146
+ },
10147
+ "action": {
9182
10148
  "type": "string",
9183
- "format": "date-time"
10149
+ "enum": [
10150
+ "blocked",
10151
+ "warned",
10152
+ "logged"
10153
+ ]
9184
10154
  }
9185
10155
  }
9186
10156
  },
9187
- "AddSignerRequest": {
10157
+ "HealthResponse": {
9188
10158
  "type": "object",
9189
- "required": [
9190
- "signer_type",
9191
- "signer_id",
9192
- "signer_address"
9193
- ],
9194
10159
  "properties": {
9195
- "signer_type": {
10160
+ "status": {
9196
10161
  "type": "string",
9197
10162
  "enum": [
9198
- "user",
9199
- "agent"
10163
+ "healthy",
10164
+ "degraded"
9200
10165
  ]
9201
10166
  },
9202
- "signer_id": {
9203
- "type": "string",
9204
- "format": "uuid"
9205
- },
9206
- "signer_address": {
10167
+ "version": {
9207
10168
  "type": "string"
9208
10169
  }
9209
10170
  }
9210
10171
  },
9211
- "AccessRequestResponse": {
10172
+ "CreatePlatformAppRequest": {
9212
10173
  "type": "object",
10174
+ "required": [
10175
+ "name",
10176
+ "slug"
10177
+ ],
9213
10178
  "properties": {
9214
- "id": {
9215
- "type": "string",
9216
- "format": "uuid"
10179
+ "name": {
10180
+ "type": "string"
9217
10181
  },
9218
- "treasury_id": {
10182
+ "slug": {
9219
10183
  "type": "string",
9220
- "format": "uuid"
10184
+ "minLength": 3,
10185
+ "maxLength": 64,
10186
+ "pattern": "^[a-zA-Z0-9_-]+$"
9221
10187
  },
9222
- "agent_id": {
10188
+ "description": {
10189
+ "type": "string"
10190
+ },
10191
+ "oidc_jwks_url": {
9223
10192
  "type": "string",
9224
- "format": "uuid"
10193
+ "format": "uri"
9225
10194
  },
9226
- "status": {
10195
+ "oidc_issuer": {
9227
10196
  "type": "string",
9228
- "enum": [
9229
- "pending",
9230
- "approved",
9231
- "denied"
9232
- ]
10197
+ "format": "uri"
9233
10198
  },
9234
- "reason": {
9235
- "type": "string"
10199
+ "redirect_uris": {
10200
+ "type": "array",
10201
+ "items": {
10202
+ "type": "string",
10203
+ "format": "uri"
10204
+ }
9236
10205
  },
9237
- "requested_at": {
10206
+ "billing_model": {
9238
10207
  "type": "string",
9239
- "format": "date-time"
10208
+ "enum": [
10209
+ "platform_pays",
10210
+ "user_pays",
10211
+ "hybrid"
10212
+ ],
10213
+ "default": "platform_pays"
9240
10214
  },
9241
- "resolved_by": {
10215
+ "auth_mode": {
9242
10216
  "type": "string",
9243
- "format": "uuid"
10217
+ "enum": [
10218
+ "silent",
10219
+ "user_signin",
10220
+ "configurable"
10221
+ ],
10222
+ "default": "silent"
9244
10223
  },
9245
- "resolved_at": {
9246
- "type": "string",
9247
- "format": "date-time"
9248
- }
9249
- }
9250
- },
9251
- "GenerateTreasuryWalletsRequest": {
9252
- "type": "object",
9253
- "properties": {
9254
- "chains": {
9255
- "type": "array",
9256
- "items": {
9257
- "type": "string"
9258
- },
9259
- "description": "Chains to generate wallets for (e.g. [\"ethereum\", \"solana\"]). Omit for all supported chains."
10224
+ "max_connected_users": {
10225
+ "type": "integer",
10226
+ "nullable": true
9260
10227
  }
9261
10228
  }
9262
10229
  },
9263
- "TreasuryWalletResponse": {
10230
+ "UpdatePlatformAppRequest": {
9264
10231
  "type": "object",
9265
10232
  "properties": {
9266
- "id": {
9267
- "type": "string",
9268
- "format": "uuid"
9269
- },
9270
- "chain": {
10233
+ "name": {
9271
10234
  "type": "string"
9272
10235
  },
9273
- "curve": {
9274
- "type": "string",
9275
- "description": "Cryptographic curve (e.g. secp256k1, ed25519)"
10236
+ "description": {
10237
+ "type": "string"
9276
10238
  },
9277
- "public_key_hex": {
10239
+ "logo_url": {
9278
10240
  "type": "string"
9279
10241
  },
9280
- "address": {
10242
+ "oidc_jwks_url": {
9281
10243
  "type": "string"
9282
10244
  },
9283
- "is_active": {
9284
- "type": "boolean"
10245
+ "oidc_issuer": {
10246
+ "type": "string"
9285
10247
  },
9286
- "created_at": {
9287
- "type": "string",
9288
- "format": "date-time"
9289
- }
9290
- }
9291
- },
9292
- "TreasuryWalletListResponse": {
9293
- "type": "object",
9294
- "properties": {
9295
- "wallets": {
10248
+ "redirect_uris": {
9296
10249
  "type": "array",
9297
10250
  "items": {
9298
- "$ref": "#/components/schemas/TreasuryWalletResponse"
10251
+ "type": "string"
9299
10252
  }
9300
- }
9301
- }
9302
- },
9303
- "TreasuryWalletExportResponse": {
9304
- "type": "object",
9305
- "properties": {
9306
- "chain": {
9307
- "type": "string"
9308
10253
  },
9309
- "address": {
10254
+ "webhook_url": {
9310
10255
  "type": "string"
9311
10256
  },
9312
- "private_key_hex": {
10257
+ "billing_model": {
9313
10258
  "type": "string",
9314
- "description": "Raw private key in hex encoding. Handle with extreme care."
9315
- }
9316
- }
9317
- },
9318
- "PaymentRequirement": {
9319
- "type": "object",
9320
- "properties": {
9321
- "x402Version": {
9322
- "type": "integer"
10259
+ "enum": [
10260
+ "platform_pays",
10261
+ "user_pays",
10262
+ "hybrid"
10263
+ ]
9323
10264
  },
9324
- "accepts": {
9325
- "type": "array",
9326
- "items": {
9327
- "type": "object",
9328
- "properties": {
9329
- "scheme": {
9330
- "type": "string"
9331
- },
9332
- "network": {
9333
- "type": "string"
9334
- },
9335
- "payTo": {
9336
- "type": "string"
9337
- },
9338
- "price": {
9339
- "type": "string"
9340
- },
9341
- "requiredDeadlineSeconds": {
9342
- "type": "integer"
9343
- }
9344
- }
9345
- }
10265
+ "auth_mode": {
10266
+ "type": "string",
10267
+ "enum": [
10268
+ "silent",
10269
+ "user_signin",
10270
+ "configurable"
10271
+ ]
9346
10272
  },
9347
- "description": {
9348
- "type": "string"
10273
+ "max_connected_users": {
10274
+ "type": "integer",
10275
+ "nullable": true
10276
+ },
10277
+ "is_active": {
10278
+ "type": "boolean"
9349
10279
  }
9350
10280
  }
9351
10281
  },
9352
- "ShroudActivityEvent": {
10282
+ "PlatformAppResponse": {
9353
10283
  "type": "object",
9354
10284
  "properties": {
9355
10285
  "id": {
9356
10286
  "type": "string",
9357
10287
  "format": "uuid"
9358
10288
  },
9359
- "org_id": {
9360
- "type": "string",
9361
- "format": "uuid"
9362
- },
9363
- "agent_id": {
10289
+ "name": {
9364
10290
  "type": "string"
9365
10291
  },
9366
- "provider": {
10292
+ "slug": {
9367
10293
  "type": "string"
9368
10294
  },
9369
- "model": {
10295
+ "description": {
9370
10296
  "type": "string"
9371
10297
  },
9372
- "action": {
10298
+ "logo_url": {
9373
10299
  "type": "string",
9374
- "description": "Action taken (allowed, blocked, warned)"
9375
- },
9376
- "request_tokens": {
9377
- "type": "integer"
9378
- },
9379
- "response_tokens": {
9380
- "type": "integer"
9381
- },
9382
- "latency_ms": {
9383
- "type": "integer"
10300
+ "nullable": true
9384
10301
  },
9385
- "had_secrets_redacted": {
9386
- "type": "boolean"
10302
+ "api_key_prefix": {
10303
+ "type": "string"
9387
10304
  },
9388
- "had_pii_detected": {
9389
- "type": "boolean"
10305
+ "oidc_jwks_url": {
10306
+ "type": "string",
10307
+ "nullable": true
9390
10308
  },
9391
- "injection_score": {
9392
- "type": "number"
10309
+ "oidc_issuer": {
10310
+ "type": "string",
10311
+ "nullable": true
9393
10312
  },
9394
- "policy_violations": {
10313
+ "redirect_uris": {
9395
10314
  "type": "array",
9396
10315
  "items": {
9397
10316
  "type": "string"
9398
10317
  }
9399
10318
  },
9400
- "response_injection_score": {
9401
- "type": "number",
9402
- "description": "Response-side prompt-injection score (0.0–1.0)."
10319
+ "webhook_url": {
10320
+ "type": "string",
10321
+ "nullable": true
9403
10322
  },
9404
- "response_context_injection_score": {
9405
- "type": "number",
9406
- "description": "Response-side context-injection score (0.0–1.0)."
10323
+ "is_active": {
10324
+ "type": "boolean"
9407
10325
  },
9408
- "response_injection_categories": {
9409
- "type": "array",
9410
- "items": {
9411
- "type": "string"
9412
- },
9413
- "description": "Category tags emitted by the response-side filters (e.g. `markdown_image_exfil`, `data_uri_blob`, `echoed_instruction`)."
10326
+ "billing_model": {
10327
+ "type": "string"
9414
10328
  },
9415
- "external_urls_flagged": {
9416
- "type": "array",
9417
- "items": {
9418
- "type": "string"
9419
- },
9420
- "description": "URLs emitted by the model that were flagged as potential exfil / callback targets."
10329
+ "auth_mode": {
10330
+ "type": "string"
9421
10331
  },
9422
- "unexpected_code_blocks": {
10332
+ "max_connected_users": {
9423
10333
  "type": "integer",
9424
- "description": "Number of code fences in the response that were not expected for the agent's allowed task set."
9425
- },
9426
- "content_filtered": {
9427
- "type": "boolean",
9428
- "description": "True when Shroud rewrote or blocked response content before returning it to the agent."
10334
+ "nullable": true
9429
10335
  },
9430
- "metadata": {
9431
- "type": "object"
10336
+ "connected_users": {
10337
+ "type": "integer"
9432
10338
  },
9433
- "timestamp": {
10339
+ "created_at": {
10340
+ "type": "string",
10341
+ "format": "date-time"
10342
+ },
10343
+ "updated_at": {
9434
10344
  "type": "string",
9435
10345
  "format": "date-time"
9436
10346
  }
9437
10347
  }
9438
10348
  },
9439
- "IngestShroudActivityRequest": {
10349
+ "PlatformAppCreatedResponse": {
10350
+ "allOf": [
10351
+ {
10352
+ "$ref": "#/components/schemas/PlatformAppResponse"
10353
+ },
10354
+ {
10355
+ "type": "object",
10356
+ "required": [
10357
+ "api_key"
10358
+ ],
10359
+ "properties": {
10360
+ "api_key": {
10361
+ "type": "string",
10362
+ "description": "The platform API key. Save immediately - it cannot be retrieved again."
10363
+ }
10364
+ }
10365
+ }
10366
+ ]
10367
+ },
10368
+ "CreateTemplateRequest": {
9440
10369
  "type": "object",
9441
10370
  "required": [
9442
- "agent_id",
9443
- "action"
10371
+ "name",
10372
+ "spec"
9444
10373
  ],
9445
10374
  "properties": {
9446
- "agent_id": {
10375
+ "name": {
9447
10376
  "type": "string"
9448
10377
  },
9449
- "provider": {
10378
+ "description": {
9450
10379
  "type": "string"
9451
10380
  },
9452
- "model": {
9453
- "type": "string"
10381
+ "spec": {
10382
+ "type": "object",
10383
+ "description": "Template specification defining vault, agents, and policies to bootstrap."
10384
+ }
10385
+ }
10386
+ },
10387
+ "PlatformTemplateResponse": {
10388
+ "type": "object",
10389
+ "properties": {
10390
+ "id": {
10391
+ "type": "string",
10392
+ "format": "uuid"
9454
10393
  },
9455
- "action": {
9456
- "type": "string"
10394
+ "platform_app_id": {
10395
+ "type": "string",
10396
+ "format": "uuid"
9457
10397
  },
9458
- "request_tokens": {
9459
- "type": "integer",
9460
- "default": 0
10398
+ "name": {
10399
+ "type": "string"
9461
10400
  },
9462
- "response_tokens": {
9463
- "type": "integer",
9464
- "default": 0
10401
+ "description": {
10402
+ "type": "string"
9465
10403
  },
9466
- "latency_ms": {
10404
+ "version": {
9467
10405
  "type": "integer"
9468
10406
  },
9469
- "had_secrets_redacted": {
9470
- "type": "boolean",
9471
- "default": false
9472
- },
9473
- "had_pii_detected": {
9474
- "type": "boolean",
9475
- "default": false
10407
+ "spec": {
10408
+ "type": "object"
9476
10409
  },
9477
- "injection_score": {
9478
- "type": "number",
9479
- "default": 0
10410
+ "is_active": {
10411
+ "type": "boolean"
9480
10412
  },
9481
- "policy_violations": {
9482
- "type": "array",
9483
- "items": {
9484
- "type": "string"
9485
- }
10413
+ "created_at": {
10414
+ "type": "string",
10415
+ "format": "date-time"
9486
10416
  },
9487
- "metadata": {
9488
- "type": "object"
10417
+ "updated_at": {
10418
+ "type": "string",
10419
+ "format": "date-time"
10420
+ }
10421
+ }
10422
+ },
10423
+ "UpsertPlatformUserRequest": {
10424
+ "type": "object",
10425
+ "properties": {
10426
+ "subject_token": {
10427
+ "type": "string",
10428
+ "description": "OIDC JWT from the platform's IdP (verified against JWKS)"
9489
10429
  },
9490
- "response_injection_score": {
9491
- "type": "number",
9492
- "default": 0
10430
+ "subject_token_type": {
10431
+ "type": "string",
10432
+ "default": "urn:ietf:params:oauth:token-type:jwt"
9493
10433
  },
9494
- "response_context_injection_score": {
9495
- "type": "number",
9496
- "default": 0
10434
+ "email": {
10435
+ "type": "string",
10436
+ "format": "email",
10437
+ "description": "Fallback when subject_token is not provided"
9497
10438
  },
9498
- "response_injection_categories": {
9499
- "type": "array",
9500
- "items": {
9501
- "type": "string"
9502
- }
10439
+ "display_name": {
10440
+ "type": "string"
10441
+ }
10442
+ }
10443
+ },
10444
+ "PlatformUserResponse": {
10445
+ "type": "object",
10446
+ "properties": {
10447
+ "user_handle": {
10448
+ "type": "string",
10449
+ "format": "uuid"
9503
10450
  },
9504
- "external_urls_flagged": {
9505
- "type": "array",
9506
- "items": {
9507
- "type": "string"
9508
- }
10451
+ "is_new": {
10452
+ "type": "boolean"
9509
10453
  },
9510
- "unexpected_code_blocks": {
9511
- "type": "integer",
9512
- "default": 0
10454
+ "connection_id": {
10455
+ "type": "string",
10456
+ "format": "uuid"
9513
10457
  },
9514
- "content_filtered": {
9515
- "type": "boolean",
9516
- "default": false
10458
+ "email": {
10459
+ "type": "string"
9517
10460
  }
9518
10461
  }
9519
10462
  },
9520
- "ShroudThreatSummary": {
10463
+ "PlatformConnectedUserResponse": {
9521
10464
  "type": "object",
9522
10465
  "properties": {
9523
- "total_requests": {
9524
- "type": "integer",
9525
- "format": "int64"
9526
- },
9527
- "total_requests_prev": {
9528
- "type": "integer",
9529
- "format": "int64"
10466
+ "connection_id": {
10467
+ "type": "string",
10468
+ "format": "uuid"
9530
10469
  },
9531
- "blocked_requests": {
9532
- "type": "integer",
9533
- "format": "int64"
10470
+ "user_id": {
10471
+ "type": "string",
10472
+ "format": "uuid"
9534
10473
  },
9535
- "detectors_triggered": {
9536
- "type": "integer",
9537
- "format": "int64"
10474
+ "external_subject": {
10475
+ "type": "string"
9538
10476
  },
9539
- "active_agents": {
9540
- "type": "integer",
9541
- "format": "int64"
10477
+ "status": {
10478
+ "type": "string"
9542
10479
  },
9543
- "detectors": {
10480
+ "vault_ids": {
9544
10481
  "type": "array",
9545
10482
  "items": {
9546
- "$ref": "#/components/schemas/ShroudDetectorStats"
10483
+ "type": "string",
10484
+ "format": "uuid"
9547
10485
  }
9548
10486
  },
9549
- "flagged_requests": {
10487
+ "agent_ids": {
9550
10488
  "type": "array",
9551
10489
  "items": {
9552
- "$ref": "#/components/schemas/ShroudFlaggedRequest"
10490
+ "type": "string",
10491
+ "format": "uuid"
9553
10492
  }
10493
+ },
10494
+ "created_at": {
10495
+ "type": "string",
10496
+ "format": "date-time"
10497
+ },
10498
+ "claimed_at": {
10499
+ "type": "string",
10500
+ "format": "date-time",
10501
+ "nullable": true
9554
10502
  }
9555
10503
  }
9556
10504
  },
9557
- "ShroudDetectorStats": {
10505
+ "BootstrapRequest": {
9558
10506
  "type": "object",
9559
10507
  "properties": {
9560
- "detector": {
10508
+ "template_id": {
10509
+ "type": "string",
10510
+ "format": "uuid",
10511
+ "description": "Template to use. Falls back to the app's default template."
10512
+ },
10513
+ "return_to": {
10514
+ "type": "string",
10515
+ "format": "uri",
10516
+ "description": "URL to redirect the user to after claiming resources."
10517
+ }
10518
+ }
10519
+ },
10520
+ "BootstrapResponse": {
10521
+ "type": "object",
10522
+ "properties": {
10523
+ "claim_url": {
10524
+ "type": "string",
10525
+ "format": "uri"
10526
+ },
10527
+ "claim_token": {
9561
10528
  "type": "string"
9562
10529
  },
9563
- "detections": {
10530
+ "expires_in": {
9564
10531
  "type": "integer",
9565
- "format": "int64"
10532
+ "description": "Seconds until the claim token expires"
9566
10533
  },
9567
- "blocks": {
9568
- "type": "integer",
9569
- "format": "int64"
10534
+ "connection_id": {
10535
+ "type": "string",
10536
+ "format": "uuid"
9570
10537
  },
9571
- "actions": {
10538
+ "summary": {
9572
10539
  "type": "object",
9573
10540
  "properties": {
9574
- "blocked": {
9575
- "type": "integer",
9576
- "format": "int64"
10541
+ "vault_id": {
10542
+ "type": "string",
10543
+ "format": "uuid",
10544
+ "nullable": true
9577
10545
  },
9578
- "warned": {
9579
- "type": "integer",
9580
- "format": "int64"
10546
+ "agent_id": {
10547
+ "type": "string",
10548
+ "format": "uuid",
10549
+ "nullable": true
9581
10550
  },
9582
- "logged": {
9583
- "type": "integer",
9584
- "format": "int64"
10551
+ "policy_ids": {
10552
+ "type": "array",
10553
+ "items": {
10554
+ "type": "string",
10555
+ "format": "uuid"
10556
+ }
9585
10557
  }
9586
10558
  }
9587
10559
  }
9588
10560
  }
9589
10561
  },
9590
- "ShroudFlaggedRequest": {
10562
+ "ConnectedAppResponse": {
9591
10563
  "type": "object",
9592
10564
  "properties": {
9593
- "id": {
9594
- "type": "string"
9595
- },
9596
- "timestamp": {
10565
+ "connection_id": {
9597
10566
  "type": "string",
9598
- "format": "date-time"
10567
+ "format": "uuid"
9599
10568
  },
9600
- "agent_id": {
10569
+ "app_name": {
9601
10570
  "type": "string"
9602
10571
  },
9603
- "agent_name": {
10572
+ "app_slug": {
9604
10573
  "type": "string"
9605
10574
  },
9606
- "score": {
9607
- "type": "number"
9608
- },
9609
- "reason": {
10575
+ "status": {
9610
10576
  "type": "string"
9611
10577
  },
9612
- "action": {
9613
- "type": "string",
9614
- "enum": [
9615
- "blocked",
9616
- "warned",
9617
- "logged"
9618
- ]
9619
- }
9620
- }
9621
- },
9622
- "HealthResponse": {
9623
- "type": "object",
9624
- "properties": {
9625
- "status": {
9626
- "type": "string",
9627
- "enum": [
9628
- "healthy",
9629
- "degraded"
9630
- ]
10578
+ "vault_ids": {
10579
+ "type": "array",
10580
+ "items": {
10581
+ "type": "string",
10582
+ "format": "uuid"
10583
+ }
9631
10584
  },
9632
- "version": {
9633
- "type": "string"
10585
+ "agent_ids": {
10586
+ "type": "array",
10587
+ "items": {
10588
+ "type": "string",
10589
+ "format": "uuid"
10590
+ }
10591
+ },
10592
+ "created_at": {
10593
+ "type": "string",
10594
+ "format": "date-time"
9634
10595
  }
9635
10596
  }
9636
10597
  }