@1claw/openapi-spec 0.46.0 → 0.47.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.
Files changed (3) hide show
  1. package/openapi.json +6893 -5391
  2. package/openapi.yaml +1105 -114
  3. package/package.json +1 -1
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,639 @@ 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}/wallets/generate:
9234
+ post:
9235
+ tags: [Sub-Organizations]
9236
+ summary: Generate wallets for a sub-organization
9237
+ description: Generate treasury wallets for specified chains within the sub-org.
9238
+ operationId: generateSubOrgWallets
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
+ requestBody:
9249
+ required: false
9250
+ content:
9251
+ application/json:
9252
+ schema:
9253
+ $ref: "#/components/schemas/SubOrgGenerateWalletsRequest"
9254
+ responses:
9255
+ "201":
9256
+ description: Wallets generated
9257
+ "401":
9258
+ $ref: "#/components/responses/Unauthorized"
9259
+ "403":
9260
+ $ref: "#/components/responses/Forbidden"
9261
+ "404":
9262
+ $ref: "#/components/responses/NotFound"
9263
+
9264
+ # ---------------------------------------------------------------------------
9265
+ # Portfolio
9266
+ # ---------------------------------------------------------------------------
9267
+
9268
+ /v1/portfolio:
9269
+ get:
9270
+ tags: [Portfolio]
9271
+ summary: Get unified portfolio
9272
+ description: |
9273
+ Returns an aggregated view of all wallet balances (treasury wallets,
9274
+ signing keys, smart accounts) with USD estimates.
9275
+ operationId: getPortfolio
9276
+ security:
9277
+ - BearerAuth: []
9278
+ responses:
9279
+ "200":
9280
+ description: Portfolio summary
9281
+ content:
9282
+ application/json:
9283
+ schema:
9284
+ $ref: "#/components/schemas/PortfolioResponse"
9285
+ "401":
9286
+ $ref: "#/components/responses/Unauthorized"
9287
+
9288
+ # ---------------------------------------------------------------------------
9289
+ # Smart Account Import
9290
+ # ---------------------------------------------------------------------------
9291
+
9292
+ /v1/agents/{agent_id}/smart-accounts/import:
9293
+ post:
9294
+ tags: [Agents]
9295
+ summary: Import an existing Safe smart account
9296
+ description: |
9297
+ Import an existing Safe smart account for an agent. Optionally verifies
9298
+ on-chain that the agent's EOA is a signer on the Safe.
9299
+ operationId: importSmartAccount
9300
+ security:
9301
+ - BearerAuth: []
9302
+ parameters:
9303
+ - $ref: "#/components/parameters/AgentId"
9304
+ requestBody:
9305
+ required: true
9306
+ content:
9307
+ application/json:
9308
+ schema:
9309
+ $ref: "#/components/schemas/ImportSmartAccountRequest"
9310
+ responses:
9311
+ "201":
9312
+ description: Smart account imported
9313
+ "400":
9314
+ $ref: "#/components/responses/BadRequest"
9315
+ "401":
9316
+ $ref: "#/components/responses/Unauthorized"
9317
+ "403":
9318
+ $ref: "#/components/responses/Forbidden"
9319
+
9320
+ # =============================================================================
9321
+ # COMPONENTS
9322
+ # =============================================================================
9323
+
9324
+ components:
9325
+ securitySchemes:
9326
+ BearerAuth:
9327
+ type: http
9328
+ scheme: bearer
9329
+ bearerFormat: JWT
9330
+ ApiKeyAuth:
9331
+ type: http
9332
+ scheme: bearer
9333
+ description: 1ck_ prefixed API key used as Bearer token
9334
+
9335
+ parameters:
9336
+ VaultId:
9337
+ name: vault_id
9338
+ in: path
9339
+ required: true
9340
+ schema:
9341
+ type: string
9342
+ format: uuid
9343
+ SecretPath:
9344
+ name: path
9345
+ in: path
9346
+ required: true
9347
+ schema:
9348
+ type: string
9349
+ description: Secret path (e.g. "db/credentials")
9350
+ AgentId:
9351
+ name: agent_id
9352
+ in: path
9353
+ required: true
9354
+ schema:
9355
+ type: string
9356
+ format: uuid
9357
+ PolicyId:
9358
+ name: policy_id
9359
+ in: path
9360
+ required: true
9361
+ schema:
9362
+ type: string
9363
+ format: uuid
9364
+ CardId:
9365
+ name: card_id
9366
+ in: path
9367
+ required: true
9368
+ schema:
9369
+ type: string
9370
+ format: uuid
9371
+ IncludeSignedTx:
9372
+ name: include_signed_tx
9373
+ in: query
9374
+ required: false
9375
+ description: >
9376
+ Set to `true` or `1` to include the raw signed transaction hex in the response.
9377
+ 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.
9378
+ Applies to GET /v1/agents/{agent_id}/transactions and GET /v1/agents/{agent_id}/transactions/{tx_id}.
9379
+ schema:
9380
+ type: boolean
9381
+ default: false
9382
+ example: false
9383
+
9384
+ responses:
9385
+ BadRequest:
9386
+ description: Invalid request
9387
+ content:
9388
+ application/json:
9389
+ schema:
9390
+ $ref: "#/components/schemas/ProblemDetails"
9391
+ Unauthorized:
9392
+ description: Authentication required or invalid
9393
+ content:
9394
+ application/json:
9395
+ schema:
9396
+ $ref: "#/components/schemas/ProblemDetails"
9397
+ Forbidden:
9398
+ description: Insufficient permissions
9399
+ content:
9400
+ application/json:
9401
+ schema:
9402
+ $ref: "#/components/schemas/ProblemDetails"
9403
+ NotFound:
9404
+ description: Resource not found
9405
+ content:
9406
+ application/json:
9407
+ schema:
9408
+ $ref: "#/components/schemas/ProblemDetails"
9409
+ PaymentRequired:
9410
+ description: x402 payment required
9411
+ content:
9412
+ application/json:
9413
+ schema:
9414
+ $ref: "#/components/schemas/PaymentRequirement"
9415
+ Conflict:
9416
+ description: Resource already exists or conflict
9417
+ content:
9418
+ application/json:
9419
+ schema:
9420
+ $ref: "#/components/schemas/ProblemDetails"
9421
+
9422
+ schemas:
9423
+ OrderCardRequest:
9424
+ type: object
9425
+ required: [kind, amount_usd]
9426
+ properties:
9427
+ kind:
9428
+ type: string
9429
+ enum: [prepaid, gift_card]
9430
+ amount_usd:
9431
+ type: string
9432
+ description: USD amount to load onto the card.
8819
9433
  example: "25.00"
8820
9434
  laso_server_id:
8821
9435
  type: string
@@ -9672,9 +10286,20 @@ components:
9672
10286
  conditions:
9673
10287
  type: object
9674
10288
  additionalProperties: true
9675
- expires_at:
9676
- type: string
9677
- format: date-time
10289
+ expires_at:
10290
+ type: string
10291
+ format: date-time
10292
+ effect:
10293
+ type: string
10294
+ enum: [allow, deny]
10295
+ default: allow
10296
+ priority:
10297
+ type: integer
10298
+ minimum: 0
10299
+ default: 0
10300
+ attribute_conditions:
10301
+ type: object
10302
+ additionalProperties: true
9678
10303
 
9679
10304
  UpdatePolicyRequest:
9680
10305
  type: object
@@ -9689,6 +10314,17 @@ components:
9689
10314
  expires_at:
9690
10315
  type: string
9691
10316
  format: date-time
10317
+ effect:
10318
+ type: string
10319
+ enum: [allow, deny]
10320
+ default: allow
10321
+ priority:
10322
+ type: integer
10323
+ minimum: 0
10324
+ default: 0
10325
+ attribute_conditions:
10326
+ type: object
10327
+ additionalProperties: true
9692
10328
 
9693
10329
  PolicyResponse:
9694
10330
  type: object
@@ -9732,6 +10368,17 @@ components:
9732
10368
  created_at:
9733
10369
  type: string
9734
10370
  format: date-time
10371
+ effect:
10372
+ type: string
10373
+ enum: [allow, deny]
10374
+ default: allow
10375
+ priority:
10376
+ type: integer
10377
+ minimum: 0
10378
+ default: 0
10379
+ attribute_conditions:
10380
+ type: object
10381
+ additionalProperties: true
9735
10382
 
9736
10383
  PolicyListResponse:
9737
10384
  type: object
@@ -12013,6 +12660,14 @@ components:
12013
12660
  $ref: "#/components/schemas/LlmCreditBalance"
12014
12661
  billing_cycle_usage:
12015
12662
  $ref: "#/components/schemas/LlmBillingCycleUsage"
12663
+ active_subscription_count:
12664
+ type: integer
12665
+ subscription_ids:
12666
+ type: array
12667
+ items:
12668
+ type: string
12669
+ warning:
12670
+ type: string
12016
12671
 
12017
12672
  LlmCheckoutResponse:
12018
12673
  type: object
@@ -12020,6 +12675,25 @@ components:
12020
12675
  checkout_url:
12021
12676
  type: string
12022
12677
  format: uri
12678
+ already_subscribed:
12679
+ type: boolean
12680
+ subscription_id:
12681
+ type: string
12682
+
12683
+ LlmCancelDuplicatesResponse:
12684
+ type: object
12685
+ required: [cancelled_count, cancelled_subscription_ids, remaining_subscription_ids]
12686
+ properties:
12687
+ cancelled_count:
12688
+ type: integer
12689
+ cancelled_subscription_ids:
12690
+ type: array
12691
+ items:
12692
+ type: string
12693
+ remaining_subscription_ids:
12694
+ type: array
12695
+ items:
12696
+ type: string
12023
12697
 
12024
12698
  LlmDisableResponse:
12025
12699
  type: object
@@ -12630,7 +13304,7 @@ components:
12630
13304
  description: Destination address (0x-prefixed)
12631
13305
  value_wei:
12632
13306
  type: string
12633
- description: Value in wei
13307
+ description: Value in wei (or major-unit decimal string for non-EVM)
12634
13308
  data:
12635
13309
  type: string
12636
13310
  description: Hex-encoded calldata (optional)
@@ -12641,6 +13315,30 @@ components:
12641
13315
  type: boolean
12642
13316
  description: When true, submits as a gasless (ERC-4337) transaction via Pimlico paymaster. The paymaster sponsors the gas cost.
12643
13317
  default: false
13318
+ token_mint:
13319
+ type: string
13320
+ description: Token contract address / mint (ERC-20, SPL, TRC-20, Cardano policy_id.asset_name)
13321
+ memo:
13322
+ type: string
13323
+ description: Transaction memo (Solana Memo Program, XRP Memos, Tron extra_data)
13324
+ destination_tag:
13325
+ type: integer
13326
+ description: XRP destination tag
13327
+ fee_rate_sat_per_vbyte:
13328
+ type: integer
13329
+ description: Bitcoin fee rate in sat/vbyte
13330
+ xrpl_tx_json:
13331
+ type: object
13332
+ description: Raw XRPL transaction JSON for advanced XRP transaction types
13333
+ fee_limit_sun:
13334
+ type: integer
13335
+ description: Tron fee limit in sun
13336
+ token_decimals:
13337
+ type: integer
13338
+ description: Token decimals (required for non-EVM token transfers when not in known_tokens)
13339
+ ttl:
13340
+ type: integer
13341
+ description: Cardano transaction TTL (slot number)
12644
13342
 
12645
13343
  TreasuryWalletSendResponse:
12646
13344
  type: object
@@ -15546,3 +16244,296 @@ components:
15546
16244
  type: array
15547
16245
  items:
15548
16246
  $ref: "#/components/schemas/OAuthAppCredentialResponse"
16247
+
16248
+ # -------------------------------------------------------------------
16249
+ # Key Import
16250
+ # -------------------------------------------------------------------
16251
+
16252
+ ImportKeyRequest:
16253
+ type: object
16254
+ required: [private_key]
16255
+ properties:
16256
+ private_key:
16257
+ type: string
16258
+ description: The private key to import
16259
+ format:
16260
+ type: string
16261
+ enum: [hex, base64, wif]
16262
+ description: Key format (default hex)
16263
+
16264
+ # -------------------------------------------------------------------
16265
+ # Cedar Policies
16266
+ # -------------------------------------------------------------------
16267
+
16268
+ CreateCedarPolicyRequest:
16269
+ type: object
16270
+ required: [policy_text]
16271
+ properties:
16272
+ policy_text:
16273
+ type: string
16274
+ description: Cedar policy text
16275
+ description:
16276
+ type: string
16277
+
16278
+ CedarPolicyResponse:
16279
+ type: object
16280
+ properties:
16281
+ id:
16282
+ type: string
16283
+ format: uuid
16284
+ policy_text:
16285
+ type: string
16286
+ description:
16287
+ type: string
16288
+ created_at:
16289
+ type: string
16290
+ format: date-time
16291
+ created_by:
16292
+ type: string
16293
+ format: uuid
16294
+
16295
+ CedarPolicyListResponse:
16296
+ type: object
16297
+ properties:
16298
+ policies:
16299
+ type: array
16300
+ items:
16301
+ $ref: "#/components/schemas/CedarPolicyResponse"
16302
+
16303
+ CedarPolicyTestRequest:
16304
+ type: object
16305
+ required: [principal, action, resource]
16306
+ properties:
16307
+ principal:
16308
+ type: string
16309
+ action:
16310
+ type: string
16311
+ resource:
16312
+ type: string
16313
+ context:
16314
+ type: object
16315
+
16316
+ CedarPolicyTestResponse:
16317
+ type: object
16318
+ properties:
16319
+ decision:
16320
+ type: string
16321
+ enum: [allow, deny]
16322
+ reasons:
16323
+ type: array
16324
+ items:
16325
+ type: string
16326
+
16327
+ # -------------------------------------------------------------------
16328
+ # OPA Policies
16329
+ # -------------------------------------------------------------------
16330
+
16331
+ CreateOpaPolicyRequest:
16332
+ type: object
16333
+ required: [rego_module]
16334
+ properties:
16335
+ rego_module:
16336
+ type: string
16337
+ description: OPA Rego module source
16338
+ description:
16339
+ type: string
16340
+ data:
16341
+ type: object
16342
+ description: Static data document for the policy
16343
+
16344
+ OpaPolicyResponse:
16345
+ type: object
16346
+ properties:
16347
+ id:
16348
+ type: string
16349
+ format: uuid
16350
+ rego_module:
16351
+ type: string
16352
+ description:
16353
+ type: string
16354
+ data:
16355
+ type: object
16356
+ created_at:
16357
+ type: string
16358
+ format: date-time
16359
+ created_by:
16360
+ type: string
16361
+ format: uuid
16362
+
16363
+ OpaPolicyListResponse:
16364
+ type: object
16365
+ properties:
16366
+ policies:
16367
+ type: array
16368
+ items:
16369
+ $ref: "#/components/schemas/OpaPolicyResponse"
16370
+
16371
+ OpaPolicyTestRequest:
16372
+ type: object
16373
+ required: [input]
16374
+ properties:
16375
+ input:
16376
+ type: object
16377
+ description: Input document for policy evaluation
16378
+ data:
16379
+ type: object
16380
+ description: Optional data override
16381
+
16382
+ OpaPolicyTestResponse:
16383
+ type: object
16384
+ properties:
16385
+ result:
16386
+ type: object
16387
+ decision:
16388
+ type: string
16389
+ enum: [allow, deny]
16390
+
16391
+ # -------------------------------------------------------------------
16392
+ # Sub-Organizations
16393
+ # -------------------------------------------------------------------
16394
+
16395
+ CreateSubOrgRequest:
16396
+ type: object
16397
+ required: [name]
16398
+ properties:
16399
+ name:
16400
+ type: string
16401
+ minLength: 1
16402
+ maxLength: 128
16403
+ description:
16404
+ type: string
16405
+ billing_model:
16406
+ type: string
16407
+ enum: [inherit, independent]
16408
+ default: inherit
16409
+
16410
+ SubOrgResponse:
16411
+ type: object
16412
+ properties:
16413
+ id:
16414
+ type: string
16415
+ format: uuid
16416
+ parent_org_id:
16417
+ type: string
16418
+ format: uuid
16419
+ name:
16420
+ type: string
16421
+ description:
16422
+ type: string
16423
+ billing_model:
16424
+ type: string
16425
+ status:
16426
+ type: string
16427
+ enum: [active, archived]
16428
+ created_at:
16429
+ type: string
16430
+ format: date-time
16431
+
16432
+ SubOrgListResponse:
16433
+ type: object
16434
+ properties:
16435
+ sub_orgs:
16436
+ type: array
16437
+ items:
16438
+ $ref: "#/components/schemas/SubOrgResponse"
16439
+
16440
+ SubOrgPermissionRequest:
16441
+ type: object
16442
+ required: [permission]
16443
+ properties:
16444
+ permission:
16445
+ type: string
16446
+ description: "Permission to grant (e.g. vaults:read, agents:write)"
16447
+ resource_ids:
16448
+ type: array
16449
+ items:
16450
+ type: string
16451
+ format: uuid
16452
+
16453
+ SubOrgAddUserRequest:
16454
+ type: object
16455
+ required: [user_id]
16456
+ properties:
16457
+ user_id:
16458
+ type: string
16459
+ format: uuid
16460
+ role:
16461
+ type: string
16462
+ enum: [admin, member, viewer]
16463
+ default: member
16464
+
16465
+ SubOrgGenerateWalletsRequest:
16466
+ type: object
16467
+ properties:
16468
+ chains:
16469
+ type: array
16470
+ items:
16471
+ type: string
16472
+
16473
+ # -------------------------------------------------------------------
16474
+ # Portfolio
16475
+ # -------------------------------------------------------------------
16476
+
16477
+ PortfolioResponse:
16478
+ type: object
16479
+ properties:
16480
+ wallets:
16481
+ type: array
16482
+ items:
16483
+ $ref: "#/components/schemas/PortfolioWalletEntry"
16484
+ total_usd_estimate:
16485
+ type: string
16486
+
16487
+ PortfolioWalletEntry:
16488
+ type: object
16489
+ properties:
16490
+ wallet_type:
16491
+ type: string
16492
+ enum: [treasury, signing_key, smart_account]
16493
+ chain:
16494
+ type: string
16495
+ address:
16496
+ type: string
16497
+ native_balance:
16498
+ type: string
16499
+ native_balance_usd:
16500
+ type: string
16501
+ tokens:
16502
+ type: array
16503
+ items:
16504
+ $ref: "#/components/schemas/PortfolioTokenBalance"
16505
+
16506
+ PortfolioTokenBalance:
16507
+ type: object
16508
+ properties:
16509
+ contract_address:
16510
+ type: string
16511
+ symbol:
16512
+ type: string
16513
+ name:
16514
+ type: string
16515
+ balance:
16516
+ type: string
16517
+ balance_usd:
16518
+ type: string
16519
+ decimals:
16520
+ type: integer
16521
+
16522
+ # -------------------------------------------------------------------
16523
+ # Smart Account Import
16524
+ # -------------------------------------------------------------------
16525
+
16526
+ ImportSmartAccountRequest:
16527
+ type: object
16528
+ required: [chain, chain_id, safe_address]
16529
+ properties:
16530
+ chain:
16531
+ type: string
16532
+ chain_id:
16533
+ type: integer
16534
+ safe_address:
16535
+ type: string
16536
+ verify:
16537
+ type: boolean
16538
+ default: true
16539
+ description: Verify on-chain Safe ownership