@1claw/openapi-spec 0.48.2 → 0.50.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 +336 -8
  2. package/openapi.yaml +255 -4
  3. package/package.json +1 -1
package/openapi.json CHANGED
@@ -921,7 +921,19 @@
921
921
  "Authentication"
922
922
  ],
923
923
  "summary": "Complete passkey registration",
924
+ "description": "When the account already has a password, passkey, or TOTP,\n`X-Auth-Confirm` is required (purpose `security.passkey.register`).\n",
924
925
  "operationId": "passkeyRegisterComplete",
926
+ "parameters": [
927
+ {
928
+ "name": "X-Auth-Confirm",
929
+ "in": "header",
930
+ "required": false,
931
+ "description": "Re-auth token (`rat_`) or account password",
932
+ "schema": {
933
+ "type": "string"
934
+ }
935
+ }
936
+ ],
925
937
  "requestBody": {
926
938
  "required": true,
927
939
  "content": {
@@ -1154,6 +1166,7 @@
1154
1166
  "Authentication"
1155
1167
  ],
1156
1168
  "summary": "Delete a passkey",
1169
+ "description": "Removes a registered passkey. Requires recent re-authentication\n(`X-Auth-Confirm` with a `rat_` token from `POST /v1/auth/reauth`\nusing purpose `security.passkey.delete`). Passkey or TOTP is\nrequired when either is enrolled. Deleting the last passkey is\nrefused while vault passkey unlock is enabled.\n",
1157
1170
  "operationId": "deletePasskey",
1158
1171
  "parameters": [
1159
1172
  {
@@ -1164,11 +1177,23 @@
1164
1177
  "type": "string",
1165
1178
  "format": "uuid"
1166
1179
  }
1180
+ },
1181
+ {
1182
+ "name": "X-Auth-Confirm",
1183
+ "in": "header",
1184
+ "required": true,
1185
+ "description": "Re-auth token (`rat_`) or account password",
1186
+ "schema": {
1187
+ "type": "string"
1188
+ }
1167
1189
  }
1168
1190
  ],
1169
1191
  "responses": {
1170
1192
  "200": {
1171
1193
  "description": "Passkey deleted"
1194
+ },
1195
+ "403": {
1196
+ "$ref": "#/components/responses/Forbidden"
1172
1197
  }
1173
1198
  }
1174
1199
  }
@@ -1305,6 +1330,17 @@
1305
1330
  ],
1306
1331
  "summary": "Delete current user account",
1307
1332
  "operationId": "deleteMe",
1333
+ "parameters": [
1334
+ {
1335
+ "name": "X-Auth-Confirm",
1336
+ "in": "header",
1337
+ "required": true,
1338
+ "description": "Re-auth token (`rat_`, purpose `account.delete`) or password",
1339
+ "schema": {
1340
+ "type": "string"
1341
+ }
1342
+ }
1343
+ ],
1308
1344
  "requestBody": {
1309
1345
  "required": true,
1310
1346
  "content": {
@@ -1334,6 +1370,76 @@
1334
1370
  }
1335
1371
  }
1336
1372
  },
1373
+ "/v1/auth/settings": {
1374
+ "get": {
1375
+ "tags": [
1376
+ "Authentication"
1377
+ ],
1378
+ "summary": "Get user security settings",
1379
+ "operationId": "getSecuritySettings",
1380
+ "responses": {
1381
+ "200": {
1382
+ "description": "Security settings",
1383
+ "content": {
1384
+ "application/json": {
1385
+ "schema": {
1386
+ "type": "object",
1387
+ "properties": {
1388
+ "require_passkey_for_vaults": {
1389
+ "type": "boolean"
1390
+ },
1391
+ "passkey_count": {
1392
+ "type": "integer"
1393
+ }
1394
+ }
1395
+ }
1396
+ }
1397
+ }
1398
+ }
1399
+ }
1400
+ },
1401
+ "patch": {
1402
+ "tags": [
1403
+ "Authentication"
1404
+ ],
1405
+ "summary": "Update user security settings",
1406
+ "description": "Disabling `require_passkey_for_vaults` requires `X-Auth-Confirm`\n(purpose `security.vault_passkey.disable`) with a passkey or TOTP\nwhen either is enrolled.\n",
1407
+ "operationId": "updateSecuritySettings",
1408
+ "parameters": [
1409
+ {
1410
+ "name": "X-Auth-Confirm",
1411
+ "in": "header",
1412
+ "required": false,
1413
+ "schema": {
1414
+ "type": "string"
1415
+ }
1416
+ }
1417
+ ],
1418
+ "requestBody": {
1419
+ "required": true,
1420
+ "content": {
1421
+ "application/json": {
1422
+ "schema": {
1423
+ "type": "object",
1424
+ "properties": {
1425
+ "require_passkey_for_vaults": {
1426
+ "type": "boolean"
1427
+ }
1428
+ }
1429
+ }
1430
+ }
1431
+ }
1432
+ },
1433
+ "responses": {
1434
+ "200": {
1435
+ "description": "Updated settings"
1436
+ },
1437
+ "403": {
1438
+ "$ref": "#/components/responses/Forbidden"
1439
+ }
1440
+ }
1441
+ }
1442
+ },
1337
1443
  "/v1/auth/mfa/status": {
1338
1444
  "get": {
1339
1445
  "tags": [
@@ -1451,7 +1557,19 @@
1451
1557
  "Authentication"
1452
1558
  ],
1453
1559
  "summary": "Disable MFA",
1560
+ "description": "Requires a valid TOTP or recovery code in the body, or a passkey\nre-auth token in `X-Auth-Confirm` (purpose `security.mfa.disable`).\nAccount password alone is not accepted while TOTP is enabled.\n",
1454
1561
  "operationId": "mfaDisable",
1562
+ "parameters": [
1563
+ {
1564
+ "name": "X-Auth-Confirm",
1565
+ "in": "header",
1566
+ "required": false,
1567
+ "description": "Passkey or TOTP re-auth token (`rat_`)",
1568
+ "schema": {
1569
+ "type": "string"
1570
+ }
1571
+ }
1572
+ ],
1455
1573
  "requestBody": {
1456
1574
  "required": true,
1457
1575
  "content": {
@@ -1699,8 +1817,18 @@
1699
1817
  "Authentication"
1700
1818
  ],
1701
1819
  "summary": "Export user data (GDPR)",
1702
- "description": "Returns a full export of the authenticated user's data including\nprofile, vaults, agents, secrets metadata, and policies. Intended\nfor GDPR data-portability requests. Only available to human users\n(not agents).\n",
1820
+ "description": "Returns a full export of the authenticated user's data including\nprofile, vaults, agents, secrets metadata, and policies. Intended\nfor GDPR data-portability requests. Only available to human users\n(not agents). Requires `X-Auth-Confirm` (purpose `account.export`);\npasskey or TOTP when either is enrolled.\n",
1703
1821
  "operationId": "exportUserData",
1822
+ "parameters": [
1823
+ {
1824
+ "name": "X-Auth-Confirm",
1825
+ "in": "header",
1826
+ "required": true,
1827
+ "schema": {
1828
+ "type": "string"
1829
+ }
1830
+ }
1831
+ ],
1704
1832
  "responses": {
1705
1833
  "200": {
1706
1834
  "description": "User data export",
@@ -16066,10 +16194,13 @@
16066
16194
  "type": "object",
16067
16195
  "properties": {
16068
16196
  "code": {
16069
- "type": "string"
16197
+ "type": "string",
16198
+ "description": "TOTP or recovery code"
16070
16199
  },
16071
16200
  "password": {
16072
- "type": "string"
16201
+ "type": "string",
16202
+ "description": "Deprecated. Password is no longer sufficient to disable MFA.",
16203
+ "deprecated": true
16073
16204
  }
16074
16205
  }
16075
16206
  },
@@ -25938,9 +26069,18 @@
25938
26069
  },
25939
26070
  "TxConditions": {
25940
26071
  "type": "object",
25941
- "description": "Signing-time AND conditions on access policies (all tiers).\nIgnored on secret reads. Evaluated when a TransactionContext is present.\n",
26072
+ "description": "Signing-time conditions on access policies (all tiers).\nIgnored on secret reads. Evaluated when a TransactionContext is present.\nFields are combined according to `match_mode` (default AND).\n",
25942
26073
  "additionalProperties": true,
25943
26074
  "properties": {
26075
+ "match_mode": {
26076
+ "type": "string",
26077
+ "enum": [
26078
+ "all",
26079
+ "any"
26080
+ ],
26081
+ "default": "all",
26082
+ "description": "How individual condition fields are combined.\n\"all\" (default): every present field must match (AND).\n\"any\": at least one present field must match (OR).\n"
26083
+ },
25944
26084
  "function_name_in": {
25945
26085
  "type": "array",
25946
26086
  "items": {
@@ -25958,7 +26098,43 @@
25958
26098
  },
25959
26099
  "value_above": {
25960
26100
  "type": "string",
25961
- "description": "Native value threshold in gwei"
26101
+ "description": "Native value threshold in wei (arbitrary-precision string)"
26102
+ },
26103
+ "eip712_primary_type_in": {
26104
+ "type": "array",
26105
+ "items": {
26106
+ "type": "string"
26107
+ },
26108
+ "description": "Match EIP-712 typed_data primaryType (case-sensitive)"
26109
+ },
26110
+ "eip712_verifying_contract_in": {
26111
+ "type": "array",
26112
+ "items": {
26113
+ "type": "string"
26114
+ },
26115
+ "description": "Match EIP-712 domain.verifyingContract (case-insensitive)"
26116
+ },
26117
+ "eip712_domain_name_in": {
26118
+ "type": "array",
26119
+ "items": {
26120
+ "type": "string"
26121
+ },
26122
+ "description": "Match EIP-712 domain.name"
26123
+ },
26124
+ "eip712_domain_chain_id_in": {
26125
+ "type": "array",
26126
+ "items": {
26127
+ "type": "integer",
26128
+ "format": "int64"
26129
+ },
26130
+ "description": "Match EIP-712 domain.chainId"
26131
+ },
26132
+ "eip7702_authorized_addresses_in": {
26133
+ "type": "array",
26134
+ "items": {
26135
+ "type": "string"
26136
+ },
26137
+ "description": "Match EIP-7702 authorization_list delegate addresses (case-insensitive)"
25962
26138
  },
25963
26139
  "to_address_in": {
25964
26140
  "type": "array",
@@ -25986,6 +26162,11 @@
25986
26162
  "items": {
25987
26163
  "type": "string"
25988
26164
  }
26165
+ },
26166
+ "deep_inspect": {
26167
+ "type": "boolean",
26168
+ "default": false,
26169
+ "description": "When true, conditions are also evaluated against inner calls\nextracted from wrapper transactions (multicall, Safe execTransaction,\nERC-4337 handleOps). A match on any inner call counts as an overall match.\n"
25989
26170
  }
25990
26171
  }
25991
26172
  },
@@ -26013,6 +26194,101 @@
26013
26194
  "self_approval_allowed": {
26014
26195
  "type": "boolean",
26015
26196
  "default": false
26197
+ },
26198
+ "skip_when": {
26199
+ "type": "array",
26200
+ "description": "When ALL conditions in ANY entry match, consensus is bypassed.\nUseful for exempting known-safe recipients or low-value transfers.\n",
26201
+ "items": {
26202
+ "$ref": "#/components/schemas/FlatConditionSet"
26203
+ }
26204
+ },
26205
+ "require_when": {
26206
+ "type": "array",
26207
+ "description": "Consensus is ONLY required when at least one entry matches.\nIf set and none match, consensus is skipped entirely.\n",
26208
+ "items": {
26209
+ "$ref": "#/components/schemas/FlatConditionSet"
26210
+ }
26211
+ },
26212
+ "deep_inspect": {
26213
+ "type": "boolean",
26214
+ "default": false,
26215
+ "description": "When true, also evaluate conditions against inner calls extracted\nfrom wrapper transactions (multicall, Safe execTransaction,\nERC-4337 handleOps).\n"
26216
+ }
26217
+ }
26218
+ },
26219
+ "FlatConditionSet": {
26220
+ "type": "object",
26221
+ "description": "Flat condition set used by consensus composability. Each present field\nis AND-combined within the set. At least one field must be specified\n(unless `always` is true).\n",
26222
+ "additionalProperties": false,
26223
+ "properties": {
26224
+ "value_above": {
26225
+ "type": "string",
26226
+ "description": "Native value threshold in gwei (numeric string)"
26227
+ },
26228
+ "chain_in": {
26229
+ "type": "array",
26230
+ "items": {
26231
+ "type": "string"
26232
+ }
26233
+ },
26234
+ "to_address_in": {
26235
+ "type": "array",
26236
+ "items": {
26237
+ "type": "string"
26238
+ }
26239
+ },
26240
+ "function_selector_in": {
26241
+ "type": "array",
26242
+ "items": {
26243
+ "type": "string"
26244
+ }
26245
+ },
26246
+ "erc20_amount_above": {
26247
+ "type": "string",
26248
+ "description": "ERC-20 raw token amount threshold (numeric string)"
26249
+ },
26250
+ "intent_type_in": {
26251
+ "type": "array",
26252
+ "items": {
26253
+ "type": "string"
26254
+ }
26255
+ },
26256
+ "always": {
26257
+ "type": "boolean",
26258
+ "description": "When true, this entry always matches regardless of other fields"
26259
+ }
26260
+ }
26261
+ },
26262
+ "TimeWindow": {
26263
+ "type": "object",
26264
+ "description": "Time window condition for policy evaluation. Used inside the policy\n`conditions` JSON to restrict when the policy is active.\n",
26265
+ "properties": {
26266
+ "start_hour": {
26267
+ "type": "integer",
26268
+ "minimum": 0,
26269
+ "maximum": 23
26270
+ },
26271
+ "end_hour": {
26272
+ "type": "integer",
26273
+ "minimum": 0,
26274
+ "maximum": 24
26275
+ },
26276
+ "days_of_week": {
26277
+ "type": "array",
26278
+ "description": "Days when policy is active (0=Sunday, 6=Saturday)",
26279
+ "items": {
26280
+ "type": "integer",
26281
+ "minimum": 0,
26282
+ "maximum": 6
26283
+ }
26284
+ },
26285
+ "timezone": {
26286
+ "type": "string",
26287
+ "description": "IANA timezone identifier (e.g. \"America/New_York\"). Defaults to UTC."
26288
+ },
26289
+ "cron_expr": {
26290
+ "type": "string",
26291
+ "description": "Cron expression (6-field with seconds) for fine-grained scheduling."
26016
26292
  }
26017
26293
  }
26018
26294
  },
@@ -26021,8 +26297,7 @@
26021
26297
  {
26022
26298
  "type": "object",
26023
26299
  "required": [
26024
- "type",
26025
- "threshold_gwei"
26300
+ "type"
26026
26301
  ],
26027
26302
  "properties": {
26028
26303
  "type": {
@@ -26031,9 +26306,15 @@
26031
26306
  "value_above"
26032
26307
  ]
26033
26308
  },
26309
+ "threshold_wei": {
26310
+ "type": "string",
26311
+ "description": "Value threshold in wei (arbitrary-precision string). Preferred over threshold_gwei."
26312
+ },
26034
26313
  "threshold_gwei": {
26035
26314
  "type": "integer",
26036
- "format": "int64"
26315
+ "format": "int64",
26316
+ "deprecated": true,
26317
+ "description": "Deprecated — use threshold_wei for arbitrary precision"
26037
26318
  }
26038
26319
  }
26039
26320
  },
@@ -26152,6 +26433,28 @@
26152
26433
  ]
26153
26434
  }
26154
26435
  }
26436
+ },
26437
+ {
26438
+ "type": "object",
26439
+ "required": [
26440
+ "type",
26441
+ "actions"
26442
+ ],
26443
+ "properties": {
26444
+ "type": {
26445
+ "type": "string",
26446
+ "enum": [
26447
+ "action_in"
26448
+ ]
26449
+ },
26450
+ "actions": {
26451
+ "type": "array",
26452
+ "items": {
26453
+ "type": "string"
26454
+ },
26455
+ "description": "Control-plane actions to match, e.g. policy.create, policy.update,\npolicy.delete, signing_key.export, member.role_change, member.remove\n"
26456
+ }
26457
+ }
26155
26458
  }
26156
26459
  ]
26157
26460
  },
@@ -26175,6 +26478,20 @@
26175
26478
  "additionalProperties": {
26176
26479
  "type": "integer"
26177
26480
  }
26481
+ },
26482
+ "require_credential_types": {
26483
+ "type": "array",
26484
+ "items": {
26485
+ "type": "string",
26486
+ "enum": [
26487
+ "password",
26488
+ "passkey",
26489
+ "totp",
26490
+ "biometric",
26491
+ "api_key"
26492
+ ]
26493
+ },
26494
+ "description": "At least one approval must use one of these credential types"
26178
26495
  }
26179
26496
  }
26180
26497
  },
@@ -26242,6 +26559,17 @@
26242
26559
  },
26243
26560
  "reason": {
26244
26561
  "type": "string"
26562
+ },
26563
+ "credential_type": {
26564
+ "type": "string",
26565
+ "enum": [
26566
+ "password",
26567
+ "passkey",
26568
+ "totp",
26569
+ "biometric",
26570
+ "api_key"
26571
+ ],
26572
+ "description": "Authentication method used for this approval vote"
26245
26573
  }
26246
26574
  }
26247
26575
  },
package/openapi.yaml CHANGED
@@ -625,7 +625,17 @@ paths:
625
625
  post:
626
626
  tags: [Authentication]
627
627
  summary: Complete passkey registration
628
+ description: |
629
+ When the account already has a password, passkey, or TOTP,
630
+ `X-Auth-Confirm` is required (purpose `security.passkey.register`).
628
631
  operationId: passkeyRegisterComplete
632
+ parameters:
633
+ - name: X-Auth-Confirm
634
+ in: header
635
+ required: false
636
+ description: Re-auth token (`rat_`) or account password
637
+ schema:
638
+ type: string
629
639
  requestBody:
630
640
  required: true
631
641
  content:
@@ -768,6 +778,12 @@ paths:
768
778
  delete:
769
779
  tags: [Authentication]
770
780
  summary: Delete a passkey
781
+ description: |
782
+ Removes a registered passkey. Requires recent re-authentication
783
+ (`X-Auth-Confirm` with a `rat_` token from `POST /v1/auth/reauth`
784
+ using purpose `security.passkey.delete`). Passkey or TOTP is
785
+ required when either is enrolled. Deleting the last passkey is
786
+ refused while vault passkey unlock is enabled.
771
787
  operationId: deletePasskey
772
788
  parameters:
773
789
  - name: passkey_id
@@ -776,9 +792,17 @@ paths:
776
792
  schema:
777
793
  type: string
778
794
  format: uuid
795
+ - name: X-Auth-Confirm
796
+ in: header
797
+ required: true
798
+ description: Re-auth token (`rat_`) or account password
799
+ schema:
800
+ type: string
779
801
  responses:
780
802
  "200":
781
803
  description: Passkey deleted
804
+ "403":
805
+ $ref: "#/components/responses/Forbidden"
782
806
 
783
807
  /v1/approvals/request:
784
808
  post:
@@ -861,6 +885,13 @@ paths:
861
885
  tags: [Authentication]
862
886
  summary: Delete current user account
863
887
  operationId: deleteMe
888
+ parameters:
889
+ - name: X-Auth-Confirm
890
+ in: header
891
+ required: true
892
+ description: Re-auth token (`rat_`, purpose `account.delete`) or password
893
+ schema:
894
+ type: string
864
895
  requestBody:
865
896
  required: true
866
897
  content:
@@ -878,6 +909,52 @@ paths:
878
909
  "400":
879
910
  $ref: "#/components/responses/BadRequest"
880
911
 
912
+ /v1/auth/settings:
913
+ get:
914
+ tags: [Authentication]
915
+ summary: Get user security settings
916
+ operationId: getSecuritySettings
917
+ responses:
918
+ "200":
919
+ description: Security settings
920
+ content:
921
+ application/json:
922
+ schema:
923
+ type: object
924
+ properties:
925
+ require_passkey_for_vaults:
926
+ type: boolean
927
+ passkey_count:
928
+ type: integer
929
+ patch:
930
+ tags: [Authentication]
931
+ summary: Update user security settings
932
+ description: |
933
+ Disabling `require_passkey_for_vaults` requires `X-Auth-Confirm`
934
+ (purpose `security.vault_passkey.disable`) with a passkey or TOTP
935
+ when either is enrolled.
936
+ operationId: updateSecuritySettings
937
+ parameters:
938
+ - name: X-Auth-Confirm
939
+ in: header
940
+ required: false
941
+ schema:
942
+ type: string
943
+ requestBody:
944
+ required: true
945
+ content:
946
+ application/json:
947
+ schema:
948
+ type: object
949
+ properties:
950
+ require_passkey_for_vaults:
951
+ type: boolean
952
+ responses:
953
+ "200":
954
+ description: Updated settings
955
+ "403":
956
+ $ref: "#/components/responses/Forbidden"
957
+
881
958
  # MFA
882
959
 
883
960
  /v1/auth/mfa/status:
@@ -953,7 +1030,18 @@ paths:
953
1030
  delete:
954
1031
  tags: [Authentication]
955
1032
  summary: Disable MFA
1033
+ description: |
1034
+ Requires a valid TOTP or recovery code in the body, or a passkey
1035
+ re-auth token in `X-Auth-Confirm` (purpose `security.mfa.disable`).
1036
+ Account password alone is not accepted while TOTP is enabled.
956
1037
  operationId: mfaDisable
1038
+ parameters:
1039
+ - name: X-Auth-Confirm
1040
+ in: header
1041
+ required: false
1042
+ description: Passkey or TOTP re-auth token (`rat_`)
1043
+ schema:
1044
+ type: string
957
1045
  requestBody:
958
1046
  required: true
959
1047
  content:
@@ -1118,8 +1206,15 @@ paths:
1118
1206
  Returns a full export of the authenticated user's data including
1119
1207
  profile, vaults, agents, secrets metadata, and policies. Intended
1120
1208
  for GDPR data-portability requests. Only available to human users
1121
- (not agents).
1209
+ (not agents). Requires `X-Auth-Confirm` (purpose `account.export`);
1210
+ passkey or TOTP when either is enrolled.
1122
1211
  operationId: exportUserData
1212
+ parameters:
1213
+ - name: X-Auth-Confirm
1214
+ in: header
1215
+ required: true
1216
+ schema:
1217
+ type: string
1123
1218
  responses:
1124
1219
  "200":
1125
1220
  description: User data export
@@ -10278,8 +10373,11 @@ components:
10278
10373
  properties:
10279
10374
  code:
10280
10375
  type: string
10376
+ description: TOTP or recovery code
10281
10377
  password:
10282
10378
  type: string
10379
+ description: Deprecated. Password is no longer sufficient to disable MFA.
10380
+ deprecated: true
10283
10381
 
10284
10382
  # --- Device Auth ---
10285
10383
 
@@ -17084,10 +17182,19 @@ components:
17084
17182
  TxConditions:
17085
17183
  type: object
17086
17184
  description: |
17087
- Signing-time AND conditions on access policies (all tiers).
17185
+ Signing-time conditions on access policies (all tiers).
17088
17186
  Ignored on secret reads. Evaluated when a TransactionContext is present.
17187
+ Fields are combined according to `match_mode` (default AND).
17089
17188
  additionalProperties: true
17090
17189
  properties:
17190
+ match_mode:
17191
+ type: string
17192
+ enum: [all, any]
17193
+ default: all
17194
+ description: |
17195
+ How individual condition fields are combined.
17196
+ "all" (default): every present field must match (AND).
17197
+ "any": at least one present field must match (OR).
17091
17198
  function_name_in:
17092
17199
  type: array
17093
17200
  items:
@@ -17100,7 +17207,33 @@ components:
17100
17207
  type: string
17101
17208
  value_above:
17102
17209
  type: string
17103
- description: Native value threshold in gwei
17210
+ description: Native value threshold in wei (arbitrary-precision string)
17211
+ eip712_primary_type_in:
17212
+ type: array
17213
+ items:
17214
+ type: string
17215
+ description: Match EIP-712 typed_data primaryType (case-sensitive)
17216
+ eip712_verifying_contract_in:
17217
+ type: array
17218
+ items:
17219
+ type: string
17220
+ description: Match EIP-712 domain.verifyingContract (case-insensitive)
17221
+ eip712_domain_name_in:
17222
+ type: array
17223
+ items:
17224
+ type: string
17225
+ description: Match EIP-712 domain.name
17226
+ eip712_domain_chain_id_in:
17227
+ type: array
17228
+ items:
17229
+ type: integer
17230
+ format: int64
17231
+ description: Match EIP-712 domain.chainId
17232
+ eip7702_authorized_addresses_in:
17233
+ type: array
17234
+ items:
17235
+ type: string
17236
+ description: Match EIP-7702 authorization_list delegate addresses (case-insensitive)
17104
17237
  to_address_in:
17105
17238
  type: array
17106
17239
  items:
@@ -17119,6 +17252,13 @@ components:
17119
17252
  type: array
17120
17253
  items:
17121
17254
  type: string
17255
+ deep_inspect:
17256
+ type: boolean
17257
+ default: false
17258
+ description: |
17259
+ When true, conditions are also evaluated against inner calls
17260
+ extracted from wrapper transactions (multicall, Safe execTransaction,
17261
+ ERC-4337 handleOps). A match on any inner call counts as an overall match.
17122
17262
 
17123
17263
  ConsensusTrigger:
17124
17264
  type: object
@@ -17137,18 +17277,106 @@ components:
17137
17277
  self_approval_allowed:
17138
17278
  type: boolean
17139
17279
  default: false
17280
+ skip_when:
17281
+ type: array
17282
+ description: |
17283
+ When ALL conditions in ANY entry match, consensus is bypassed.
17284
+ Useful for exempting known-safe recipients or low-value transfers.
17285
+ items:
17286
+ $ref: "#/components/schemas/FlatConditionSet"
17287
+ require_when:
17288
+ type: array
17289
+ description: |
17290
+ Consensus is ONLY required when at least one entry matches.
17291
+ If set and none match, consensus is skipped entirely.
17292
+ items:
17293
+ $ref: "#/components/schemas/FlatConditionSet"
17294
+ deep_inspect:
17295
+ type: boolean
17296
+ default: false
17297
+ description: |
17298
+ When true, also evaluate conditions against inner calls extracted
17299
+ from wrapper transactions (multicall, Safe execTransaction,
17300
+ ERC-4337 handleOps).
17301
+
17302
+ FlatConditionSet:
17303
+ type: object
17304
+ description: |
17305
+ Flat condition set used by consensus composability. Each present field
17306
+ is AND-combined within the set. At least one field must be specified
17307
+ (unless `always` is true).
17308
+ additionalProperties: false
17309
+ properties:
17310
+ value_above:
17311
+ type: string
17312
+ description: Native value threshold in gwei (numeric string)
17313
+ chain_in:
17314
+ type: array
17315
+ items:
17316
+ type: string
17317
+ to_address_in:
17318
+ type: array
17319
+ items:
17320
+ type: string
17321
+ function_selector_in:
17322
+ type: array
17323
+ items:
17324
+ type: string
17325
+ erc20_amount_above:
17326
+ type: string
17327
+ description: ERC-20 raw token amount threshold (numeric string)
17328
+ intent_type_in:
17329
+ type: array
17330
+ items:
17331
+ type: string
17332
+ always:
17333
+ type: boolean
17334
+ description: When true, this entry always matches regardless of other fields
17335
+
17336
+ TimeWindow:
17337
+ type: object
17338
+ description: |
17339
+ Time window condition for policy evaluation. Used inside the policy
17340
+ `conditions` JSON to restrict when the policy is active.
17341
+ properties:
17342
+ start_hour:
17343
+ type: integer
17344
+ minimum: 0
17345
+ maximum: 23
17346
+ end_hour:
17347
+ type: integer
17348
+ minimum: 0
17349
+ maximum: 24
17350
+ days_of_week:
17351
+ type: array
17352
+ description: Days when policy is active (0=Sunday, 6=Saturday)
17353
+ items:
17354
+ type: integer
17355
+ minimum: 0
17356
+ maximum: 6
17357
+ timezone:
17358
+ type: string
17359
+ description: IANA timezone identifier (e.g. "America/New_York"). Defaults to UTC.
17360
+ cron_expr:
17361
+ type: string
17362
+ description: Cron expression (6-field with seconds) for fine-grained scheduling.
17140
17363
 
17141
17364
  ConsensusCondition:
17142
17365
  oneOf:
17143
17366
  - type: object
17144
- required: [type, threshold_gwei]
17367
+ required: [type]
17145
17368
  properties:
17146
17369
  type:
17147
17370
  type: string
17148
17371
  enum: [value_above]
17372
+ threshold_wei:
17373
+ type: string
17374
+ description: Value threshold in wei (arbitrary-precision string). Preferred over threshold_gwei.
17149
17375
  threshold_gwei:
17150
17376
  type: integer
17151
17377
  format: int64
17378
+ deprecated: true
17379
+ description: Deprecated — use threshold_wei for arbitrary precision
17152
17380
  - type: object
17153
17381
  required: [type, chains]
17154
17382
  properties:
@@ -17203,6 +17431,19 @@ components:
17203
17431
  type:
17204
17432
  type: string
17205
17433
  enum: [always]
17434
+ - type: object
17435
+ required: [type, actions]
17436
+ properties:
17437
+ type:
17438
+ type: string
17439
+ enum: [action_in]
17440
+ actions:
17441
+ type: array
17442
+ items:
17443
+ type: string
17444
+ description: |
17445
+ Control-plane actions to match, e.g. policy.create, policy.update,
17446
+ policy.delete, signing_key.export, member.role_change, member.remove
17206
17447
 
17207
17448
  ApprovalRequirement:
17208
17449
  type: object
@@ -17218,6 +17459,12 @@ components:
17218
17459
  type: object
17219
17460
  additionalProperties:
17220
17461
  type: integer
17462
+ require_credential_types:
17463
+ type: array
17464
+ items:
17465
+ type: string
17466
+ enum: [password, passkey, totp, biometric, api_key]
17467
+ description: At least one approval must use one of these credential types
17221
17468
 
17222
17469
  SubmitPendingApprovalRequest:
17223
17470
  type: object
@@ -17260,6 +17507,10 @@ components:
17260
17507
  type: string
17261
17508
  reason:
17262
17509
  type: string
17510
+ credential_type:
17511
+ type: string
17512
+ enum: [password, passkey, totp, biometric, api_key]
17513
+ description: Authentication method used for this approval vote
17263
17514
 
17264
17515
  PendingApprovalResponse:
17265
17516
  type: object
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@1claw/openapi-spec",
3
- "version": "0.48.2",
3
+ "version": "0.50.0",
4
4
  "description": "OpenAPI 3.1.0 specification for the 1Claw Vault API — generate clients in any language",
5
5
  "license": "MIT",
6
6
  "repository": {