@1claw/openapi-spec 0.56.3 → 0.58.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 +1245 -14
  2. package/openapi.yaml +826 -31
  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: 0.56.3
5
+ version: 0.58.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,
@@ -932,6 +932,8 @@ paths:
932
932
  properties:
933
933
  require_passkey_for_vaults:
934
934
  type: boolean
935
+ require_passkey_for_mfa:
936
+ type: boolean
935
937
  passkey_count:
936
938
  type: integer
937
939
  patch:
@@ -941,6 +943,10 @@ paths:
941
943
  Disabling `require_passkey_for_vaults` requires `X-Auth-Confirm`
942
944
  (purpose `security.vault_passkey.disable`) with a passkey or TOTP
943
945
  when either is enrolled.
946
+
947
+ Disabling `require_passkey_for_mfa` requires `X-Auth-Confirm`
948
+ (purpose `security.mfa_passkey.disable`) with a passkey or TOTP
949
+ when either is enrolled.
944
950
  operationId: updateSecuritySettings
945
951
  parameters:
946
952
  - name: X-Auth-Confirm
@@ -957,6 +963,8 @@ paths:
957
963
  properties:
958
964
  require_passkey_for_vaults:
959
965
  type: boolean
966
+ require_passkey_for_mfa:
967
+ type: boolean
960
968
  responses:
961
969
  "200":
962
970
  description: Updated settings
@@ -1071,6 +1079,54 @@ paths:
1071
1079
  "401":
1072
1080
  $ref: "#/components/responses/Unauthorized"
1073
1081
 
1082
+ /v1/auth/mfa/passkey/begin:
1083
+ post:
1084
+ tags: [Authentication]
1085
+ summary: Begin passkey MFA verification during login
1086
+ operationId: mfaPasskeyBegin
1087
+ security: []
1088
+ requestBody:
1089
+ required: true
1090
+ content:
1091
+ application/json:
1092
+ schema:
1093
+ type: object
1094
+ required: [mfa_token]
1095
+ properties:
1096
+ mfa_token:
1097
+ type: string
1098
+ responses:
1099
+ "200":
1100
+ description: WebAuthn challenge
1101
+ content:
1102
+ application/json:
1103
+ schema:
1104
+ $ref: "#/components/schemas/PasskeyAssertBeginResponse"
1105
+ "400":
1106
+ $ref: "#/components/responses/BadRequest"
1107
+
1108
+ /v1/auth/mfa/passkey/complete:
1109
+ post:
1110
+ tags: [Authentication]
1111
+ summary: Complete passkey MFA verification during login
1112
+ operationId: mfaPasskeyComplete
1113
+ security: []
1114
+ requestBody:
1115
+ required: true
1116
+ content:
1117
+ application/json:
1118
+ schema:
1119
+ $ref: "#/components/schemas/MfaPasskeyCompleteRequest"
1120
+ responses:
1121
+ "200":
1122
+ description: MFA verified, JWT issued
1123
+ content:
1124
+ application/json:
1125
+ schema:
1126
+ $ref: "#/components/schemas/TokenResponse"
1127
+ "401":
1128
+ $ref: "#/components/responses/Unauthorized"
1129
+
1074
1130
  /v1/auth/mfa:
1075
1131
  delete:
1076
1132
  tags: [Authentication]
@@ -5524,6 +5580,28 @@ paths:
5524
5580
  "401":
5525
5581
  $ref: "#/components/responses/Unauthorized"
5526
5582
 
5583
+ /v1/treasury/wallets/inference-budget:
5584
+ get:
5585
+ tags: [Treasury Wallets]
5586
+ summary: Get inference budget for current user
5587
+ description: |
5588
+ Returns the user's remaining LLM inference allowance when connected via a platform app.
5589
+ Includes allowance, spent, remaining USD, per-request cap, and billing period end.
5590
+ operationId: getUserInferenceBudget
5591
+ security:
5592
+ - BearerAuth: []
5593
+ responses:
5594
+ "200":
5595
+ description: Inference budget (or unconfigured message)
5596
+ content:
5597
+ application/json:
5598
+ schema:
5599
+ oneOf:
5600
+ - $ref: "#/components/schemas/InferenceBudgetResponse"
5601
+ - $ref: "#/components/schemas/InferenceBudgetUnconfiguredResponse"
5602
+ "403":
5603
+ $ref: "#/components/responses/Forbidden"
5604
+
5527
5605
  # ---------------------------------------------------------------------------
5528
5606
  # Webhooks
5529
5607
  # ---------------------------------------------------------------------------
@@ -6138,11 +6216,59 @@ paths:
6138
6216
  type: string
6139
6217
  format: uuid
6140
6218
  responses:
6141
- "204":
6142
- description: Deleted
6219
+ "200":
6220
+ description: Soft-deleted; slug released for reuse within the org
6221
+ content:
6222
+ application/json:
6223
+ schema:
6224
+ $ref: "#/components/schemas/PlatformAppDeleteResponse"
6143
6225
  "403":
6144
6226
  description: Only human users can delete platform apps
6145
6227
 
6228
+ /v1/platform/apps/{appId}/transfer-ownership:
6229
+ post:
6230
+ tags: [Platform]
6231
+ summary: Transfer platform app to another organization
6232
+ description: |
6233
+ Moves the platform app record to another organization. Requires org
6234
+ owner/admin in the source org and step-up auth (`X-Auth-Confirm`,
6235
+ purpose `platform.app.transfer`). End-user connections and provisioned
6236
+ resources remain in their original organizations.
6237
+ operationId: transferPlatformAppOwnership
6238
+ security:
6239
+ - BearerAuth: []
6240
+ parameters:
6241
+ - in: path
6242
+ name: appId
6243
+ required: true
6244
+ schema:
6245
+ type: string
6246
+ format: uuid
6247
+ - in: header
6248
+ name: X-Auth-Confirm
6249
+ required: true
6250
+ schema:
6251
+ type: string
6252
+ requestBody:
6253
+ required: true
6254
+ content:
6255
+ application/json:
6256
+ schema:
6257
+ $ref: "#/components/schemas/TransferPlatformAppOwnershipRequest"
6258
+ responses:
6259
+ "200":
6260
+ description: Ownership transferred
6261
+ content:
6262
+ application/json:
6263
+ schema:
6264
+ $ref: "#/components/schemas/TransferPlatformAppOwnershipResponse"
6265
+ "400":
6266
+ $ref: "#/components/responses/BadRequest"
6267
+ "403":
6268
+ $ref: "#/components/responses/Forbidden"
6269
+ "404":
6270
+ $ref: "#/components/responses/NotFound"
6271
+
6146
6272
  /v1/platform/apps/{appId}/rotate-key:
6147
6273
  post:
6148
6274
  tags: [Platform]
@@ -6370,6 +6496,44 @@ paths:
6370
6496
  "404":
6371
6497
  $ref: "#/components/responses/NotFound"
6372
6498
 
6499
+ /v1/platform/apps/{appId}/templates/{template_id}/preview:
6500
+ post:
6501
+ tags: [Platform]
6502
+ summary: Preview resolved template spec
6503
+ description: |
6504
+ Resolves `{{params.*}}` and `{{subject.*}}` placeholders in a template spec
6505
+ without provisioning resources. Useful for validating parameterized bootstrap templates.
6506
+ security:
6507
+ - BearerAuth: []
6508
+ parameters:
6509
+ - in: path
6510
+ name: appId
6511
+ required: true
6512
+ schema:
6513
+ type: string
6514
+ format: uuid
6515
+ - in: path
6516
+ name: template_id
6517
+ required: true
6518
+ schema:
6519
+ type: string
6520
+ format: uuid
6521
+ requestBody:
6522
+ required: false
6523
+ content:
6524
+ application/json:
6525
+ schema:
6526
+ $ref: "#/components/schemas/TemplatePreviewRequest"
6527
+ responses:
6528
+ "200":
6529
+ description: Resolved template spec
6530
+ content:
6531
+ application/json:
6532
+ schema:
6533
+ $ref: "#/components/schemas/TemplatePreviewResponse"
6534
+ "404":
6535
+ $ref: "#/components/responses/NotFound"
6536
+
6373
6537
  /v1/platform/users/upsert:
6374
6538
  post:
6375
6539
  tags: [Platform]
@@ -6403,6 +6567,31 @@ paths:
6403
6567
  schema:
6404
6568
  $ref: "#/components/schemas/PlatformUserLinkRequiredResponse"
6405
6569
 
6570
+ /v1/platform/siwe/challenge:
6571
+ post:
6572
+ tags: [Platform]
6573
+ summary: Issue SIWE nonce
6574
+ description: |
6575
+ Creates a one-time nonce for Sign-In With Ethereum user provisioning.
6576
+ Requires platform (`plt_`) authentication. The nonce expires in 5 minutes.
6577
+ security:
6578
+ - BearerAuth: []
6579
+ requestBody:
6580
+ required: false
6581
+ content:
6582
+ application/json:
6583
+ schema:
6584
+ $ref: "#/components/schemas/SiweChallengeRequest"
6585
+ responses:
6586
+ "200":
6587
+ description: Nonce issued
6588
+ content:
6589
+ application/json:
6590
+ schema:
6591
+ $ref: "#/components/schemas/SiweChallengeResponse"
6592
+ "400":
6593
+ description: SIWE domain not configured
6594
+
6406
6595
  /v1/platform/apps/{appId}/users:
6407
6596
  get:
6408
6597
  tags: [Platform]
@@ -6502,6 +6691,100 @@ paths:
6502
6691
  "404":
6503
6692
  description: Connection not found
6504
6693
 
6694
+ /v1/platform/connections/{connectionId}:
6695
+ get:
6696
+ tags: [Platform]
6697
+ summary: Get connection details
6698
+ description: |
6699
+ Returns connection status, claim state, wallet address, and provisioned resource IDs.
6700
+ Use for polling the claim loop after bootstrap.
6701
+ security:
6702
+ - BearerAuth: []
6703
+ parameters:
6704
+ - in: path
6705
+ name: connectionId
6706
+ required: true
6707
+ schema:
6708
+ type: string
6709
+ format: uuid
6710
+ responses:
6711
+ "200":
6712
+ description: Connection details
6713
+ content:
6714
+ application/json:
6715
+ schema:
6716
+ $ref: "#/components/schemas/ConnectionDetailResponse"
6717
+ "404":
6718
+ $ref: "#/components/responses/NotFound"
6719
+
6720
+ /v1/platform/connections/{connectionId}/usage:
6721
+ get:
6722
+ tags: [Platform]
6723
+ summary: Get per-connection usage
6724
+ description: Returns inference spend for the current UTC month for this connection.
6725
+ security:
6726
+ - BearerAuth: []
6727
+ parameters:
6728
+ - in: path
6729
+ name: connectionId
6730
+ required: true
6731
+ schema:
6732
+ type: string
6733
+ format: uuid
6734
+ responses:
6735
+ "200":
6736
+ description: Usage summary
6737
+ content:
6738
+ application/json:
6739
+ schema:
6740
+ $ref: "#/components/schemas/ConnectionUsageResponse"
6741
+ "404":
6742
+ $ref: "#/components/responses/NotFound"
6743
+
6744
+ /v1/platform/connections/{connectionId}/entitlements:
6745
+ get:
6746
+ tags: [Platform]
6747
+ summary: List entitlement evaluations
6748
+ description: Returns on-chain entitlement watch status for the connection.
6749
+ security:
6750
+ - BearerAuth: []
6751
+ parameters:
6752
+ - in: path
6753
+ name: connectionId
6754
+ required: true
6755
+ schema:
6756
+ type: string
6757
+ format: uuid
6758
+ responses:
6759
+ "200":
6760
+ description: Entitlement watches
6761
+ content:
6762
+ application/json:
6763
+ schema:
6764
+ $ref: "#/components/schemas/EntitlementsListResponse"
6765
+ "404":
6766
+ $ref: "#/components/responses/NotFound"
6767
+
6768
+ /v1/platform/connections/{connectionId}/entitlements/refresh:
6769
+ post:
6770
+ tags: [Platform]
6771
+ summary: Refresh entitlement evaluations
6772
+ description: Triggers an immediate entitlement monitor cycle for this connection's org.
6773
+ security:
6774
+ - BearerAuth: []
6775
+ parameters:
6776
+ - in: path
6777
+ name: connectionId
6778
+ required: true
6779
+ schema:
6780
+ type: string
6781
+ format: uuid
6782
+ responses:
6783
+ "202":
6784
+ description: Refresh accepted
6785
+ "404":
6786
+ $ref: "#/components/responses/NotFound"
6787
+
6505
6788
  /v1/platform/apps/{appId}/audit:
6506
6789
  get:
6507
6790
  tags: [Platform]
@@ -6874,41 +7157,231 @@ paths:
6874
7157
  items:
6875
7158
  $ref: "#/components/schemas/SpendPolicyResponse"
6876
7159
 
6877
- /v1/platform/apps/{appId}/spend-policies/{policyId}:
6878
- delete:
7160
+ /v1/platform/apps/{appId}/spend-policies/{policyId}:
7161
+ get:
7162
+ tags: [Platform]
7163
+ summary: Get a spend policy by ID
7164
+ operationId: getSpendPolicy
7165
+ security:
7166
+ - BearerAuth: []
7167
+ parameters:
7168
+ - in: path
7169
+ name: appId
7170
+ required: true
7171
+ schema:
7172
+ type: string
7173
+ format: uuid
7174
+ - in: path
7175
+ name: policyId
7176
+ required: true
7177
+ schema:
7178
+ type: string
7179
+ format: uuid
7180
+ responses:
7181
+ "200":
7182
+ description: Spend policy
7183
+ content:
7184
+ application/json:
7185
+ schema:
7186
+ $ref: "#/components/schemas/SpendPolicyResponse"
7187
+ "404":
7188
+ $ref: "#/components/responses/NotFound"
7189
+ delete:
7190
+ tags: [Platform]
7191
+ summary: Delete a spend policy
7192
+ operationId: deleteSpendPolicy
7193
+ security:
7194
+ - BearerAuth: []
7195
+ parameters:
7196
+ - in: path
7197
+ name: appId
7198
+ required: true
7199
+ schema:
7200
+ type: string
7201
+ format: uuid
7202
+ - in: path
7203
+ name: policyId
7204
+ required: true
7205
+ schema:
7206
+ type: string
7207
+ format: uuid
7208
+ responses:
7209
+ "204":
7210
+ description: Deleted
7211
+ "404":
7212
+ $ref: "#/components/responses/NotFound"
7213
+
7214
+ /v1/platform/connections/{connectionId}/spend-policy:
7215
+ get:
7216
+ tags: [Platform]
7217
+ summary: Get effective spend policy for a connection
7218
+ description: |
7219
+ Returns the effective spend policy for the connected user, resolving
7220
+ per-user overrides before app-level defaults. Requires plt_ platform auth.
7221
+ operationId: getConnectionSpendPolicy
7222
+ security:
7223
+ - BearerAuth: []
7224
+ parameters:
7225
+ - in: path
7226
+ name: connectionId
7227
+ required: true
7228
+ schema:
7229
+ type: string
7230
+ format: uuid
7231
+ responses:
7232
+ "200":
7233
+ description: Effective spend policy (or null)
7234
+ content:
7235
+ application/json:
7236
+ schema:
7237
+ type: object
7238
+ properties:
7239
+ policy:
7240
+ oneOf:
7241
+ - $ref: "#/components/schemas/SpendPolicyResponse"
7242
+ - type: "null"
7243
+ "404":
7244
+ $ref: "#/components/responses/NotFound"
7245
+ put:
7246
+ tags: [Platform]
7247
+ summary: Set per-user spend policy override
7248
+ description: |
7249
+ Override the app-wide spend policy for a specific connected user. This
7250
+ policy takes precedence over the app default. Remove by deleting the
7251
+ connection-level policy.
7252
+ operationId: setUserSpendPolicy
7253
+ security:
7254
+ - BearerAuth: []
7255
+ parameters:
7256
+ - in: path
7257
+ name: connectionId
7258
+ required: true
7259
+ schema:
7260
+ type: string
7261
+ format: uuid
7262
+ - in: header
7263
+ name: Idempotency-Key
7264
+ required: false
7265
+ schema:
7266
+ type: string
7267
+ description: Optional replay protection; same key + body returns cached response (409 on body mismatch).
7268
+ requestBody:
7269
+ required: true
7270
+ content:
7271
+ application/json:
7272
+ schema:
7273
+ $ref: "#/components/schemas/CreateSpendPolicyRequest"
7274
+ responses:
7275
+ "200":
7276
+ description: Spend policy set (or idempotent replay)
7277
+ content:
7278
+ application/json:
7279
+ schema:
7280
+ $ref: "#/components/schemas/SpendPolicyResponse"
7281
+ "201":
7282
+ description: Spend policy created
7283
+ content:
7284
+ application/json:
7285
+ schema:
7286
+ $ref: "#/components/schemas/SpendPolicyResponse"
7287
+ "409":
7288
+ description: Idempotency-Key reused with different body
7289
+ "400":
7290
+ $ref: "#/components/responses/BadRequest"
7291
+ "403":
7292
+ $ref: "#/components/responses/Forbidden"
7293
+
7294
+ "404":
7295
+ $ref: "#/components/responses/NotFound"
7296
+
7297
+ /v1/platform/connections/{connectionId}/approvals:
7298
+ get:
7299
+ tags: [Platform]
7300
+ summary: List approvals for a platform connection
7301
+ description: |
7302
+ Returns approvals assigned to the connection's user, filtered to agents
7303
+ provisioned on the connection. Requires plt_ platform auth.
7304
+ operationId: listConnectionApprovals
7305
+ security:
7306
+ - BearerAuth: []
7307
+ parameters:
7308
+ - in: path
7309
+ name: connectionId
7310
+ required: true
7311
+ schema:
7312
+ type: string
7313
+ format: uuid
7314
+ - name: status
7315
+ in: query
7316
+ required: false
7317
+ schema:
7318
+ type: string
7319
+ - name: risk_tier
7320
+ in: query
7321
+ required: false
7322
+ schema:
7323
+ type: integer
7324
+ - name: limit
7325
+ in: query
7326
+ required: false
7327
+ schema:
7328
+ type: integer
7329
+ default: 50
7330
+ - name: offset
7331
+ in: query
7332
+ required: false
7333
+ schema:
7334
+ type: integer
7335
+ default: 0
7336
+ responses:
7337
+ "200":
7338
+ description: Connection-scoped approvals
7339
+ content:
7340
+ application/json:
7341
+ schema:
7342
+ $ref: "#/components/schemas/ApprovalListResponse"
7343
+ "404":
7344
+ $ref: "#/components/responses/NotFound"
7345
+
7346
+ /v1/platform/connections/{connectionId}/approvals/{approvalId}:
7347
+ get:
6879
7348
  tags: [Platform]
6880
- summary: Delete a spend policy
6881
- operationId: deleteSpendPolicy
7349
+ summary: Get a connection-scoped approval
7350
+ operationId: getConnectionApproval
6882
7351
  security:
6883
7352
  - BearerAuth: []
6884
7353
  parameters:
6885
7354
  - in: path
6886
- name: appId
7355
+ name: connectionId
6887
7356
  required: true
6888
7357
  schema:
6889
7358
  type: string
6890
7359
  format: uuid
6891
7360
  - in: path
6892
- name: policyId
7361
+ name: approvalId
6893
7362
  required: true
6894
7363
  schema:
6895
7364
  type: string
6896
7365
  format: uuid
6897
7366
  responses:
6898
- "204":
6899
- description: Deleted
7367
+ "200":
7368
+ description: Approval detail
7369
+ content:
7370
+ application/json:
7371
+ schema:
7372
+ $ref: "#/components/schemas/ApprovalResponse"
6900
7373
  "404":
6901
7374
  $ref: "#/components/responses/NotFound"
6902
7375
 
6903
- /v1/platform/connections/{connectionId}/spend-policy:
6904
- put:
7376
+ /v1/platform/connections/{connectionId}/pending-approvals:
7377
+ get:
6905
7378
  tags: [Platform]
6906
- summary: Set per-user spend policy override
7379
+ summary: List pending consensus approvals for a connection
6907
7380
  description: |
6908
- Override the app-wide spend policy for a specific connected user. This
6909
- policy takes precedence over the app default. Remove by deleting the
6910
- connection-level policy.
6911
- operationId: setUserSpendPolicy
7381
+ Returns pending approvals for agents provisioned on the connection,
7382
+ including `action_payload` and `payload_hash` for consensus UX.
7383
+ Requires plt_ platform auth.
7384
+ operationId: listConnectionPendingApprovals
6912
7385
  security:
6913
7386
  - BearerAuth: []
6914
7387
  parameters:
@@ -6918,23 +7391,30 @@ paths:
6918
7391
  schema:
6919
7392
  type: string
6920
7393
  format: uuid
6921
- requestBody:
6922
- required: true
6923
- content:
6924
- application/json:
6925
- schema:
6926
- $ref: "#/components/schemas/CreateSpendPolicyRequest"
7394
+ - name: status
7395
+ in: query
7396
+ schema:
7397
+ type: string
7398
+ default: pending
7399
+ - name: limit
7400
+ in: query
7401
+ schema:
7402
+ type: integer
7403
+ default: 50
7404
+ - name: offset
7405
+ in: query
7406
+ schema:
7407
+ type: integer
7408
+ default: 0
6927
7409
  responses:
6928
7410
  "200":
6929
- description: Spend policy set
7411
+ description: Pending approvals list
6930
7412
  content:
6931
7413
  application/json:
6932
7414
  schema:
6933
- $ref: "#/components/schemas/SpendPolicyResponse"
6934
- "400":
6935
- $ref: "#/components/responses/BadRequest"
6936
- "403":
6937
- $ref: "#/components/responses/Forbidden"
7415
+ $ref: "#/components/schemas/PendingApprovalListResponse"
7416
+ "404":
7417
+ $ref: "#/components/responses/NotFound"
6938
7418
 
6939
7419
  # --- Approvals ---
6940
7420
 
@@ -8818,7 +9298,7 @@ paths:
8818
9298
  summary: Chat with a running runtime agent
8819
9299
  description: |
8820
9300
  Human-only. Proxies to the runtime container's OpenAI-compatible
8821
- `POST /v1/chat/completions` (hermes / openclaw / openclaude chat bridge).
9301
+ `POST /v1/chat/completions` (hermes / openclaw / openclaude / opencode chat bridge).
8822
9302
  Starts the runtime if stopped. Streams SSE when `Accept: text/event-stream`
8823
9303
  or `stream: true`. Conversation history is ephemeral (pass `messages`).
8824
9304
  Requires a public URL (shell access, Shroud sidecar, or HTTP hosting).
@@ -11526,6 +12006,10 @@ components:
11526
12006
  type: boolean
11527
12007
  mfa_token:
11528
12008
  type: string
12009
+ mfa_method:
12010
+ type: string
12011
+ enum: [totp, passkey]
12012
+ description: When MFA is required, which second factor to collect
11529
12013
 
11530
12014
  TokenResponse:
11531
12015
  type: object
@@ -11539,6 +12023,13 @@ components:
11539
12023
  type: integer
11540
12024
  refresh_token:
11541
12025
  type: string
12026
+ mfa_required:
12027
+ type: boolean
12028
+ mfa_token:
12029
+ type: string
12030
+ mfa_method:
12031
+ type: string
12032
+ enum: [totp, passkey]
11542
12033
 
11543
12034
  AgentTokenRequest:
11544
12035
  type: object
@@ -11694,6 +12185,12 @@ components:
11694
12185
  properties:
11695
12186
  enabled:
11696
12187
  type: boolean
12188
+ eligible:
12189
+ type: boolean
12190
+ totp_enabled:
12191
+ type: boolean
12192
+ passkey_mfa_enabled:
12193
+ type: boolean
11697
12194
 
11698
12195
  MfaSetupResponse:
11699
12196
  type: object
@@ -16101,6 +16598,46 @@ components:
16101
16598
  nullable: true
16102
16599
  description: Optional expiration time for the platform API key. Set to null to clear.
16103
16600
 
16601
+ PlatformAppDeleteResponse:
16602
+ type: object
16603
+ required: [deleted, soft_delete, slug_released, former_slug]
16604
+ properties:
16605
+ deleted:
16606
+ type: boolean
16607
+ soft_delete:
16608
+ type: boolean
16609
+ slug_released:
16610
+ type: boolean
16611
+ former_slug:
16612
+ type: string
16613
+
16614
+ TransferPlatformAppOwnershipRequest:
16615
+ type: object
16616
+ properties:
16617
+ target_org_id:
16618
+ type: string
16619
+ format: uuid
16620
+ target_user_email:
16621
+ type: string
16622
+ format: email
16623
+ description: Provide `target_org_id` or `target_user_email` (owner/admin in destination org).
16624
+
16625
+ TransferPlatformAppOwnershipResponse:
16626
+ type: object
16627
+ required: [app_id, former_org_id, new_org_id, message]
16628
+ properties:
16629
+ app_id:
16630
+ type: string
16631
+ format: uuid
16632
+ former_org_id:
16633
+ type: string
16634
+ format: uuid
16635
+ new_org_id:
16636
+ type: string
16637
+ format: uuid
16638
+ message:
16639
+ type: string
16640
+
16104
16641
  PlatformAppResponse:
16105
16642
  type: object
16106
16643
  properties:
@@ -16227,12 +16764,29 @@ components:
16227
16764
  subject_token_type:
16228
16765
  type: string
16229
16766
  default: "urn:ietf:params:oauth:token-type:jwt"
16767
+ description: |
16768
+ Token type for subject_token. Use `urn:1claw:params:oauth:token-type:siwe`
16769
+ with `siwe_message` and `siwe_signature` for wallet-based provisioning.
16230
16770
  email:
16231
16771
  type: string
16232
16772
  format: email
16233
16773
  description: Fallback when subject_token is not provided
16234
16774
  display_name:
16235
16775
  type: string
16776
+ siwe_message:
16777
+ type: string
16778
+ description: EIP-4361 Sign-In With Ethereum message (required for SIWE upsert)
16779
+ siwe_signature:
16780
+ type: string
16781
+ description: Hex-encoded SIWE signature (required for SIWE upsert)
16782
+ return_to:
16783
+ type: string
16784
+ format: uri
16785
+ description: Redirect URL after cross-org link consent
16786
+ create_sub_org:
16787
+ type: boolean
16788
+ default: false
16789
+ description: When true, creates a sub-org under the platform app's org
16236
16790
 
16237
16791
  PlatformUserResponse:
16238
16792
  type: object
@@ -16321,6 +16875,12 @@ components:
16321
16875
  type: string
16322
16876
  format: uri
16323
16877
  description: URL to redirect the user to after claiming resources.
16878
+ parameters:
16879
+ type: object
16880
+ additionalProperties: true
16881
+ description: |
16882
+ Template parameters substituted as `{{params.*}}` during bootstrap.
16883
+ Combined with `Idempotency-Key` header for params-aware idempotent replay.
16324
16884
 
16325
16885
  BootstrapResponse:
16326
16886
  type: object
@@ -16805,6 +17365,17 @@ components:
16805
17365
  type: string
16806
17366
  format: date-time
16807
17367
 
17368
+ ApprovalListResponse:
17369
+ type: object
17370
+ required: [approvals, total]
17371
+ properties:
17372
+ approvals:
17373
+ type: array
17374
+ items:
17375
+ $ref: "#/components/schemas/ApprovalResponse"
17376
+ total:
17377
+ type: integer
17378
+
16808
17379
  ApprovalStatusResponse:
16809
17380
  type: object
16810
17381
  required: [status]
@@ -17009,6 +17580,26 @@ components:
17009
17580
  max_transactions_per_day:
17010
17581
  type: integer
17011
17582
  description: Maximum number of transactions per 24h window
17583
+ inference_allowance_usd:
17584
+ type: string
17585
+ description: Monthly LLM inference allowance in USD (decimal string)
17586
+ inference_reserved_pct:
17587
+ type: integer
17588
+ minimum: 0
17589
+ maximum: 100
17590
+ default: 25
17591
+ description: Percent of allowance held in reserve (not spendable)
17592
+ inference_hard_stop:
17593
+ type: boolean
17594
+ default: true
17595
+ description: When true, block inference when allowance is exhausted
17596
+ inference_allowance_mode:
17597
+ type: string
17598
+ enum: [policy, credits]
17599
+ default: policy
17600
+ max_request_cost_usd:
17601
+ type: string
17602
+ description: Maximum estimated cost per LLM request in USD
17012
17603
  human_factor_auth:
17013
17604
  type: object
17014
17605
  additionalProperties: true
@@ -17017,6 +17608,180 @@ components:
17017
17608
  Fields: send, swap, export (password_or_passkey | passkey_only | passkey_required | password_only | reauth_token_only),
17018
17609
  conditional.require_passkey_above_usd, conditional.require_passkey_for_new_recipient.
17019
17610
 
17611
+ SiweChallengeRequest:
17612
+ type: object
17613
+ properties:
17614
+ domain:
17615
+ type: string
17616
+ description: Optional SIWE domain override (defaults to platform app's siwe_domain)
17617
+
17618
+ SiweChallengeResponse:
17619
+ type: object
17620
+ required: [nonce, expires_in, domain]
17621
+ properties:
17622
+ nonce:
17623
+ type: string
17624
+ expires_in:
17625
+ type: integer
17626
+ description: Seconds until nonce expiry
17627
+ domain:
17628
+ type: string
17629
+
17630
+ ConnectionDetailResponse:
17631
+ type: object
17632
+ required: [connection_id, user_id, status, entitlement_status, vault_ids, agent_ids, claim]
17633
+ properties:
17634
+ connection_id:
17635
+ type: string
17636
+ format: uuid
17637
+ user_id:
17638
+ type: string
17639
+ format: uuid
17640
+ status:
17641
+ type: string
17642
+ entitlement_status:
17643
+ type: string
17644
+ wallet_address:
17645
+ type: string
17646
+ nullable: true
17647
+ vault_ids:
17648
+ type: array
17649
+ items:
17650
+ type: string
17651
+ format: uuid
17652
+ agent_ids:
17653
+ type: array
17654
+ items:
17655
+ type: string
17656
+ format: uuid
17657
+ claimed_at:
17658
+ type: string
17659
+ format: date-time
17660
+ nullable: true
17661
+ claim:
17662
+ $ref: "#/components/schemas/ClaimStatusResponse"
17663
+
17664
+ ClaimStatusResponse:
17665
+ type: object
17666
+ required: [status]
17667
+ properties:
17668
+ status:
17669
+ type: string
17670
+ enum: [pending, active, claimed]
17671
+ redeemed_at:
17672
+ type: string
17673
+ format: date-time
17674
+ nullable: true
17675
+
17676
+ ConnectionUsageResponse:
17677
+ type: object
17678
+ required: [connection_id, period, inference_spent_usd]
17679
+ properties:
17680
+ connection_id:
17681
+ type: string
17682
+ format: uuid
17683
+ period:
17684
+ type: string
17685
+ description: UTC month (YYYY-MM)
17686
+ inference_spent_usd:
17687
+ type: string
17688
+
17689
+ EntitlementsListResponse:
17690
+ type: object
17691
+ required: [evaluations]
17692
+ properties:
17693
+ evaluations:
17694
+ type: array
17695
+ items:
17696
+ $ref: "#/components/schemas/EntitlementEvaluationResponse"
17697
+
17698
+ EntitlementEvaluationResponse:
17699
+ type: object
17700
+ required: [id, status, watch_kind, chain, holder_address]
17701
+ properties:
17702
+ id:
17703
+ type: string
17704
+ status:
17705
+ type: string
17706
+ watch_kind:
17707
+ type: string
17708
+ chain:
17709
+ type: string
17710
+ holder_address:
17711
+ type: string
17712
+ last_value_raw:
17713
+ type: string
17714
+ nullable: true
17715
+ last_checked_at:
17716
+ type: string
17717
+ format: date-time
17718
+ nullable: true
17719
+
17720
+ TemplatePreviewRequest:
17721
+ type: object
17722
+ properties:
17723
+ parameters:
17724
+ type: object
17725
+ additionalProperties: true
17726
+ subject:
17727
+ type: object
17728
+ properties:
17729
+ user_id:
17730
+ type: string
17731
+ external_subject:
17732
+ type: string
17733
+ wallet_address:
17734
+ type: string
17735
+ email:
17736
+ type: string
17737
+
17738
+ TemplatePreviewResponse:
17739
+ type: object
17740
+ required: [resolved_spec]
17741
+ properties:
17742
+ resolved_spec:
17743
+ type: object
17744
+ additionalProperties: true
17745
+
17746
+ InferenceBudgetResponse:
17747
+ type: object
17748
+ required:
17749
+ - allowance_usd
17750
+ - spent_usd
17751
+ - remaining_usd
17752
+ - reserved_pct
17753
+ - max_request_cost_usd
17754
+ - period_end
17755
+ properties:
17756
+ allowance_usd:
17757
+ type: string
17758
+ spent_usd:
17759
+ type: string
17760
+ remaining_usd:
17761
+ type: string
17762
+ reserved_pct:
17763
+ type: integer
17764
+ max_request_cost_usd:
17765
+ type: string
17766
+ period_end:
17767
+ type: string
17768
+ format: date-time
17769
+ connection_id:
17770
+ type: string
17771
+ format: uuid
17772
+ nullable: true
17773
+
17774
+ InferenceBudgetUnconfiguredResponse:
17775
+ type: object
17776
+ properties:
17777
+ allowance_usd:
17778
+ type: string
17779
+ nullable: true
17780
+ remaining_usd:
17781
+ nullable: true
17782
+ message:
17783
+ type: string
17784
+
17020
17785
  SpendPolicyResponse:
17021
17786
  type: object
17022
17787
  required: [id, platform_app_id, created_at]
@@ -17052,6 +17817,21 @@ components:
17052
17817
  max_transactions_per_day:
17053
17818
  type: integer
17054
17819
  nullable: true
17820
+ inference_allowance_usd:
17821
+ type: string
17822
+ nullable: true
17823
+ inference_reserved_pct:
17824
+ type: integer
17825
+ nullable: true
17826
+ inference_hard_stop:
17827
+ type: boolean
17828
+ nullable: true
17829
+ inference_allowance_mode:
17830
+ type: string
17831
+ nullable: true
17832
+ max_request_cost_usd:
17833
+ type: string
17834
+ nullable: true
17055
17835
  human_factor_auth:
17056
17836
  type: object
17057
17837
  additionalProperties: true
@@ -17158,6 +17938,21 @@ components:
17158
17938
  items:
17159
17939
  type: string
17160
17940
 
17941
+ MfaPasskeyCompleteRequest:
17942
+ type: object
17943
+ required: [mfa_token, credential_id, authenticator_data, client_data_json, signature]
17944
+ properties:
17945
+ mfa_token:
17946
+ type: string
17947
+ credential_id:
17948
+ type: string
17949
+ authenticator_data:
17950
+ type: string
17951
+ client_data_json:
17952
+ type: string
17953
+ signature:
17954
+ type: string
17955
+
17161
17956
  GuardrailWideningQueuedResponse:
17162
17957
  type: object
17163
17958
  required: [status, approval_id, revision_id, message]