@1claw/openapi-spec 0.46.0 → 0.47.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 +5650 -4044
  2. package/openapi.yaml +1171 -111
  3. package/package.json +2 -2
package/openapi.yaml CHANGED
@@ -2,7 +2,7 @@ openapi: 3.1.0
2
2
 
3
3
  info:
4
4
  title: 1Claw API
5
- version: 2.35.0
5
+ version: 2.36.0
6
6
  description: |
7
7
  Secure secret management for AI agents. Provides vaults, secrets,
8
8
  policy-based access control, agent identity, Intents API,
@@ -98,6 +98,14 @@ tags:
98
98
  description: OAuth connected accounts for agents (provider registry, connect flows, app credentials)
99
99
  - name: Delegations
100
100
  description: Agent-to-agent delegation management (human-controlled authorization)
101
+ - name: Cedar Policies
102
+ description: Cedar policy engine (Team+ tier)
103
+ - name: OPA Policies
104
+ description: OPA policy engine (Business+ tier)
105
+ - name: Sub-Organizations
106
+ description: Sub-organization management
107
+ - name: Portfolio
108
+ description: Unified balance aggregator
101
109
 
102
110
  # =============================================================================
103
111
  # PATHS
@@ -2453,6 +2461,41 @@ paths:
2453
2461
  "404":
2454
2462
  $ref: "#/components/responses/NotFound"
2455
2463
 
2464
+ /v1/agents/{agent_id}/signing-keys/{chain}/import:
2465
+ post:
2466
+ tags: [Signing Keys]
2467
+ summary: Import a signing key for a chain
2468
+ description: |
2469
+ Import an existing private key for a specific chain. Human-only,
2470
+ requires password re-authentication.
2471
+ operationId: importSigningKey
2472
+ security:
2473
+ - BearerAuth: []
2474
+ parameters:
2475
+ - $ref: "#/components/parameters/AgentId"
2476
+ - name: chain
2477
+ in: path
2478
+ required: true
2479
+ schema:
2480
+ type: string
2481
+ requestBody:
2482
+ required: true
2483
+ content:
2484
+ application/json:
2485
+ schema:
2486
+ $ref: "#/components/schemas/ImportKeyRequest"
2487
+ responses:
2488
+ "201":
2489
+ description: Signing key imported
2490
+ content:
2491
+ application/json:
2492
+ schema:
2493
+ $ref: "#/components/schemas/SigningKeyResponse"
2494
+ "401":
2495
+ $ref: "#/components/responses/Unauthorized"
2496
+ "403":
2497
+ $ref: "#/components/responses/Forbidden"
2498
+
2456
2499
  # ---------------------------------------------------------------------------
2457
2500
  # Bankr Dynamic Key Vending
2458
2501
  # ---------------------------------------------------------------------------
@@ -3533,6 +3576,23 @@ paths:
3533
3576
  schema:
3534
3577
  $ref: "#/components/schemas/LlmDisableResponse"
3535
3578
 
3579
+ /v1/billing/llm-token-billing/cancel-duplicates:
3580
+ post:
3581
+ tags: [Billing]
3582
+ summary: Cancel duplicate LLM billing subscriptions
3583
+ operationId: cancelLlmDuplicateSubscriptions
3584
+ description: >
3585
+ Cancels extra Stripe LLM billing subscriptions for the org,
3586
+ keeping a single primary subscription (active preferred over trialing).
3587
+ Does not change the org LLM billing enabled setting.
3588
+ responses:
3589
+ "200":
3590
+ description: Duplicate subscriptions cancelled
3591
+ content:
3592
+ application/json:
3593
+ schema:
3594
+ $ref: "#/components/schemas/LlmCancelDuplicatesResponse"
3595
+
3536
3596
  /v1/billing/overage-method:
3537
3597
  patch:
3538
3598
  tags: [Billing]
@@ -4462,6 +4522,40 @@ paths:
4462
4522
  "404":
4463
4523
  $ref: "#/components/responses/NotFound"
4464
4524
 
4525
+ /v1/treasury/wallets/{chain}/import:
4526
+ post:
4527
+ tags: [Treasury Wallets]
4528
+ summary: Import a treasury wallet
4529
+ description: |
4530
+ Import an existing private key as a treasury wallet. Human-only,
4531
+ requires password re-authentication via X-Auth-Confirm header.
4532
+ operationId: importTreasuryWallet
4533
+ security:
4534
+ - BearerAuth: []
4535
+ parameters:
4536
+ - name: chain
4537
+ in: path
4538
+ required: true
4539
+ schema:
4540
+ type: string
4541
+ requestBody:
4542
+ required: true
4543
+ content:
4544
+ application/json:
4545
+ schema:
4546
+ $ref: "#/components/schemas/ImportKeyRequest"
4547
+ responses:
4548
+ "201":
4549
+ description: Treasury wallet imported
4550
+ content:
4551
+ application/json:
4552
+ schema:
4553
+ $ref: "#/components/schemas/TreasuryWalletResponse"
4554
+ "401":
4555
+ $ref: "#/components/responses/Unauthorized"
4556
+ "403":
4557
+ $ref: "#/components/responses/Forbidden"
4558
+
4465
4559
  /v1/treasury/wallets/spend-policy:
4466
4560
  get:
4467
4561
  tags: [Treasury Wallets]
@@ -8703,119 +8797,686 @@ paths:
8703
8797
  "302":
8704
8798
  description: Redirect to dashboard with success or error status
8705
8799
 
8706
- # =============================================================================
8707
- # COMPONENTS
8708
- # =============================================================================
8800
+ # ---------------------------------------------------------------------------
8801
+ # Cedar Policies
8802
+ # ---------------------------------------------------------------------------
8709
8803
 
8710
- components:
8711
- securitySchemes:
8712
- BearerAuth:
8713
- type: http
8714
- scheme: bearer
8715
- bearerFormat: JWT
8716
- ApiKeyAuth:
8717
- type: http
8718
- scheme: bearer
8719
- description: 1ck_ prefixed API key used as Bearer token
8804
+ /v1/org/cedar-policies:
8805
+ post:
8806
+ tags: [Cedar Policies]
8807
+ summary: Create a Cedar policy
8808
+ description: Create a new Cedar policy for the organization. Team+ tier required.
8809
+ operationId: createCedarPolicy
8810
+ security:
8811
+ - BearerAuth: []
8812
+ requestBody:
8813
+ required: true
8814
+ content:
8815
+ application/json:
8816
+ schema:
8817
+ $ref: "#/components/schemas/CreateCedarPolicyRequest"
8818
+ responses:
8819
+ "201":
8820
+ description: Cedar policy created
8821
+ content:
8822
+ application/json:
8823
+ schema:
8824
+ $ref: "#/components/schemas/CedarPolicyResponse"
8825
+ "400":
8826
+ $ref: "#/components/responses/BadRequest"
8827
+ "401":
8828
+ $ref: "#/components/responses/Unauthorized"
8829
+ "403":
8830
+ $ref: "#/components/responses/Forbidden"
8831
+ get:
8832
+ tags: [Cedar Policies]
8833
+ summary: List Cedar policies
8834
+ description: List all Cedar policies for the organization.
8835
+ operationId: listCedarPolicies
8836
+ security:
8837
+ - BearerAuth: []
8838
+ responses:
8839
+ "200":
8840
+ description: Cedar policies list
8841
+ content:
8842
+ application/json:
8843
+ schema:
8844
+ $ref: "#/components/schemas/CedarPolicyListResponse"
8845
+ "401":
8846
+ $ref: "#/components/responses/Unauthorized"
8720
8847
 
8721
- parameters:
8722
- VaultId:
8723
- name: vault_id
8724
- in: path
8725
- required: true
8726
- schema:
8727
- type: string
8728
- format: uuid
8729
- SecretPath:
8730
- name: path
8731
- in: path
8732
- required: true
8733
- schema:
8734
- type: string
8735
- description: Secret path (e.g. "db/credentials")
8736
- AgentId:
8737
- name: agent_id
8738
- in: path
8739
- required: true
8740
- schema:
8741
- type: string
8742
- format: uuid
8743
- PolicyId:
8744
- name: policy_id
8745
- in: path
8746
- required: true
8747
- schema:
8748
- type: string
8749
- format: uuid
8750
- CardId:
8751
- name: card_id
8752
- in: path
8753
- required: true
8754
- schema:
8755
- type: string
8756
- format: uuid
8757
- IncludeSignedTx:
8758
- name: include_signed_tx
8759
- in: query
8760
- required: false
8761
- description: >
8762
- Set to `true` or `1` to include the raw signed transaction hex in the response.
8763
- 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.
8764
- Applies to GET /v1/agents/{agent_id}/transactions and GET /v1/agents/{agent_id}/transactions/{tx_id}.
8765
- schema:
8766
- type: boolean
8767
- default: false
8768
- example: false
8848
+ /v1/org/cedar-policies/{id}:
8849
+ get:
8850
+ tags: [Cedar Policies]
8851
+ summary: Get a Cedar policy
8852
+ description: Retrieve a specific Cedar policy by ID.
8853
+ operationId: getCedarPolicy
8854
+ security:
8855
+ - BearerAuth: []
8856
+ parameters:
8857
+ - name: id
8858
+ in: path
8859
+ required: true
8860
+ schema:
8861
+ type: string
8862
+ format: uuid
8863
+ responses:
8864
+ "200":
8865
+ description: Cedar policy details
8866
+ content:
8867
+ application/json:
8868
+ schema:
8869
+ $ref: "#/components/schemas/CedarPolicyResponse"
8870
+ "401":
8871
+ $ref: "#/components/responses/Unauthorized"
8872
+ "404":
8873
+ $ref: "#/components/responses/NotFound"
8874
+ delete:
8875
+ tags: [Cedar Policies]
8876
+ summary: Delete a Cedar policy
8877
+ description: Delete a Cedar policy by ID.
8878
+ operationId: deleteCedarPolicy
8879
+ security:
8880
+ - BearerAuth: []
8881
+ parameters:
8882
+ - name: id
8883
+ in: path
8884
+ required: true
8885
+ schema:
8886
+ type: string
8887
+ format: uuid
8888
+ responses:
8889
+ "204":
8890
+ description: Cedar policy deleted
8891
+ "401":
8892
+ $ref: "#/components/responses/Unauthorized"
8893
+ "404":
8894
+ $ref: "#/components/responses/NotFound"
8769
8895
 
8770
- responses:
8771
- BadRequest:
8772
- description: Invalid request
8773
- content:
8774
- application/json:
8775
- schema:
8776
- $ref: "#/components/schemas/ProblemDetails"
8777
- Unauthorized:
8778
- description: Authentication required or invalid
8779
- content:
8780
- application/json:
8781
- schema:
8782
- $ref: "#/components/schemas/ProblemDetails"
8783
- Forbidden:
8784
- description: Insufficient permissions
8785
- content:
8786
- application/json:
8787
- schema:
8788
- $ref: "#/components/schemas/ProblemDetails"
8789
- NotFound:
8790
- description: Resource not found
8791
- content:
8792
- application/json:
8793
- schema:
8794
- $ref: "#/components/schemas/ProblemDetails"
8795
- PaymentRequired:
8796
- description: x402 payment required
8797
- content:
8798
- application/json:
8799
- schema:
8800
- $ref: "#/components/schemas/PaymentRequirement"
8801
- Conflict:
8802
- description: Resource already exists or conflict
8803
- content:
8804
- application/json:
8805
- schema:
8806
- $ref: "#/components/schemas/ProblemDetails"
8896
+ /v1/org/cedar-policies/test:
8897
+ post:
8898
+ tags: [Cedar Policies]
8899
+ summary: Test Cedar policy evaluation
8900
+ description: Evaluate the organization's Cedar policies against a test request.
8901
+ operationId: testCedarPolicy
8902
+ security:
8903
+ - BearerAuth: []
8904
+ requestBody:
8905
+ required: true
8906
+ content:
8907
+ application/json:
8908
+ schema:
8909
+ $ref: "#/components/schemas/CedarPolicyTestRequest"
8910
+ responses:
8911
+ "200":
8912
+ description: Policy evaluation result
8913
+ content:
8914
+ application/json:
8915
+ schema:
8916
+ $ref: "#/components/schemas/CedarPolicyTestResponse"
8917
+ "400":
8918
+ $ref: "#/components/responses/BadRequest"
8919
+ "401":
8920
+ $ref: "#/components/responses/Unauthorized"
8807
8921
 
8808
- schemas:
8809
- OrderCardRequest:
8810
- type: object
8811
- required: [kind, amount_usd]
8812
- properties:
8813
- kind:
8814
- type: string
8815
- enum: [prepaid, gift_card]
8816
- amount_usd:
8817
- type: string
8818
- description: USD amount to load onto the card.
8922
+ # ---------------------------------------------------------------------------
8923
+ # OPA Policies
8924
+ # ---------------------------------------------------------------------------
8925
+
8926
+ /v1/org/opa-policies:
8927
+ post:
8928
+ tags: [OPA Policies]
8929
+ summary: Create an OPA policy
8930
+ description: Create a new OPA Rego policy for the organization. Business+ tier required.
8931
+ operationId: createOpaPolicy
8932
+ security:
8933
+ - BearerAuth: []
8934
+ requestBody:
8935
+ required: true
8936
+ content:
8937
+ application/json:
8938
+ schema:
8939
+ $ref: "#/components/schemas/CreateOpaPolicyRequest"
8940
+ responses:
8941
+ "201":
8942
+ description: OPA policy created
8943
+ content:
8944
+ application/json:
8945
+ schema:
8946
+ $ref: "#/components/schemas/OpaPolicyResponse"
8947
+ "400":
8948
+ $ref: "#/components/responses/BadRequest"
8949
+ "401":
8950
+ $ref: "#/components/responses/Unauthorized"
8951
+ "403":
8952
+ $ref: "#/components/responses/Forbidden"
8953
+ get:
8954
+ tags: [OPA Policies]
8955
+ summary: List OPA policies
8956
+ description: List all OPA policies for the organization.
8957
+ operationId: listOpaPolicies
8958
+ security:
8959
+ - BearerAuth: []
8960
+ responses:
8961
+ "200":
8962
+ description: OPA policies list
8963
+ content:
8964
+ application/json:
8965
+ schema:
8966
+ $ref: "#/components/schemas/OpaPolicyListResponse"
8967
+ "401":
8968
+ $ref: "#/components/responses/Unauthorized"
8969
+
8970
+ /v1/org/opa-policies/{id}:
8971
+ get:
8972
+ tags: [OPA Policies]
8973
+ summary: Get an OPA policy
8974
+ description: Retrieve a specific OPA policy by ID.
8975
+ operationId: getOpaPolicy
8976
+ security:
8977
+ - BearerAuth: []
8978
+ parameters:
8979
+ - name: id
8980
+ in: path
8981
+ required: true
8982
+ schema:
8983
+ type: string
8984
+ format: uuid
8985
+ responses:
8986
+ "200":
8987
+ description: OPA policy details
8988
+ content:
8989
+ application/json:
8990
+ schema:
8991
+ $ref: "#/components/schemas/OpaPolicyResponse"
8992
+ "401":
8993
+ $ref: "#/components/responses/Unauthorized"
8994
+ "404":
8995
+ $ref: "#/components/responses/NotFound"
8996
+ delete:
8997
+ tags: [OPA Policies]
8998
+ summary: Delete an OPA policy
8999
+ description: Delete an OPA policy by ID.
9000
+ operationId: deleteOpaPolicy
9001
+ security:
9002
+ - BearerAuth: []
9003
+ parameters:
9004
+ - name: id
9005
+ in: path
9006
+ required: true
9007
+ schema:
9008
+ type: string
9009
+ format: uuid
9010
+ responses:
9011
+ "204":
9012
+ description: OPA policy deleted
9013
+ "401":
9014
+ $ref: "#/components/responses/Unauthorized"
9015
+ "404":
9016
+ $ref: "#/components/responses/NotFound"
9017
+
9018
+ /v1/org/opa-policies/test:
9019
+ post:
9020
+ tags: [OPA Policies]
9021
+ summary: Test OPA policy evaluation
9022
+ description: Evaluate the organization's OPA policies against a test input.
9023
+ operationId: testOpaPolicy
9024
+ security:
9025
+ - BearerAuth: []
9026
+ requestBody:
9027
+ required: true
9028
+ content:
9029
+ application/json:
9030
+ schema:
9031
+ $ref: "#/components/schemas/OpaPolicyTestRequest"
9032
+ responses:
9033
+ "200":
9034
+ description: Policy evaluation result
9035
+ content:
9036
+ application/json:
9037
+ schema:
9038
+ $ref: "#/components/schemas/OpaPolicyTestResponse"
9039
+ "400":
9040
+ $ref: "#/components/responses/BadRequest"
9041
+ "401":
9042
+ $ref: "#/components/responses/Unauthorized"
9043
+
9044
+ # ---------------------------------------------------------------------------
9045
+ # Sub-Organizations
9046
+ # ---------------------------------------------------------------------------
9047
+
9048
+ /v1/org/sub-orgs:
9049
+ post:
9050
+ tags: [Sub-Organizations]
9051
+ summary: Create a sub-organization
9052
+ description: Create a new sub-organization under the current org.
9053
+ operationId: createSubOrg
9054
+ security:
9055
+ - BearerAuth: []
9056
+ requestBody:
9057
+ required: true
9058
+ content:
9059
+ application/json:
9060
+ schema:
9061
+ $ref: "#/components/schemas/CreateSubOrgRequest"
9062
+ responses:
9063
+ "201":
9064
+ description: Sub-organization created
9065
+ content:
9066
+ application/json:
9067
+ schema:
9068
+ $ref: "#/components/schemas/SubOrgResponse"
9069
+ "400":
9070
+ $ref: "#/components/responses/BadRequest"
9071
+ "401":
9072
+ $ref: "#/components/responses/Unauthorized"
9073
+ "403":
9074
+ $ref: "#/components/responses/Forbidden"
9075
+ get:
9076
+ tags: [Sub-Organizations]
9077
+ summary: List sub-organizations
9078
+ description: List all sub-organizations under the current org.
9079
+ operationId: listSubOrgs
9080
+ security:
9081
+ - BearerAuth: []
9082
+ responses:
9083
+ "200":
9084
+ description: Sub-organizations list
9085
+ content:
9086
+ application/json:
9087
+ schema:
9088
+ $ref: "#/components/schemas/SubOrgListResponse"
9089
+ "401":
9090
+ $ref: "#/components/responses/Unauthorized"
9091
+
9092
+ /v1/org/sub-orgs/{sub_org_id}:
9093
+ get:
9094
+ tags: [Sub-Organizations]
9095
+ summary: Get a sub-organization
9096
+ description: Retrieve a specific sub-organization by ID.
9097
+ operationId: getSubOrg
9098
+ security:
9099
+ - BearerAuth: []
9100
+ parameters:
9101
+ - name: sub_org_id
9102
+ in: path
9103
+ required: true
9104
+ schema:
9105
+ type: string
9106
+ format: uuid
9107
+ responses:
9108
+ "200":
9109
+ description: Sub-organization details
9110
+ content:
9111
+ application/json:
9112
+ schema:
9113
+ $ref: "#/components/schemas/SubOrgResponse"
9114
+ "401":
9115
+ $ref: "#/components/responses/Unauthorized"
9116
+ "404":
9117
+ $ref: "#/components/responses/NotFound"
9118
+ patch:
9119
+ tags: [Sub-Organizations]
9120
+ summary: Update a sub-organization
9121
+ description: Update sub-organization name, description, or billing model.
9122
+ operationId: updateSubOrg
9123
+ security:
9124
+ - BearerAuth: []
9125
+ parameters:
9126
+ - name: sub_org_id
9127
+ in: path
9128
+ required: true
9129
+ schema:
9130
+ type: string
9131
+ format: uuid
9132
+ requestBody:
9133
+ required: true
9134
+ content:
9135
+ application/json:
9136
+ schema:
9137
+ $ref: "#/components/schemas/CreateSubOrgRequest"
9138
+ responses:
9139
+ "200":
9140
+ description: Sub-organization updated
9141
+ content:
9142
+ application/json:
9143
+ schema:
9144
+ $ref: "#/components/schemas/SubOrgResponse"
9145
+ "401":
9146
+ $ref: "#/components/responses/Unauthorized"
9147
+ "404":
9148
+ $ref: "#/components/responses/NotFound"
9149
+ delete:
9150
+ tags: [Sub-Organizations]
9151
+ summary: Archive a sub-organization
9152
+ description: Archive (soft-delete) a sub-organization.
9153
+ operationId: deleteSubOrg
9154
+ security:
9155
+ - BearerAuth: []
9156
+ parameters:
9157
+ - name: sub_org_id
9158
+ in: path
9159
+ required: true
9160
+ schema:
9161
+ type: string
9162
+ format: uuid
9163
+ responses:
9164
+ "204":
9165
+ description: Sub-organization archived
9166
+ "401":
9167
+ $ref: "#/components/responses/Unauthorized"
9168
+ "404":
9169
+ $ref: "#/components/responses/NotFound"
9170
+
9171
+ /v1/org/sub-orgs/{sub_org_id}/users:
9172
+ post:
9173
+ tags: [Sub-Organizations]
9174
+ summary: Add a user to a sub-organization
9175
+ description: Add a user to a sub-organization with a specified role.
9176
+ operationId: addSubOrgUser
9177
+ security:
9178
+ - BearerAuth: []
9179
+ parameters:
9180
+ - name: sub_org_id
9181
+ in: path
9182
+ required: true
9183
+ schema:
9184
+ type: string
9185
+ format: uuid
9186
+ requestBody:
9187
+ required: true
9188
+ content:
9189
+ application/json:
9190
+ schema:
9191
+ $ref: "#/components/schemas/SubOrgAddUserRequest"
9192
+ responses:
9193
+ "201":
9194
+ description: User added to sub-organization
9195
+ "400":
9196
+ $ref: "#/components/responses/BadRequest"
9197
+ "401":
9198
+ $ref: "#/components/responses/Unauthorized"
9199
+ "404":
9200
+ $ref: "#/components/responses/NotFound"
9201
+
9202
+ /v1/org/sub-orgs/{sub_org_id}/permissions:
9203
+ post:
9204
+ tags: [Sub-Organizations]
9205
+ summary: Grant permissions to a sub-organization
9206
+ description: Grant a permission scope to the sub-organization.
9207
+ operationId: grantSubOrgPermission
9208
+ security:
9209
+ - BearerAuth: []
9210
+ parameters:
9211
+ - name: sub_org_id
9212
+ in: path
9213
+ required: true
9214
+ schema:
9215
+ type: string
9216
+ format: uuid
9217
+ requestBody:
9218
+ required: true
9219
+ content:
9220
+ application/json:
9221
+ schema:
9222
+ $ref: "#/components/schemas/SubOrgPermissionRequest"
9223
+ responses:
9224
+ "201":
9225
+ description: Permission granted
9226
+ "400":
9227
+ $ref: "#/components/responses/BadRequest"
9228
+ "401":
9229
+ $ref: "#/components/responses/Unauthorized"
9230
+ "404":
9231
+ $ref: "#/components/responses/NotFound"
9232
+
9233
+ /v1/org/sub-orgs/{sub_org_id}/permissions/{permission}:
9234
+ delete:
9235
+ tags: [Sub-Organizations]
9236
+ summary: Revoke a sub-organization permission
9237
+ description: Revoke a specific permission scope from the sub-organization.
9238
+ operationId: revokeSubOrgPermission
9239
+ security:
9240
+ - BearerAuth: []
9241
+ parameters:
9242
+ - name: sub_org_id
9243
+ in: path
9244
+ required: true
9245
+ schema:
9246
+ type: string
9247
+ format: uuid
9248
+ - name: permission
9249
+ in: path
9250
+ required: true
9251
+ schema:
9252
+ type: string
9253
+ description: The permission scope to revoke
9254
+ responses:
9255
+ "204":
9256
+ description: Permission revoked
9257
+ "401":
9258
+ $ref: "#/components/responses/Unauthorized"
9259
+ "404":
9260
+ $ref: "#/components/responses/NotFound"
9261
+
9262
+ /v1/org/sub-orgs/{sub_org_id}/wallets/generate:
9263
+ post:
9264
+ tags: [Sub-Organizations]
9265
+ summary: Generate wallets for a sub-organization
9266
+ description: Generate treasury wallets for specified chains within the sub-org.
9267
+ operationId: generateSubOrgWallets
9268
+ security:
9269
+ - BearerAuth: []
9270
+ parameters:
9271
+ - name: sub_org_id
9272
+ in: path
9273
+ required: true
9274
+ schema:
9275
+ type: string
9276
+ format: uuid
9277
+ requestBody:
9278
+ required: false
9279
+ content:
9280
+ application/json:
9281
+ schema:
9282
+ $ref: "#/components/schemas/SubOrgGenerateWalletsRequest"
9283
+ responses:
9284
+ "201":
9285
+ description: Wallets generated
9286
+ "401":
9287
+ $ref: "#/components/responses/Unauthorized"
9288
+ "403":
9289
+ $ref: "#/components/responses/Forbidden"
9290
+ "404":
9291
+ $ref: "#/components/responses/NotFound"
9292
+
9293
+ # ---------------------------------------------------------------------------
9294
+ # Portfolio
9295
+ # ---------------------------------------------------------------------------
9296
+
9297
+ /v1/portfolio:
9298
+ get:
9299
+ tags: [Portfolio]
9300
+ summary: Get unified portfolio
9301
+ description: |
9302
+ Returns an aggregated view of all wallet balances (treasury wallets,
9303
+ signing keys, smart accounts) with USD estimates.
9304
+ operationId: getPortfolio
9305
+ security:
9306
+ - BearerAuth: []
9307
+ parameters:
9308
+ - name: chains
9309
+ in: query
9310
+ required: false
9311
+ schema:
9312
+ type: string
9313
+ description: Comma-separated list of chain names to filter by (e.g. "ethereum,solana")
9314
+ - name: include_tokens
9315
+ in: query
9316
+ required: false
9317
+ schema:
9318
+ type: boolean
9319
+ default: false
9320
+ description: Whether to include token balances alongside native balances
9321
+ responses:
9322
+ "200":
9323
+ description: Portfolio summary
9324
+ content:
9325
+ application/json:
9326
+ schema:
9327
+ $ref: "#/components/schemas/PortfolioResponse"
9328
+ "401":
9329
+ $ref: "#/components/responses/Unauthorized"
9330
+
9331
+ # ---------------------------------------------------------------------------
9332
+ # Smart Account Import
9333
+ # ---------------------------------------------------------------------------
9334
+
9335
+ /v1/agents/{agent_id}/smart-accounts/import:
9336
+ post:
9337
+ tags: [Agents]
9338
+ summary: Import an existing Safe smart account
9339
+ description: |
9340
+ Import an existing Safe smart account for an agent. Optionally verifies
9341
+ on-chain that the agent's EOA is a signer on the Safe.
9342
+ operationId: importSmartAccount
9343
+ security:
9344
+ - BearerAuth: []
9345
+ parameters:
9346
+ - $ref: "#/components/parameters/AgentId"
9347
+ requestBody:
9348
+ required: true
9349
+ content:
9350
+ application/json:
9351
+ schema:
9352
+ $ref: "#/components/schemas/ImportSmartAccountRequest"
9353
+ responses:
9354
+ "201":
9355
+ description: Smart account imported
9356
+ content:
9357
+ application/json:
9358
+ schema:
9359
+ $ref: "#/components/schemas/ImportSmartAccountResponse"
9360
+ "400":
9361
+ $ref: "#/components/responses/BadRequest"
9362
+ "401":
9363
+ $ref: "#/components/responses/Unauthorized"
9364
+ "403":
9365
+ $ref: "#/components/responses/Forbidden"
9366
+
9367
+ # =============================================================================
9368
+ # COMPONENTS
9369
+ # =============================================================================
9370
+
9371
+ components:
9372
+ securitySchemes:
9373
+ BearerAuth:
9374
+ type: http
9375
+ scheme: bearer
9376
+ bearerFormat: JWT
9377
+ ApiKeyAuth:
9378
+ type: http
9379
+ scheme: bearer
9380
+ description: 1ck_ prefixed API key used as Bearer token
9381
+
9382
+ parameters:
9383
+ VaultId:
9384
+ name: vault_id
9385
+ in: path
9386
+ required: true
9387
+ schema:
9388
+ type: string
9389
+ format: uuid
9390
+ SecretPath:
9391
+ name: path
9392
+ in: path
9393
+ required: true
9394
+ schema:
9395
+ type: string
9396
+ description: Secret path (e.g. "db/credentials")
9397
+ AgentId:
9398
+ name: agent_id
9399
+ in: path
9400
+ required: true
9401
+ schema:
9402
+ type: string
9403
+ format: uuid
9404
+ PolicyId:
9405
+ name: policy_id
9406
+ in: path
9407
+ required: true
9408
+ schema:
9409
+ type: string
9410
+ format: uuid
9411
+ CardId:
9412
+ name: card_id
9413
+ in: path
9414
+ required: true
9415
+ schema:
9416
+ type: string
9417
+ format: uuid
9418
+ IncludeSignedTx:
9419
+ name: include_signed_tx
9420
+ in: query
9421
+ required: false
9422
+ description: >
9423
+ Set to `true` or `1` to include the raw signed transaction hex in the response.
9424
+ 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.
9425
+ Applies to GET /v1/agents/{agent_id}/transactions and GET /v1/agents/{agent_id}/transactions/{tx_id}.
9426
+ schema:
9427
+ type: boolean
9428
+ default: false
9429
+ example: false
9430
+
9431
+ responses:
9432
+ BadRequest:
9433
+ description: Invalid request
9434
+ content:
9435
+ application/json:
9436
+ schema:
9437
+ $ref: "#/components/schemas/ProblemDetails"
9438
+ Unauthorized:
9439
+ description: Authentication required or invalid
9440
+ content:
9441
+ application/json:
9442
+ schema:
9443
+ $ref: "#/components/schemas/ProblemDetails"
9444
+ Forbidden:
9445
+ description: Insufficient permissions
9446
+ content:
9447
+ application/json:
9448
+ schema:
9449
+ $ref: "#/components/schemas/ProblemDetails"
9450
+ NotFound:
9451
+ description: Resource not found
9452
+ content:
9453
+ application/json:
9454
+ schema:
9455
+ $ref: "#/components/schemas/ProblemDetails"
9456
+ PaymentRequired:
9457
+ description: x402 payment required
9458
+ content:
9459
+ application/json:
9460
+ schema:
9461
+ $ref: "#/components/schemas/PaymentRequirement"
9462
+ Conflict:
9463
+ description: Resource already exists or conflict
9464
+ content:
9465
+ application/json:
9466
+ schema:
9467
+ $ref: "#/components/schemas/ProblemDetails"
9468
+
9469
+ schemas:
9470
+ OrderCardRequest:
9471
+ type: object
9472
+ required: [kind, amount_usd]
9473
+ properties:
9474
+ kind:
9475
+ type: string
9476
+ enum: [prepaid, gift_card]
9477
+ amount_usd:
9478
+ type: string
9479
+ description: USD amount to load onto the card.
8819
9480
  example: "25.00"
8820
9481
  laso_server_id:
8821
9482
  type: string
@@ -9675,6 +10336,17 @@ components:
9675
10336
  expires_at:
9676
10337
  type: string
9677
10338
  format: date-time
10339
+ effect:
10340
+ type: string
10341
+ enum: [allow, deny]
10342
+ default: allow
10343
+ priority:
10344
+ type: integer
10345
+ minimum: 0
10346
+ default: 0
10347
+ attribute_conditions:
10348
+ type: object
10349
+ additionalProperties: true
9678
10350
 
9679
10351
  UpdatePolicyRequest:
9680
10352
  type: object
@@ -9689,6 +10361,17 @@ components:
9689
10361
  expires_at:
9690
10362
  type: string
9691
10363
  format: date-time
10364
+ effect:
10365
+ type: string
10366
+ enum: [allow, deny]
10367
+ default: allow
10368
+ priority:
10369
+ type: integer
10370
+ minimum: 0
10371
+ default: 0
10372
+ attribute_conditions:
10373
+ type: object
10374
+ additionalProperties: true
9692
10375
 
9693
10376
  PolicyResponse:
9694
10377
  type: object
@@ -9732,6 +10415,17 @@ components:
9732
10415
  created_at:
9733
10416
  type: string
9734
10417
  format: date-time
10418
+ effect:
10419
+ type: string
10420
+ enum: [allow, deny]
10421
+ default: allow
10422
+ priority:
10423
+ type: integer
10424
+ minimum: 0
10425
+ default: 0
10426
+ attribute_conditions:
10427
+ type: object
10428
+ additionalProperties: true
9735
10429
 
9736
10430
  PolicyListResponse:
9737
10431
  type: object
@@ -12013,6 +12707,14 @@ components:
12013
12707
  $ref: "#/components/schemas/LlmCreditBalance"
12014
12708
  billing_cycle_usage:
12015
12709
  $ref: "#/components/schemas/LlmBillingCycleUsage"
12710
+ active_subscription_count:
12711
+ type: integer
12712
+ subscription_ids:
12713
+ type: array
12714
+ items:
12715
+ type: string
12716
+ warning:
12717
+ type: string
12016
12718
 
12017
12719
  LlmCheckoutResponse:
12018
12720
  type: object
@@ -12020,6 +12722,25 @@ components:
12020
12722
  checkout_url:
12021
12723
  type: string
12022
12724
  format: uri
12725
+ already_subscribed:
12726
+ type: boolean
12727
+ subscription_id:
12728
+ type: string
12729
+
12730
+ LlmCancelDuplicatesResponse:
12731
+ type: object
12732
+ required: [cancelled_count, cancelled_subscription_ids, remaining_subscription_ids]
12733
+ properties:
12734
+ cancelled_count:
12735
+ type: integer
12736
+ cancelled_subscription_ids:
12737
+ type: array
12738
+ items:
12739
+ type: string
12740
+ remaining_subscription_ids:
12741
+ type: array
12742
+ items:
12743
+ type: string
12023
12744
 
12024
12745
  LlmDisableResponse:
12025
12746
  type: object
@@ -12630,7 +13351,7 @@ components:
12630
13351
  description: Destination address (0x-prefixed)
12631
13352
  value_wei:
12632
13353
  type: string
12633
- description: Value in wei
13354
+ description: Value in wei (or major-unit decimal string for non-EVM)
12634
13355
  data:
12635
13356
  type: string
12636
13357
  description: Hex-encoded calldata (optional)
@@ -12641,6 +13362,30 @@ components:
12641
13362
  type: boolean
12642
13363
  description: When true, submits as a gasless (ERC-4337) transaction via Pimlico paymaster. The paymaster sponsors the gas cost.
12643
13364
  default: false
13365
+ token_mint:
13366
+ type: string
13367
+ description: Token contract address / mint (ERC-20, SPL, TRC-20, Cardano policy_id.asset_name)
13368
+ memo:
13369
+ type: string
13370
+ description: Transaction memo (Solana Memo Program, XRP Memos, Tron extra_data)
13371
+ destination_tag:
13372
+ type: integer
13373
+ description: XRP destination tag
13374
+ fee_rate_sat_per_vbyte:
13375
+ type: integer
13376
+ description: Bitcoin fee rate in sat/vbyte
13377
+ xrpl_tx_json:
13378
+ type: object
13379
+ description: Raw XRPL transaction JSON for advanced XRP transaction types
13380
+ fee_limit_sun:
13381
+ type: integer
13382
+ description: Tron fee limit in sun
13383
+ token_decimals:
13384
+ type: integer
13385
+ description: Token decimals (required for non-EVM token transfers when not in known_tokens)
13386
+ ttl:
13387
+ type: integer
13388
+ description: Cardano transaction TTL (slot number)
12644
13389
 
12645
13390
  TreasuryWalletSendResponse:
12646
13391
  type: object
@@ -15546,3 +16291,318 @@ components:
15546
16291
  type: array
15547
16292
  items:
15548
16293
  $ref: "#/components/schemas/OAuthAppCredentialResponse"
16294
+
16295
+ # -------------------------------------------------------------------
16296
+ # Key Import
16297
+ # -------------------------------------------------------------------
16298
+
16299
+ ImportKeyRequest:
16300
+ type: object
16301
+ required: [private_key]
16302
+ properties:
16303
+ private_key:
16304
+ type: string
16305
+ description: The private key to import
16306
+ format:
16307
+ type: string
16308
+ enum: [hex, base64, wif]
16309
+ description: Key format (default hex)
16310
+
16311
+ # -------------------------------------------------------------------
16312
+ # Cedar Policies
16313
+ # -------------------------------------------------------------------
16314
+
16315
+ CreateCedarPolicyRequest:
16316
+ type: object
16317
+ required: [policy_text]
16318
+ properties:
16319
+ policy_text:
16320
+ type: string
16321
+ description: Cedar policy text
16322
+ description:
16323
+ type: string
16324
+
16325
+ CedarPolicyResponse:
16326
+ type: object
16327
+ properties:
16328
+ id:
16329
+ type: string
16330
+ format: uuid
16331
+ policy_text:
16332
+ type: string
16333
+ description:
16334
+ type: string
16335
+ created_at:
16336
+ type: string
16337
+ format: date-time
16338
+ created_by:
16339
+ type: string
16340
+ format: uuid
16341
+
16342
+ CedarPolicyListResponse:
16343
+ type: object
16344
+ properties:
16345
+ policies:
16346
+ type: array
16347
+ items:
16348
+ $ref: "#/components/schemas/CedarPolicyResponse"
16349
+
16350
+ CedarPolicyTestRequest:
16351
+ type: object
16352
+ required: [principal, action, resource]
16353
+ properties:
16354
+ principal:
16355
+ type: string
16356
+ action:
16357
+ type: string
16358
+ resource:
16359
+ type: string
16360
+ context:
16361
+ type: object
16362
+
16363
+ CedarPolicyTestResponse:
16364
+ type: object
16365
+ properties:
16366
+ decision:
16367
+ type: string
16368
+ enum: [allow, deny]
16369
+ reasons:
16370
+ type: array
16371
+ items:
16372
+ type: string
16373
+
16374
+ # -------------------------------------------------------------------
16375
+ # OPA Policies
16376
+ # -------------------------------------------------------------------
16377
+
16378
+ CreateOpaPolicyRequest:
16379
+ type: object
16380
+ required: [rego_module]
16381
+ properties:
16382
+ rego_module:
16383
+ type: string
16384
+ description: OPA Rego module source
16385
+ description:
16386
+ type: string
16387
+ data:
16388
+ type: object
16389
+ description: Static data document for the policy
16390
+
16391
+ OpaPolicyResponse:
16392
+ type: object
16393
+ properties:
16394
+ id:
16395
+ type: string
16396
+ format: uuid
16397
+ rego_module:
16398
+ type: string
16399
+ description:
16400
+ type: string
16401
+ data:
16402
+ type: object
16403
+ created_at:
16404
+ type: string
16405
+ format: date-time
16406
+ created_by:
16407
+ type: string
16408
+ format: uuid
16409
+
16410
+ OpaPolicyListResponse:
16411
+ type: object
16412
+ properties:
16413
+ policies:
16414
+ type: array
16415
+ items:
16416
+ $ref: "#/components/schemas/OpaPolicyResponse"
16417
+
16418
+ OpaPolicyTestRequest:
16419
+ type: object
16420
+ required: [input]
16421
+ properties:
16422
+ input:
16423
+ type: object
16424
+ description: Input document for policy evaluation
16425
+ data:
16426
+ type: object
16427
+ description: Optional data override
16428
+
16429
+ OpaPolicyTestResponse:
16430
+ type: object
16431
+ properties:
16432
+ result:
16433
+ type: object
16434
+ decision:
16435
+ type: string
16436
+ enum: [allow, deny]
16437
+
16438
+ # -------------------------------------------------------------------
16439
+ # Sub-Organizations
16440
+ # -------------------------------------------------------------------
16441
+
16442
+ CreateSubOrgRequest:
16443
+ type: object
16444
+ required: [name]
16445
+ properties:
16446
+ name:
16447
+ type: string
16448
+ minLength: 1
16449
+ maxLength: 128
16450
+ description:
16451
+ type: string
16452
+ billing_model:
16453
+ type: string
16454
+ enum: [inherit, independent]
16455
+ default: inherit
16456
+
16457
+ SubOrgResponse:
16458
+ type: object
16459
+ properties:
16460
+ id:
16461
+ type: string
16462
+ format: uuid
16463
+ parent_org_id:
16464
+ type: string
16465
+ format: uuid
16466
+ name:
16467
+ type: string
16468
+ description:
16469
+ type: string
16470
+ billing_model:
16471
+ type: string
16472
+ status:
16473
+ type: string
16474
+ enum: [active, archived]
16475
+ created_at:
16476
+ type: string
16477
+ format: date-time
16478
+
16479
+ SubOrgListResponse:
16480
+ type: object
16481
+ properties:
16482
+ sub_orgs:
16483
+ type: array
16484
+ items:
16485
+ $ref: "#/components/schemas/SubOrgResponse"
16486
+
16487
+ SubOrgPermissionRequest:
16488
+ type: object
16489
+ required: [permission]
16490
+ properties:
16491
+ permission:
16492
+ type: string
16493
+ description: "Permission to grant (e.g. vaults:read, agents:write)"
16494
+ resource_ids:
16495
+ type: array
16496
+ items:
16497
+ type: string
16498
+ format: uuid
16499
+
16500
+ SubOrgAddUserRequest:
16501
+ type: object
16502
+ required: [user_id]
16503
+ properties:
16504
+ user_id:
16505
+ type: string
16506
+ format: uuid
16507
+ role:
16508
+ type: string
16509
+ enum: [admin, member, viewer]
16510
+ default: member
16511
+
16512
+ SubOrgGenerateWalletsRequest:
16513
+ type: object
16514
+ properties:
16515
+ chains:
16516
+ type: array
16517
+ items:
16518
+ type: string
16519
+
16520
+ # -------------------------------------------------------------------
16521
+ # Portfolio
16522
+ # -------------------------------------------------------------------
16523
+
16524
+ PortfolioResponse:
16525
+ type: object
16526
+ properties:
16527
+ wallets:
16528
+ type: array
16529
+ items:
16530
+ $ref: "#/components/schemas/PortfolioWalletEntry"
16531
+ total_usd_estimate:
16532
+ type: string
16533
+
16534
+ PortfolioWalletEntry:
16535
+ type: object
16536
+ properties:
16537
+ wallet_type:
16538
+ type: string
16539
+ enum: [treasury, signing_key, smart_account]
16540
+ chain:
16541
+ type: string
16542
+ address:
16543
+ type: string
16544
+ native_balance:
16545
+ type: string
16546
+ native_balance_usd:
16547
+ type: string
16548
+ tokens:
16549
+ type: array
16550
+ items:
16551
+ $ref: "#/components/schemas/PortfolioTokenBalance"
16552
+
16553
+ PortfolioTokenBalance:
16554
+ type: object
16555
+ properties:
16556
+ contract_address:
16557
+ type: string
16558
+ symbol:
16559
+ type: string
16560
+ name:
16561
+ type: string
16562
+ balance:
16563
+ type: string
16564
+ balance_usd:
16565
+ type: string
16566
+ decimals:
16567
+ type: integer
16568
+
16569
+ # -------------------------------------------------------------------
16570
+ # Smart Account Import
16571
+ # -------------------------------------------------------------------
16572
+
16573
+ ImportSmartAccountRequest:
16574
+ type: object
16575
+ required: [chain, chain_id, safe_address]
16576
+ properties:
16577
+ chain:
16578
+ type: string
16579
+ chain_id:
16580
+ type: integer
16581
+ safe_address:
16582
+ type: string
16583
+ verify:
16584
+ type: boolean
16585
+ default: true
16586
+ description: Verify on-chain Safe ownership
16587
+
16588
+ ImportSmartAccountResponse:
16589
+ type: object
16590
+ properties:
16591
+ id:
16592
+ type: string
16593
+ format: uuid
16594
+ agent_id:
16595
+ type: string
16596
+ format: uuid
16597
+ chain:
16598
+ type: string
16599
+ chain_id:
16600
+ type: integer
16601
+ safe_address:
16602
+ type: string
16603
+ nonce:
16604
+ type: integer
16605
+ nullable: true
16606
+ created_at:
16607
+ type: string
16608
+ format: date-time