@1claw/openapi-spec 0.45.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 +8008 -6082
  2. package/openapi.yaml +1346 -68
  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.34.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,
@@ -96,6 +96,16 @@ tags:
96
96
  description: External messaging channels (Telegram, WhatsApp, Discord)
97
97
  - name: OAuth Connect
98
98
  description: OAuth connected accounts for agents (provider registry, connect flows, app credentials)
99
+ - name: Delegations
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
99
109
 
100
110
  # =============================================================================
101
111
  # PATHS
@@ -2451,6 +2461,41 @@ paths:
2451
2461
  "404":
2452
2462
  $ref: "#/components/responses/NotFound"
2453
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
+
2454
2499
  # ---------------------------------------------------------------------------
2455
2500
  # Bankr Dynamic Key Vending
2456
2501
  # ---------------------------------------------------------------------------
@@ -2526,6 +2571,154 @@ paths:
2526
2571
  "404":
2527
2572
  $ref: "#/components/responses/NotFound"
2528
2573
 
2574
+ # ---------------------------------------------------------------------------
2575
+ # Agent Delegations
2576
+ # ---------------------------------------------------------------------------
2577
+
2578
+ /v1/agents/{agent_id}/delegations:
2579
+ post:
2580
+ tags: [Delegations]
2581
+ summary: Create a delegation
2582
+ description: |
2583
+ Grant an agent (delegator) permission to delegate tasks to another agent (delegate).
2584
+ Human-only — agents cannot create their own delegations.
2585
+ operationId: createDelegation
2586
+ parameters:
2587
+ - $ref: "#/components/parameters/AgentId"
2588
+ requestBody:
2589
+ required: true
2590
+ content:
2591
+ application/json:
2592
+ schema:
2593
+ $ref: "#/components/schemas/CreateDelegationRequest"
2594
+ responses:
2595
+ "201":
2596
+ description: Delegation created
2597
+ content:
2598
+ application/json:
2599
+ schema:
2600
+ $ref: "#/components/schemas/DelegationResponse"
2601
+ "400":
2602
+ $ref: "#/components/responses/BadRequest"
2603
+ "403":
2604
+ $ref: "#/components/responses/Forbidden"
2605
+ "409":
2606
+ description: Delegation already exists for this delegator/delegate pair
2607
+ content:
2608
+ application/json:
2609
+ schema:
2610
+ $ref: "#/components/schemas/ProblemDetails"
2611
+ get:
2612
+ tags: [Delegations]
2613
+ summary: List delegations for an agent
2614
+ description: |
2615
+ List all delegations where this agent is the delegator.
2616
+ operationId: listDelegations
2617
+ parameters:
2618
+ - $ref: "#/components/parameters/AgentId"
2619
+ responses:
2620
+ "200":
2621
+ description: List of delegations
2622
+ content:
2623
+ application/json:
2624
+ schema:
2625
+ $ref: "#/components/schemas/DelegationListResponse"
2626
+ "404":
2627
+ $ref: "#/components/responses/NotFound"
2628
+
2629
+ /v1/agents/{agent_id}/delegations/effective:
2630
+ get:
2631
+ tags: [Delegations]
2632
+ summary: Get effective delegations
2633
+ description: |
2634
+ Get the effective delegations for an agent, including daily usage statistics.
2635
+ Agents can call this on their own ID to discover what they are authorized to delegate to.
2636
+ operationId: getEffectiveDelegations
2637
+ parameters:
2638
+ - $ref: "#/components/parameters/AgentId"
2639
+ responses:
2640
+ "200":
2641
+ description: Effective delegations with usage stats
2642
+ content:
2643
+ application/json:
2644
+ schema:
2645
+ $ref: "#/components/schemas/DelegationListResponse"
2646
+ "404":
2647
+ $ref: "#/components/responses/NotFound"
2648
+
2649
+ /v1/agents/{agent_id}/delegations/{delegation_id}:
2650
+ get:
2651
+ tags: [Delegations]
2652
+ summary: Get a specific delegation
2653
+ operationId: getDelegation
2654
+ parameters:
2655
+ - $ref: "#/components/parameters/AgentId"
2656
+ - name: delegation_id
2657
+ in: path
2658
+ required: true
2659
+ schema:
2660
+ type: string
2661
+ format: uuid
2662
+ responses:
2663
+ "200":
2664
+ description: Delegation details
2665
+ content:
2666
+ application/json:
2667
+ schema:
2668
+ $ref: "#/components/schemas/DelegationResponse"
2669
+ "404":
2670
+ $ref: "#/components/responses/NotFound"
2671
+ patch:
2672
+ tags: [Delegations]
2673
+ summary: Update a delegation
2674
+ description: |
2675
+ Update delegation tools, limits, mode, or active status. Human-only.
2676
+ operationId: updateDelegation
2677
+ parameters:
2678
+ - $ref: "#/components/parameters/AgentId"
2679
+ - name: delegation_id
2680
+ in: path
2681
+ required: true
2682
+ schema:
2683
+ type: string
2684
+ format: uuid
2685
+ requestBody:
2686
+ required: true
2687
+ content:
2688
+ application/json:
2689
+ schema:
2690
+ $ref: "#/components/schemas/UpdateDelegationRequest"
2691
+ responses:
2692
+ "200":
2693
+ description: Delegation updated
2694
+ content:
2695
+ application/json:
2696
+ schema:
2697
+ $ref: "#/components/schemas/DelegationResponse"
2698
+ "400":
2699
+ $ref: "#/components/responses/BadRequest"
2700
+ "403":
2701
+ $ref: "#/components/responses/Forbidden"
2702
+ "404":
2703
+ $ref: "#/components/responses/NotFound"
2704
+ delete:
2705
+ tags: [Delegations]
2706
+ summary: Revoke a delegation
2707
+ operationId: revokeDelegation
2708
+ parameters:
2709
+ - $ref: "#/components/parameters/AgentId"
2710
+ - name: delegation_id
2711
+ in: path
2712
+ required: true
2713
+ schema:
2714
+ type: string
2715
+ format: uuid
2716
+ responses:
2717
+ "204":
2718
+ description: Delegation revoked
2719
+ "404":
2720
+ $ref: "#/components/responses/NotFound"
2721
+
2529
2722
  # ---------------------------------------------------------------------------
2530
2723
  # Unified Signing Intent
2531
2724
  # ---------------------------------------------------------------------------
@@ -3383,6 +3576,23 @@ paths:
3383
3576
  schema:
3384
3577
  $ref: "#/components/schemas/LlmDisableResponse"
3385
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
+
3386
3596
  /v1/billing/overage-method:
3387
3597
  patch:
3388
3598
  tags: [Billing]
@@ -4312,6 +4522,40 @@ paths:
4312
4522
  "404":
4313
4523
  $ref: "#/components/responses/NotFound"
4314
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
+
4315
4559
  /v1/treasury/wallets/spend-policy:
4316
4560
  get:
4317
4561
  tags: [Treasury Wallets]
@@ -8553,66 +8797,586 @@ paths:
8553
8797
  "302":
8554
8798
  description: Redirect to dashboard with success or error status
8555
8799
 
8556
- # =============================================================================
8557
- # COMPONENTS
8558
- # =============================================================================
8800
+ # ---------------------------------------------------------------------------
8801
+ # Cedar Policies
8802
+ # ---------------------------------------------------------------------------
8559
8803
 
8560
- components:
8561
- securitySchemes:
8562
- BearerAuth:
8563
- type: http
8564
- scheme: bearer
8565
- bearerFormat: JWT
8566
- ApiKeyAuth:
8567
- type: http
8568
- scheme: bearer
8569
- 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"
8570
8847
 
8571
- parameters:
8572
- VaultId:
8573
- name: vault_id
8574
- in: path
8575
- required: true
8576
- schema:
8577
- type: string
8578
- format: uuid
8579
- SecretPath:
8580
- name: path
8581
- in: path
8582
- required: true
8583
- schema:
8584
- type: string
8585
- description: Secret path (e.g. "db/credentials")
8586
- AgentId:
8587
- name: agent_id
8588
- in: path
8589
- required: true
8590
- schema:
8591
- type: string
8592
- format: uuid
8593
- PolicyId:
8594
- name: policy_id
8595
- in: path
8596
- required: true
8597
- schema:
8598
- type: string
8599
- format: uuid
8600
- CardId:
8601
- name: card_id
8602
- in: path
8603
- required: true
8604
- schema:
8605
- type: string
8606
- format: uuid
8607
- IncludeSignedTx:
8608
- name: include_signed_tx
8609
- in: query
8610
- required: false
8611
- description: >
8612
- Set to `true` or `1` to include the raw signed transaction hex in the response.
8613
- 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.
8614
- Applies to GET /v1/agents/{agent_id}/transactions and GET /v1/agents/{agent_id}/transactions/{tx_id}.
8615
- schema:
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"
8895
+
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"
8921
+
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:
8616
9380
  type: boolean
8617
9381
  default: false
8618
9382
  example: false
@@ -9525,6 +10289,17 @@ components:
9525
10289
  expires_at:
9526
10290
  type: string
9527
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
9528
10303
 
9529
10304
  UpdatePolicyRequest:
9530
10305
  type: object
@@ -9539,6 +10314,17 @@ components:
9539
10314
  expires_at:
9540
10315
  type: string
9541
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
9542
10328
 
9543
10329
  PolicyResponse:
9544
10330
  type: object
@@ -9582,6 +10368,17 @@ components:
9582
10368
  created_at:
9583
10369
  type: string
9584
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
9585
10382
 
9586
10383
  PolicyListResponse:
9587
10384
  type: object
@@ -10998,24 +11795,154 @@ components:
10998
11795
  format: uuid
10999
11796
  wallet_id:
11000
11797
  type: string
11001
- bankr_key_id:
11798
+ bankr_key_id:
11799
+ type: string
11800
+ permissions:
11801
+ type: object
11802
+ expires_at:
11803
+ type: string
11804
+ format: date-time
11805
+ created_at:
11806
+ type: string
11807
+ format: date-time
11808
+
11809
+ BankrKeyLeaseListResponse:
11810
+ type: object
11811
+ properties:
11812
+ leases:
11813
+ type: array
11814
+ items:
11815
+ $ref: "#/components/schemas/BankrKeyLeaseResponse"
11816
+
11817
+ # Agent Delegations
11818
+ CreateDelegationRequest:
11819
+ type: object
11820
+ required: [delegate_id]
11821
+ properties:
11822
+ delegate_id:
11823
+ type: string
11824
+ format: uuid
11825
+ description: The agent ID to delegate to.
11826
+ allowed_tools:
11827
+ type: array
11828
+ items:
11829
+ type: string
11830
+ description: Tool names the delegate may use. Empty means all tools allowed.
11831
+ blocked_tools:
11832
+ type: array
11833
+ items:
11834
+ type: string
11835
+ description: Tool names the delegate may NOT use.
11836
+ max_daily_delegations:
11837
+ type: integer
11838
+ description: Maximum delegation calls per UTC day. NULL means unlimited.
11839
+ max_depth:
11840
+ type: integer
11841
+ description: Maximum delegation chain depth (default 3).
11842
+ default: 3
11843
+ guardrails:
11844
+ type: object
11845
+ description: Additional guardrail constraints for this delegation.
11846
+ delegation_mode:
11847
+ type: string
11848
+ enum: [caller, target, both]
11849
+ description: "Execution mode: caller (use delegator's creds), target (use delegate's config), or both."
11850
+ default: caller
11851
+ expires_at:
11852
+ type: string
11853
+ format: date-time
11854
+ description: Optional expiration timestamp.
11855
+
11856
+ UpdateDelegationRequest:
11857
+ type: object
11858
+ properties:
11859
+ allowed_tools:
11860
+ type: array
11861
+ items:
11862
+ type: string
11863
+ blocked_tools:
11864
+ type: array
11865
+ items:
11866
+ type: string
11867
+ max_daily_delegations:
11868
+ type: integer
11869
+ max_depth:
11870
+ type: integer
11871
+ guardrails:
11872
+ type: object
11873
+ delegation_mode:
11874
+ type: string
11875
+ enum: [caller, target, both]
11876
+ is_active:
11877
+ type: boolean
11878
+ expires_at:
11879
+ type: string
11880
+ format: date-time
11881
+ nullable: true
11882
+
11883
+ DelegationResponse:
11884
+ type: object
11885
+ properties:
11886
+ id:
11887
+ type: string
11888
+ format: uuid
11889
+ org_id:
11890
+ type: string
11891
+ format: uuid
11892
+ delegator_id:
11893
+ type: string
11894
+ format: uuid
11895
+ delegate_id:
11896
+ type: string
11897
+ format: uuid
11898
+ delegator_name:
11899
+ type: string
11900
+ delegate_name:
11901
+ type: string
11902
+ allowed_tools:
11903
+ type: array
11904
+ items:
11905
+ type: string
11906
+ blocked_tools:
11907
+ type: array
11908
+ items:
11909
+ type: string
11910
+ max_daily_delegations:
11911
+ type: integer
11912
+ nullable: true
11913
+ max_depth:
11914
+ type: integer
11915
+ guardrails:
11916
+ type: object
11917
+ delegation_mode:
11918
+ type: string
11919
+ enum: [caller, target, both]
11920
+ is_active:
11921
+ type: boolean
11922
+ created_by:
11002
11923
  type: string
11003
- permissions:
11004
- type: object
11924
+ format: uuid
11005
11925
  expires_at:
11006
11926
  type: string
11007
11927
  format: date-time
11928
+ nullable: true
11008
11929
  created_at:
11009
11930
  type: string
11010
11931
  format: date-time
11932
+ updated_at:
11933
+ type: string
11934
+ format: date-time
11935
+ delegations_today:
11936
+ type: integer
11937
+ description: Number of delegations used today (present in effective endpoint).
11011
11938
 
11012
- BankrKeyLeaseListResponse:
11939
+ DelegationListResponse:
11013
11940
  type: object
11014
11941
  properties:
11015
- leases:
11942
+ delegations:
11016
11943
  type: array
11017
11944
  items:
11018
- $ref: "#/components/schemas/BankrKeyLeaseResponse"
11945
+ $ref: "#/components/schemas/DelegationResponse"
11019
11946
 
11020
11947
  # Unified Signing Intent
11021
11948
  SignIntentRequest:
@@ -11733,6 +12660,14 @@ components:
11733
12660
  $ref: "#/components/schemas/LlmCreditBalance"
11734
12661
  billing_cycle_usage:
11735
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
11736
12671
 
11737
12672
  LlmCheckoutResponse:
11738
12673
  type: object
@@ -11740,6 +12675,25 @@ components:
11740
12675
  checkout_url:
11741
12676
  type: string
11742
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
11743
12697
 
11744
12698
  LlmDisableResponse:
11745
12699
  type: object
@@ -12350,7 +13304,7 @@ components:
12350
13304
  description: Destination address (0x-prefixed)
12351
13305
  value_wei:
12352
13306
  type: string
12353
- description: Value in wei
13307
+ description: Value in wei (or major-unit decimal string for non-EVM)
12354
13308
  data:
12355
13309
  type: string
12356
13310
  description: Hex-encoded calldata (optional)
@@ -12361,6 +13315,30 @@ components:
12361
13315
  type: boolean
12362
13316
  description: When true, submits as a gasless (ERC-4337) transaction via Pimlico paymaster. The paymaster sponsors the gas cost.
12363
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)
12364
13342
 
12365
13343
  TreasuryWalletSendResponse:
12366
13344
  type: object
@@ -14932,7 +15910,11 @@ components:
14932
15910
  Discord: { bot_token, application_id }.
14933
15911
  slash_commands_enabled:
14934
15912
  type: boolean
14935
- description: Enable slash commands on this channel
15913
+ description: |
15914
+ Enable Hermes-compatible slash commands on this channel. When true,
15915
+ messages starting with `/` are handled before the LLM. Commands:
15916
+ /help, /new, /reset, /clear, /model, /mode, /personality, /retry,
15917
+ /undo, /compress, /summarize, /stop, /status, /skills, /usage, /sethome.
14936
15918
  voice_transcription_enabled:
14937
15919
  type: boolean
14938
15920
  description: Enable voice message transcription
@@ -15000,7 +15982,10 @@ components:
15000
15982
  - auto_respond_enabled (boolean): whether the agent auto-responds to inbound messages
15001
15983
  slash_commands_enabled:
15002
15984
  type: boolean
15003
- description: Whether slash commands are enabled for this channel
15985
+ description: |
15986
+ Whether Hermes-compatible slash commands are enabled for this channel.
15987
+ Commands: /help, /new, /reset, /clear, /model, /mode, /personality, /retry,
15988
+ /undo, /compress, /summarize, /stop, /status, /skills, /usage, /sethome.
15004
15989
  voice_transcription_enabled:
15005
15990
  type: boolean
15006
15991
  description: Whether voice message transcription is enabled
@@ -15259,3 +16244,296 @@ components:
15259
16244
  type: array
15260
16245
  items:
15261
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