@1claw/openapi-spec 0.61.41 → 0.61.42

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 +1538 -863
  2. package/openapi.yaml +379 -698
  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.61.41"
5
+ version: "0.61.42"
6
6
  description: |
7
7
  Secure secret management for AI agents. Provides vaults, secrets,
8
8
  policy-based access control, agent identity, Intents API,
@@ -814,8 +814,7 @@ paths:
814
814
  created_at:
815
815
  type: string
816
816
  prf_supported:
817
- type: boolean
818
- nullable: true
817
+ type: [boolean, "null"]
819
818
  description: |
820
819
  `true` — can hold a wallet share (WebAuthn PRF).
821
820
  `false` — cannot. `null` — registered before this
@@ -4027,7 +4026,7 @@ paths:
4027
4026
  required: [tier]
4028
4027
  properties:
4029
4028
  tier: { type: string, enum: [unverified, platform_reviewed, identity_verified, enterprise] }
4030
- notes: { type: string, nullable: true, description: Internal review notes, never public }
4029
+ notes: { type: [string, "null"], description: 'Internal review notes, never public' }
4031
4030
  responses:
4032
4031
  '200':
4033
4032
  description: Tier set
@@ -4667,9 +4666,8 @@ paths:
4667
4666
  type: string
4668
4667
  enum: [active, frozen]
4669
4668
  frozen_at:
4670
- type: string
4669
+ type: [string, "null"]
4671
4670
  format: date-time
4672
- nullable: true
4673
4671
  "403":
4674
4672
  description: Forbidden
4675
4673
 
@@ -4887,22 +4885,6 @@ paths:
4887
4885
  "404":
4888
4886
  $ref: "#/components/responses/NotFound"
4889
4887
 
4890
- /v1/org/env-vars/{id}:
4891
- delete:
4892
- tags: [Organization]
4893
- summary: Delete org shared environment variable
4894
- operationId: deleteOrgEnvVar
4895
- parameters:
4896
- - name: id
4897
- in: path
4898
- required: true
4899
- schema:
4900
- type: string
4901
- format: uuid
4902
- responses:
4903
- "204":
4904
- description: Deleted
4905
-
4906
4888
  /v1/org/env-vars/{id}/link:
4907
4889
  post:
4908
4890
  tags: [Organization]
@@ -6254,7 +6236,7 @@ paths:
6254
6236
  required: [to, value]
6255
6237
  properties:
6256
6238
  to: { type: string }
6257
- value: { type: string, description: Major units, e.g. "0.5". }
6239
+ value: { type: string, description: 'Major units, e.g. "0.5".' }
6258
6240
  memo: { type: string }
6259
6241
  responses:
6260
6242
  "200":
@@ -6713,7 +6695,7 @@ paths:
6713
6695
  properties:
6714
6696
  to: { type: string }
6715
6697
  value_wei: { type: string }
6716
- data: { type: string, description: Hex calldata, optional. }
6698
+ data: { type: string, description: 'Hex calldata, optional.' }
6717
6699
  responses:
6718
6700
  "200":
6719
6701
  description: What to sign
@@ -6786,7 +6768,7 @@ paths:
6786
6768
  safe_address: { type: string }
6787
6769
  chain: { type: string }
6788
6770
  safe_tx_hash: { type: string }
6789
- deploy_tx_hash: { type: string, nullable: true }
6771
+ deploy_tx_hash: { type: [string, "null"] }
6790
6772
  tx_hash: { type: string }
6791
6773
  status: { type: string }
6792
6774
  "400":
@@ -6853,7 +6835,7 @@ paths:
6853
6835
  properties:
6854
6836
  agent_id: { type: string, format: uuid }
6855
6837
  token: { type: string, description: ERC-20 contract; omit for the native token. }
6856
- allowance_amount: { type: string, description: Base units, decimal string, ≤ 2^96-1. }
6838
+ allowance_amount: { type: string, description: 'Base units, decimal string, ≤ 2^96-1.' }
6857
6839
  reset_time_min: { type: integer, default: 1440, description: Reset period in minutes. }
6858
6840
  responses:
6859
6841
  "200":
@@ -6938,7 +6920,7 @@ paths:
6938
6920
  required: [to, amount]
6939
6921
  properties:
6940
6922
  to: { type: string }
6941
- amount: { type: string, description: Base units, decimal string. }
6923
+ amount: { type: string, description: 'Base units, decimal string.' }
6942
6924
  token: { type: string, description: ERC-20 contract; omit for the native token. }
6943
6925
  responses:
6944
6926
  "200":
@@ -7348,9 +7330,9 @@ paths:
7348
7330
  type: object
7349
7331
  properties:
7350
7332
  policy:
7351
- nullable: true
7352
- allOf:
7333
+ oneOf:
7353
7334
  - $ref: "#/components/schemas/SpendPolicyResponse"
7335
+ - type: "null"
7354
7336
  "401":
7355
7337
  $ref: "#/components/responses/Unauthorized"
7356
7338
 
@@ -8127,9 +8109,8 @@ paths:
8127
8109
  type: object
8128
8110
  properties:
8129
8111
  api_key_expires_at:
8130
- type: string
8112
+ type: [string, "null"]
8131
8113
  format: date-time
8132
- nullable: true
8133
8114
  description: Optional expiration for the new key.
8134
8115
  responses:
8135
8116
  "200":
@@ -8145,9 +8126,8 @@ paths:
8145
8126
  api_key_prefix:
8146
8127
  type: string
8147
8128
  api_key_expires_at:
8148
- type: string
8129
+ type: [string, "null"]
8149
8130
  format: date-time
8150
- nullable: true
8151
8131
  "403":
8152
8132
  description: Only human users can rotate platform keys
8153
8133
 
@@ -8349,8 +8329,7 @@ paths:
8349
8329
  name:
8350
8330
  type: string
8351
8331
  description:
8352
- type: string
8353
- nullable: true
8332
+ type: [string, "null"]
8354
8333
  spec:
8355
8334
  type: object
8356
8335
  additionalProperties: true
@@ -9075,9 +9054,8 @@ paths:
9075
9054
  type: string
9076
9055
  format: date-time
9077
9056
  details:
9078
- type: object
9057
+ type: [object, "null"]
9079
9058
  additionalProperties: true
9080
- nullable: true
9081
9059
  "404":
9082
9060
  $ref: "#/components/responses/NotFound"
9083
9061
 
@@ -11560,8 +11538,9 @@ paths:
11560
11538
  type: object
11561
11539
  properties:
11562
11540
  verdict:
11563
- $ref: "#/components/schemas/RiskVerdict"
11564
- nullable: true
11541
+ oneOf:
11542
+ - $ref: "#/components/schemas/RiskVerdict"
11543
+ - type: "null"
11565
11544
  "401":
11566
11545
  $ref: "#/components/responses/Unauthorized"
11567
11546
  "404":
@@ -11871,7 +11850,7 @@ paths:
11871
11850
  application/json:
11872
11851
  schema:
11873
11852
  $ref: "#/components/schemas/PayPrepareResponse"
11874
- "400": { description: Not a usable 402 challenge, or a non-USDC asset }
11853
+ "400": { description: 'Not a usable 402 challenge, or a non-USDC asset' }
11875
11854
  "403": { description: pay is not enabled for this agent }
11876
11855
  /v1/agents/{agent_id}/pay/sign:
11877
11856
  post:
@@ -11906,7 +11885,7 @@ paths:
11906
11885
  application/json:
11907
11886
  schema:
11908
11887
  $ref: "#/components/schemas/PaySignResponse"
11909
- "403": { description: Policy refused, or the required authorization was absent }
11888
+ "403": { description: 'Policy refused, or the required authorization was absent' }
11910
11889
  "409":
11911
11890
  description: >
11912
11891
  ChallengeExpired. Re-fetch the resource for a fresh 402 and
@@ -11939,9 +11918,8 @@ paths:
11939
11918
  cap_usd: { type: string }
11940
11919
  ttl_secs: { type: integer }
11941
11920
  allowed_paytos:
11942
- type: array
11921
+ type: [array, "null"]
11943
11922
  items: { type: string }
11944
- nullable: true
11945
11923
  responses:
11946
11924
  '200':
11947
11925
  description: The digest to assert over
@@ -11955,7 +11933,7 @@ paths:
11955
11933
  action: { type: string, enum: [x402_grant] }
11956
11934
  expires_in_secs: { type: integer }
11957
11935
  '400': { description: Invalid terms }
11958
- '403': { description: Not a human caller, grant mode disabled, or over the agent's maximum }
11936
+ '403': { description: 'Not a human caller, grant mode disabled, or over the agent''s maximum' }
11959
11937
  /v1/agents/{agent_id}/pay/grants:
11960
11938
  post:
11961
11939
  tags: [Pay]
@@ -11981,7 +11959,7 @@ paths:
11981
11959
  $ref: "#/components/schemas/CreatePayGrantRequest"
11982
11960
  responses:
11983
11961
  "200": { description: Grant created }
11984
- "403": { description: Not a human caller, grant mode disabled, or terms exceed the agent's maximum }
11962
+ "403": { description: 'Not a human caller, grant mode disabled, or terms exceed the agent''s maximum' }
11985
11963
  /v1/agents/{agent_id}/pay/{payment_id}/result:
11986
11964
  post:
11987
11965
  tags: [Pay]
@@ -12035,8 +12013,8 @@ paths:
12035
12013
  required: true
12036
12014
  schema: { type: string, format: uuid }
12037
12015
  responses:
12038
- "200": { description: Quote and status, rendered from the stored preimage }
12039
- "403": { description: Not a human caller, or the session was raised for someone else }
12016
+ "200": { description: 'Quote and status, rendered from the stored preimage' }
12017
+ "403": { description: 'Not a human caller, or the session was raised for someone else' }
12040
12018
  /v1/pay-sessions/{session_id}/authorize:
12041
12019
  post:
12042
12020
  tags: [Pay]
@@ -12076,7 +12054,7 @@ paths:
12076
12054
  schema: { type: string, format: uuid }
12077
12055
  responses:
12078
12056
  "200": { description: Revoked }
12079
- "404": { description: Not found, or already revoked }
12057
+ "404": { description: 'Not found, or already revoked' }
12080
12058
  /v1/agents/{agent_id}/cards/order:
12081
12059
  post:
12082
12060
  tags: [Payment Cards]
@@ -13996,11 +13974,9 @@ paths:
13996
13974
  success:
13997
13975
  type: boolean
13998
13976
  message:
13999
- type: string
14000
- nullable: true
13977
+ type: [string, "null"]
14001
13978
  error:
14002
- type: string
14003
- nullable: true
13979
+ type: [string, "null"]
14004
13980
  "401":
14005
13981
  $ref: "#/components/responses/Unauthorized"
14006
13982
  "404":
@@ -14284,7 +14260,7 @@ paths:
14284
14260
  fingerprint_bucket: { type: string, example: "refund.create|0-10|known|a@b.co" }
14285
14261
  consecutive_approvals: { type: integer }
14286
14262
  total_requests: { type: integer }
14287
- would_write_rule: { type: object, nullable: true }
14263
+ would_write_rule: { type: [object, "null"] }
14288
14264
  blocked:
14289
14265
  type: string
14290
14266
  description: Present when a bound prevents promotion, saying which.
@@ -14781,7 +14757,7 @@ paths:
14781
14757
  properties:
14782
14758
  tier: { type: string, enum: [unverified, platform_reviewed, identity_verified, enterprise] }
14783
14759
  install_count: { type: integer }
14784
- avg_rating: { type: number, nullable: true }
14760
+ avg_rating: { type: [number, "null"] }
14785
14761
  review_count: { type: integer }
14786
14762
  badges: { type: array, items: { type: string } }
14787
14763
  flagged_for_review: { type: boolean }
@@ -14936,7 +14912,7 @@ paths:
14936
14912
  properties:
14937
14913
  fact_key: { type: string }
14938
14914
  fact_value: { type: object }
14939
- confidence: { type: string, nullable: true }
14915
+ confidence: { type: [string, "null"] }
14940
14916
  why_we_believe_this: { type: array, items: { type: object } }
14941
14917
  corrected_by_a_human: { type: boolean }
14942
14918
  raw_observations: { type: array, items: { type: object } }
@@ -15240,8 +15216,7 @@ paths:
15240
15216
  required: [reasoning, suggest_auto]
15241
15217
  properties:
15242
15218
  likelihood:
15243
- type: number
15244
- nullable: true
15219
+ type: [number, "null"]
15245
15220
  description: Absent when there is no comparable history.
15246
15221
  reasoning: { type: string }
15247
15222
  suggest_auto:
@@ -15733,8 +15708,7 @@ paths:
15733
15708
  binding_name: { type: string }
15734
15709
  preset_slug: { type: string }
15735
15710
  authorization_url:
15736
- type: string
15737
- nullable: true
15711
+ type: [string, "null"]
15738
15712
  description: Absent for connectors that use a pasted API key rather than OAuth.
15739
15713
  next_step:
15740
15714
  type: string
@@ -19020,8 +18994,7 @@ paths:
19020
18994
  content:
19021
18995
  application/json:
19022
18996
  schema:
19023
- nullable: true
19024
- type: object
18997
+ type: [object, "null"]
19025
18998
  properties:
19026
18999
  enabled: { type: boolean }
19027
19000
  endpoint: { type: string }
@@ -19075,7 +19048,7 @@ paths:
19075
19048
  responses:
19076
19049
  '200':
19077
19050
  description: The updated config, header names only
19078
- '400': { description: Endpoint refused (scheme, credentials, private or unresolvable host), reserved header, or enabling with no endpoint }
19051
+ '400': { description: 'Endpoint refused (scheme, credentials, private or unresolvable host), reserved header, or enabling with no endpoint' }
19079
19052
  '401': { description: Unauthenticated }
19080
19053
  '402': { description: Requires the Team plan or higher }
19081
19054
  '403': { description: Not an owner or admin }
@@ -19100,7 +19073,7 @@ paths:
19100
19073
  endpoint: { type: string }
19101
19074
  status: { type: integer }
19102
19075
  ok: { type: boolean }
19103
- '400': { description: Not configured, or the send failed }
19076
+ '400': { description: 'Not configured, or the send failed' }
19104
19077
  '401': { description: Unauthenticated }
19105
19078
  '402': { description: Requires the Team plan or higher }
19106
19079
  '403': { description: Not an owner or admin }
@@ -19165,10 +19138,9 @@ paths:
19165
19138
  transactions: { type: integer }
19166
19139
  llm_calls: { type: integer }
19167
19140
  latency_p50_ms:
19168
- type: number
19169
- nullable: true
19141
+ type: [number, "null"]
19170
19142
  description: Null when nothing in the window recorded a duration.
19171
- latency_p95_ms: { type: number, nullable: true }
19143
+ latency_p95_ms: { type: [number, "null"] }
19172
19144
  total_executions: { type: integer }
19173
19145
  total_denials: { type: integer }
19174
19146
  '400':
@@ -19213,19 +19185,19 @@ paths:
19213
19185
  required: [agent_id, shadow, components, history, recent]
19214
19186
  properties:
19215
19187
  agent_id: { type: string, format: uuid }
19216
- score: { type: integer, minimum: 0, maximum: 100, nullable: true }
19188
+ score: { type: [integer, "null"], minimum: 0, maximum: 100 }
19217
19189
  shadow: { type: boolean, description: "True while the engine is recommend-only or the agent is unscored." }
19218
- updated_at: { type: string, format: date-time, nullable: true }
19190
+ updated_at: { type: [string, "null"], format: date-time }
19219
19191
  components:
19220
19192
  type: object
19221
19193
  description: "0-100 per component; null means no source in this deployment."
19222
19194
  properties:
19223
- denial_rate: { type: integer, nullable: true }
19224
- threat_hits: { type: integer, nullable: true }
19225
- egress_blocks: { type: integer, nullable: true }
19226
- spend_velocity: { type: integer, nullable: true }
19227
- off_hours: { type: integer, nullable: true }
19228
- consensus_bypass: { type: integer, nullable: true }
19195
+ denial_rate: { type: [integer, "null"] }
19196
+ threat_hits: { type: [integer, "null"] }
19197
+ egress_blocks: { type: [integer, "null"] }
19198
+ spend_velocity: { type: [integer, "null"] }
19199
+ off_hours: { type: [integer, "null"] }
19200
+ consensus_bypass: { type: [integer, "null"] }
19229
19201
  history:
19230
19202
  type: array
19231
19203
  maxItems: 96
@@ -19246,7 +19218,7 @@ paths:
19246
19218
  properties:
19247
19219
  at: { type: string, format: date-time }
19248
19220
  action: { type: string }
19249
- resource_type: { type: string, nullable: true }
19221
+ resource_type: { type: [string, "null"] }
19250
19222
  '401': { description: Unauthenticated }
19251
19223
  '403': { description: Not a human user }
19252
19224
  '404': { description: No such agent in the caller's organization }
@@ -19548,8 +19520,7 @@ paths:
19548
19520
  masked:
19549
19521
  type: boolean
19550
19522
  overrides:
19551
- type: string
19552
- nullable: true
19523
+ type: [string, "null"]
19553
19524
  "401":
19554
19525
  $ref: "#/components/responses/Unauthorized"
19555
19526
  "404":
@@ -19748,15 +19719,13 @@ paths:
19748
19719
  chat_capable:
19749
19720
  type: boolean
19750
19721
  license:
19751
- type: string
19752
- nullable: true
19722
+ type: [string, "null"]
19753
19723
  description: SPDX id, or null when the agent is proprietary
19754
19724
  requires_vendor_subscription:
19755
19725
  type: boolean
19756
19726
  description: Whether the agent needs a paid account with its vendor. Independent of licence — the Codex CLI is Apache-2.0 and still requires a ChatGPT plan.
19757
19727
  vendor_credential_env:
19758
- type: string
19759
- nullable: true
19728
+ type: [string, "null"]
19760
19729
  '401':
19761
19730
  description: Unauthenticated
19762
19731
  /v1/automations/step-types:
@@ -19856,19 +19825,15 @@ paths:
19856
19825
  label:
19857
19826
  type: string
19858
19827
  platform:
19859
- type: string
19860
- nullable: true
19828
+ type: [string, "null"]
19861
19829
  bridge_version:
19862
- type: string
19863
- nullable: true
19830
+ type: [string, "null"]
19864
19831
  last_seen_at:
19865
- type: string
19832
+ type: [string, "null"]
19866
19833
  format: date-time
19867
- nullable: true
19868
19834
  revoked_at:
19869
- type: string
19835
+ type: [string, "null"]
19870
19836
  format: date-time
19871
- nullable: true
19872
19837
  description: Set once revoked. A revoked credential stops resolving.
19873
19838
  created_at:
19874
19839
  type: string
@@ -20405,7 +20370,7 @@ components:
20405
20370
  blast_radius_size:
20406
20371
  type: integer
20407
20372
  description: Sum of the blast radius. The sort key.
20408
- resolved_by: { type: string, nullable: true }
20373
+ resolved_by: { type: [string, "null"] }
20409
20374
  created_at: { type: string, format: date-time }
20410
20375
  updated_at: { type: string, format: date-time }
20411
20376
  OtelSummary:
@@ -20425,11 +20390,10 @@ components:
20425
20390
  type: object
20426
20391
  properties:
20427
20392
  pay_enabled: { type: boolean }
20428
- pay_max_usd: { type: string, nullable: true }
20429
- pay_daily_limit_usd: { type: string, nullable: true }
20393
+ pay_max_usd: { type: [string, "null"] }
20394
+ pay_daily_limit_usd: { type: [string, "null"] }
20430
20395
  pay_payto_allowlist:
20431
- type: array
20432
- nullable: true
20396
+ type: [array, "null"]
20433
20397
  items: { type: string }
20434
20398
  description: >
20435
20399
  Recipients an unattended agent may pay. Null is not a
@@ -20439,8 +20403,8 @@ components:
20439
20403
  description: Defaults true. Turning it off is what "unattended" means.
20440
20404
  pay_require_approval: { type: boolean }
20441
20405
  pay_grant_mode_enabled: { type: boolean }
20442
- pay_grant_max_usd: { type: string, nullable: true }
20443
- pay_grant_max_ttl_secs: { type: integer, nullable: true }
20406
+ pay_grant_max_usd: { type: [string, "null"] }
20407
+ pay_grant_max_ttl_secs: { type: [integer, "null"] }
20444
20408
  PayPrepareRequest:
20445
20409
  type: object
20446
20410
  required: [challenge_b64, method, resource_url]
@@ -20470,7 +20434,7 @@ components:
20470
20434
  payment_digest: { type: string }
20471
20435
  sign_idempotency_key: { type: string }
20472
20436
  quote: { type: object, additionalProperties: true }
20473
- valid_before: { type: string, format: date-time, nullable: true }
20437
+ valid_before: { type: [string, "null"], format: date-time }
20474
20438
  expires_at: { type: string, format: date-time }
20475
20439
  authorization:
20476
20440
  type: string
@@ -20499,19 +20463,18 @@ components:
20499
20463
  description: The X-PAYMENT header value. The signature, never the key.
20500
20464
  amount_usd: { type: string }
20501
20465
  pay_to: { type: string }
20502
- grant_id: { type: string, format: uuid, nullable: true }
20466
+ grant_id: { type: [string, "null"], format: uuid }
20503
20467
  PayResultRequest:
20504
20468
  type: object
20505
20469
  properties:
20506
20470
  http_status: { type: integer }
20507
20471
  settled:
20508
- type: boolean
20509
- nullable: true
20472
+ type: [boolean, "null"]
20510
20473
  description: >
20511
20474
  Null means the caller could not tell — a timeout after the
20512
20475
  header was sent, where the payment may or may not have
20513
20476
  been presented.
20514
- error: { type: string, nullable: true }
20477
+ error: { type: [string, "null"] }
20515
20478
  CreatePayGrantRequest:
20516
20479
  type: object
20517
20480
  required: [cap_usd, ttl_secs, grant_digest]
@@ -20519,8 +20482,7 @@ components:
20519
20482
  cap_usd: { type: string }
20520
20483
  ttl_secs: { type: integer }
20521
20484
  allowed_paytos:
20522
- type: array
20523
- nullable: true
20485
+ type: [array, "null"]
20524
20486
  items: { type: string }
20525
20487
  description: >
20526
20488
  Null means any recipient; an empty list means none. The two
@@ -20558,9 +20520,8 @@ components:
20558
20520
  type: string
20559
20521
  format: uuid
20560
20522
  agent_id:
20561
- type: string
20523
+ type: [string, "null"]
20562
20524
  format: uuid
20563
- nullable: true
20564
20525
  issuer:
20565
20526
  type: string
20566
20527
  enum: [laso, manual]
@@ -20644,13 +20605,11 @@ components:
20644
20605
  max_reveals:
20645
20606
  type: integer
20646
20607
  reveal_expires_at:
20647
- type: string
20608
+ type: [string, "null"]
20648
20609
  format: date-time
20649
- nullable: true
20650
20610
  void_after:
20651
- type: string
20611
+ type: [string, "null"]
20652
20612
  format: date-time
20653
- nullable: true
20654
20613
  ImportCardRequest:
20655
20614
  type: object
20656
20615
  required: [pan, cvv, exp_month, exp_year]
@@ -21676,7 +21635,7 @@ components:
21676
21635
  type: string
21677
21636
  enum: [pending, approved, denied, expired]
21678
21637
  agent_name: { type: string }
21679
- fingerprint: { type: string, nullable: true }
21638
+ fingerprint: { type: [string, "null"] }
21680
21639
  agent_id: { type: string, format: uuid }
21681
21640
  api_key:
21682
21641
  type: string
@@ -21774,8 +21733,7 @@ components:
21774
21733
  items:
21775
21734
  type: string
21776
21735
  token_ttl_seconds:
21777
- type: integer
21778
- nullable: true
21736
+ type: [integer, "null"]
21779
21737
  description: Per-agent token TTL in seconds (overrides global default)
21780
21738
  vault_ids:
21781
21739
  type: array
@@ -21841,12 +21799,10 @@ components:
21841
21799
  gas_daily_budget_native (UTC-day cumulative EVM gas estimate in native units).
21842
21800
  Strictest of global and per-chain limits wins. Daily limits apply per chain family spend, not cross-chain totals.
21843
21801
  tx_max_per_day:
21844
- type: integer
21845
- nullable: true
21802
+ type: [integer, "null"]
21846
21803
  description: Max transactions per UTC calendar day. Null = unlimited.
21847
21804
  tx_overhead_budget:
21848
- type: object
21849
- nullable: true
21805
+ type: [object, "null"]
21850
21806
  additionalProperties:
21851
21807
  type: string
21852
21808
  description: Per-chain daily overhead budget in native units (e.g. {"solana":"0.5","xrp":"100"}).
@@ -21877,14 +21833,12 @@ components:
21877
21833
  default: true
21878
21834
  description: When true, card orders route through the human approval queue before x402 payment.
21879
21835
  tx_approval_policy:
21880
- type: object
21836
+ type: [object, "null"]
21881
21837
  additionalProperties: true
21882
- nullable: true
21883
21838
  description: Graduated transaction approval policy (HITL thresholds). Separate from hard guardrails.
21884
21839
  action_approval_policy:
21885
- type: object
21840
+ type: [object, "null"]
21886
21841
  additionalProperties: true
21887
- nullable: true
21888
21842
  description: |
21889
21843
  Which business actions this agent must ask a human about, and above what
21890
21844
  amount. `{}` means no per-action rules.
@@ -21910,24 +21864,19 @@ components:
21910
21864
  default: false
21911
21865
  description: Block unlimited ERC-20 approvals (max uint256 / setApprovalForAll).
21912
21866
  tx_per_recipient_max_per_day:
21913
- type: integer
21914
- nullable: true
21867
+ type: [integer, "null"]
21915
21868
  description: Max transactions to the same recipient address per UTC day.
21916
21869
  tx_per_recipient_daily_limit:
21917
- type: string
21918
- nullable: true
21870
+ type: [string, "null"]
21919
21871
  description: Max native-unit spend to the same recipient per UTC day.
21920
21872
  new_recipient_cap_native:
21921
- type: string
21922
- nullable: true
21873
+ type: [string, "null"]
21923
21874
  description: Cap on first-time recipient spend in native units.
21924
21875
  tx_max_value_usd:
21925
- type: string
21926
- nullable: true
21876
+ type: [string, "null"]
21927
21877
  description: Per-transaction USD cap (requires price oracle).
21928
21878
  tx_daily_limit_usd:
21929
- type: string
21930
- nullable: true
21879
+ type: [string, "null"]
21931
21880
  description: Rolling 24h USD spend cap (requires price oracle).
21932
21881
  raw_signing_policy:
21933
21882
  type: string
@@ -21947,9 +21896,8 @@ components:
21947
21896
  default: false
21948
21897
  description: Allow EIP-7702 (tx type 4) set-code transactions.
21949
21898
  api_key_expires_at:
21950
- type: string
21899
+ type: [string, "null"]
21951
21900
  format: date-time
21952
- nullable: true
21953
21901
  description: Optional expiration time for the agent's API key.
21954
21902
  environment:
21955
21903
  type: string
@@ -22072,8 +22020,7 @@ components:
22072
22020
  items:
22073
22021
  type: string
22074
22022
  token_ttl_seconds:
22075
- type: integer
22076
- nullable: true
22023
+ type: [integer, "null"]
22077
22024
  vault_ids:
22078
22025
  type: array
22079
22026
  items:
@@ -22085,8 +22032,7 @@ components:
22085
22032
  shroud_config:
22086
22033
  $ref: "#/components/schemas/ShroudConfig"
22087
22034
  system_prompt:
22088
- type: string
22089
- nullable: true
22035
+ type: [string, "null"]
22090
22036
  description: Default system prompt for agent chat (null clears).
22091
22037
  execution_intents_enabled:
22092
22038
  type: boolean
@@ -22102,12 +22048,10 @@ components:
22102
22048
  type: boolean
22103
22049
  description: When true, execute requests must arrive via TEE and all direct secret reads are blocked (Pro+ only)
22104
22050
  tx_max_per_day:
22105
- type: integer
22106
- nullable: true
22051
+ type: [integer, "null"]
22107
22052
  description: Max transactions per UTC calendar day. Null = unlimited.
22108
22053
  tx_overhead_budget:
22109
- type: object
22110
- nullable: true
22054
+ type: [object, "null"]
22111
22055
  additionalProperties:
22112
22056
  type: string
22113
22057
  description: Per-chain daily overhead budget in native units.
@@ -22120,12 +22064,10 @@ components:
22120
22064
  type: boolean
22121
22065
  description: Whether this agent may order payment cards (x402 card ordering). Pro+ tier.
22122
22066
  card_max_order_usd:
22123
- type: string
22124
- nullable: true
22067
+ type: [string, "null"]
22125
22068
  description: Maximum USD amount for a single card order. null clears.
22126
22069
  card_daily_limit_usd:
22127
- type: string
22128
- nullable: true
22070
+ type: [string, "null"]
22129
22071
  description: Maximum cumulative USD spent ordering cards per rolling 24h window. null clears.
22130
22072
  card_payto_allowlist:
22131
22073
  type: array
@@ -22139,14 +22081,12 @@ components:
22139
22081
  type: boolean
22140
22082
  description: When true, card orders route through the human approval queue before x402 payment.
22141
22083
  tx_approval_policy:
22142
- type: object
22084
+ type: [object, "null"]
22143
22085
  additionalProperties: true
22144
- nullable: true
22145
22086
  description: Graduated transaction approval policy (HITL thresholds).
22146
22087
  action_approval_policy:
22147
- type: object
22088
+ type: [object, "null"]
22148
22089
  additionalProperties: true
22149
- nullable: true
22150
22090
  description: |
22151
22091
  Which business actions this agent must ask a human about, and above what
22152
22092
  amount. `{}` means no per-action rules.
@@ -22160,37 +22100,30 @@ components:
22160
22100
  transaction limit. Malformed rules are rejected on write rather than
22161
22101
  ignored at request time.
22162
22102
  typed_data_policy:
22163
- type: string
22103
+ type: [string, "null"]
22164
22104
  enum: [deny, approve]
22165
- nullable: true
22166
22105
  description: EIP-712 escalation policy.
22167
22106
  simulation_failure_policy:
22168
- type: string
22107
+ type: [string, "null"]
22169
22108
  enum: [deny, approve]
22170
- nullable: true
22171
22109
  description: Simulation failure escalation policy.
22172
22110
  tx_block_unlimited_approvals:
22173
22111
  type: boolean
22174
22112
  description: Block unlimited ERC-20 approvals (max uint256 / setApprovalForAll).
22175
22113
  tx_per_recipient_max_per_day:
22176
- type: integer
22177
- nullable: true
22114
+ type: [integer, "null"]
22178
22115
  description: Max transactions to the same recipient per UTC day. Null clears.
22179
22116
  tx_per_recipient_daily_limit:
22180
- type: string
22181
- nullable: true
22117
+ type: [string, "null"]
22182
22118
  description: Max native spend to same recipient per UTC day. Null clears.
22183
22119
  new_recipient_cap_native:
22184
- type: string
22185
- nullable: true
22120
+ type: [string, "null"]
22186
22121
  description: First-time recipient native cap. Null clears.
22187
22122
  tx_max_value_usd:
22188
- type: string
22189
- nullable: true
22123
+ type: [string, "null"]
22190
22124
  description: Per-tx USD cap. Null clears.
22191
22125
  tx_daily_limit_usd:
22192
- type: string
22193
- nullable: true
22126
+ type: [string, "null"]
22194
22127
  description: Rolling 24h USD spend cap. Null clears.
22195
22128
  raw_signing_policy:
22196
22129
  type: string
@@ -22225,10 +22158,9 @@ components:
22225
22158
  tokens for (e.g. `["https://api.anthropic.com"]`). Empty array
22226
22159
  blocks all federation requests (zero-trust default).
22227
22160
  federated_token_ttl_seconds:
22228
- type: integer
22161
+ type: [integer, "null"]
22229
22162
  minimum: 60
22230
22163
  maximum: 3600
22231
- nullable: true
22232
22164
  description: |
22233
22165
  Per-agent TTL override for federation tokens (seconds). NULL falls
22234
22166
  back to the global default (`ONECLAW_JWT_FEDERATED_TOKEN_EXPIRY_SECS`).
@@ -22256,13 +22188,11 @@ components:
22256
22188
  max_fee_per_gas_gwei, max_gas_limit, gas_daily_budget_native (UTC-day cumulative EVM gas in native units).
22257
22189
  Strictest of global and per-chain limits wins. Daily limits apply per chain family spend, not cross-chain totals.
22258
22190
  api_key_expires_at:
22259
- type: string
22191
+ type: [string, "null"]
22260
22192
  format: date-time
22261
- nullable: true
22262
22193
  description: Optional expiration time for the agent's API key. Set to null to clear.
22263
22194
  environment:
22264
- type: string
22265
- nullable: true
22195
+ type: [string, "null"]
22266
22196
  description: Named environment for this agent (production, preview, development, or custom).
22267
22197
  environment_locked:
22268
22198
  type: boolean
@@ -22374,8 +22304,7 @@ components:
22374
22304
  items:
22375
22305
  type: string
22376
22306
  token_ttl_seconds:
22377
- type: integer
22378
- nullable: true
22307
+ type: [integer, "null"]
22379
22308
  vault_ids:
22380
22309
  type: array
22381
22310
  items:
@@ -22418,12 +22347,10 @@ components:
22418
22347
  type: boolean
22419
22348
  description: When true, execute requests must arrive via TEE and all direct secret reads are blocked (Pro+ only)
22420
22349
  tx_max_per_day:
22421
- type: integer
22422
- nullable: true
22350
+ type: [integer, "null"]
22423
22351
  description: Max transactions per UTC calendar day. Null = unlimited.
22424
22352
  tx_overhead_budget:
22425
- type: object
22426
- nullable: true
22353
+ type: [object, "null"]
22427
22354
  additionalProperties:
22428
22355
  type: string
22429
22356
  description: Per-chain daily overhead budget in native units.
@@ -22453,14 +22380,12 @@ components:
22453
22380
  type: boolean
22454
22381
  description: When true, card orders route through the human approval queue before x402 payment.
22455
22382
  tx_approval_policy:
22456
- type: object
22383
+ type: [object, "null"]
22457
22384
  additionalProperties: true
22458
- nullable: true
22459
22385
  description: Graduated transaction approval policy (HITL thresholds).
22460
22386
  action_approval_policy:
22461
- type: object
22387
+ type: [object, "null"]
22462
22388
  additionalProperties: true
22463
- nullable: true
22464
22389
  description: |
22465
22390
  Which business actions this agent must ask a human about, and above what
22466
22391
  amount. `{}` means no per-action rules.
@@ -22474,38 +22399,30 @@ components:
22474
22399
  transaction limit. Malformed rules are rejected on write rather than
22475
22400
  ignored at request time.
22476
22401
  typed_data_policy:
22477
- type: string
22402
+ type: [string, "null"]
22478
22403
  enum: [deny, approve]
22479
- nullable: true
22480
22404
  simulation_failure_policy:
22481
- type: string
22405
+ type: [string, "null"]
22482
22406
  enum: [deny, approve]
22483
- nullable: true
22484
22407
  tx_block_unlimited_approvals:
22485
22408
  type: boolean
22486
22409
  description: Block unlimited ERC-20 approvals.
22487
22410
  tx_per_recipient_max_per_day:
22488
- type: integer
22489
- nullable: true
22411
+ type: [integer, "null"]
22490
22412
  tx_per_recipient_daily_limit:
22491
- type: string
22492
- nullable: true
22413
+ type: [string, "null"]
22493
22414
  new_recipient_cap_native:
22494
- type: string
22495
- nullable: true
22415
+ type: [string, "null"]
22496
22416
  tx_max_value_usd:
22497
- type: string
22498
- nullable: true
22417
+ type: [string, "null"]
22499
22418
  tx_daily_limit_usd:
22500
- type: string
22501
- nullable: true
22419
+ type: [string, "null"]
22502
22420
  raw_signing_policy:
22503
22421
  type: string
22504
22422
  enum: [allow, deny, approve]
22505
22423
  personal_sign_policy:
22506
- type: object
22424
+ type: [object, "null"]
22507
22425
  additionalProperties: true
22508
- nullable: true
22509
22426
  allow_erc4337:
22510
22427
  type: boolean
22511
22428
  allow_eip7702:
@@ -22533,8 +22450,7 @@ components:
22533
22450
  format: uri
22534
22451
  description: Allowlist of audience URIs the agent may federate to.
22535
22452
  federated_token_ttl_seconds:
22536
- type: integer
22537
- nullable: true
22453
+ type: [integer, "null"]
22538
22454
  description: Per-agent TTL override for federation tokens (60..=3600).
22539
22455
  signing_chains:
22540
22456
  type: array
@@ -22582,13 +22498,11 @@ components:
22582
22498
  type: string
22583
22499
  description: 'Per-chain-family daily spend in native major units (keys: evm, bitcoin, solana, xrp, cardano, tron).'
22584
22500
  api_key_expires_at:
22585
- type: string
22501
+ type: [string, "null"]
22586
22502
  format: date-time
22587
- nullable: true
22588
22503
  description: Optional expiration time for the agent's API key.
22589
22504
  evm_address:
22590
- type: string
22591
- nullable: true
22505
+ type: [string, "null"]
22592
22506
  description: Agent's Ethereum EOA address (used as Safe signer for smart accounts and Intents API).
22593
22507
  created_at:
22594
22508
  type: string
@@ -22605,8 +22519,7 @@ components:
22605
22519
  items:
22606
22520
  $ref: "#/components/schemas/AgentSmartAccountResponse"
22607
22521
  environment:
22608
- type: string
22609
- nullable: true
22522
+ type: [string, "null"]
22610
22523
  description: Named environment this agent belongs to (production, preview, development, or custom).
22611
22524
  environment_locked:
22612
22525
  type: boolean
@@ -22645,8 +22558,7 @@ components:
22645
22558
  is_verified:
22646
22559
  type: boolean
22647
22560
  logo_url:
22648
- type: string
22649
- nullable: true
22561
+ type: [string, "null"]
22650
22562
  created_at:
22651
22563
  type: string
22652
22564
  format: date-time
@@ -22684,8 +22596,7 @@ components:
22684
22596
  type: boolean
22685
22597
  default: true
22686
22598
  logo_url:
22687
- type: string
22688
- nullable: true
22599
+ type: [string, "null"]
22689
22600
 
22690
22601
  AgentSmartAccountResponse:
22691
22602
  type: object
@@ -23437,8 +23348,7 @@ components:
23437
23348
  public_key:
23438
23349
  type: string
23439
23350
  address:
23440
- type: string
23441
- nullable: true
23351
+ type: [string, "null"]
23442
23352
  key_version:
23443
23353
  type: integer
23444
23354
  is_active:
@@ -23447,9 +23357,8 @@ components:
23447
23357
  type: string
23448
23358
  format: date-time
23449
23359
  rotated_at:
23450
- type: string
23360
+ type: [string, "null"]
23451
23361
  format: date-time
23452
- nullable: true
23453
23362
  custody:
23454
23363
  type: string
23455
23364
  enum: [server, client_tss]
@@ -23521,8 +23430,7 @@ components:
23521
23430
  the capability was reachable only from the end user's own
23522
23431
  dashboard. Templates now honour the flag too.
23523
23432
  system_prompt:
23524
- type: string
23525
- nullable: true
23433
+ type: [string, "null"]
23526
23434
 
23527
23435
  PatchConnectionAgentResponse:
23528
23436
  type: object
@@ -23537,8 +23445,7 @@ components:
23537
23445
  memory_enabled:
23538
23446
  type: boolean
23539
23447
  system_prompt:
23540
- type: string
23541
- nullable: true
23448
+ type: [string, "null"]
23542
23449
 
23543
23450
  # Bankr Dynamic Key Vending
23544
23451
  LeaseBankrKeyRequest:
@@ -23672,9 +23579,8 @@ components:
23672
23579
  is_active:
23673
23580
  type: boolean
23674
23581
  expires_at:
23675
- type: string
23582
+ type: [string, "null"]
23676
23583
  format: date-time
23677
- nullable: true
23678
23584
 
23679
23585
  DelegationResponse:
23680
23586
  type: object
@@ -23704,8 +23610,7 @@ components:
23704
23610
  items:
23705
23611
  type: string
23706
23612
  max_daily_delegations:
23707
- type: integer
23708
- nullable: true
23613
+ type: [integer, "null"]
23709
23614
  max_depth:
23710
23615
  type: integer
23711
23616
  guardrails:
@@ -23719,9 +23624,8 @@ components:
23719
23624
  type: string
23720
23625
  format: uuid
23721
23626
  expires_at:
23722
- type: string
23627
+ type: [string, "null"]
23723
23628
  format: date-time
23724
- nullable: true
23725
23629
  created_at:
23726
23630
  type: string
23727
23631
  format: date-time
@@ -23868,23 +23772,17 @@ components:
23868
23772
  from:
23869
23773
  type: string
23870
23774
  signature:
23871
- type: string
23872
- nullable: true
23775
+ type: [string, "null"]
23873
23776
  signed_tx:
23874
- type: string
23875
- nullable: true
23777
+ type: [string, "null"]
23876
23778
  tx_hash:
23877
- type: string
23878
- nullable: true
23779
+ type: [string, "null"]
23879
23780
  message_hash:
23880
- type: string
23881
- nullable: true
23781
+ type: [string, "null"]
23882
23782
  typed_data_hash:
23883
- type: string
23884
- nullable: true
23783
+ type: [string, "null"]
23885
23784
  tx_type:
23886
- type: integer
23887
- nullable: true
23785
+ type: [integer, "null"]
23888
23786
 
23889
23787
  TransactionResponse:
23890
23788
  type: object
@@ -23908,8 +23806,7 @@ components:
23908
23806
  enum:
23909
23807
  [pending, signed, sign_only, broadcast, failed, simulation_failed]
23910
23808
  signed_tx:
23911
- type: string
23912
- nullable: true
23809
+ type: [string, "null"]
23913
23810
  description: >
23914
23811
  Raw signed transaction hex. On GET list and GET by id, this property is omitted by default (absent from the response). Pass `include_signed_tx=true` on those endpoints to include it. Always present on the initial POST submit response.
23915
23812
  tx_hash:
@@ -24262,9 +24159,8 @@ components:
24262
24159
  welcome_bundle_complete:
24263
24160
  type: boolean
24264
24161
  default_vault_id:
24265
- type: string
24162
+ type: [string, "null"]
24266
24163
  format: uuid
24267
- nullable: true
24268
24164
 
24269
24165
  OnboardingProvisionRequest:
24270
24166
  type: object
@@ -24561,31 +24457,26 @@ components:
24561
24457
  description: Metered line from Stripe upcoming invoice (usage detail when available).
24562
24458
  properties:
24563
24459
  description:
24564
- type: string
24565
- nullable: true
24460
+ type: [string, "null"]
24566
24461
  amount_cents:
24567
24462
  type: integer
24568
24463
  format: int64
24569
24464
  quantity:
24570
- type: number
24571
- nullable: true
24465
+ type: [number, "null"]
24572
24466
  description: Billed usage units when Stripe returns quantity (e.g. tokens).
24573
24467
  price_nickname:
24574
- type: string
24575
- nullable: true
24468
+ type: [string, "null"]
24576
24469
 
24577
24470
  LlmBillingCycleUsage:
24578
24471
  type: object
24579
24472
  description: Accrued LLM charges for the current Stripe subscription period (upcoming invoice).
24580
24473
  properties:
24581
24474
  period_start:
24582
- type: string
24475
+ type: [string, "null"]
24583
24476
  format: date-time
24584
- nullable: true
24585
24477
  period_end:
24586
- type: string
24478
+ type: [string, "null"]
24587
24479
  format: date-time
24588
- nullable: true
24589
24480
  accrued_usage_cents:
24590
24481
  type: integer
24591
24482
  format: int64
@@ -24757,9 +24648,8 @@ components:
24757
24648
  type: integer
24758
24649
  description: Total events examined
24759
24650
  broken_at_event_id:
24760
- type: string
24651
+ type: [string, "null"]
24761
24652
  format: uuid
24762
- nullable: true
24763
24653
  description: First event where chain integrity broke (null if valid)
24764
24654
  scheme:
24765
24655
  type: object
@@ -24801,9 +24691,10 @@ components:
24801
24691
  type: string
24802
24692
  description: GCE metadata identity JWT (verify against Google public keys)
24803
24693
  confidential_claims:
24804
- nullable: true
24805
24694
  description: Confidential Computing claims extracted from the identity JWT
24806
- $ref: "#/components/schemas/ConfidentialClaims"
24695
+ oneOf:
24696
+ - $ref: "#/components/schemas/ConfidentialClaims"
24697
+ - type: "null"
24807
24698
  verification:
24808
24699
  type: object
24809
24700
  properties:
@@ -24818,8 +24709,7 @@ components:
24818
24709
  type: string
24819
24710
 
24820
24711
  ConfidentialClaims:
24821
- type: object
24822
- nullable: true
24712
+ type: [object, "null"]
24823
24713
  properties:
24824
24714
  secboot:
24825
24715
  type: boolean
@@ -25222,32 +25112,26 @@ components:
25222
25112
  value_wei:
25223
25113
  type: string
25224
25114
  data_hex:
25225
- type: string
25226
- nullable: true
25115
+ type: [string, "null"]
25227
25116
  operation:
25228
25117
  type: integer
25229
25118
  safe_tx_hash:
25230
- type: string
25231
- nullable: true
25119
+ type: [string, "null"]
25232
25120
  nonce:
25233
- type: integer
25234
- nullable: true
25121
+ type: [integer, "null"]
25235
25122
  status:
25236
25123
  type: string
25237
25124
  enum: [pending, approved, executing, executed, rejected, expired]
25238
25125
  threshold:
25239
25126
  type: integer
25240
25127
  expires_at:
25241
- type: string
25128
+ type: [string, "null"]
25242
25129
  format: date-time
25243
- nullable: true
25244
25130
  executed_tx_hash:
25245
- type: string
25246
- nullable: true
25131
+ type: [string, "null"]
25247
25132
  executed_at:
25248
- type: string
25133
+ type: [string, "null"]
25249
25134
  format: date-time
25250
- nullable: true
25251
25135
  signatures:
25252
25136
  type: array
25253
25137
  items:
@@ -25586,13 +25470,11 @@ components:
25586
25470
  contract_address:
25587
25471
  type: string
25588
25472
  symbol:
25589
- type: string
25590
- nullable: true
25473
+ type: [string, "null"]
25591
25474
  balance:
25592
25475
  type: string
25593
25476
  decimals:
25594
- type: integer
25595
- nullable: true
25477
+ type: [integer, "null"]
25596
25478
 
25597
25479
  # --- x402 ---
25598
25480
 
@@ -25864,12 +25746,10 @@ components:
25864
25746
  enum: [silent, user_signin, configurable]
25865
25747
  default: silent
25866
25748
  max_connected_users:
25867
- type: integer
25868
- nullable: true
25749
+ type: [integer, "null"]
25869
25750
  api_key_expires_at:
25870
- type: string
25751
+ type: [string, "null"]
25871
25752
  format: date-time
25872
- nullable: true
25873
25753
  description: Optional expiration time for the platform API key.
25874
25754
 
25875
25755
  UpdatePlatformAppRequest:
@@ -25901,18 +25781,15 @@ components:
25901
25781
  type: string
25902
25782
  enum: [silent, user_signin, configurable]
25903
25783
  max_connected_users:
25904
- type: integer
25905
- nullable: true
25784
+ type: [integer, "null"]
25906
25785
  is_active:
25907
25786
  type: boolean
25908
25787
  api_key_expires_at:
25909
- type: string
25788
+ type: [string, "null"]
25910
25789
  format: date-time
25911
- nullable: true
25912
25790
  description: Optional expiration time for the platform API key. Set to null to clear.
25913
25791
  siwe_domain:
25914
- type: string
25915
- nullable: true
25792
+ type: [string, "null"]
25916
25793
  description: Hostname allowed in SIWE messages for wallet sign-in (EIP-4361).
25917
25794
 
25918
25795
  PlatformAppDeleteResponse:
@@ -25968,27 +25845,22 @@ components:
25968
25845
  description:
25969
25846
  type: string
25970
25847
  logo_url:
25971
- type: string
25972
- nullable: true
25848
+ type: [string, "null"]
25973
25849
  api_key_prefix:
25974
25850
  type: string
25975
25851
  oidc_jwks_url:
25976
- type: string
25977
- nullable: true
25852
+ type: [string, "null"]
25978
25853
  oidc_issuer:
25979
- type: string
25980
- nullable: true
25854
+ type: [string, "null"]
25981
25855
  oidc_audience:
25982
- type: string
25983
- nullable: true
25856
+ type: [string, "null"]
25984
25857
  description: Expected audience claim for OIDC token validation
25985
25858
  redirect_uris:
25986
25859
  type: array
25987
25860
  items:
25988
25861
  type: string
25989
25862
  webhook_url:
25990
- type: string
25991
- nullable: true
25863
+ type: [string, "null"]
25992
25864
  is_active:
25993
25865
  type: boolean
25994
25866
  billing_model:
@@ -25996,23 +25868,19 @@ components:
25996
25868
  auth_mode:
25997
25869
  type: string
25998
25870
  max_connected_users:
25999
- type: integer
26000
- nullable: true
25871
+ type: [integer, "null"]
26001
25872
  connected_users:
26002
25873
  type: integer
26003
25874
  api_key_expires_at:
26004
- type: string
25875
+ type: [string, "null"]
26005
25876
  format: date-time
26006
- nullable: true
26007
25877
  description: When the platform API key expires.
26008
25878
  api_key_rotated_at:
26009
- type: string
25879
+ type: [string, "null"]
26010
25880
  format: date-time
26011
- nullable: true
26012
25881
  description: When the platform API key was last rotated.
26013
25882
  siwe_domain:
26014
- type: string
26015
- nullable: true
25883
+ type: [string, "null"]
26016
25884
  description: Hostname allowed in SIWE messages for wallet sign-in (EIP-4361).
26017
25885
  created_at:
26018
25886
  type: string
@@ -26413,9 +26281,8 @@ components:
26413
26281
  type: string
26414
26282
  format: date-time
26415
26283
  claimed_at:
26416
- type: string
26284
+ type: [string, "null"]
26417
26285
  format: date-time
26418
- nullable: true
26419
26286
 
26420
26287
  BootstrapRequest:
26421
26288
  type: object
@@ -26453,13 +26320,11 @@ components:
26453
26320
  type: object
26454
26321
  properties:
26455
26322
  vault_id:
26456
- type: string
26323
+ type: [string, "null"]
26457
26324
  format: uuid
26458
- nullable: true
26459
26325
  agent_id:
26460
- type: string
26326
+ type: [string, "null"]
26461
26327
  format: uuid
26462
- nullable: true
26463
26328
  agent_ids:
26464
26329
  type: array
26465
26330
  items:
@@ -26477,12 +26342,10 @@ components:
26477
26342
  type: string
26478
26343
  description: Chains with provisioned signing keys
26479
26344
  agent_api_key:
26480
- type: string
26481
- nullable: true
26345
+ type: [string, "null"]
26482
26346
  description: One-time agent API key (ocv_ prefix). Store securely — not retrievable later.
26483
26347
  agent_evm_address:
26484
- type: string
26485
- nullable: true
26348
+ type: [string, "null"]
26486
26349
  description: EOA address when provision_eoa is true in the template
26487
26350
  signing_keys:
26488
26351
  type: array
@@ -26549,11 +26412,9 @@ components:
26549
26412
  description:
26550
26413
  type: string
26551
26414
  logo_url:
26552
- type: string
26553
- nullable: true
26415
+ type: [string, "null"]
26554
26416
  category:
26555
- type: string
26556
- nullable: true
26417
+ type: [string, "null"]
26557
26418
  listing_tags:
26558
26419
  type: array
26559
26420
  items:
@@ -26563,8 +26424,7 @@ components:
26563
26424
  items:
26564
26425
  type: string
26565
26426
  pricing_summary:
26566
- type: string
26567
- nullable: true
26427
+ type: [string, "null"]
26568
26428
 
26569
26429
  ConnectedAppResponse:
26570
26430
  type: object
@@ -26642,9 +26502,8 @@ components:
26642
26502
  items:
26643
26503
  type: string
26644
26504
  expires_at:
26645
- type: string
26505
+ type: [string, "null"]
26646
26506
  format: date-time
26647
- nullable: true
26648
26507
  created_at:
26649
26508
  type: string
26650
26509
  format: date-time
@@ -26686,8 +26545,7 @@ components:
26686
26545
  app_slug:
26687
26546
  type: string
26688
26547
  app_logo_url:
26689
- type: string
26690
- nullable: true
26548
+ type: [string, "null"]
26691
26549
  auth_mode:
26692
26550
  type: string
26693
26551
  vault_ids:
@@ -26709,8 +26567,7 @@ components:
26709
26567
  expired:
26710
26568
  type: boolean
26711
26569
  return_to:
26712
- type: string
26713
- nullable: true
26570
+ type: [string, "null"]
26714
26571
 
26715
26572
  ClaimRedeemResponse:
26716
26573
  type: object
@@ -26731,8 +26588,7 @@ components:
26731
26588
  type: string
26732
26589
  format: uuid
26733
26590
  return_to:
26734
- type: string
26735
- nullable: true
26591
+ type: [string, "null"]
26736
26592
  dashboard_url:
26737
26593
  type: string
26738
26594
 
@@ -26789,9 +26645,8 @@ components:
26789
26645
  attestation_verified:
26790
26646
  type: boolean
26791
26647
  last_used_at:
26792
- type: string
26648
+ type: [string, "null"]
26793
26649
  format: date-time
26794
- nullable: true
26795
26650
  created_at:
26796
26651
  type: string
26797
26652
  format: date-time
@@ -26922,7 +26777,7 @@ components:
26922
26777
  id: { type: string, format: uuid }
26923
26778
  peer_type: { type: string, enum: [user, platform_connection, external] }
26924
26779
  peer_ref: { type: string }
26925
- display_name: { type: string, nullable: true }
26780
+ display_name: { type: [string, "null"] }
26926
26781
  profile: { type: object, additionalProperties: true }
26927
26782
  status:
26928
26783
  type: string
@@ -26942,8 +26797,7 @@ components:
26942
26797
  fact_key: { type: string, example: "approval_tendency:refund.create|0-10|known|a@b.co" }
26943
26798
  fact_value: { type: object, additionalProperties: true }
26944
26799
  confidence:
26945
- type: string
26946
- nullable: true
26800
+ type: [string, "null"]
26947
26801
  description: 0..1, capped below certainty — no history makes the next decision certain.
26948
26802
  provenance:
26949
26803
  type: array
@@ -26964,8 +26818,8 @@ components:
26964
26818
  target_type:
26965
26819
  type: string
26966
26820
  enum: [sms, webhook, expo, email]
26967
- user_id: { type: string, format: uuid, nullable: true }
26968
- agent_id: { type: string, format: uuid, nullable: true }
26821
+ user_id: { type: [string, "null"], format: uuid }
26822
+ agent_id: { type: [string, "null"], format: uuid }
26969
26823
  config: { type: object, additionalProperties: true }
26970
26824
  events:
26971
26825
  type: array
@@ -26987,8 +26841,7 @@ components:
26987
26841
  description: { type: string }
26988
26842
  category: { type: string, example: communication }
26989
26843
  provider_slug:
26990
- type: string
26991
- nullable: true
26844
+ type: [string, "null"]
26992
26845
  description: "`oauth_providers.slug`, or null when the connector uses a pasted API key."
26993
26846
  oauth_scopes:
26994
26847
  type: array
@@ -27061,11 +26914,11 @@ components:
27061
26914
  key_prefix:
27062
26915
  type: string
27063
26916
  description: First 20 characters (`sk-shroud-v1-` + 7) — enough to recognise, not to use
27064
- max_concurrent_streams: { type: integer, nullable: true }
27065
- spend_cap_usd: { type: number, nullable: true }
26917
+ max_concurrent_streams: { type: [integer, "null"] }
26918
+ spend_cap_usd: { type: [number, "null"] }
27066
26919
  created_at: { type: string, format: date-time }
27067
- last_used_at: { type: string, format: date-time, nullable: true }
27068
- revoked_at: { type: string, format: date-time, nullable: true }
26920
+ last_used_at: { type: [string, "null"], format: date-time }
26921
+ revoked_at: { type: [string, "null"], format: date-time }
27069
26922
 
27070
26923
  RouterKeyCreated:
27071
26924
  allOf:
@@ -27116,7 +26969,7 @@ components:
27116
26969
  destination_hosts:
27117
26970
  type: array
27118
26971
  items: { type: string }
27119
- created_by: { type: string, format: uuid, nullable: true }
26972
+ created_by: { type: [string, "null"], format: uuid }
27120
26973
  created_at: { type: string, format: date-time }
27121
26974
 
27122
26975
  X402TopupResponse:
@@ -27153,8 +27006,8 @@ components:
27153
27006
  type: boolean
27154
27007
  description: False until the first poll has recorded what already exists. That poll emits nothing.
27155
27008
  next_poll_at: { type: string, format: date-time }
27156
- last_polled_at: { type: string, format: date-time, nullable: true }
27157
- last_error: { type: string, nullable: true }
27009
+ last_polled_at: { type: [string, "null"], format: date-time }
27010
+ last_error: { type: [string, "null"] }
27158
27011
  consecutive_errors: { type: integer }
27159
27012
  events_emitted: { type: integer, format: int64 }
27160
27013
  created_at: { type: string, format: date-time }
@@ -27167,8 +27020,7 @@ components:
27167
27020
  binding_name: { type: string }
27168
27021
  preset_slug: { type: string }
27169
27022
  display_name:
27170
- type: string
27171
- nullable: true
27023
+ type: [string, "null"]
27172
27024
  description: Null if the preset has since been retired from the catalogue.
27173
27025
  is_active: { type: boolean }
27174
27026
  connected:
@@ -27193,9 +27045,8 @@ components:
27193
27045
  type: string
27194
27046
  format: uuid
27195
27047
  agent_id:
27196
- type: string
27048
+ type: [string, "null"]
27197
27049
  format: uuid
27198
- nullable: true
27199
27050
  action:
27200
27051
  type: string
27201
27052
  target_type:
@@ -27208,17 +27059,15 @@ components:
27208
27059
  maximum: 3
27209
27060
  description: "The tier actually enforced. Authoritative."
27210
27061
  declared_risk_tier:
27211
- type: integer
27062
+ type: [integer, "null"]
27212
27063
  minimum: 1
27213
27064
  maximum: 3
27214
- nullable: true
27215
27065
  description: "What the caller asked for, when it asked for anything."
27216
27066
  declared_below_floor:
27217
27067
  type: boolean
27218
27068
  description: "The caller asked for a lower tier than policy required."
27219
27069
  human_summary:
27220
- type: string
27221
- nullable: true
27070
+ type: [string, "null"]
27222
27071
  description: "Plain-language line sent to SMS, push and email."
27223
27072
  payload:
27224
27073
  type: object
@@ -27230,23 +27079,18 @@ components:
27230
27079
  type: object
27231
27080
  description: Structured summary of the action requiring approval
27232
27081
  reason:
27233
- type: string
27234
- nullable: true
27082
+ type: [string, "null"]
27235
27083
  decision_reason:
27236
- type: string
27237
- nullable: true
27084
+ type: [string, "null"]
27238
27085
  decided_by:
27239
- type: string
27086
+ type: [string, "null"]
27240
27087
  format: uuid
27241
- nullable: true
27242
27088
  decided_at:
27243
- type: string
27089
+ type: [string, "null"]
27244
27090
  format: date-time
27245
- nullable: true
27246
27091
  expires_at:
27247
- type: string
27092
+ type: [string, "null"]
27248
27093
  format: date-time
27249
- nullable: true
27250
27094
  created_at:
27251
27095
  type: string
27252
27096
  format: date-time
@@ -27270,9 +27114,8 @@ components:
27270
27114
  type: string
27271
27115
  enum: [pending, approved, rejected, expired, cancelled]
27272
27116
  expires_at:
27273
- type: string
27117
+ type: [string, "null"]
27274
27118
  format: date-time
27275
- nullable: true
27276
27119
 
27277
27120
  GuardrailReasonCode:
27278
27121
  type: string
@@ -27321,23 +27164,18 @@ components:
27321
27164
  reason_code:
27322
27165
  $ref: "#/components/schemas/GuardrailReasonCode"
27323
27166
  limit:
27324
- type: string
27325
- nullable: true
27167
+ type: [string, "null"]
27326
27168
  current:
27327
- type: string
27328
- nullable: true
27169
+ type: [string, "null"]
27329
27170
  attempted:
27330
- type: string
27331
- nullable: true
27171
+ type: [string, "null"]
27332
27172
  approval_available:
27333
27173
  type: boolean
27334
27174
  default: false
27335
27175
  retry_after_seconds:
27336
- type: integer
27337
- nullable: true
27176
+ type: [integer, "null"]
27338
27177
  detail:
27339
- type: string
27340
- nullable: true
27178
+ type: [string, "null"]
27341
27179
 
27342
27180
  GuardrailDenial:
27343
27181
  description: Alias of GuardrailViolation (Convention 1 JSON shape).
@@ -27365,8 +27203,7 @@ components:
27365
27203
  type: string
27366
27204
  format: email
27367
27205
  wallet_address:
27368
- type: string
27369
- nullable: true
27206
+ type: [string, "null"]
27370
27207
  description: Ethereum address if auto_provision_chains included an EVM chain
27371
27208
 
27372
27209
  # --- OAuth ---
@@ -27380,9 +27217,8 @@ components:
27380
27217
  app_slug:
27381
27218
  type: string
27382
27219
  app_logo_url:
27383
- type: string
27220
+ type: [string, "null"]
27384
27221
  format: uri
27385
- nullable: true
27386
27222
  scopes:
27387
27223
  type: array
27388
27224
  items: { type: string }
@@ -27405,12 +27241,10 @@ components:
27405
27241
  type: integer
27406
27242
  description: Token lifetime in seconds
27407
27243
  refresh_token:
27408
- type: string
27409
- nullable: true
27244
+ type: [string, "null"]
27410
27245
  description: Refresh token for obtaining new access tokens (when offline_access scope was granted)
27411
27246
  id_token:
27412
- type: string
27413
- nullable: true
27247
+ type: [string, "null"]
27414
27248
  description: OIDC ID token (when openid scope was granted)
27415
27249
  scope:
27416
27250
  type: string
@@ -27426,11 +27260,9 @@ components:
27426
27260
  type: string
27427
27261
  format: email
27428
27262
  name:
27429
- type: string
27430
- nullable: true
27263
+ type: [string, "null"]
27431
27264
  wallet_address:
27432
- type: string
27433
- nullable: true
27265
+ type: [string, "null"]
27434
27266
 
27435
27267
  # --- Spend Policies ---
27436
27268
 
@@ -27533,14 +27365,12 @@ components:
27533
27365
  entitlement_status:
27534
27366
  type: string
27535
27367
  provisioned_tier:
27536
- type: string
27537
- nullable: true
27368
+ type: [string, "null"]
27538
27369
  description: |
27539
27370
  Billing tier granted to the end-user org when billing_model is platform_pays
27540
27371
  (from template plan at bootstrap). Null when not provisioned.
27541
27372
  wallet_address:
27542
- type: string
27543
- nullable: true
27373
+ type: [string, "null"]
27544
27374
  vault_ids:
27545
27375
  type: array
27546
27376
  items:
@@ -27562,9 +27392,8 @@ components:
27562
27392
  type: string
27563
27393
  format: uuid
27564
27394
  claimed_at:
27565
- type: string
27395
+ type: [string, "null"]
27566
27396
  format: date-time
27567
- nullable: true
27568
27397
  claim:
27569
27398
  $ref: "#/components/schemas/ClaimStatusResponse"
27570
27399
 
@@ -27576,9 +27405,8 @@ components:
27576
27405
  type: string
27577
27406
  enum: [pending, active, claimed]
27578
27407
  redeemed_at:
27579
- type: string
27408
+ type: [string, "null"]
27580
27409
  format: date-time
27581
- nullable: true
27582
27410
 
27583
27411
  ConnectionUsageResponse:
27584
27412
  type: object
@@ -27634,12 +27462,10 @@ components:
27634
27462
  holder_address:
27635
27463
  type: string
27636
27464
  last_value_raw:
27637
- type: string
27638
- nullable: true
27465
+ type: [string, "null"]
27639
27466
  last_checked_at:
27640
- type: string
27467
+ type: [string, "null"]
27641
27468
  format: date-time
27642
- nullable: true
27643
27469
 
27644
27470
  TemplatePreviewRequest:
27645
27471
  type: object
@@ -27691,18 +27517,15 @@ components:
27691
27517
  type: string
27692
27518
  format: date-time
27693
27519
  connection_id:
27694
- type: string
27520
+ type: [string, "null"]
27695
27521
  format: uuid
27696
- nullable: true
27697
27522
 
27698
27523
  InferenceBudgetUnconfiguredResponse:
27699
27524
  type: object
27700
27525
  properties:
27701
27526
  allowance_usd:
27702
- type: string
27703
- nullable: true
27704
- remaining_usd:
27705
- nullable: true
27527
+ type: [string, "null"]
27528
+ remaining_usd: {}
27706
27529
  message:
27707
27530
  type: string
27708
27531
 
@@ -27717,9 +27540,8 @@ components:
27717
27540
  type: string
27718
27541
  format: uuid
27719
27542
  user_id:
27720
- type: string
27543
+ type: [string, "null"]
27721
27544
  format: uuid
27722
- nullable: true
27723
27545
  to_allowlist:
27724
27546
  type: array
27725
27547
  items: { type: string }
@@ -27727,11 +27549,9 @@ components:
27727
27549
  type: array
27728
27550
  items: { type: string }
27729
27551
  max_value_per_tx_eth:
27730
- type: string
27731
- nullable: true
27552
+ type: [string, "null"]
27732
27553
  daily_limit_eth:
27733
- type: string
27734
- nullable: true
27554
+ type: [string, "null"]
27735
27555
  allowed_chains:
27736
27556
  type: array
27737
27557
  items: { type: string }
@@ -27739,27 +27559,20 @@ components:
27739
27559
  type: array
27740
27560
  items: { type: string }
27741
27561
  max_transactions_per_day:
27742
- type: integer
27743
- nullable: true
27562
+ type: [integer, "null"]
27744
27563
  inference_allowance_usd:
27745
- type: string
27746
- nullable: true
27564
+ type: [string, "null"]
27747
27565
  inference_reserved_pct:
27748
- type: integer
27749
- nullable: true
27566
+ type: [integer, "null"]
27750
27567
  inference_hard_stop:
27751
- type: boolean
27752
- nullable: true
27568
+ type: [boolean, "null"]
27753
27569
  inference_allowance_mode:
27754
- type: string
27755
- nullable: true
27570
+ type: [string, "null"]
27756
27571
  max_request_cost_usd:
27757
- type: string
27758
- nullable: true
27572
+ type: [string, "null"]
27759
27573
  human_factor_auth:
27760
- type: object
27574
+ type: [object, "null"]
27761
27575
  additionalProperties: true
27762
- nullable: true
27763
27576
  created_at:
27764
27577
  type: string
27765
27578
  format: date-time
@@ -27782,8 +27595,7 @@ components:
27782
27595
  type: object
27783
27596
  properties:
27784
27597
  require_passkey_above_usd:
27785
- type: string
27786
- nullable: true
27598
+ type: [string, "null"]
27787
27599
  require_passkey_for_new_recipient:
27788
27600
  type: boolean
27789
27601
 
@@ -27859,8 +27671,7 @@ components:
27859
27671
  name:
27860
27672
  type: string
27861
27673
  prf_supported:
27862
- type: boolean
27863
- nullable: true
27674
+ type: [boolean, "null"]
27864
27675
  description: |
27865
27676
  `prf.enabled` from `credential.getClientExtensionResults()` —
27866
27677
  whether this authenticator can derive the secret that wraps a
@@ -27875,9 +27686,8 @@ components:
27875
27686
  enum: [passkey_prf, recovery_code]
27876
27687
  description: Sidecar wraps are stored through `PUT /v1/keys/{key_id}/client-share/holder`.
27877
27688
  credential_id:
27878
- type: string
27689
+ type: [string, "null"]
27879
27690
  format: uuid
27880
- nullable: true
27881
27691
  description: Required for `passkey_prf`; the passkey id from `GET /v1/auth/passkeys`.
27882
27692
  wrapped_share:
27883
27693
  type: string
@@ -27902,13 +27712,11 @@ components:
27902
27712
  type: string
27903
27713
  enum: [passkey_prf, recovery_code, sidecar]
27904
27714
  credential_id:
27905
- type: string
27715
+ type: [string, "null"]
27906
27716
  format: uuid
27907
- nullable: true
27908
27717
  holder_id:
27909
- type: string
27718
+ type: [string, "null"]
27910
27719
  format: uuid
27911
- nullable: true
27912
27720
  wrapped_share:
27913
27721
  type: string
27914
27722
  description: Base64, exactly as stored.
@@ -27940,11 +27748,11 @@ components:
27940
27748
  chain_id: { type: integer }
27941
27749
  safe_address: { type: string }
27942
27750
  passkey_id: { type: string, format: uuid }
27943
- passkey_name: { type: string, nullable: true, description: The owning passkey's name — only that credential can sign for the Safe. }
27944
- passkey_rp_id: { type: string, nullable: true, description: The domain the owning passkey was registered under (WebAuthn rpId); a browser on another domain cannot use it. }
27751
+ passkey_name: { type: [string, "null"], description: The owning passkey's name — only that credential can sign for the Safe. }
27752
+ passkey_rp_id: { type: [string, "null"], description: The domain the owning passkey was registered under (WebAuthn rpId); a browser on another domain cannot use it. }
27945
27753
  custody: { type: string, enum: [passkey_owner] }
27946
27754
  deploy_status: { type: string, enum: [pending, deployed] }
27947
- deploy_tx_hash: { type: string, nullable: true }
27755
+ deploy_tx_hash: { type: [string, "null"] }
27948
27756
  owner_signer: { type: string, description: The SafeWebAuthnSharedSigner address listed as the Safe's owner. }
27949
27757
  created_at: { type: string, format: date-time }
27950
27758
 
@@ -27965,11 +27773,10 @@ components:
27965
27773
  safe_tx_hash: { type: string, description: Hex SafeTx hash — the WebAuthn challenge (raw 32 bytes). }
27966
27774
  credential_id: { type: string }
27967
27775
  transports:
27968
- type: array
27969
- nullable: true
27776
+ type: [array, "null"]
27970
27777
  items: { type: string }
27971
27778
  description: The passkey's registered transports (`internal`, `hybrid`, `usb`…) — pass as the `allowCredentials` hint so the browser asks the right authenticator.
27972
- passkey_name: { type: string, nullable: true }
27779
+ passkey_name: { type: [string, "null"] }
27973
27780
  rp_id: { type: string }
27974
27781
 
27975
27782
  PasskeySafeGrant:
@@ -27984,8 +27791,8 @@ components:
27984
27791
  allowance_amount: { type: string, description: Base units per reset period. }
27985
27792
  reset_time_min: { type: integer }
27986
27793
  status: { type: string, enum: [pending, active, revoking, revoked] }
27987
- setup_tx_hash: { type: string, nullable: true }
27988
- revoke_tx_hash: { type: string, nullable: true }
27794
+ setup_tx_hash: { type: [string, "null"] }
27795
+ revoke_tx_hash: { type: [string, "null"] }
27989
27796
  created_at: { type: string, format: date-time }
27990
27797
 
27991
27798
  PasskeySafeGrantPrepare:
@@ -28126,35 +27933,25 @@ components:
28126
27933
  type: string
28127
27934
  description: "Risk event type (e.g. first_seen, geo_velocity, honeytoken_access)"
28128
27935
  ip:
28129
- type: string
28130
- nullable: true
27936
+ type: [string, "null"]
28131
27937
  asn:
28132
- type: integer
28133
- nullable: true
27938
+ type: [integer, "null"]
28134
27939
  asn_org:
28135
- type: string
28136
- nullable: true
27940
+ type: [string, "null"]
28137
27941
  country_code:
28138
- type: string
28139
- nullable: true
27942
+ type: [string, "null"]
28140
27943
  region:
28141
- type: string
28142
- nullable: true
27944
+ type: [string, "null"]
28143
27945
  city:
28144
- type: string
28145
- nullable: true
27946
+ type: [string, "null"]
28146
27947
  latitude:
28147
- type: number
28148
- nullable: true
27948
+ type: [number, "null"]
28149
27949
  longitude:
28150
- type: number
28151
- nullable: true
27950
+ type: [number, "null"]
28152
27951
  user_agent:
28153
- type: string
28154
- nullable: true
27952
+ type: [string, "null"]
28155
27953
  severity:
28156
- type: string
28157
- nullable: true
27954
+ type: [string, "null"]
28158
27955
  description: "Computed severity at event time (low, medium, high, critical)"
28159
27956
  payload:
28160
27957
  type: object
@@ -28246,14 +28043,12 @@ components:
28246
28043
  type: string
28247
28044
  format: date-time
28248
28045
  notes:
28249
- type: string
28250
- nullable: true
28046
+ type: [string, "null"]
28251
28047
  triggered_count:
28252
28048
  type: integer
28253
28049
  last_triggered_at:
28254
- type: string
28050
+ type: [string, "null"]
28255
28051
  format: date-time
28256
- nullable: true
28257
28052
 
28258
28053
  CreateHoneytokenRequest:
28259
28054
  type: object
@@ -28424,18 +28219,15 @@ components:
28424
28219
  type: boolean
28425
28220
  description: Whether a credential is stored for this binding. The value itself is never returned.
28426
28221
  credential_source_type:
28427
- type: string
28222
+ type: [string, "null"]
28428
28223
  enum: [inline, vault_ref]
28429
- nullable: true
28430
28224
  description: How the credential is sourced — inline (HSM-encrypted copy) or vault_ref (live pointer).
28431
28225
  credential_vault_id:
28432
- type: string
28226
+ type: [string, "null"]
28433
28227
  format: uuid
28434
- nullable: true
28435
28228
  description: For vault_ref credentials — the vault containing the referenced secret.
28436
28229
  credential_path:
28437
- type: string
28438
- nullable: true
28230
+ type: [string, "null"]
28439
28231
  description: For vault_ref credentials — the secret path in the referenced vault.
28440
28232
  created_at:
28441
28233
  type: string
@@ -28453,8 +28245,7 @@ components:
28453
28245
  latency_ms:
28454
28246
  type: integer
28455
28247
  error:
28456
- type: string
28457
- nullable: true
28248
+ type: [string, "null"]
28458
28249
 
28459
28250
  ExecuteRequest:
28460
28251
  type: object
@@ -28498,9 +28289,8 @@ components:
28498
28289
  type: string
28499
28290
  enum: [pending]
28500
28291
  expires_at:
28501
- type: string
28292
+ type: [string, "null"]
28502
28293
  format: date-time
28503
- nullable: true
28504
28294
 
28505
28295
  TxAwaitingApproval:
28506
28296
  type: object
@@ -28513,13 +28303,11 @@ components:
28513
28303
  type: string
28514
28304
  format: uuid
28515
28305
  tx_id:
28516
- type: string
28306
+ type: [string, "null"]
28517
28307
  format: uuid
28518
- nullable: true
28519
28308
  expires_at:
28520
- type: string
28309
+ type: [string, "null"]
28521
28310
  format: date-time
28522
- nullable: true
28523
28311
 
28524
28312
  ExecuteResponse:
28525
28313
  type: object
@@ -28531,12 +28319,10 @@ components:
28531
28319
  status:
28532
28320
  type: string
28533
28321
  result:
28534
- type: object
28322
+ type: [object, "null"]
28535
28323
  additionalProperties: true
28536
- nullable: true
28537
28324
  error:
28538
- type: string
28539
- nullable: true
28325
+ type: [string, "null"]
28540
28326
  duration_ms:
28541
28327
  type: integer
28542
28328
  redactions_applied:
@@ -28566,21 +28352,17 @@ components:
28566
28352
  status:
28567
28353
  type: string
28568
28354
  request_summary:
28569
- type: object
28355
+ type: [object, "null"]
28570
28356
  additionalProperties: true
28571
- nullable: true
28572
28357
  result_summary:
28573
- type: object
28358
+ type: [object, "null"]
28574
28359
  additionalProperties: true
28575
- nullable: true
28576
28360
  error_message:
28577
- type: string
28578
- nullable: true
28361
+ type: [string, "null"]
28579
28362
  duration_ms:
28580
28363
  type: integer
28581
28364
  cost_cents:
28582
- type: integer
28583
- nullable: true
28365
+ type: [integer, "null"]
28584
28366
  redactions_applied:
28585
28367
  type: integer
28586
28368
  created_at:
@@ -28616,9 +28398,8 @@ components:
28616
28398
  default: UTC
28617
28399
  example: UTC
28618
28400
  event_filter:
28619
- type: object
28401
+ type: [object, "null"]
28620
28402
  additionalProperties: true
28621
- nullable: true
28622
28403
  workflow_spec:
28623
28404
  description: |
28624
28405
  Workflow steps. Accepts a bare array `[...]` or
@@ -28668,14 +28449,12 @@ components:
28668
28449
  name:
28669
28450
  type: string
28670
28451
  cron_expr:
28671
- type: string
28672
- nullable: true
28452
+ type: [string, "null"]
28673
28453
  timezone:
28674
28454
  type: string
28675
28455
  event_filter:
28676
- type: object
28456
+ type: [object, "null"]
28677
28457
  additionalProperties: true
28678
- nullable: true
28679
28458
  workflow_spec:
28680
28459
  oneOf:
28681
28460
  - type: array
@@ -28697,7 +28476,6 @@ components:
28697
28476
  type: string
28698
28477
  description: Note recorded on the new spec version.
28699
28478
  webhook_signature:
28700
- nullable: true
28701
28479
  description: |
28702
28480
  Inbound signature scheme for a webhook-triggered automation. `stripe`
28703
28481
  (`Stripe-Signature: t=…,v1=…` over `<t>.<body>`), `github`
@@ -28705,7 +28483,7 @@ components:
28705
28483
  (`<header>: <hex|base64>` over the body). The secret is stored encrypted
28706
28484
  and never returned; `null` removes the scheme. With a scheme set, an
28707
28485
  unsigned or mis-signed delivery starts nothing.
28708
- type: object
28486
+ type: [object, "null"]
28709
28487
  properties:
28710
28488
  scheme:
28711
28489
  type: string
@@ -28742,8 +28520,7 @@ components:
28742
28520
  created_by_type:
28743
28521
  type: string
28744
28522
  note:
28745
- type: string
28746
- nullable: true
28523
+ type: [string, "null"]
28747
28524
  created_at:
28748
28525
  type: string
28749
28526
  format: date-time
@@ -28777,9 +28554,8 @@ components:
28777
28554
  properties:
28778
28555
  id: { type: string, format: uuid }
28779
28556
  org_id:
28780
- type: string
28557
+ type: [string, "null"]
28781
28558
  format: uuid
28782
- nullable: true
28783
28559
  description: Null for a global row.
28784
28560
  provider: { type: string }
28785
28561
  model_pattern: { type: string }
@@ -28841,7 +28617,7 @@ components:
28841
28617
  requests: { type: integer, format: int64 }
28842
28618
  previous_cost_usd: { type: number }
28843
28619
  share_pct: { type: number }
28844
- trend_pct: { type: number, nullable: true }
28620
+ trend_pct: { type: [number, "null"] }
28845
28621
  by_model:
28846
28622
  type: array
28847
28623
  items:
@@ -28856,7 +28632,7 @@ components:
28856
28632
  previous_cost_usd: { type: number }
28857
28633
  priced: { type: boolean }
28858
28634
  share_pct: { type: number }
28859
- trend_pct: { type: number, nullable: true }
28635
+ trend_pct: { type: [number, "null"] }
28860
28636
  by_agent:
28861
28637
  type: array
28862
28638
  items:
@@ -28869,18 +28645,18 @@ components:
28869
28645
  tokens: { type: integer, format: int64 }
28870
28646
  requests: { type: integer, format: int64 }
28871
28647
  blocked: { type: integer, format: int64 }
28872
- top_model: { type: string, nullable: true }
28873
- top_provider: { type: string, nullable: true }
28648
+ top_model: { type: [string, "null"] }
28649
+ top_provider: { type: [string, "null"] }
28874
28650
  previous_cost_usd: { type: number }
28875
- last_request_at: { type: string, format: date-time, nullable: true }
28876
- daily_budget_usd: { type: number, nullable: true }
28651
+ last_request_at: { type: [string, "null"], format: date-time }
28652
+ daily_budget_usd: { type: [number, "null"] }
28877
28653
  today_cost_usd: { type: number }
28878
28654
  blocked_by_budget: { type: integer, format: int64 }
28879
- max_tokens_per_request: { type: integer, format: int64, nullable: true }
28880
- max_requests_per_day: { type: integer, format: int64, nullable: true }
28655
+ max_tokens_per_request: { type: [integer, "null"], format: int64 }
28656
+ max_requests_per_day: { type: [integer, "null"], format: int64 }
28881
28657
  share_pct: { type: number }
28882
- trend_pct: { type: number, nullable: true }
28883
- budget_used_pct: { type: number, nullable: true }
28658
+ trend_pct: { type: [number, "null"] }
28659
+ budget_used_pct: { type: [number, "null"] }
28884
28660
  limits:
28885
28661
  type: object
28886
28662
  properties:
@@ -28898,8 +28674,8 @@ components:
28898
28674
  agent_name: { type: string }
28899
28675
  name: { type: string }
28900
28676
  spent_usd: { type: number }
28901
- cap_usd: { type: number, nullable: true }
28902
- last_used_at: { type: string, format: date-time, nullable: true }
28677
+ cap_usd: { type: [number, "null"] }
28678
+ last_used_at: { type: [string, "null"], format: date-time }
28903
28679
  credit_balance_usd: { type: number }
28904
28680
  inspection_fees_usd: { type: number }
28905
28681
  billing_tier: { type: string }
@@ -29008,8 +28784,7 @@ components:
29008
28784
  index:
29009
28785
  type: integer
29010
28786
  name:
29011
- type: string
29012
- nullable: true
28787
+ type: [string, "null"]
29013
28788
  type:
29014
28789
  type: string
29015
28790
  known:
@@ -29019,8 +28794,7 @@ components:
29019
28794
  additionalProperties: true
29020
28795
  description: The step after template substitution.
29021
28796
  skipped_by:
29022
- type: string
29023
- nullable: true
28797
+ type: [string, "null"]
29024
28798
  effect:
29025
28799
  type: string
29026
28800
  on_error:
@@ -29037,8 +28811,7 @@ components:
29037
28811
  items:
29038
28812
  type: string
29039
28813
  budget_exceeded:
29040
- type: string
29041
- nullable: true
28814
+ type: [string, "null"]
29042
28815
 
29043
28816
  TriggerAutomationRequest:
29044
28817
  type: object
@@ -29070,14 +28843,12 @@ components:
29070
28843
  type: string
29071
28844
  enum: [cron, event, webhook, manual]
29072
28845
  cron_expr:
29073
- type: string
29074
- nullable: true
28846
+ type: [string, "null"]
29075
28847
  timezone:
29076
28848
  type: string
29077
28849
  event_filter:
29078
- type: object
28850
+ type: [object, "null"]
29079
28851
  additionalProperties: true
29080
- nullable: true
29081
28852
  workflow_spec:
29082
28853
  oneOf:
29083
28854
  - type: array
@@ -29089,28 +28860,22 @@ components:
29089
28860
  is_active:
29090
28861
  type: boolean
29091
28862
  last_run_at:
29092
- type: string
28863
+ type: [string, "null"]
29093
28864
  format: date-time
29094
- nullable: true
29095
28865
  next_run_at:
29096
- type: string
28866
+ type: [string, "null"]
29097
28867
  format: date-time
29098
- nullable: true
29099
28868
  last_run_status:
29100
- type: string
29101
- nullable: true
28869
+ type: [string, "null"]
29102
28870
  description: Status of the most recent run (enriched list field)
29103
28871
  total_runs:
29104
- type: integer
29105
- nullable: true
28872
+ type: [integer, "null"]
29106
28873
  description: Total runs in the last 30 days (enriched list field)
29107
28874
  success_rate:
29108
- type: number
29109
- nullable: true
28875
+ type: [number, "null"]
29110
28876
  description: Success rate percentage (enriched list field)
29111
28877
  agent_name:
29112
- type: string
29113
- nullable: true
28878
+ type: [string, "null"]
29114
28879
  description: Resolved agent display name (enriched list field)
29115
28880
  created_by_type:
29116
28881
  type: string
@@ -29126,8 +28891,7 @@ components:
29126
28891
  type: integer
29127
28892
  description: Current `automation_versions` version.
29128
28893
  webhook_signature_scheme:
29129
- type: string
29130
- nullable: true
28894
+ type: [string, "null"]
29131
28895
  description: Inbound signature scheme name, never the secret.
29132
28896
 
29133
28897
  AutomationCreatedResponse:
@@ -29174,12 +28938,10 @@ components:
29174
28938
  items:
29175
28939
  type: string
29176
28940
  runtime_id:
29177
- type: string
28941
+ type: [string, "null"]
29178
28942
  format: uuid
29179
- nullable: true
29180
28943
  runtime_status:
29181
- type: string
29182
- nullable: true
28944
+ type: [string, "null"]
29183
28945
  cli_hint:
29184
28946
  type: string
29185
28947
 
@@ -29213,55 +28975,42 @@ components:
29213
28975
  are parked states: the run's clock is stopped and it continues when the
29214
28976
  approval is decided, the wake time passes, or the callback URL is posted to.
29215
28977
  paused_reason:
29216
- type: string
29217
- nullable: true
28978
+ type: [string, "null"]
29218
28979
  enum: [approval, wait_until, callback]
29219
28980
  paused_at_step:
29220
- type: integer
29221
- nullable: true
28981
+ type: [integer, "null"]
29222
28982
  paused_approval_id:
29223
- type: string
28983
+ type: [string, "null"]
29224
28984
  format: uuid
29225
- nullable: true
29226
28985
  paused_until:
29227
- type: string
28986
+ type: [string, "null"]
29228
28987
  format: date-time
29229
- nullable: true
29230
28988
  paused_expires_at:
29231
- type: string
28989
+ type: [string, "null"]
29232
28990
  format: date-time
29233
- nullable: true
29234
28991
  spec_version:
29235
- type: integer
29236
- nullable: true
28992
+ type: [integer, "null"]
29237
28993
  idempotency_key:
29238
- type: string
29239
- nullable: true
28994
+ type: [string, "null"]
29240
28995
  parent_run_id:
29241
- type: string
28996
+ type: [string, "null"]
29242
28997
  format: uuid
29243
- nullable: true
29244
28998
  description: Set when a `call_automation` step started this run.
29245
- step_results:
29246
- nullable: true
28999
+ step_results: {}
29247
29000
  error:
29248
- type: string
29249
- nullable: true
29001
+ type: [string, "null"]
29250
29002
  trigger_source:
29251
- type: string
29252
- nullable: true
29003
+ type: [string, "null"]
29253
29004
  context:
29254
- type: object
29005
+ type: [object, "null"]
29255
29006
  additionalProperties: true
29256
- nullable: true
29257
29007
  description: JSONB context passed between workflow steps
29258
29008
  started_at:
29259
29009
  type: string
29260
29010
  format: date-time
29261
29011
  finished_at:
29262
- type: string
29012
+ type: [string, "null"]
29263
29013
  format: date-time
29264
- nullable: true
29265
29014
  tokens_used:
29266
29015
  type: integer
29267
29016
  cost_cents:
@@ -29294,8 +29043,7 @@ components:
29294
29043
  trigger_type:
29295
29044
  type: string
29296
29045
  cron_expr:
29297
- type: string
29298
- nullable: true
29046
+ type: [string, "null"]
29299
29047
  workflow_spec:
29300
29048
  type: object
29301
29049
  additionalProperties: true
@@ -29378,12 +29126,11 @@ components:
29378
29126
  type: object
29379
29127
  properties:
29380
29128
  schedule:
29381
- nullable: true
29382
29129
  description: |
29383
29130
  Scheduled start/stop: start the container when `start_cron` fires (IANA
29384
29131
  `timezone`, default UTC) and stop it `stop_after_secs` later (60–86400; null
29385
29132
  leaves it to the idle reconciler). `null` clears the schedule.
29386
- type: object
29133
+ type: [object, "null"]
29387
29134
  properties:
29388
29135
  start_cron:
29389
29136
  type: string
@@ -29391,8 +29138,7 @@ components:
29391
29138
  type: string
29392
29139
  default: UTC
29393
29140
  stop_after_secs:
29394
- type: integer
29395
- nullable: true
29141
+ type: [integer, "null"]
29396
29142
  name:
29397
29143
  type: string
29398
29144
  template:
@@ -29431,24 +29177,19 @@ components:
29431
29177
  required: [id, name, agent_id, status, created_at, updated_at]
29432
29178
  properties:
29433
29179
  previous_image_digest:
29434
- type: string
29435
- nullable: true
29180
+ type: [string, "null"]
29436
29181
  image_digest:
29437
- type: string
29438
- nullable: true
29182
+ type: [string, "null"]
29439
29183
  description: Resolved image (digest form when the provider reports one); runtime-minted agent tokens carry it as `runtime_image`, which access policies can require via `conditions.runtime_image_in`.
29440
29184
  schedule:
29441
- type: object
29442
- nullable: true
29185
+ type: [object, "null"]
29443
29186
  additionalProperties: true
29444
29187
  next_scheduled_start_at:
29445
- type: string
29188
+ type: [string, "null"]
29446
29189
  format: date-time
29447
- nullable: true
29448
29190
  scheduled_stop_at:
29449
- type: string
29191
+ type: [string, "null"]
29450
29192
  format: date-time
29451
- nullable: true
29452
29193
  id:
29453
29194
  type: string
29454
29195
  format: uuid
@@ -29458,48 +29199,36 @@ components:
29458
29199
  type: string
29459
29200
  format: uuid
29460
29201
  template:
29461
- type: string
29462
- nullable: true
29202
+ type: [string, "null"]
29463
29203
  preset:
29464
- type: string
29465
- nullable: true
29204
+ type: [string, "null"]
29466
29205
  provider:
29467
- type: string
29468
- nullable: true
29206
+ type: [string, "null"]
29469
29207
  status:
29470
29208
  type: string
29471
29209
  enum: [creating, running, stopping, stopped, failed, deleting]
29472
29210
  image:
29473
- type: string
29474
- nullable: true
29211
+ type: [string, "null"]
29475
29212
  environment:
29476
- type: string
29477
- nullable: true
29213
+ type: [string, "null"]
29478
29214
  description: Vault environment for env var resolution
29479
29215
  env_public:
29480
- type: object
29216
+ type: [object, "null"]
29481
29217
  additionalProperties:
29482
29218
  type: string
29483
- nullable: true
29484
29219
  idle_timeout_secs:
29485
- type: integer
29486
- nullable: true
29220
+ type: [integer, "null"]
29487
29221
  expose_http:
29488
- type: boolean
29489
- nullable: true
29222
+ type: [boolean, "null"]
29490
29223
  slug:
29491
- type: string
29492
- nullable: true
29224
+ type: [string, "null"]
29493
29225
  public_url:
29494
- type: string
29495
- nullable: true
29226
+ type: [string, "null"]
29496
29227
  http_port:
29497
- type: integer
29498
- nullable: true
29228
+ type: [integer, "null"]
29499
29229
  inbound_auth:
29500
- type: string
29230
+ type: [string, "null"]
29501
29231
  enum: [api_key, jwt, public]
29502
- nullable: true
29503
29232
  shell_access_enabled:
29504
29233
  type: boolean
29505
29234
  shell_auth_policy:
@@ -29507,8 +29236,7 @@ components:
29507
29236
  shell_max_session_minutes:
29508
29237
  type: integer
29509
29238
  monthly_hours_used:
29510
- type: number
29511
- nullable: true
29239
+ type: [number, "null"]
29512
29240
  has_paid_addon:
29513
29241
  type: boolean
29514
29242
  description: Whether this runtime has a paid Stripe add-on (unlimited hours).
@@ -29554,8 +29282,7 @@ components:
29554
29282
  slug:
29555
29283
  type: string
29556
29284
  reason:
29557
- type: string
29558
- nullable: true
29285
+ type: [string, "null"]
29559
29286
 
29560
29287
  ShellSessionRequest:
29561
29288
  type: object
@@ -29640,9 +29367,8 @@ components:
29640
29367
  type: string
29641
29368
  format: date-time
29642
29369
  ttl_expires_at:
29643
- type: string
29370
+ type: [string, "null"]
29644
29371
  format: date-time
29645
- nullable: true
29646
29372
 
29647
29373
  PutMemoryRequest:
29648
29374
  type: object
@@ -29651,8 +29377,7 @@ components:
29651
29377
  value:
29652
29378
  type: string
29653
29379
  ttl_seconds:
29654
- type: integer
29655
- nullable: true
29380
+ type: [integer, "null"]
29656
29381
 
29657
29382
  MemorySearchRequest:
29658
29383
  type: object
@@ -29714,18 +29439,15 @@ components:
29714
29439
  name:
29715
29440
  type: string
29716
29441
  description:
29717
- type: string
29718
- nullable: true
29442
+ type: [string, "null"]
29719
29443
  capabilities:
29720
29444
  type: array
29721
29445
  items:
29722
29446
  type: string
29723
29447
  a2a_url:
29724
- type: string
29725
- nullable: true
29448
+ type: [string, "null"]
29726
29449
  mcp_url:
29727
- type: string
29728
- nullable: true
29450
+ type: [string, "null"]
29729
29451
  tags:
29730
29452
  type: array
29731
29453
  items:
@@ -29741,8 +29463,7 @@ components:
29741
29463
  name:
29742
29464
  type: string
29743
29465
  description:
29744
- type: string
29745
- nullable: true
29466
+ type: [string, "null"]
29746
29467
  tags:
29747
29468
  type: array
29748
29469
  items:
@@ -29752,14 +29473,11 @@ components:
29752
29473
  items:
29753
29474
  type: string
29754
29475
  a2a_url:
29755
- type: string
29756
- nullable: true
29476
+ type: [string, "null"]
29757
29477
  mcp_url:
29758
- type: string
29759
- nullable: true
29478
+ type: [string, "null"]
29760
29479
  org_name:
29761
- type: string
29762
- nullable: true
29480
+ type: [string, "null"]
29763
29481
 
29764
29482
  DirectoryResponse:
29765
29483
  type: object
@@ -29792,11 +29510,9 @@ components:
29792
29510
  items:
29793
29511
  type: string
29794
29512
  a2a_url:
29795
- type: string
29796
- nullable: true
29513
+ type: [string, "null"]
29797
29514
  mcp_url:
29798
- type: string
29799
- nullable: true
29515
+ type: [string, "null"]
29800
29516
  intents_api_enabled:
29801
29517
  type: boolean
29802
29518
  execution_intents_enabled:
@@ -30036,9 +29752,8 @@ components:
30036
29752
  is_active:
30037
29753
  type: boolean
30038
29754
  config:
30039
- type: object
29755
+ type: [object, "null"]
30040
29756
  additionalProperties: true
30041
- nullable: true
30042
29757
  description: |
30043
29758
  Channel-specific configuration JSON. May include:
30044
29759
  - sender_allowlist (array of strings): restrict which external senders can trigger the agent
@@ -30053,18 +29768,16 @@ components:
30053
29768
  type: boolean
30054
29769
  description: Whether voice message transcription is enabled
30055
29770
  unified_conversation_id:
30056
- type: string
29771
+ type: [string, "null"]
30057
29772
  format: uuid
30058
- nullable: true
30059
29773
  description: ID linking this channel to a unified cross-platform conversation
30060
29774
  is_home_platform:
30061
29775
  type: boolean
30062
29776
  description: Whether this is the agent's home platform channel
30063
29777
  sender_allowlist:
30064
- type: array
29778
+ type: [array, "null"]
30065
29779
  items:
30066
29780
  type: string
30067
- nullable: true
30068
29781
  description: List of allowed sender IDs for auto-respond
30069
29782
  auto_respond_enabled:
30070
29783
  type: boolean
@@ -30123,16 +29836,13 @@ components:
30123
29836
  type: boolean
30124
29837
  description: Whether this message was a voice message
30125
29838
  voice_file_id:
30126
- type: string
30127
- nullable: true
29839
+ type: [string, "null"]
30128
29840
  description: Telegram voice file ID
30129
29841
  voice_duration_secs:
30130
- type: integer
30131
- nullable: true
29842
+ type: [integer, "null"]
30132
29843
  description: Duration of voice message in seconds
30133
29844
  transcription_status:
30134
- type: string
30135
- nullable: true
29845
+ type: [string, "null"]
30136
29846
  enum: [pending, completed, failed]
30137
29847
  description: Status of voice transcription
30138
29848
  created_at:
@@ -30187,17 +29897,15 @@ components:
30187
29897
  items:
30188
29898
  type: string
30189
29899
  extra_auth_params:
30190
- type: object
29900
+ type: [object, "null"]
30191
29901
  additionalProperties:
30192
29902
  type: string
30193
- nullable: true
30194
29903
  requires_app_credentials:
30195
29904
  type: boolean
30196
29905
  description: Whether custom app credentials are required (vs. shared 1Claw app)
30197
29906
  documentation_url:
30198
- type: string
29907
+ type: [string, "null"]
30199
29908
  format: uri
30200
- nullable: true
30201
29909
 
30202
29910
  OAuthProviderListResponse:
30203
29911
  type: object
@@ -30290,9 +29998,8 @@ components:
30290
29998
  client_id:
30291
29999
  type: string
30292
30000
  redirect_uri:
30293
- type: string
30001
+ type: [string, "null"]
30294
30002
  format: uri
30295
- nullable: true
30296
30003
  created_at:
30297
30004
  type: string
30298
30005
  format: date-time
@@ -30680,9 +30387,8 @@ components:
30680
30387
  type: string
30681
30388
  enum: [narrowing, widening, neutral]
30682
30389
  approval_id:
30683
- type: string
30390
+ type: [string, "null"]
30684
30391
  format: uuid
30685
- nullable: true
30686
30392
  created_at:
30687
30393
  type: string
30688
30394
  format: date-time
@@ -31655,8 +31361,7 @@ components:
31655
31361
  safe_address:
31656
31362
  type: string
31657
31363
  nonce:
31658
- type: integer
31659
- nullable: true
31364
+ type: [integer, "null"]
31660
31365
  created_at:
31661
31366
  type: string
31662
31367
  format: date-time
@@ -31678,22 +31383,18 @@ components:
31678
31383
  items:
31679
31384
  type: string
31680
31385
  git_branch:
31681
- type: string
31682
- nullable: true
31386
+ type: [string, "null"]
31683
31387
  sensitive:
31684
31388
  type: boolean
31685
31389
  comment:
31686
- type: string
31687
- nullable: true
31390
+ type: [string, "null"]
31688
31391
  value:
31689
- type: string
31690
- nullable: true
31392
+ type: [string, "null"]
31691
31393
  description: Null for sensitive vars in list responses
31692
31394
  version:
31693
31395
  type: integer
31694
31396
  created_by:
31695
- type: string
31696
- nullable: true
31397
+ type: [string, "null"]
31697
31398
  created_at:
31698
31399
  type: string
31699
31400
  format: date-time
@@ -31753,8 +31454,7 @@ components:
31753
31454
  environment:
31754
31455
  type: string
31755
31456
  git_branch:
31756
- type: string
31757
- nullable: true
31457
+ type: [string, "null"]
31758
31458
  resolved_at:
31759
31459
  type: string
31760
31460
  format: date-time
@@ -31768,13 +31468,11 @@ components:
31768
31468
  slug:
31769
31469
  type: string
31770
31470
  description:
31771
- type: string
31772
- nullable: true
31471
+ type: [string, "null"]
31773
31472
  is_builtin:
31774
31473
  type: boolean
31775
31474
  copied_from:
31776
- type: string
31777
- nullable: true
31475
+ type: [string, "null"]
31778
31476
  is_detached:
31779
31477
  type: boolean
31780
31478
  created_at:
@@ -31809,11 +31507,9 @@ components:
31809
31507
  sensitive:
31810
31508
  type: boolean
31811
31509
  comment:
31812
- type: string
31813
- nullable: true
31510
+ type: [string, "null"]
31814
31511
  value:
31815
- type: string
31816
- nullable: true
31512
+ type: [string, "null"]
31817
31513
  version:
31818
31514
  type: integer
31819
31515
  linked_vaults:
@@ -31872,9 +31568,8 @@ components:
31872
31568
  enum: [wallet, platform_app, org]
31873
31569
  description: Policy scope — org-wide, platform app, or single wallet
31874
31570
  scope_id:
31875
- type: string
31571
+ type: [string, "null"]
31876
31572
  format: uuid
31877
- nullable: true
31878
31573
  description: Wallet or platform app UUID when scope_type is not org
31879
31574
  principal_type:
31880
31575
  type: string
@@ -31928,9 +31623,8 @@ components:
31928
31623
  scope_type:
31929
31624
  type: string
31930
31625
  scope_id:
31931
- type: string
31626
+ type: [string, "null"]
31932
31627
  format: uuid
31933
- nullable: true
31934
31628
  principal_type:
31935
31629
  type: string
31936
31630
  principal_id:
@@ -31950,19 +31644,16 @@ components:
31950
31644
  items:
31951
31645
  type: string
31952
31646
  max_value_per_tx_eth:
31953
- type: string
31954
- nullable: true
31647
+ type: [string, "null"]
31955
31648
  daily_limit_eth:
31956
- type: string
31957
- nullable: true
31649
+ type: [string, "null"]
31958
31650
  conditions:
31959
31651
  type: object
31960
31652
  is_active:
31961
31653
  type: boolean
31962
31654
  expires_at:
31963
- type: string
31655
+ type: [string, "null"]
31964
31656
  format: date-time
31965
- nullable: true
31966
31657
  created_by:
31967
31658
  type: string
31968
31659
  format: uuid
@@ -32030,8 +31721,7 @@ components:
32030
31721
  type: string
32031
31722
  enum: [approved]
32032
31723
  recovery_code:
32033
- type: string
32034
- nullable: true
31724
+ type: [string, "null"]
32035
31725
  description: One-time recovery code (only present for certain recovery types)
32036
31726
 
32037
31727
  CredentialRecoveryExecuteResponse:
@@ -32138,20 +31828,15 @@ components:
32138
31828
  configured:
32139
31829
  type: boolean
32140
31830
  kek_id:
32141
- type: string
32142
- nullable: true
31831
+ type: [string, "null"]
32143
31832
  threshold:
32144
- type: integer
32145
- nullable: true
31833
+ type: [integer, "null"]
32146
31834
  total_shares:
32147
- type: integer
32148
- nullable: true
31835
+ type: [integer, "null"]
32149
31836
  custody_mode:
32150
- type: string
32151
- nullable: true
31837
+ type: [string, "null"]
32152
31838
  custodians:
32153
- type: array
32154
- nullable: true
31839
+ type: [array, "null"]
32155
31840
  items:
32156
31841
  type: object
32157
31842
  properties:
@@ -32161,9 +31846,8 @@ components:
32161
31846
  share_provided:
32162
31847
  type: boolean
32163
31848
  created_at:
32164
- type: string
31849
+ type: [string, "null"]
32165
31850
  format: date-time
32166
- nullable: true
32167
31851
 
32168
31852
  ShamirKekReconstructRequest:
32169
31853
  type: object
@@ -32241,12 +31925,10 @@ components:
32241
31925
  prior_total:
32242
31926
  type: integer
32243
31927
  delta_pct:
32244
- type: number
32245
- nullable: true
31928
+ type: [number, "null"]
32246
31929
  description: Null when both the current and prior totals are 0.
32247
31930
  notes:
32248
- type: string
32249
- nullable: true
31931
+ type: [string, "null"]
32250
31932
  description: >
32251
31933
  A known limitation worth surfacing for this vertical (e.g.
32252
31934
  a source table with no org_id to exclude test-fixture
@@ -32263,8 +31945,7 @@ components:
32263
31945
  retained_orgs:
32264
31946
  type: integer
32265
31947
  retention_pct:
32266
- type: number
32267
- nullable: true
31948
+ type: [number, "null"]
32268
31949
  description: Null when there is no cohort yet (platform younger than the window).
32269
31950
 
32270
31951
  WebSearchResult: