@1claw/openapi-spec 0.15.1 → 0.15.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -42,6 +42,7 @@ import spec from "@1claw/openapi-spec/openapi.json";
42
42
 
43
43
  ## What's in the spec (v0.15.x)
44
44
 
45
+ - **Treasury** — Safe multisig treasuries: `POST/GET /v1/treasury`, `GET/PATCH/DELETE /v1/treasury/{id}`, signers, agent access requests (`requests[]` on list)
45
46
  - **Vaults** — CRUD, CMEK enable/disable, key rotation with job tracking
46
47
  - **Secrets** — CRUD, versioning, CMEK-encrypted flag
47
48
  - **Agents** — CRUD with `auth_method` (api_key, mtls, oidc_client_credentials), auto-generated SSH keypairs, `token_ttl_seconds`, `vault_ids`, Intents API, transaction guardrails
package/openapi.json CHANGED
@@ -1698,6 +1698,52 @@
1698
1698
  }
1699
1699
  }
1700
1700
  },
1701
+ "/v1/agents/{agent_id}/smart-accounts": {
1702
+ "post": {
1703
+ "tags": [
1704
+ "Agents"
1705
+ ],
1706
+ "summary": "Add a smart account (Safe) for this agent on a chain",
1707
+ "description": "Use after deploying a Safe on a new chain. Multi-chain; one Safe per chain.\nReplaces any existing entry for the same chain_id.\n",
1708
+ "operationId": "addAgentSmartAccount",
1709
+ "parameters": [
1710
+ {
1711
+ "$ref": "#/components/parameters/AgentId"
1712
+ }
1713
+ ],
1714
+ "requestBody": {
1715
+ "required": true,
1716
+ "content": {
1717
+ "application/json": {
1718
+ "schema": {
1719
+ "$ref": "#/components/schemas/AddSmartAccountRequest"
1720
+ }
1721
+ }
1722
+ }
1723
+ },
1724
+ "responses": {
1725
+ "200": {
1726
+ "description": "Agent with updated smart_accounts list",
1727
+ "content": {
1728
+ "application/json": {
1729
+ "schema": {
1730
+ "$ref": "#/components/schemas/AgentResponse"
1731
+ }
1732
+ }
1733
+ }
1734
+ },
1735
+ "400": {
1736
+ "$ref": "#/components/responses/BadRequest"
1737
+ },
1738
+ "403": {
1739
+ "$ref": "#/components/responses/Forbidden"
1740
+ },
1741
+ "404": {
1742
+ "$ref": "#/components/responses/NotFound"
1743
+ }
1744
+ }
1745
+ }
1746
+ },
1701
1747
  "/v1/agents/{agent_id}/transactions": {
1702
1748
  "post": {
1703
1749
  "tags": [
@@ -3042,6 +3088,88 @@
3042
3088
  "$ref": "#/components/responses/NotFound"
3043
3089
  }
3044
3090
  }
3091
+ },
3092
+ "patch": {
3093
+ "tags": [
3094
+ "Treasury"
3095
+ ],
3096
+ "summary": "Update treasury name and/or threshold",
3097
+ "operationId": "updateTreasury",
3098
+ "security": [
3099
+ {
3100
+ "BearerAuth": []
3101
+ }
3102
+ ],
3103
+ "parameters": [
3104
+ {
3105
+ "name": "treasury_id",
3106
+ "in": "path",
3107
+ "required": true,
3108
+ "schema": {
3109
+ "type": "string",
3110
+ "format": "uuid"
3111
+ }
3112
+ }
3113
+ ],
3114
+ "requestBody": {
3115
+ "required": true,
3116
+ "content": {
3117
+ "application/json": {
3118
+ "schema": {
3119
+ "$ref": "#/components/schemas/UpdateTreasuryRequest"
3120
+ }
3121
+ }
3122
+ }
3123
+ },
3124
+ "responses": {
3125
+ "200": {
3126
+ "description": "Treasury updated",
3127
+ "content": {
3128
+ "application/json": {
3129
+ "schema": {
3130
+ "$ref": "#/components/schemas/TreasuryResponse"
3131
+ }
3132
+ }
3133
+ }
3134
+ },
3135
+ "400": {
3136
+ "$ref": "#/components/responses/BadRequest"
3137
+ },
3138
+ "404": {
3139
+ "$ref": "#/components/responses/NotFound"
3140
+ }
3141
+ }
3142
+ },
3143
+ "delete": {
3144
+ "tags": [
3145
+ "Treasury"
3146
+ ],
3147
+ "summary": "Delete a treasury and its signers",
3148
+ "operationId": "deleteTreasury",
3149
+ "security": [
3150
+ {
3151
+ "BearerAuth": []
3152
+ }
3153
+ ],
3154
+ "parameters": [
3155
+ {
3156
+ "name": "treasury_id",
3157
+ "in": "path",
3158
+ "required": true,
3159
+ "schema": {
3160
+ "type": "string",
3161
+ "format": "uuid"
3162
+ }
3163
+ }
3164
+ ],
3165
+ "responses": {
3166
+ "204": {
3167
+ "description": "Treasury deleted"
3168
+ },
3169
+ "404": {
3170
+ "$ref": "#/components/responses/NotFound"
3171
+ }
3172
+ }
3045
3173
  }
3046
3174
  },
3047
3175
  "/v1/treasury/{treasury_id}/signers": {
@@ -3198,7 +3326,7 @@
3198
3326
  "schema": {
3199
3327
  "type": "object",
3200
3328
  "properties": {
3201
- "access_requests": {
3329
+ "requests": {
3202
3330
  "type": "array",
3203
3331
  "items": {
3204
3332
  "$ref": "#/components/schemas/AccessRequestResponse"
@@ -4892,6 +5020,67 @@
4892
5020
  "last_active_at": {
4893
5021
  "type": "string",
4894
5022
  "format": "date-time"
5023
+ },
5024
+ "smart_accounts": {
5025
+ "type": "array",
5026
+ "description": "Multi-chain; one Safe per chain",
5027
+ "items": {
5028
+ "$ref": "#/components/schemas/AgentSmartAccountResponse"
5029
+ }
5030
+ }
5031
+ }
5032
+ },
5033
+ "AgentSmartAccountResponse": {
5034
+ "type": "object",
5035
+ "description": "One Safe smart account per chain for an agent",
5036
+ "properties": {
5037
+ "id": {
5038
+ "type": "string",
5039
+ "format": "uuid"
5040
+ },
5041
+ "chain": {
5042
+ "type": "string"
5043
+ },
5044
+ "chain_id": {
5045
+ "type": "integer"
5046
+ },
5047
+ "safe_address": {
5048
+ "type": "string"
5049
+ },
5050
+ "nonce": {
5051
+ "type": "string"
5052
+ },
5053
+ "init_data": {
5054
+ "type": "object"
5055
+ },
5056
+ "created_at": {
5057
+ "type": "string",
5058
+ "format": "date-time"
5059
+ }
5060
+ }
5061
+ },
5062
+ "AddSmartAccountRequest": {
5063
+ "type": "object",
5064
+ "required": [
5065
+ "chain",
5066
+ "chain_id",
5067
+ "safe_address"
5068
+ ],
5069
+ "properties": {
5070
+ "chain": {
5071
+ "type": "string"
5072
+ },
5073
+ "chain_id": {
5074
+ "type": "integer"
5075
+ },
5076
+ "safe_address": {
5077
+ "type": "string"
5078
+ },
5079
+ "nonce": {
5080
+ "type": "string"
5081
+ },
5082
+ "init_data": {
5083
+ "type": "object"
4895
5084
  }
4896
5085
  }
4897
5086
  },
@@ -6480,38 +6669,79 @@
6480
6669
  "type": "object",
6481
6670
  "required": [
6482
6671
  "name",
6483
- "chain",
6484
- "chain_id",
6485
- "threshold"
6672
+ "safe_address"
6486
6673
  ],
6487
6674
  "properties": {
6488
6675
  "name": {
6489
- "type": "string"
6676
+ "type": "string",
6677
+ "description": "Display name (1–128 characters)"
6678
+ },
6679
+ "safe_address": {
6680
+ "type": "string",
6681
+ "description": "Deployed Safe contract address (0x-prefixed, 42 characters)"
6490
6682
  },
6491
6683
  "chain": {
6492
- "type": "string"
6684
+ "type": "string",
6685
+ "description": "Chain name (default base)"
6493
6686
  },
6494
6687
  "chain_id": {
6495
- "type": "integer"
6688
+ "type": "integer",
6689
+ "description": "EVM chain ID (default 8453 for Base)"
6496
6690
  },
6497
6691
  "threshold": {
6498
6692
  "type": "integer",
6499
- "minimum": 1
6693
+ "minimum": 1,
6694
+ "description": "Safe threshold (default 1)"
6500
6695
  },
6501
- "safe_address": {
6502
- "type": "string",
6503
- "description": "Pre-deployed Safe address (optional)"
6696
+ "signers": {
6697
+ "type": "array",
6698
+ "items": {
6699
+ "$ref": "#/components/schemas/CreateTreasurySignerEntry"
6700
+ }
6504
6701
  }
6505
6702
  }
6506
6703
  },
6507
- "TreasuryResponse": {
6704
+ "CreateTreasurySignerEntry": {
6508
6705
  "type": "object",
6706
+ "required": [
6707
+ "signer_type",
6708
+ "signer_id",
6709
+ "signer_address"
6710
+ ],
6509
6711
  "properties": {
6510
- "id": {
6712
+ "signer_type": {
6713
+ "type": "string",
6714
+ "enum": [
6715
+ "user",
6716
+ "agent"
6717
+ ]
6718
+ },
6719
+ "signer_id": {
6511
6720
  "type": "string",
6512
6721
  "format": "uuid"
6513
6722
  },
6514
- "org_id": {
6723
+ "signer_address": {
6724
+ "type": "string",
6725
+ "description": "EVM address (0x-prefixed)"
6726
+ }
6727
+ }
6728
+ },
6729
+ "UpdateTreasuryRequest": {
6730
+ "type": "object",
6731
+ "properties": {
6732
+ "name": {
6733
+ "type": "string"
6734
+ },
6735
+ "threshold": {
6736
+ "type": "integer",
6737
+ "minimum": 1
6738
+ }
6739
+ }
6740
+ },
6741
+ "TreasuryResponse": {
6742
+ "type": "object",
6743
+ "properties": {
6744
+ "id": {
6515
6745
  "type": "string",
6516
6746
  "format": "uuid"
6517
6747
  },
@@ -6530,6 +6760,10 @@
6530
6760
  "threshold": {
6531
6761
  "type": "integer"
6532
6762
  },
6763
+ "created_by": {
6764
+ "type": "string",
6765
+ "format": "uuid"
6766
+ },
6533
6767
  "signers": {
6534
6768
  "type": "array",
6535
6769
  "items": {
@@ -6560,10 +6794,10 @@
6560
6794
  "type": "string",
6561
6795
  "format": "uuid"
6562
6796
  },
6563
- "evm_address": {
6797
+ "signer_address": {
6564
6798
  "type": "string"
6565
6799
  },
6566
- "created_at": {
6800
+ "added_at": {
6567
6801
  "type": "string",
6568
6802
  "format": "date-time"
6569
6803
  }
@@ -6573,7 +6807,8 @@
6573
6807
  "type": "object",
6574
6808
  "required": [
6575
6809
  "signer_type",
6576
- "signer_id"
6810
+ "signer_id",
6811
+ "signer_address"
6577
6812
  ],
6578
6813
  "properties": {
6579
6814
  "signer_type": {
@@ -6586,6 +6821,9 @@
6586
6821
  "signer_id": {
6587
6822
  "type": "string",
6588
6823
  "format": "uuid"
6824
+ },
6825
+ "signer_address": {
6826
+ "type": "string"
6589
6827
  }
6590
6828
  }
6591
6829
  },
@@ -6612,10 +6850,18 @@
6612
6850
  "denied"
6613
6851
  ]
6614
6852
  },
6615
- "evm_address": {
6853
+ "reason": {
6616
6854
  "type": "string"
6617
6855
  },
6618
- "created_at": {
6856
+ "requested_at": {
6857
+ "type": "string",
6858
+ "format": "date-time"
6859
+ },
6860
+ "resolved_by": {
6861
+ "type": "string",
6862
+ "format": "uuid"
6863
+ },
6864
+ "resolved_at": {
6619
6865
  "type": "string",
6620
6866
  "format": "date-time"
6621
6867
  }
package/openapi.yaml CHANGED
@@ -1083,6 +1083,36 @@ paths:
1083
1083
  "404":
1084
1084
  $ref: "#/components/responses/NotFound"
1085
1085
 
1086
+ /v1/agents/{agent_id}/smart-accounts:
1087
+ post:
1088
+ tags: [Agents]
1089
+ summary: Add a smart account (Safe) for this agent on a chain
1090
+ description: |
1091
+ Use after deploying a Safe on a new chain. Multi-chain; one Safe per chain.
1092
+ Replaces any existing entry for the same chain_id.
1093
+ operationId: addAgentSmartAccount
1094
+ parameters:
1095
+ - $ref: "#/components/parameters/AgentId"
1096
+ requestBody:
1097
+ required: true
1098
+ content:
1099
+ application/json:
1100
+ schema:
1101
+ $ref: "#/components/schemas/AddSmartAccountRequest"
1102
+ responses:
1103
+ "200":
1104
+ description: Agent with updated smart_accounts list
1105
+ content:
1106
+ application/json:
1107
+ schema:
1108
+ $ref: "#/components/schemas/AgentResponse"
1109
+ "400":
1110
+ $ref: "#/components/responses/BadRequest"
1111
+ "403":
1112
+ $ref: "#/components/responses/Forbidden"
1113
+ "404":
1114
+ $ref: "#/components/responses/NotFound"
1115
+
1086
1116
  # ---------------------------------------------------------------------------
1087
1117
  # Transactions (Intents API)
1088
1118
  # ---------------------------------------------------------------------------
@@ -1939,6 +1969,54 @@ paths:
1939
1969
  $ref: "#/components/schemas/TreasuryResponse"
1940
1970
  "404":
1941
1971
  $ref: "#/components/responses/NotFound"
1972
+ patch:
1973
+ tags: [Treasury]
1974
+ summary: Update treasury name and/or threshold
1975
+ operationId: updateTreasury
1976
+ security:
1977
+ - BearerAuth: []
1978
+ parameters:
1979
+ - name: treasury_id
1980
+ in: path
1981
+ required: true
1982
+ schema:
1983
+ type: string
1984
+ format: uuid
1985
+ requestBody:
1986
+ required: true
1987
+ content:
1988
+ application/json:
1989
+ schema:
1990
+ $ref: "#/components/schemas/UpdateTreasuryRequest"
1991
+ responses:
1992
+ "200":
1993
+ description: Treasury updated
1994
+ content:
1995
+ application/json:
1996
+ schema:
1997
+ $ref: "#/components/schemas/TreasuryResponse"
1998
+ "400":
1999
+ $ref: "#/components/responses/BadRequest"
2000
+ "404":
2001
+ $ref: "#/components/responses/NotFound"
2002
+ delete:
2003
+ tags: [Treasury]
2004
+ summary: Delete a treasury and its signers
2005
+ operationId: deleteTreasury
2006
+ security:
2007
+ - BearerAuth: []
2008
+ parameters:
2009
+ - name: treasury_id
2010
+ in: path
2011
+ required: true
2012
+ schema:
2013
+ type: string
2014
+ format: uuid
2015
+ responses:
2016
+ "204":
2017
+ description: Treasury deleted
2018
+ "404":
2019
+ $ref: "#/components/responses/NotFound"
1942
2020
 
1943
2021
  /v1/treasury/{treasury_id}/signers:
1944
2022
  post:
@@ -2036,7 +2114,7 @@ paths:
2036
2114
  schema:
2037
2115
  type: object
2038
2116
  properties:
2039
- access_requests:
2117
+ requests:
2040
2118
  type: array
2041
2119
  items:
2042
2120
  $ref: "#/components/schemas/AccessRequestResponse"
@@ -3200,6 +3278,47 @@ components:
3200
3278
  last_active_at:
3201
3279
  type: string
3202
3280
  format: date-time
3281
+ smart_accounts:
3282
+ type: array
3283
+ description: Multi-chain; one Safe per chain
3284
+ items:
3285
+ $ref: "#/components/schemas/AgentSmartAccountResponse"
3286
+
3287
+ AgentSmartAccountResponse:
3288
+ type: object
3289
+ description: One Safe smart account per chain for an agent
3290
+ properties:
3291
+ id:
3292
+ type: string
3293
+ format: uuid
3294
+ chain:
3295
+ type: string
3296
+ chain_id:
3297
+ type: integer
3298
+ safe_address:
3299
+ type: string
3300
+ nonce:
3301
+ type: string
3302
+ init_data:
3303
+ type: object
3304
+ created_at:
3305
+ type: string
3306
+ format: date-time
3307
+
3308
+ AddSmartAccountRequest:
3309
+ type: object
3310
+ required: [chain, chain_id, safe_address]
3311
+ properties:
3312
+ chain:
3313
+ type: string
3314
+ chain_id:
3315
+ type: integer
3316
+ safe_address:
3317
+ type: string
3318
+ nonce:
3319
+ type: string
3320
+ init_data:
3321
+ type: object
3203
3322
 
3204
3323
  AgentSelfResponse:
3205
3324
  type: object
@@ -4297,20 +4416,51 @@ components:
4297
4416
 
4298
4417
  CreateTreasuryRequest:
4299
4418
  type: object
4300
- required: [name, chain, chain_id, threshold]
4419
+ required: [name, safe_address]
4301
4420
  properties:
4302
4421
  name:
4303
4422
  type: string
4423
+ description: Display name (1–128 characters)
4424
+ safe_address:
4425
+ type: string
4426
+ description: Deployed Safe contract address (0x-prefixed, 42 characters)
4304
4427
  chain:
4305
4428
  type: string
4429
+ description: Chain name (default base)
4306
4430
  chain_id:
4307
4431
  type: integer
4432
+ description: EVM chain ID (default 8453 for Base)
4308
4433
  threshold:
4309
4434
  type: integer
4310
4435
  minimum: 1
4311
- safe_address:
4436
+ description: Safe threshold (default 1)
4437
+ signers:
4438
+ type: array
4439
+ items:
4440
+ $ref: "#/components/schemas/CreateTreasurySignerEntry"
4441
+
4442
+ CreateTreasurySignerEntry:
4443
+ type: object
4444
+ required: [signer_type, signer_id, signer_address]
4445
+ properties:
4446
+ signer_type:
4312
4447
  type: string
4313
- description: Pre-deployed Safe address (optional)
4448
+ enum: [user, agent]
4449
+ signer_id:
4450
+ type: string
4451
+ format: uuid
4452
+ signer_address:
4453
+ type: string
4454
+ description: EVM address (0x-prefixed)
4455
+
4456
+ UpdateTreasuryRequest:
4457
+ type: object
4458
+ properties:
4459
+ name:
4460
+ type: string
4461
+ threshold:
4462
+ type: integer
4463
+ minimum: 1
4314
4464
 
4315
4465
  TreasuryResponse:
4316
4466
  type: object
@@ -4318,9 +4468,6 @@ components:
4318
4468
  id:
4319
4469
  type: string
4320
4470
  format: uuid
4321
- org_id:
4322
- type: string
4323
- format: uuid
4324
4471
  name:
4325
4472
  type: string
4326
4473
  safe_address:
@@ -4331,6 +4478,9 @@ components:
4331
4478
  type: integer
4332
4479
  threshold:
4333
4480
  type: integer
4481
+ created_by:
4482
+ type: string
4483
+ format: uuid
4334
4484
  signers:
4335
4485
  type: array
4336
4486
  items:
@@ -4351,15 +4501,15 @@ components:
4351
4501
  signer_id:
4352
4502
  type: string
4353
4503
  format: uuid
4354
- evm_address:
4504
+ signer_address:
4355
4505
  type: string
4356
- created_at:
4506
+ added_at:
4357
4507
  type: string
4358
4508
  format: date-time
4359
4509
 
4360
4510
  AddSignerRequest:
4361
4511
  type: object
4362
- required: [signer_type, signer_id]
4512
+ required: [signer_type, signer_id, signer_address]
4363
4513
  properties:
4364
4514
  signer_type:
4365
4515
  type: string
@@ -4367,6 +4517,8 @@ components:
4367
4517
  signer_id:
4368
4518
  type: string
4369
4519
  format: uuid
4520
+ signer_address:
4521
+ type: string
4370
4522
 
4371
4523
  AccessRequestResponse:
4372
4524
  type: object
@@ -4383,9 +4535,15 @@ components:
4383
4535
  status:
4384
4536
  type: string
4385
4537
  enum: [pending, approved, denied]
4386
- evm_address:
4538
+ reason:
4387
4539
  type: string
4388
- created_at:
4540
+ requested_at:
4541
+ type: string
4542
+ format: date-time
4543
+ resolved_by:
4544
+ type: string
4545
+ format: uuid
4546
+ resolved_at:
4389
4547
  type: string
4390
4548
  format: date-time
4391
4549
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@1claw/openapi-spec",
3
- "version": "0.15.1",
3
+ "version": "0.15.2",
4
4
  "description": "OpenAPI 3.1.0 specification for the 1Claw Vault API — generate clients in any language",
5
5
  "license": "MIT",
6
6
  "repository": {