@1claw/openapi-spec 0.61.41 → 0.61.43

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 +1627 -863
  2. package/openapi.yaml +451 -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.43"
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
@@ -18919,6 +18893,58 @@ paths:
18919
18893
  description: Forbidden, or the plan does not include this
18920
18894
  '404':
18921
18895
  description: Not found
18896
+ /v1/runtimes/{runtime_id}/agent-token/renew:
18897
+ parameters:
18898
+ - name: runtime_id
18899
+ in: path
18900
+ required: true
18901
+ schema:
18902
+ type: string
18903
+ post:
18904
+ tags: [Runtimes]
18905
+ summary: "Renew this runtime's own agent JWT before it expires"
18906
+ description: >-
18907
+ Called by the runtime container itself, not by a human or an
18908
+ external client.
18909
+
18910
+ A runtime's `ONECLAW_AGENT_TOKEN` is a short-lived JWT that Cloud
18911
+ Run resolves from Secret Manager when the instance starts and
18912
+ never again, so a container that outlives the TTL loses its
18913
+ credential — and with it every 1claw tool — until it is
18914
+ restarted. This lets it replace the token in place instead.
18915
+
18916
+ Authenticated by the credential being renewed: the caller must
18917
+ present a still-valid runtime-bound agent JWT together with a
18918
+ matching `X-1Claw-Runtime-Id` header, and must be the agent that
18919
+ runtime is bound to. It grants nothing new — the same claims with
18920
+ a later expiry — and stops working the moment the token lapses,
18921
+ the token is revoked, the agent is suspended, or the runtime is
18922
+ no longer deployed. Exempt from the monthly request quota: upkeep
18923
+ of an already-paid-for runtime is not itself a billable request.
18924
+ operationId: renew_runtime_agent_token
18925
+ responses:
18926
+ '200':
18927
+ description: A fresh access token
18928
+ content:
18929
+ application/json:
18930
+ schema:
18931
+ type: object
18932
+ properties:
18933
+ access_token:
18934
+ type: string
18935
+ expires_in:
18936
+ type: integer
18937
+ token_type:
18938
+ type: string
18939
+ example: Bearer
18940
+ '400':
18941
+ description: The runtime is not deployed, so it has nothing to renew
18942
+ '401':
18943
+ description: Unauthenticated, or the token presented has already expired
18944
+ '403':
18945
+ description: Not an agent caller
18946
+ '404':
18947
+ description: No such runtime, or it is not bound to this agent
18922
18948
  /v1/otel/stream:
18923
18949
  get:
18924
18950
  tags: [Observability]
@@ -19020,8 +19046,7 @@ paths:
19020
19046
  content:
19021
19047
  application/json:
19022
19048
  schema:
19023
- nullable: true
19024
- type: object
19049
+ type: [object, "null"]
19025
19050
  properties:
19026
19051
  enabled: { type: boolean }
19027
19052
  endpoint: { type: string }
@@ -19075,7 +19100,7 @@ paths:
19075
19100
  responses:
19076
19101
  '200':
19077
19102
  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 }
19103
+ '400': { description: 'Endpoint refused (scheme, credentials, private or unresolvable host), reserved header, or enabling with no endpoint' }
19079
19104
  '401': { description: Unauthenticated }
19080
19105
  '402': { description: Requires the Team plan or higher }
19081
19106
  '403': { description: Not an owner or admin }
@@ -19100,7 +19125,7 @@ paths:
19100
19125
  endpoint: { type: string }
19101
19126
  status: { type: integer }
19102
19127
  ok: { type: boolean }
19103
- '400': { description: Not configured, or the send failed }
19128
+ '400': { description: 'Not configured, or the send failed' }
19104
19129
  '401': { description: Unauthenticated }
19105
19130
  '402': { description: Requires the Team plan or higher }
19106
19131
  '403': { description: Not an owner or admin }
@@ -19165,10 +19190,9 @@ paths:
19165
19190
  transactions: { type: integer }
19166
19191
  llm_calls: { type: integer }
19167
19192
  latency_p50_ms:
19168
- type: number
19169
- nullable: true
19193
+ type: [number, "null"]
19170
19194
  description: Null when nothing in the window recorded a duration.
19171
- latency_p95_ms: { type: number, nullable: true }
19195
+ latency_p95_ms: { type: [number, "null"] }
19172
19196
  total_executions: { type: integer }
19173
19197
  total_denials: { type: integer }
19174
19198
  '400':
@@ -19213,19 +19237,19 @@ paths:
19213
19237
  required: [agent_id, shadow, components, history, recent]
19214
19238
  properties:
19215
19239
  agent_id: { type: string, format: uuid }
19216
- score: { type: integer, minimum: 0, maximum: 100, nullable: true }
19240
+ score: { type: [integer, "null"], minimum: 0, maximum: 100 }
19217
19241
  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 }
19242
+ updated_at: { type: [string, "null"], format: date-time }
19219
19243
  components:
19220
19244
  type: object
19221
19245
  description: "0-100 per component; null means no source in this deployment."
19222
19246
  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 }
19247
+ denial_rate: { type: [integer, "null"] }
19248
+ threat_hits: { type: [integer, "null"] }
19249
+ egress_blocks: { type: [integer, "null"] }
19250
+ spend_velocity: { type: [integer, "null"] }
19251
+ off_hours: { type: [integer, "null"] }
19252
+ consensus_bypass: { type: [integer, "null"] }
19229
19253
  history:
19230
19254
  type: array
19231
19255
  maxItems: 96
@@ -19246,7 +19270,7 @@ paths:
19246
19270
  properties:
19247
19271
  at: { type: string, format: date-time }
19248
19272
  action: { type: string }
19249
- resource_type: { type: string, nullable: true }
19273
+ resource_type: { type: [string, "null"] }
19250
19274
  '401': { description: Unauthenticated }
19251
19275
  '403': { description: Not a human user }
19252
19276
  '404': { description: No such agent in the caller's organization }
@@ -19548,8 +19572,7 @@ paths:
19548
19572
  masked:
19549
19573
  type: boolean
19550
19574
  overrides:
19551
- type: string
19552
- nullable: true
19575
+ type: [string, "null"]
19553
19576
  "401":
19554
19577
  $ref: "#/components/responses/Unauthorized"
19555
19578
  "404":
@@ -19625,6 +19648,26 @@ paths:
19625
19648
  description: Forbidden, or the plan does not include this
19626
19649
  '404':
19627
19650
  description: Not found
19651
+ /v1/runtimes/{runtime_id}/enable-recommended-tools:
19652
+ parameters:
19653
+ - name: runtime_id
19654
+ in: path
19655
+ required: true
19656
+ schema:
19657
+ type: string
19658
+ post:
19659
+ tags: [Runtimes]
19660
+ summary: "Enable the recommended tool set (image generation, web search, memory, Shroud, intents) on the runtime's agent. Human-only."
19661
+ operationId: enable_recommended_tools
19662
+ responses:
19663
+ '200':
19664
+ description: Success
19665
+ '401':
19666
+ description: Unauthenticated
19667
+ '403':
19668
+ description: Forbidden, or the plan does not include this
19669
+ '404':
19670
+ description: Not found
19628
19671
  /v1/vaults/{vault_id}/secret-version-disable/{*path_and_version}:
19629
19672
  parameters:
19630
19673
  - name: vault_id
@@ -19748,15 +19791,13 @@ paths:
19748
19791
  chat_capable:
19749
19792
  type: boolean
19750
19793
  license:
19751
- type: string
19752
- nullable: true
19794
+ type: [string, "null"]
19753
19795
  description: SPDX id, or null when the agent is proprietary
19754
19796
  requires_vendor_subscription:
19755
19797
  type: boolean
19756
19798
  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
19799
  vendor_credential_env:
19758
- type: string
19759
- nullable: true
19800
+ type: [string, "null"]
19760
19801
  '401':
19761
19802
  description: Unauthenticated
19762
19803
  /v1/automations/step-types:
@@ -19856,19 +19897,15 @@ paths:
19856
19897
  label:
19857
19898
  type: string
19858
19899
  platform:
19859
- type: string
19860
- nullable: true
19900
+ type: [string, "null"]
19861
19901
  bridge_version:
19862
- type: string
19863
- nullable: true
19902
+ type: [string, "null"]
19864
19903
  last_seen_at:
19865
- type: string
19904
+ type: [string, "null"]
19866
19905
  format: date-time
19867
- nullable: true
19868
19906
  revoked_at:
19869
- type: string
19907
+ type: [string, "null"]
19870
19908
  format: date-time
19871
- nullable: true
19872
19909
  description: Set once revoked. A revoked credential stops resolving.
19873
19910
  created_at:
19874
19911
  type: string
@@ -20405,7 +20442,7 @@ components:
20405
20442
  blast_radius_size:
20406
20443
  type: integer
20407
20444
  description: Sum of the blast radius. The sort key.
20408
- resolved_by: { type: string, nullable: true }
20445
+ resolved_by: { type: [string, "null"] }
20409
20446
  created_at: { type: string, format: date-time }
20410
20447
  updated_at: { type: string, format: date-time }
20411
20448
  OtelSummary:
@@ -20425,11 +20462,10 @@ components:
20425
20462
  type: object
20426
20463
  properties:
20427
20464
  pay_enabled: { type: boolean }
20428
- pay_max_usd: { type: string, nullable: true }
20429
- pay_daily_limit_usd: { type: string, nullable: true }
20465
+ pay_max_usd: { type: [string, "null"] }
20466
+ pay_daily_limit_usd: { type: [string, "null"] }
20430
20467
  pay_payto_allowlist:
20431
- type: array
20432
- nullable: true
20468
+ type: [array, "null"]
20433
20469
  items: { type: string }
20434
20470
  description: >
20435
20471
  Recipients an unattended agent may pay. Null is not a
@@ -20439,8 +20475,8 @@ components:
20439
20475
  description: Defaults true. Turning it off is what "unattended" means.
20440
20476
  pay_require_approval: { type: boolean }
20441
20477
  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 }
20478
+ pay_grant_max_usd: { type: [string, "null"] }
20479
+ pay_grant_max_ttl_secs: { type: [integer, "null"] }
20444
20480
  PayPrepareRequest:
20445
20481
  type: object
20446
20482
  required: [challenge_b64, method, resource_url]
@@ -20470,7 +20506,7 @@ components:
20470
20506
  payment_digest: { type: string }
20471
20507
  sign_idempotency_key: { type: string }
20472
20508
  quote: { type: object, additionalProperties: true }
20473
- valid_before: { type: string, format: date-time, nullable: true }
20509
+ valid_before: { type: [string, "null"], format: date-time }
20474
20510
  expires_at: { type: string, format: date-time }
20475
20511
  authorization:
20476
20512
  type: string
@@ -20499,19 +20535,18 @@ components:
20499
20535
  description: The X-PAYMENT header value. The signature, never the key.
20500
20536
  amount_usd: { type: string }
20501
20537
  pay_to: { type: string }
20502
- grant_id: { type: string, format: uuid, nullable: true }
20538
+ grant_id: { type: [string, "null"], format: uuid }
20503
20539
  PayResultRequest:
20504
20540
  type: object
20505
20541
  properties:
20506
20542
  http_status: { type: integer }
20507
20543
  settled:
20508
- type: boolean
20509
- nullable: true
20544
+ type: [boolean, "null"]
20510
20545
  description: >
20511
20546
  Null means the caller could not tell — a timeout after the
20512
20547
  header was sent, where the payment may or may not have
20513
20548
  been presented.
20514
- error: { type: string, nullable: true }
20549
+ error: { type: [string, "null"] }
20515
20550
  CreatePayGrantRequest:
20516
20551
  type: object
20517
20552
  required: [cap_usd, ttl_secs, grant_digest]
@@ -20519,8 +20554,7 @@ components:
20519
20554
  cap_usd: { type: string }
20520
20555
  ttl_secs: { type: integer }
20521
20556
  allowed_paytos:
20522
- type: array
20523
- nullable: true
20557
+ type: [array, "null"]
20524
20558
  items: { type: string }
20525
20559
  description: >
20526
20560
  Null means any recipient; an empty list means none. The two
@@ -20558,9 +20592,8 @@ components:
20558
20592
  type: string
20559
20593
  format: uuid
20560
20594
  agent_id:
20561
- type: string
20595
+ type: [string, "null"]
20562
20596
  format: uuid
20563
- nullable: true
20564
20597
  issuer:
20565
20598
  type: string
20566
20599
  enum: [laso, manual]
@@ -20644,13 +20677,11 @@ components:
20644
20677
  max_reveals:
20645
20678
  type: integer
20646
20679
  reveal_expires_at:
20647
- type: string
20680
+ type: [string, "null"]
20648
20681
  format: date-time
20649
- nullable: true
20650
20682
  void_after:
20651
- type: string
20683
+ type: [string, "null"]
20652
20684
  format: date-time
20653
- nullable: true
20654
20685
  ImportCardRequest:
20655
20686
  type: object
20656
20687
  required: [pan, cvv, exp_month, exp_year]
@@ -21676,7 +21707,7 @@ components:
21676
21707
  type: string
21677
21708
  enum: [pending, approved, denied, expired]
21678
21709
  agent_name: { type: string }
21679
- fingerprint: { type: string, nullable: true }
21710
+ fingerprint: { type: [string, "null"] }
21680
21711
  agent_id: { type: string, format: uuid }
21681
21712
  api_key:
21682
21713
  type: string
@@ -21774,8 +21805,7 @@ components:
21774
21805
  items:
21775
21806
  type: string
21776
21807
  token_ttl_seconds:
21777
- type: integer
21778
- nullable: true
21808
+ type: [integer, "null"]
21779
21809
  description: Per-agent token TTL in seconds (overrides global default)
21780
21810
  vault_ids:
21781
21811
  type: array
@@ -21841,12 +21871,10 @@ components:
21841
21871
  gas_daily_budget_native (UTC-day cumulative EVM gas estimate in native units).
21842
21872
  Strictest of global and per-chain limits wins. Daily limits apply per chain family spend, not cross-chain totals.
21843
21873
  tx_max_per_day:
21844
- type: integer
21845
- nullable: true
21874
+ type: [integer, "null"]
21846
21875
  description: Max transactions per UTC calendar day. Null = unlimited.
21847
21876
  tx_overhead_budget:
21848
- type: object
21849
- nullable: true
21877
+ type: [object, "null"]
21850
21878
  additionalProperties:
21851
21879
  type: string
21852
21880
  description: Per-chain daily overhead budget in native units (e.g. {"solana":"0.5","xrp":"100"}).
@@ -21877,14 +21905,12 @@ components:
21877
21905
  default: true
21878
21906
  description: When true, card orders route through the human approval queue before x402 payment.
21879
21907
  tx_approval_policy:
21880
- type: object
21908
+ type: [object, "null"]
21881
21909
  additionalProperties: true
21882
- nullable: true
21883
21910
  description: Graduated transaction approval policy (HITL thresholds). Separate from hard guardrails.
21884
21911
  action_approval_policy:
21885
- type: object
21912
+ type: [object, "null"]
21886
21913
  additionalProperties: true
21887
- nullable: true
21888
21914
  description: |
21889
21915
  Which business actions this agent must ask a human about, and above what
21890
21916
  amount. `{}` means no per-action rules.
@@ -21910,24 +21936,19 @@ components:
21910
21936
  default: false
21911
21937
  description: Block unlimited ERC-20 approvals (max uint256 / setApprovalForAll).
21912
21938
  tx_per_recipient_max_per_day:
21913
- type: integer
21914
- nullable: true
21939
+ type: [integer, "null"]
21915
21940
  description: Max transactions to the same recipient address per UTC day.
21916
21941
  tx_per_recipient_daily_limit:
21917
- type: string
21918
- nullable: true
21942
+ type: [string, "null"]
21919
21943
  description: Max native-unit spend to the same recipient per UTC day.
21920
21944
  new_recipient_cap_native:
21921
- type: string
21922
- nullable: true
21945
+ type: [string, "null"]
21923
21946
  description: Cap on first-time recipient spend in native units.
21924
21947
  tx_max_value_usd:
21925
- type: string
21926
- nullable: true
21948
+ type: [string, "null"]
21927
21949
  description: Per-transaction USD cap (requires price oracle).
21928
21950
  tx_daily_limit_usd:
21929
- type: string
21930
- nullable: true
21951
+ type: [string, "null"]
21931
21952
  description: Rolling 24h USD spend cap (requires price oracle).
21932
21953
  raw_signing_policy:
21933
21954
  type: string
@@ -21947,9 +21968,8 @@ components:
21947
21968
  default: false
21948
21969
  description: Allow EIP-7702 (tx type 4) set-code transactions.
21949
21970
  api_key_expires_at:
21950
- type: string
21971
+ type: [string, "null"]
21951
21972
  format: date-time
21952
- nullable: true
21953
21973
  description: Optional expiration time for the agent's API key.
21954
21974
  environment:
21955
21975
  type: string
@@ -22072,8 +22092,7 @@ components:
22072
22092
  items:
22073
22093
  type: string
22074
22094
  token_ttl_seconds:
22075
- type: integer
22076
- nullable: true
22095
+ type: [integer, "null"]
22077
22096
  vault_ids:
22078
22097
  type: array
22079
22098
  items:
@@ -22085,8 +22104,7 @@ components:
22085
22104
  shroud_config:
22086
22105
  $ref: "#/components/schemas/ShroudConfig"
22087
22106
  system_prompt:
22088
- type: string
22089
- nullable: true
22107
+ type: [string, "null"]
22090
22108
  description: Default system prompt for agent chat (null clears).
22091
22109
  execution_intents_enabled:
22092
22110
  type: boolean
@@ -22102,12 +22120,10 @@ components:
22102
22120
  type: boolean
22103
22121
  description: When true, execute requests must arrive via TEE and all direct secret reads are blocked (Pro+ only)
22104
22122
  tx_max_per_day:
22105
- type: integer
22106
- nullable: true
22123
+ type: [integer, "null"]
22107
22124
  description: Max transactions per UTC calendar day. Null = unlimited.
22108
22125
  tx_overhead_budget:
22109
- type: object
22110
- nullable: true
22126
+ type: [object, "null"]
22111
22127
  additionalProperties:
22112
22128
  type: string
22113
22129
  description: Per-chain daily overhead budget in native units.
@@ -22120,12 +22136,10 @@ components:
22120
22136
  type: boolean
22121
22137
  description: Whether this agent may order payment cards (x402 card ordering). Pro+ tier.
22122
22138
  card_max_order_usd:
22123
- type: string
22124
- nullable: true
22139
+ type: [string, "null"]
22125
22140
  description: Maximum USD amount for a single card order. null clears.
22126
22141
  card_daily_limit_usd:
22127
- type: string
22128
- nullable: true
22142
+ type: [string, "null"]
22129
22143
  description: Maximum cumulative USD spent ordering cards per rolling 24h window. null clears.
22130
22144
  card_payto_allowlist:
22131
22145
  type: array
@@ -22139,14 +22153,12 @@ components:
22139
22153
  type: boolean
22140
22154
  description: When true, card orders route through the human approval queue before x402 payment.
22141
22155
  tx_approval_policy:
22142
- type: object
22156
+ type: [object, "null"]
22143
22157
  additionalProperties: true
22144
- nullable: true
22145
22158
  description: Graduated transaction approval policy (HITL thresholds).
22146
22159
  action_approval_policy:
22147
- type: object
22160
+ type: [object, "null"]
22148
22161
  additionalProperties: true
22149
- nullable: true
22150
22162
  description: |
22151
22163
  Which business actions this agent must ask a human about, and above what
22152
22164
  amount. `{}` means no per-action rules.
@@ -22160,37 +22172,30 @@ components:
22160
22172
  transaction limit. Malformed rules are rejected on write rather than
22161
22173
  ignored at request time.
22162
22174
  typed_data_policy:
22163
- type: string
22175
+ type: [string, "null"]
22164
22176
  enum: [deny, approve]
22165
- nullable: true
22166
22177
  description: EIP-712 escalation policy.
22167
22178
  simulation_failure_policy:
22168
- type: string
22179
+ type: [string, "null"]
22169
22180
  enum: [deny, approve]
22170
- nullable: true
22171
22181
  description: Simulation failure escalation policy.
22172
22182
  tx_block_unlimited_approvals:
22173
22183
  type: boolean
22174
22184
  description: Block unlimited ERC-20 approvals (max uint256 / setApprovalForAll).
22175
22185
  tx_per_recipient_max_per_day:
22176
- type: integer
22177
- nullable: true
22186
+ type: [integer, "null"]
22178
22187
  description: Max transactions to the same recipient per UTC day. Null clears.
22179
22188
  tx_per_recipient_daily_limit:
22180
- type: string
22181
- nullable: true
22189
+ type: [string, "null"]
22182
22190
  description: Max native spend to same recipient per UTC day. Null clears.
22183
22191
  new_recipient_cap_native:
22184
- type: string
22185
- nullable: true
22192
+ type: [string, "null"]
22186
22193
  description: First-time recipient native cap. Null clears.
22187
22194
  tx_max_value_usd:
22188
- type: string
22189
- nullable: true
22195
+ type: [string, "null"]
22190
22196
  description: Per-tx USD cap. Null clears.
22191
22197
  tx_daily_limit_usd:
22192
- type: string
22193
- nullable: true
22198
+ type: [string, "null"]
22194
22199
  description: Rolling 24h USD spend cap. Null clears.
22195
22200
  raw_signing_policy:
22196
22201
  type: string
@@ -22225,10 +22230,9 @@ components:
22225
22230
  tokens for (e.g. `["https://api.anthropic.com"]`). Empty array
22226
22231
  blocks all federation requests (zero-trust default).
22227
22232
  federated_token_ttl_seconds:
22228
- type: integer
22233
+ type: [integer, "null"]
22229
22234
  minimum: 60
22230
22235
  maximum: 3600
22231
- nullable: true
22232
22236
  description: |
22233
22237
  Per-agent TTL override for federation tokens (seconds). NULL falls
22234
22238
  back to the global default (`ONECLAW_JWT_FEDERATED_TOKEN_EXPIRY_SECS`).
@@ -22256,13 +22260,11 @@ components:
22256
22260
  max_fee_per_gas_gwei, max_gas_limit, gas_daily_budget_native (UTC-day cumulative EVM gas in native units).
22257
22261
  Strictest of global and per-chain limits wins. Daily limits apply per chain family spend, not cross-chain totals.
22258
22262
  api_key_expires_at:
22259
- type: string
22263
+ type: [string, "null"]
22260
22264
  format: date-time
22261
- nullable: true
22262
22265
  description: Optional expiration time for the agent's API key. Set to null to clear.
22263
22266
  environment:
22264
- type: string
22265
- nullable: true
22267
+ type: [string, "null"]
22266
22268
  description: Named environment for this agent (production, preview, development, or custom).
22267
22269
  environment_locked:
22268
22270
  type: boolean
@@ -22374,8 +22376,7 @@ components:
22374
22376
  items:
22375
22377
  type: string
22376
22378
  token_ttl_seconds:
22377
- type: integer
22378
- nullable: true
22379
+ type: [integer, "null"]
22379
22380
  vault_ids:
22380
22381
  type: array
22381
22382
  items:
@@ -22418,12 +22419,10 @@ components:
22418
22419
  type: boolean
22419
22420
  description: When true, execute requests must arrive via TEE and all direct secret reads are blocked (Pro+ only)
22420
22421
  tx_max_per_day:
22421
- type: integer
22422
- nullable: true
22422
+ type: [integer, "null"]
22423
22423
  description: Max transactions per UTC calendar day. Null = unlimited.
22424
22424
  tx_overhead_budget:
22425
- type: object
22426
- nullable: true
22425
+ type: [object, "null"]
22427
22426
  additionalProperties:
22428
22427
  type: string
22429
22428
  description: Per-chain daily overhead budget in native units.
@@ -22453,14 +22452,12 @@ components:
22453
22452
  type: boolean
22454
22453
  description: When true, card orders route through the human approval queue before x402 payment.
22455
22454
  tx_approval_policy:
22456
- type: object
22455
+ type: [object, "null"]
22457
22456
  additionalProperties: true
22458
- nullable: true
22459
22457
  description: Graduated transaction approval policy (HITL thresholds).
22460
22458
  action_approval_policy:
22461
- type: object
22459
+ type: [object, "null"]
22462
22460
  additionalProperties: true
22463
- nullable: true
22464
22461
  description: |
22465
22462
  Which business actions this agent must ask a human about, and above what
22466
22463
  amount. `{}` means no per-action rules.
@@ -22474,38 +22471,30 @@ components:
22474
22471
  transaction limit. Malformed rules are rejected on write rather than
22475
22472
  ignored at request time.
22476
22473
  typed_data_policy:
22477
- type: string
22474
+ type: [string, "null"]
22478
22475
  enum: [deny, approve]
22479
- nullable: true
22480
22476
  simulation_failure_policy:
22481
- type: string
22477
+ type: [string, "null"]
22482
22478
  enum: [deny, approve]
22483
- nullable: true
22484
22479
  tx_block_unlimited_approvals:
22485
22480
  type: boolean
22486
22481
  description: Block unlimited ERC-20 approvals.
22487
22482
  tx_per_recipient_max_per_day:
22488
- type: integer
22489
- nullable: true
22483
+ type: [integer, "null"]
22490
22484
  tx_per_recipient_daily_limit:
22491
- type: string
22492
- nullable: true
22485
+ type: [string, "null"]
22493
22486
  new_recipient_cap_native:
22494
- type: string
22495
- nullable: true
22487
+ type: [string, "null"]
22496
22488
  tx_max_value_usd:
22497
- type: string
22498
- nullable: true
22489
+ type: [string, "null"]
22499
22490
  tx_daily_limit_usd:
22500
- type: string
22501
- nullable: true
22491
+ type: [string, "null"]
22502
22492
  raw_signing_policy:
22503
22493
  type: string
22504
22494
  enum: [allow, deny, approve]
22505
22495
  personal_sign_policy:
22506
- type: object
22496
+ type: [object, "null"]
22507
22497
  additionalProperties: true
22508
- nullable: true
22509
22498
  allow_erc4337:
22510
22499
  type: boolean
22511
22500
  allow_eip7702:
@@ -22533,8 +22522,7 @@ components:
22533
22522
  format: uri
22534
22523
  description: Allowlist of audience URIs the agent may federate to.
22535
22524
  federated_token_ttl_seconds:
22536
- type: integer
22537
- nullable: true
22525
+ type: [integer, "null"]
22538
22526
  description: Per-agent TTL override for federation tokens (60..=3600).
22539
22527
  signing_chains:
22540
22528
  type: array
@@ -22582,13 +22570,11 @@ components:
22582
22570
  type: string
22583
22571
  description: 'Per-chain-family daily spend in native major units (keys: evm, bitcoin, solana, xrp, cardano, tron).'
22584
22572
  api_key_expires_at:
22585
- type: string
22573
+ type: [string, "null"]
22586
22574
  format: date-time
22587
- nullable: true
22588
22575
  description: Optional expiration time for the agent's API key.
22589
22576
  evm_address:
22590
- type: string
22591
- nullable: true
22577
+ type: [string, "null"]
22592
22578
  description: Agent's Ethereum EOA address (used as Safe signer for smart accounts and Intents API).
22593
22579
  created_at:
22594
22580
  type: string
@@ -22605,8 +22591,7 @@ components:
22605
22591
  items:
22606
22592
  $ref: "#/components/schemas/AgentSmartAccountResponse"
22607
22593
  environment:
22608
- type: string
22609
- nullable: true
22594
+ type: [string, "null"]
22610
22595
  description: Named environment this agent belongs to (production, preview, development, or custom).
22611
22596
  environment_locked:
22612
22597
  type: boolean
@@ -22645,8 +22630,7 @@ components:
22645
22630
  is_verified:
22646
22631
  type: boolean
22647
22632
  logo_url:
22648
- type: string
22649
- nullable: true
22633
+ type: [string, "null"]
22650
22634
  created_at:
22651
22635
  type: string
22652
22636
  format: date-time
@@ -22684,8 +22668,7 @@ components:
22684
22668
  type: boolean
22685
22669
  default: true
22686
22670
  logo_url:
22687
- type: string
22688
- nullable: true
22671
+ type: [string, "null"]
22689
22672
 
22690
22673
  AgentSmartAccountResponse:
22691
22674
  type: object
@@ -23437,8 +23420,7 @@ components:
23437
23420
  public_key:
23438
23421
  type: string
23439
23422
  address:
23440
- type: string
23441
- nullable: true
23423
+ type: [string, "null"]
23442
23424
  key_version:
23443
23425
  type: integer
23444
23426
  is_active:
@@ -23447,9 +23429,8 @@ components:
23447
23429
  type: string
23448
23430
  format: date-time
23449
23431
  rotated_at:
23450
- type: string
23432
+ type: [string, "null"]
23451
23433
  format: date-time
23452
- nullable: true
23453
23434
  custody:
23454
23435
  type: string
23455
23436
  enum: [server, client_tss]
@@ -23521,8 +23502,7 @@ components:
23521
23502
  the capability was reachable only from the end user's own
23522
23503
  dashboard. Templates now honour the flag too.
23523
23504
  system_prompt:
23524
- type: string
23525
- nullable: true
23505
+ type: [string, "null"]
23526
23506
 
23527
23507
  PatchConnectionAgentResponse:
23528
23508
  type: object
@@ -23537,8 +23517,7 @@ components:
23537
23517
  memory_enabled:
23538
23518
  type: boolean
23539
23519
  system_prompt:
23540
- type: string
23541
- nullable: true
23520
+ type: [string, "null"]
23542
23521
 
23543
23522
  # Bankr Dynamic Key Vending
23544
23523
  LeaseBankrKeyRequest:
@@ -23672,9 +23651,8 @@ components:
23672
23651
  is_active:
23673
23652
  type: boolean
23674
23653
  expires_at:
23675
- type: string
23654
+ type: [string, "null"]
23676
23655
  format: date-time
23677
- nullable: true
23678
23656
 
23679
23657
  DelegationResponse:
23680
23658
  type: object
@@ -23704,8 +23682,7 @@ components:
23704
23682
  items:
23705
23683
  type: string
23706
23684
  max_daily_delegations:
23707
- type: integer
23708
- nullable: true
23685
+ type: [integer, "null"]
23709
23686
  max_depth:
23710
23687
  type: integer
23711
23688
  guardrails:
@@ -23719,9 +23696,8 @@ components:
23719
23696
  type: string
23720
23697
  format: uuid
23721
23698
  expires_at:
23722
- type: string
23699
+ type: [string, "null"]
23723
23700
  format: date-time
23724
- nullable: true
23725
23701
  created_at:
23726
23702
  type: string
23727
23703
  format: date-time
@@ -23868,23 +23844,17 @@ components:
23868
23844
  from:
23869
23845
  type: string
23870
23846
  signature:
23871
- type: string
23872
- nullable: true
23847
+ type: [string, "null"]
23873
23848
  signed_tx:
23874
- type: string
23875
- nullable: true
23849
+ type: [string, "null"]
23876
23850
  tx_hash:
23877
- type: string
23878
- nullable: true
23851
+ type: [string, "null"]
23879
23852
  message_hash:
23880
- type: string
23881
- nullable: true
23853
+ type: [string, "null"]
23882
23854
  typed_data_hash:
23883
- type: string
23884
- nullable: true
23855
+ type: [string, "null"]
23885
23856
  tx_type:
23886
- type: integer
23887
- nullable: true
23857
+ type: [integer, "null"]
23888
23858
 
23889
23859
  TransactionResponse:
23890
23860
  type: object
@@ -23908,8 +23878,7 @@ components:
23908
23878
  enum:
23909
23879
  [pending, signed, sign_only, broadcast, failed, simulation_failed]
23910
23880
  signed_tx:
23911
- type: string
23912
- nullable: true
23881
+ type: [string, "null"]
23913
23882
  description: >
23914
23883
  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
23884
  tx_hash:
@@ -24262,9 +24231,8 @@ components:
24262
24231
  welcome_bundle_complete:
24263
24232
  type: boolean
24264
24233
  default_vault_id:
24265
- type: string
24234
+ type: [string, "null"]
24266
24235
  format: uuid
24267
- nullable: true
24268
24236
 
24269
24237
  OnboardingProvisionRequest:
24270
24238
  type: object
@@ -24561,31 +24529,26 @@ components:
24561
24529
  description: Metered line from Stripe upcoming invoice (usage detail when available).
24562
24530
  properties:
24563
24531
  description:
24564
- type: string
24565
- nullable: true
24532
+ type: [string, "null"]
24566
24533
  amount_cents:
24567
24534
  type: integer
24568
24535
  format: int64
24569
24536
  quantity:
24570
- type: number
24571
- nullable: true
24537
+ type: [number, "null"]
24572
24538
  description: Billed usage units when Stripe returns quantity (e.g. tokens).
24573
24539
  price_nickname:
24574
- type: string
24575
- nullable: true
24540
+ type: [string, "null"]
24576
24541
 
24577
24542
  LlmBillingCycleUsage:
24578
24543
  type: object
24579
24544
  description: Accrued LLM charges for the current Stripe subscription period (upcoming invoice).
24580
24545
  properties:
24581
24546
  period_start:
24582
- type: string
24547
+ type: [string, "null"]
24583
24548
  format: date-time
24584
- nullable: true
24585
24549
  period_end:
24586
- type: string
24550
+ type: [string, "null"]
24587
24551
  format: date-time
24588
- nullable: true
24589
24552
  accrued_usage_cents:
24590
24553
  type: integer
24591
24554
  format: int64
@@ -24757,9 +24720,8 @@ components:
24757
24720
  type: integer
24758
24721
  description: Total events examined
24759
24722
  broken_at_event_id:
24760
- type: string
24723
+ type: [string, "null"]
24761
24724
  format: uuid
24762
- nullable: true
24763
24725
  description: First event where chain integrity broke (null if valid)
24764
24726
  scheme:
24765
24727
  type: object
@@ -24801,9 +24763,10 @@ components:
24801
24763
  type: string
24802
24764
  description: GCE metadata identity JWT (verify against Google public keys)
24803
24765
  confidential_claims:
24804
- nullable: true
24805
24766
  description: Confidential Computing claims extracted from the identity JWT
24806
- $ref: "#/components/schemas/ConfidentialClaims"
24767
+ oneOf:
24768
+ - $ref: "#/components/schemas/ConfidentialClaims"
24769
+ - type: "null"
24807
24770
  verification:
24808
24771
  type: object
24809
24772
  properties:
@@ -24818,8 +24781,7 @@ components:
24818
24781
  type: string
24819
24782
 
24820
24783
  ConfidentialClaims:
24821
- type: object
24822
- nullable: true
24784
+ type: [object, "null"]
24823
24785
  properties:
24824
24786
  secboot:
24825
24787
  type: boolean
@@ -25222,32 +25184,26 @@ components:
25222
25184
  value_wei:
25223
25185
  type: string
25224
25186
  data_hex:
25225
- type: string
25226
- nullable: true
25187
+ type: [string, "null"]
25227
25188
  operation:
25228
25189
  type: integer
25229
25190
  safe_tx_hash:
25230
- type: string
25231
- nullable: true
25191
+ type: [string, "null"]
25232
25192
  nonce:
25233
- type: integer
25234
- nullable: true
25193
+ type: [integer, "null"]
25235
25194
  status:
25236
25195
  type: string
25237
25196
  enum: [pending, approved, executing, executed, rejected, expired]
25238
25197
  threshold:
25239
25198
  type: integer
25240
25199
  expires_at:
25241
- type: string
25200
+ type: [string, "null"]
25242
25201
  format: date-time
25243
- nullable: true
25244
25202
  executed_tx_hash:
25245
- type: string
25246
- nullable: true
25203
+ type: [string, "null"]
25247
25204
  executed_at:
25248
- type: string
25205
+ type: [string, "null"]
25249
25206
  format: date-time
25250
- nullable: true
25251
25207
  signatures:
25252
25208
  type: array
25253
25209
  items:
@@ -25586,13 +25542,11 @@ components:
25586
25542
  contract_address:
25587
25543
  type: string
25588
25544
  symbol:
25589
- type: string
25590
- nullable: true
25545
+ type: [string, "null"]
25591
25546
  balance:
25592
25547
  type: string
25593
25548
  decimals:
25594
- type: integer
25595
- nullable: true
25549
+ type: [integer, "null"]
25596
25550
 
25597
25551
  # --- x402 ---
25598
25552
 
@@ -25864,12 +25818,10 @@ components:
25864
25818
  enum: [silent, user_signin, configurable]
25865
25819
  default: silent
25866
25820
  max_connected_users:
25867
- type: integer
25868
- nullable: true
25821
+ type: [integer, "null"]
25869
25822
  api_key_expires_at:
25870
- type: string
25823
+ type: [string, "null"]
25871
25824
  format: date-time
25872
- nullable: true
25873
25825
  description: Optional expiration time for the platform API key.
25874
25826
 
25875
25827
  UpdatePlatformAppRequest:
@@ -25901,18 +25853,15 @@ components:
25901
25853
  type: string
25902
25854
  enum: [silent, user_signin, configurable]
25903
25855
  max_connected_users:
25904
- type: integer
25905
- nullable: true
25856
+ type: [integer, "null"]
25906
25857
  is_active:
25907
25858
  type: boolean
25908
25859
  api_key_expires_at:
25909
- type: string
25860
+ type: [string, "null"]
25910
25861
  format: date-time
25911
- nullable: true
25912
25862
  description: Optional expiration time for the platform API key. Set to null to clear.
25913
25863
  siwe_domain:
25914
- type: string
25915
- nullable: true
25864
+ type: [string, "null"]
25916
25865
  description: Hostname allowed in SIWE messages for wallet sign-in (EIP-4361).
25917
25866
 
25918
25867
  PlatformAppDeleteResponse:
@@ -25968,27 +25917,22 @@ components:
25968
25917
  description:
25969
25918
  type: string
25970
25919
  logo_url:
25971
- type: string
25972
- nullable: true
25920
+ type: [string, "null"]
25973
25921
  api_key_prefix:
25974
25922
  type: string
25975
25923
  oidc_jwks_url:
25976
- type: string
25977
- nullable: true
25924
+ type: [string, "null"]
25978
25925
  oidc_issuer:
25979
- type: string
25980
- nullable: true
25926
+ type: [string, "null"]
25981
25927
  oidc_audience:
25982
- type: string
25983
- nullable: true
25928
+ type: [string, "null"]
25984
25929
  description: Expected audience claim for OIDC token validation
25985
25930
  redirect_uris:
25986
25931
  type: array
25987
25932
  items:
25988
25933
  type: string
25989
25934
  webhook_url:
25990
- type: string
25991
- nullable: true
25935
+ type: [string, "null"]
25992
25936
  is_active:
25993
25937
  type: boolean
25994
25938
  billing_model:
@@ -25996,23 +25940,19 @@ components:
25996
25940
  auth_mode:
25997
25941
  type: string
25998
25942
  max_connected_users:
25999
- type: integer
26000
- nullable: true
25943
+ type: [integer, "null"]
26001
25944
  connected_users:
26002
25945
  type: integer
26003
25946
  api_key_expires_at:
26004
- type: string
25947
+ type: [string, "null"]
26005
25948
  format: date-time
26006
- nullable: true
26007
25949
  description: When the platform API key expires.
26008
25950
  api_key_rotated_at:
26009
- type: string
25951
+ type: [string, "null"]
26010
25952
  format: date-time
26011
- nullable: true
26012
25953
  description: When the platform API key was last rotated.
26013
25954
  siwe_domain:
26014
- type: string
26015
- nullable: true
25955
+ type: [string, "null"]
26016
25956
  description: Hostname allowed in SIWE messages for wallet sign-in (EIP-4361).
26017
25957
  created_at:
26018
25958
  type: string
@@ -26413,9 +26353,8 @@ components:
26413
26353
  type: string
26414
26354
  format: date-time
26415
26355
  claimed_at:
26416
- type: string
26356
+ type: [string, "null"]
26417
26357
  format: date-time
26418
- nullable: true
26419
26358
 
26420
26359
  BootstrapRequest:
26421
26360
  type: object
@@ -26453,13 +26392,11 @@ components:
26453
26392
  type: object
26454
26393
  properties:
26455
26394
  vault_id:
26456
- type: string
26395
+ type: [string, "null"]
26457
26396
  format: uuid
26458
- nullable: true
26459
26397
  agent_id:
26460
- type: string
26398
+ type: [string, "null"]
26461
26399
  format: uuid
26462
- nullable: true
26463
26400
  agent_ids:
26464
26401
  type: array
26465
26402
  items:
@@ -26477,12 +26414,10 @@ components:
26477
26414
  type: string
26478
26415
  description: Chains with provisioned signing keys
26479
26416
  agent_api_key:
26480
- type: string
26481
- nullable: true
26417
+ type: [string, "null"]
26482
26418
  description: One-time agent API key (ocv_ prefix). Store securely — not retrievable later.
26483
26419
  agent_evm_address:
26484
- type: string
26485
- nullable: true
26420
+ type: [string, "null"]
26486
26421
  description: EOA address when provision_eoa is true in the template
26487
26422
  signing_keys:
26488
26423
  type: array
@@ -26549,11 +26484,9 @@ components:
26549
26484
  description:
26550
26485
  type: string
26551
26486
  logo_url:
26552
- type: string
26553
- nullable: true
26487
+ type: [string, "null"]
26554
26488
  category:
26555
- type: string
26556
- nullable: true
26489
+ type: [string, "null"]
26557
26490
  listing_tags:
26558
26491
  type: array
26559
26492
  items:
@@ -26563,8 +26496,7 @@ components:
26563
26496
  items:
26564
26497
  type: string
26565
26498
  pricing_summary:
26566
- type: string
26567
- nullable: true
26499
+ type: [string, "null"]
26568
26500
 
26569
26501
  ConnectedAppResponse:
26570
26502
  type: object
@@ -26642,9 +26574,8 @@ components:
26642
26574
  items:
26643
26575
  type: string
26644
26576
  expires_at:
26645
- type: string
26577
+ type: [string, "null"]
26646
26578
  format: date-time
26647
- nullable: true
26648
26579
  created_at:
26649
26580
  type: string
26650
26581
  format: date-time
@@ -26686,8 +26617,7 @@ components:
26686
26617
  app_slug:
26687
26618
  type: string
26688
26619
  app_logo_url:
26689
- type: string
26690
- nullable: true
26620
+ type: [string, "null"]
26691
26621
  auth_mode:
26692
26622
  type: string
26693
26623
  vault_ids:
@@ -26709,8 +26639,7 @@ components:
26709
26639
  expired:
26710
26640
  type: boolean
26711
26641
  return_to:
26712
- type: string
26713
- nullable: true
26642
+ type: [string, "null"]
26714
26643
 
26715
26644
  ClaimRedeemResponse:
26716
26645
  type: object
@@ -26731,8 +26660,7 @@ components:
26731
26660
  type: string
26732
26661
  format: uuid
26733
26662
  return_to:
26734
- type: string
26735
- nullable: true
26663
+ type: [string, "null"]
26736
26664
  dashboard_url:
26737
26665
  type: string
26738
26666
 
@@ -26789,9 +26717,8 @@ components:
26789
26717
  attestation_verified:
26790
26718
  type: boolean
26791
26719
  last_used_at:
26792
- type: string
26720
+ type: [string, "null"]
26793
26721
  format: date-time
26794
- nullable: true
26795
26722
  created_at:
26796
26723
  type: string
26797
26724
  format: date-time
@@ -26922,7 +26849,7 @@ components:
26922
26849
  id: { type: string, format: uuid }
26923
26850
  peer_type: { type: string, enum: [user, platform_connection, external] }
26924
26851
  peer_ref: { type: string }
26925
- display_name: { type: string, nullable: true }
26852
+ display_name: { type: [string, "null"] }
26926
26853
  profile: { type: object, additionalProperties: true }
26927
26854
  status:
26928
26855
  type: string
@@ -26942,8 +26869,7 @@ components:
26942
26869
  fact_key: { type: string, example: "approval_tendency:refund.create|0-10|known|a@b.co" }
26943
26870
  fact_value: { type: object, additionalProperties: true }
26944
26871
  confidence:
26945
- type: string
26946
- nullable: true
26872
+ type: [string, "null"]
26947
26873
  description: 0..1, capped below certainty — no history makes the next decision certain.
26948
26874
  provenance:
26949
26875
  type: array
@@ -26964,8 +26890,8 @@ components:
26964
26890
  target_type:
26965
26891
  type: string
26966
26892
  enum: [sms, webhook, expo, email]
26967
- user_id: { type: string, format: uuid, nullable: true }
26968
- agent_id: { type: string, format: uuid, nullable: true }
26893
+ user_id: { type: [string, "null"], format: uuid }
26894
+ agent_id: { type: [string, "null"], format: uuid }
26969
26895
  config: { type: object, additionalProperties: true }
26970
26896
  events:
26971
26897
  type: array
@@ -26987,8 +26913,7 @@ components:
26987
26913
  description: { type: string }
26988
26914
  category: { type: string, example: communication }
26989
26915
  provider_slug:
26990
- type: string
26991
- nullable: true
26916
+ type: [string, "null"]
26992
26917
  description: "`oauth_providers.slug`, or null when the connector uses a pasted API key."
26993
26918
  oauth_scopes:
26994
26919
  type: array
@@ -27061,11 +26986,11 @@ components:
27061
26986
  key_prefix:
27062
26987
  type: string
27063
26988
  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 }
26989
+ max_concurrent_streams: { type: [integer, "null"] }
26990
+ spend_cap_usd: { type: [number, "null"] }
27066
26991
  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 }
26992
+ last_used_at: { type: [string, "null"], format: date-time }
26993
+ revoked_at: { type: [string, "null"], format: date-time }
27069
26994
 
27070
26995
  RouterKeyCreated:
27071
26996
  allOf:
@@ -27116,7 +27041,7 @@ components:
27116
27041
  destination_hosts:
27117
27042
  type: array
27118
27043
  items: { type: string }
27119
- created_by: { type: string, format: uuid, nullable: true }
27044
+ created_by: { type: [string, "null"], format: uuid }
27120
27045
  created_at: { type: string, format: date-time }
27121
27046
 
27122
27047
  X402TopupResponse:
@@ -27153,8 +27078,8 @@ components:
27153
27078
  type: boolean
27154
27079
  description: False until the first poll has recorded what already exists. That poll emits nothing.
27155
27080
  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 }
27081
+ last_polled_at: { type: [string, "null"], format: date-time }
27082
+ last_error: { type: [string, "null"] }
27158
27083
  consecutive_errors: { type: integer }
27159
27084
  events_emitted: { type: integer, format: int64 }
27160
27085
  created_at: { type: string, format: date-time }
@@ -27167,8 +27092,7 @@ components:
27167
27092
  binding_name: { type: string }
27168
27093
  preset_slug: { type: string }
27169
27094
  display_name:
27170
- type: string
27171
- nullable: true
27095
+ type: [string, "null"]
27172
27096
  description: Null if the preset has since been retired from the catalogue.
27173
27097
  is_active: { type: boolean }
27174
27098
  connected:
@@ -27193,9 +27117,8 @@ components:
27193
27117
  type: string
27194
27118
  format: uuid
27195
27119
  agent_id:
27196
- type: string
27120
+ type: [string, "null"]
27197
27121
  format: uuid
27198
- nullable: true
27199
27122
  action:
27200
27123
  type: string
27201
27124
  target_type:
@@ -27208,17 +27131,15 @@ components:
27208
27131
  maximum: 3
27209
27132
  description: "The tier actually enforced. Authoritative."
27210
27133
  declared_risk_tier:
27211
- type: integer
27134
+ type: [integer, "null"]
27212
27135
  minimum: 1
27213
27136
  maximum: 3
27214
- nullable: true
27215
27137
  description: "What the caller asked for, when it asked for anything."
27216
27138
  declared_below_floor:
27217
27139
  type: boolean
27218
27140
  description: "The caller asked for a lower tier than policy required."
27219
27141
  human_summary:
27220
- type: string
27221
- nullable: true
27142
+ type: [string, "null"]
27222
27143
  description: "Plain-language line sent to SMS, push and email."
27223
27144
  payload:
27224
27145
  type: object
@@ -27230,23 +27151,18 @@ components:
27230
27151
  type: object
27231
27152
  description: Structured summary of the action requiring approval
27232
27153
  reason:
27233
- type: string
27234
- nullable: true
27154
+ type: [string, "null"]
27235
27155
  decision_reason:
27236
- type: string
27237
- nullable: true
27156
+ type: [string, "null"]
27238
27157
  decided_by:
27239
- type: string
27158
+ type: [string, "null"]
27240
27159
  format: uuid
27241
- nullable: true
27242
27160
  decided_at:
27243
- type: string
27161
+ type: [string, "null"]
27244
27162
  format: date-time
27245
- nullable: true
27246
27163
  expires_at:
27247
- type: string
27164
+ type: [string, "null"]
27248
27165
  format: date-time
27249
- nullable: true
27250
27166
  created_at:
27251
27167
  type: string
27252
27168
  format: date-time
@@ -27270,9 +27186,8 @@ components:
27270
27186
  type: string
27271
27187
  enum: [pending, approved, rejected, expired, cancelled]
27272
27188
  expires_at:
27273
- type: string
27189
+ type: [string, "null"]
27274
27190
  format: date-time
27275
- nullable: true
27276
27191
 
27277
27192
  GuardrailReasonCode:
27278
27193
  type: string
@@ -27321,23 +27236,18 @@ components:
27321
27236
  reason_code:
27322
27237
  $ref: "#/components/schemas/GuardrailReasonCode"
27323
27238
  limit:
27324
- type: string
27325
- nullable: true
27239
+ type: [string, "null"]
27326
27240
  current:
27327
- type: string
27328
- nullable: true
27241
+ type: [string, "null"]
27329
27242
  attempted:
27330
- type: string
27331
- nullable: true
27243
+ type: [string, "null"]
27332
27244
  approval_available:
27333
27245
  type: boolean
27334
27246
  default: false
27335
27247
  retry_after_seconds:
27336
- type: integer
27337
- nullable: true
27248
+ type: [integer, "null"]
27338
27249
  detail:
27339
- type: string
27340
- nullable: true
27250
+ type: [string, "null"]
27341
27251
 
27342
27252
  GuardrailDenial:
27343
27253
  description: Alias of GuardrailViolation (Convention 1 JSON shape).
@@ -27365,8 +27275,7 @@ components:
27365
27275
  type: string
27366
27276
  format: email
27367
27277
  wallet_address:
27368
- type: string
27369
- nullable: true
27278
+ type: [string, "null"]
27370
27279
  description: Ethereum address if auto_provision_chains included an EVM chain
27371
27280
 
27372
27281
  # --- OAuth ---
@@ -27380,9 +27289,8 @@ components:
27380
27289
  app_slug:
27381
27290
  type: string
27382
27291
  app_logo_url:
27383
- type: string
27292
+ type: [string, "null"]
27384
27293
  format: uri
27385
- nullable: true
27386
27294
  scopes:
27387
27295
  type: array
27388
27296
  items: { type: string }
@@ -27405,12 +27313,10 @@ components:
27405
27313
  type: integer
27406
27314
  description: Token lifetime in seconds
27407
27315
  refresh_token:
27408
- type: string
27409
- nullable: true
27316
+ type: [string, "null"]
27410
27317
  description: Refresh token for obtaining new access tokens (when offline_access scope was granted)
27411
27318
  id_token:
27412
- type: string
27413
- nullable: true
27319
+ type: [string, "null"]
27414
27320
  description: OIDC ID token (when openid scope was granted)
27415
27321
  scope:
27416
27322
  type: string
@@ -27426,11 +27332,9 @@ components:
27426
27332
  type: string
27427
27333
  format: email
27428
27334
  name:
27429
- type: string
27430
- nullable: true
27335
+ type: [string, "null"]
27431
27336
  wallet_address:
27432
- type: string
27433
- nullable: true
27337
+ type: [string, "null"]
27434
27338
 
27435
27339
  # --- Spend Policies ---
27436
27340
 
@@ -27533,14 +27437,12 @@ components:
27533
27437
  entitlement_status:
27534
27438
  type: string
27535
27439
  provisioned_tier:
27536
- type: string
27537
- nullable: true
27440
+ type: [string, "null"]
27538
27441
  description: |
27539
27442
  Billing tier granted to the end-user org when billing_model is platform_pays
27540
27443
  (from template plan at bootstrap). Null when not provisioned.
27541
27444
  wallet_address:
27542
- type: string
27543
- nullable: true
27445
+ type: [string, "null"]
27544
27446
  vault_ids:
27545
27447
  type: array
27546
27448
  items:
@@ -27562,9 +27464,8 @@ components:
27562
27464
  type: string
27563
27465
  format: uuid
27564
27466
  claimed_at:
27565
- type: string
27467
+ type: [string, "null"]
27566
27468
  format: date-time
27567
- nullable: true
27568
27469
  claim:
27569
27470
  $ref: "#/components/schemas/ClaimStatusResponse"
27570
27471
 
@@ -27576,9 +27477,8 @@ components:
27576
27477
  type: string
27577
27478
  enum: [pending, active, claimed]
27578
27479
  redeemed_at:
27579
- type: string
27480
+ type: [string, "null"]
27580
27481
  format: date-time
27581
- nullable: true
27582
27482
 
27583
27483
  ConnectionUsageResponse:
27584
27484
  type: object
@@ -27634,12 +27534,10 @@ components:
27634
27534
  holder_address:
27635
27535
  type: string
27636
27536
  last_value_raw:
27637
- type: string
27638
- nullable: true
27537
+ type: [string, "null"]
27639
27538
  last_checked_at:
27640
- type: string
27539
+ type: [string, "null"]
27641
27540
  format: date-time
27642
- nullable: true
27643
27541
 
27644
27542
  TemplatePreviewRequest:
27645
27543
  type: object
@@ -27691,18 +27589,15 @@ components:
27691
27589
  type: string
27692
27590
  format: date-time
27693
27591
  connection_id:
27694
- type: string
27592
+ type: [string, "null"]
27695
27593
  format: uuid
27696
- nullable: true
27697
27594
 
27698
27595
  InferenceBudgetUnconfiguredResponse:
27699
27596
  type: object
27700
27597
  properties:
27701
27598
  allowance_usd:
27702
- type: string
27703
- nullable: true
27704
- remaining_usd:
27705
- nullable: true
27599
+ type: [string, "null"]
27600
+ remaining_usd: {}
27706
27601
  message:
27707
27602
  type: string
27708
27603
 
@@ -27717,9 +27612,8 @@ components:
27717
27612
  type: string
27718
27613
  format: uuid
27719
27614
  user_id:
27720
- type: string
27615
+ type: [string, "null"]
27721
27616
  format: uuid
27722
- nullable: true
27723
27617
  to_allowlist:
27724
27618
  type: array
27725
27619
  items: { type: string }
@@ -27727,11 +27621,9 @@ components:
27727
27621
  type: array
27728
27622
  items: { type: string }
27729
27623
  max_value_per_tx_eth:
27730
- type: string
27731
- nullable: true
27624
+ type: [string, "null"]
27732
27625
  daily_limit_eth:
27733
- type: string
27734
- nullable: true
27626
+ type: [string, "null"]
27735
27627
  allowed_chains:
27736
27628
  type: array
27737
27629
  items: { type: string }
@@ -27739,27 +27631,20 @@ components:
27739
27631
  type: array
27740
27632
  items: { type: string }
27741
27633
  max_transactions_per_day:
27742
- type: integer
27743
- nullable: true
27634
+ type: [integer, "null"]
27744
27635
  inference_allowance_usd:
27745
- type: string
27746
- nullable: true
27636
+ type: [string, "null"]
27747
27637
  inference_reserved_pct:
27748
- type: integer
27749
- nullable: true
27638
+ type: [integer, "null"]
27750
27639
  inference_hard_stop:
27751
- type: boolean
27752
- nullable: true
27640
+ type: [boolean, "null"]
27753
27641
  inference_allowance_mode:
27754
- type: string
27755
- nullable: true
27642
+ type: [string, "null"]
27756
27643
  max_request_cost_usd:
27757
- type: string
27758
- nullable: true
27644
+ type: [string, "null"]
27759
27645
  human_factor_auth:
27760
- type: object
27646
+ type: [object, "null"]
27761
27647
  additionalProperties: true
27762
- nullable: true
27763
27648
  created_at:
27764
27649
  type: string
27765
27650
  format: date-time
@@ -27782,8 +27667,7 @@ components:
27782
27667
  type: object
27783
27668
  properties:
27784
27669
  require_passkey_above_usd:
27785
- type: string
27786
- nullable: true
27670
+ type: [string, "null"]
27787
27671
  require_passkey_for_new_recipient:
27788
27672
  type: boolean
27789
27673
 
@@ -27859,8 +27743,7 @@ components:
27859
27743
  name:
27860
27744
  type: string
27861
27745
  prf_supported:
27862
- type: boolean
27863
- nullable: true
27746
+ type: [boolean, "null"]
27864
27747
  description: |
27865
27748
  `prf.enabled` from `credential.getClientExtensionResults()` —
27866
27749
  whether this authenticator can derive the secret that wraps a
@@ -27875,9 +27758,8 @@ components:
27875
27758
  enum: [passkey_prf, recovery_code]
27876
27759
  description: Sidecar wraps are stored through `PUT /v1/keys/{key_id}/client-share/holder`.
27877
27760
  credential_id:
27878
- type: string
27761
+ type: [string, "null"]
27879
27762
  format: uuid
27880
- nullable: true
27881
27763
  description: Required for `passkey_prf`; the passkey id from `GET /v1/auth/passkeys`.
27882
27764
  wrapped_share:
27883
27765
  type: string
@@ -27902,13 +27784,11 @@ components:
27902
27784
  type: string
27903
27785
  enum: [passkey_prf, recovery_code, sidecar]
27904
27786
  credential_id:
27905
- type: string
27787
+ type: [string, "null"]
27906
27788
  format: uuid
27907
- nullable: true
27908
27789
  holder_id:
27909
- type: string
27790
+ type: [string, "null"]
27910
27791
  format: uuid
27911
- nullable: true
27912
27792
  wrapped_share:
27913
27793
  type: string
27914
27794
  description: Base64, exactly as stored.
@@ -27940,11 +27820,11 @@ components:
27940
27820
  chain_id: { type: integer }
27941
27821
  safe_address: { type: string }
27942
27822
  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. }
27823
+ passkey_name: { type: [string, "null"], description: The owning passkey's name — only that credential can sign for the Safe. }
27824
+ 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
27825
  custody: { type: string, enum: [passkey_owner] }
27946
27826
  deploy_status: { type: string, enum: [pending, deployed] }
27947
- deploy_tx_hash: { type: string, nullable: true }
27827
+ deploy_tx_hash: { type: [string, "null"] }
27948
27828
  owner_signer: { type: string, description: The SafeWebAuthnSharedSigner address listed as the Safe's owner. }
27949
27829
  created_at: { type: string, format: date-time }
27950
27830
 
@@ -27965,11 +27845,10 @@ components:
27965
27845
  safe_tx_hash: { type: string, description: Hex SafeTx hash — the WebAuthn challenge (raw 32 bytes). }
27966
27846
  credential_id: { type: string }
27967
27847
  transports:
27968
- type: array
27969
- nullable: true
27848
+ type: [array, "null"]
27970
27849
  items: { type: string }
27971
27850
  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 }
27851
+ passkey_name: { type: [string, "null"] }
27973
27852
  rp_id: { type: string }
27974
27853
 
27975
27854
  PasskeySafeGrant:
@@ -27984,8 +27863,8 @@ components:
27984
27863
  allowance_amount: { type: string, description: Base units per reset period. }
27985
27864
  reset_time_min: { type: integer }
27986
27865
  status: { type: string, enum: [pending, active, revoking, revoked] }
27987
- setup_tx_hash: { type: string, nullable: true }
27988
- revoke_tx_hash: { type: string, nullable: true }
27866
+ setup_tx_hash: { type: [string, "null"] }
27867
+ revoke_tx_hash: { type: [string, "null"] }
27989
27868
  created_at: { type: string, format: date-time }
27990
27869
 
27991
27870
  PasskeySafeGrantPrepare:
@@ -28126,35 +28005,25 @@ components:
28126
28005
  type: string
28127
28006
  description: "Risk event type (e.g. first_seen, geo_velocity, honeytoken_access)"
28128
28007
  ip:
28129
- type: string
28130
- nullable: true
28008
+ type: [string, "null"]
28131
28009
  asn:
28132
- type: integer
28133
- nullable: true
28010
+ type: [integer, "null"]
28134
28011
  asn_org:
28135
- type: string
28136
- nullable: true
28012
+ type: [string, "null"]
28137
28013
  country_code:
28138
- type: string
28139
- nullable: true
28014
+ type: [string, "null"]
28140
28015
  region:
28141
- type: string
28142
- nullable: true
28016
+ type: [string, "null"]
28143
28017
  city:
28144
- type: string
28145
- nullable: true
28018
+ type: [string, "null"]
28146
28019
  latitude:
28147
- type: number
28148
- nullable: true
28020
+ type: [number, "null"]
28149
28021
  longitude:
28150
- type: number
28151
- nullable: true
28022
+ type: [number, "null"]
28152
28023
  user_agent:
28153
- type: string
28154
- nullable: true
28024
+ type: [string, "null"]
28155
28025
  severity:
28156
- type: string
28157
- nullable: true
28026
+ type: [string, "null"]
28158
28027
  description: "Computed severity at event time (low, medium, high, critical)"
28159
28028
  payload:
28160
28029
  type: object
@@ -28246,14 +28115,12 @@ components:
28246
28115
  type: string
28247
28116
  format: date-time
28248
28117
  notes:
28249
- type: string
28250
- nullable: true
28118
+ type: [string, "null"]
28251
28119
  triggered_count:
28252
28120
  type: integer
28253
28121
  last_triggered_at:
28254
- type: string
28122
+ type: [string, "null"]
28255
28123
  format: date-time
28256
- nullable: true
28257
28124
 
28258
28125
  CreateHoneytokenRequest:
28259
28126
  type: object
@@ -28424,18 +28291,15 @@ components:
28424
28291
  type: boolean
28425
28292
  description: Whether a credential is stored for this binding. The value itself is never returned.
28426
28293
  credential_source_type:
28427
- type: string
28294
+ type: [string, "null"]
28428
28295
  enum: [inline, vault_ref]
28429
- nullable: true
28430
28296
  description: How the credential is sourced — inline (HSM-encrypted copy) or vault_ref (live pointer).
28431
28297
  credential_vault_id:
28432
- type: string
28298
+ type: [string, "null"]
28433
28299
  format: uuid
28434
- nullable: true
28435
28300
  description: For vault_ref credentials — the vault containing the referenced secret.
28436
28301
  credential_path:
28437
- type: string
28438
- nullable: true
28302
+ type: [string, "null"]
28439
28303
  description: For vault_ref credentials — the secret path in the referenced vault.
28440
28304
  created_at:
28441
28305
  type: string
@@ -28453,8 +28317,7 @@ components:
28453
28317
  latency_ms:
28454
28318
  type: integer
28455
28319
  error:
28456
- type: string
28457
- nullable: true
28320
+ type: [string, "null"]
28458
28321
 
28459
28322
  ExecuteRequest:
28460
28323
  type: object
@@ -28498,9 +28361,8 @@ components:
28498
28361
  type: string
28499
28362
  enum: [pending]
28500
28363
  expires_at:
28501
- type: string
28364
+ type: [string, "null"]
28502
28365
  format: date-time
28503
- nullable: true
28504
28366
 
28505
28367
  TxAwaitingApproval:
28506
28368
  type: object
@@ -28513,13 +28375,11 @@ components:
28513
28375
  type: string
28514
28376
  format: uuid
28515
28377
  tx_id:
28516
- type: string
28378
+ type: [string, "null"]
28517
28379
  format: uuid
28518
- nullable: true
28519
28380
  expires_at:
28520
- type: string
28381
+ type: [string, "null"]
28521
28382
  format: date-time
28522
- nullable: true
28523
28383
 
28524
28384
  ExecuteResponse:
28525
28385
  type: object
@@ -28531,12 +28391,10 @@ components:
28531
28391
  status:
28532
28392
  type: string
28533
28393
  result:
28534
- type: object
28394
+ type: [object, "null"]
28535
28395
  additionalProperties: true
28536
- nullable: true
28537
28396
  error:
28538
- type: string
28539
- nullable: true
28397
+ type: [string, "null"]
28540
28398
  duration_ms:
28541
28399
  type: integer
28542
28400
  redactions_applied:
@@ -28566,21 +28424,17 @@ components:
28566
28424
  status:
28567
28425
  type: string
28568
28426
  request_summary:
28569
- type: object
28427
+ type: [object, "null"]
28570
28428
  additionalProperties: true
28571
- nullable: true
28572
28429
  result_summary:
28573
- type: object
28430
+ type: [object, "null"]
28574
28431
  additionalProperties: true
28575
- nullable: true
28576
28432
  error_message:
28577
- type: string
28578
- nullable: true
28433
+ type: [string, "null"]
28579
28434
  duration_ms:
28580
28435
  type: integer
28581
28436
  cost_cents:
28582
- type: integer
28583
- nullable: true
28437
+ type: [integer, "null"]
28584
28438
  redactions_applied:
28585
28439
  type: integer
28586
28440
  created_at:
@@ -28616,9 +28470,8 @@ components:
28616
28470
  default: UTC
28617
28471
  example: UTC
28618
28472
  event_filter:
28619
- type: object
28473
+ type: [object, "null"]
28620
28474
  additionalProperties: true
28621
- nullable: true
28622
28475
  workflow_spec:
28623
28476
  description: |
28624
28477
  Workflow steps. Accepts a bare array `[...]` or
@@ -28668,14 +28521,12 @@ components:
28668
28521
  name:
28669
28522
  type: string
28670
28523
  cron_expr:
28671
- type: string
28672
- nullable: true
28524
+ type: [string, "null"]
28673
28525
  timezone:
28674
28526
  type: string
28675
28527
  event_filter:
28676
- type: object
28528
+ type: [object, "null"]
28677
28529
  additionalProperties: true
28678
- nullable: true
28679
28530
  workflow_spec:
28680
28531
  oneOf:
28681
28532
  - type: array
@@ -28697,7 +28548,6 @@ components:
28697
28548
  type: string
28698
28549
  description: Note recorded on the new spec version.
28699
28550
  webhook_signature:
28700
- nullable: true
28701
28551
  description: |
28702
28552
  Inbound signature scheme for a webhook-triggered automation. `stripe`
28703
28553
  (`Stripe-Signature: t=…,v1=…` over `<t>.<body>`), `github`
@@ -28705,7 +28555,7 @@ components:
28705
28555
  (`<header>: <hex|base64>` over the body). The secret is stored encrypted
28706
28556
  and never returned; `null` removes the scheme. With a scheme set, an
28707
28557
  unsigned or mis-signed delivery starts nothing.
28708
- type: object
28558
+ type: [object, "null"]
28709
28559
  properties:
28710
28560
  scheme:
28711
28561
  type: string
@@ -28742,8 +28592,7 @@ components:
28742
28592
  created_by_type:
28743
28593
  type: string
28744
28594
  note:
28745
- type: string
28746
- nullable: true
28595
+ type: [string, "null"]
28747
28596
  created_at:
28748
28597
  type: string
28749
28598
  format: date-time
@@ -28777,9 +28626,8 @@ components:
28777
28626
  properties:
28778
28627
  id: { type: string, format: uuid }
28779
28628
  org_id:
28780
- type: string
28629
+ type: [string, "null"]
28781
28630
  format: uuid
28782
- nullable: true
28783
28631
  description: Null for a global row.
28784
28632
  provider: { type: string }
28785
28633
  model_pattern: { type: string }
@@ -28841,7 +28689,7 @@ components:
28841
28689
  requests: { type: integer, format: int64 }
28842
28690
  previous_cost_usd: { type: number }
28843
28691
  share_pct: { type: number }
28844
- trend_pct: { type: number, nullable: true }
28692
+ trend_pct: { type: [number, "null"] }
28845
28693
  by_model:
28846
28694
  type: array
28847
28695
  items:
@@ -28856,7 +28704,7 @@ components:
28856
28704
  previous_cost_usd: { type: number }
28857
28705
  priced: { type: boolean }
28858
28706
  share_pct: { type: number }
28859
- trend_pct: { type: number, nullable: true }
28707
+ trend_pct: { type: [number, "null"] }
28860
28708
  by_agent:
28861
28709
  type: array
28862
28710
  items:
@@ -28869,18 +28717,18 @@ components:
28869
28717
  tokens: { type: integer, format: int64 }
28870
28718
  requests: { type: integer, format: int64 }
28871
28719
  blocked: { type: integer, format: int64 }
28872
- top_model: { type: string, nullable: true }
28873
- top_provider: { type: string, nullable: true }
28720
+ top_model: { type: [string, "null"] }
28721
+ top_provider: { type: [string, "null"] }
28874
28722
  previous_cost_usd: { type: number }
28875
- last_request_at: { type: string, format: date-time, nullable: true }
28876
- daily_budget_usd: { type: number, nullable: true }
28723
+ last_request_at: { type: [string, "null"], format: date-time }
28724
+ daily_budget_usd: { type: [number, "null"] }
28877
28725
  today_cost_usd: { type: number }
28878
28726
  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 }
28727
+ max_tokens_per_request: { type: [integer, "null"], format: int64 }
28728
+ max_requests_per_day: { type: [integer, "null"], format: int64 }
28881
28729
  share_pct: { type: number }
28882
- trend_pct: { type: number, nullable: true }
28883
- budget_used_pct: { type: number, nullable: true }
28730
+ trend_pct: { type: [number, "null"] }
28731
+ budget_used_pct: { type: [number, "null"] }
28884
28732
  limits:
28885
28733
  type: object
28886
28734
  properties:
@@ -28898,8 +28746,8 @@ components:
28898
28746
  agent_name: { type: string }
28899
28747
  name: { type: string }
28900
28748
  spent_usd: { type: number }
28901
- cap_usd: { type: number, nullable: true }
28902
- last_used_at: { type: string, format: date-time, nullable: true }
28749
+ cap_usd: { type: [number, "null"] }
28750
+ last_used_at: { type: [string, "null"], format: date-time }
28903
28751
  credit_balance_usd: { type: number }
28904
28752
  inspection_fees_usd: { type: number }
28905
28753
  billing_tier: { type: string }
@@ -29008,8 +28856,7 @@ components:
29008
28856
  index:
29009
28857
  type: integer
29010
28858
  name:
29011
- type: string
29012
- nullable: true
28859
+ type: [string, "null"]
29013
28860
  type:
29014
28861
  type: string
29015
28862
  known:
@@ -29019,8 +28866,7 @@ components:
29019
28866
  additionalProperties: true
29020
28867
  description: The step after template substitution.
29021
28868
  skipped_by:
29022
- type: string
29023
- nullable: true
28869
+ type: [string, "null"]
29024
28870
  effect:
29025
28871
  type: string
29026
28872
  on_error:
@@ -29037,8 +28883,7 @@ components:
29037
28883
  items:
29038
28884
  type: string
29039
28885
  budget_exceeded:
29040
- type: string
29041
- nullable: true
28886
+ type: [string, "null"]
29042
28887
 
29043
28888
  TriggerAutomationRequest:
29044
28889
  type: object
@@ -29070,14 +28915,12 @@ components:
29070
28915
  type: string
29071
28916
  enum: [cron, event, webhook, manual]
29072
28917
  cron_expr:
29073
- type: string
29074
- nullable: true
28918
+ type: [string, "null"]
29075
28919
  timezone:
29076
28920
  type: string
29077
28921
  event_filter:
29078
- type: object
28922
+ type: [object, "null"]
29079
28923
  additionalProperties: true
29080
- nullable: true
29081
28924
  workflow_spec:
29082
28925
  oneOf:
29083
28926
  - type: array
@@ -29089,28 +28932,22 @@ components:
29089
28932
  is_active:
29090
28933
  type: boolean
29091
28934
  last_run_at:
29092
- type: string
28935
+ type: [string, "null"]
29093
28936
  format: date-time
29094
- nullable: true
29095
28937
  next_run_at:
29096
- type: string
28938
+ type: [string, "null"]
29097
28939
  format: date-time
29098
- nullable: true
29099
28940
  last_run_status:
29100
- type: string
29101
- nullable: true
28941
+ type: [string, "null"]
29102
28942
  description: Status of the most recent run (enriched list field)
29103
28943
  total_runs:
29104
- type: integer
29105
- nullable: true
28944
+ type: [integer, "null"]
29106
28945
  description: Total runs in the last 30 days (enriched list field)
29107
28946
  success_rate:
29108
- type: number
29109
- nullable: true
28947
+ type: [number, "null"]
29110
28948
  description: Success rate percentage (enriched list field)
29111
28949
  agent_name:
29112
- type: string
29113
- nullable: true
28950
+ type: [string, "null"]
29114
28951
  description: Resolved agent display name (enriched list field)
29115
28952
  created_by_type:
29116
28953
  type: string
@@ -29126,8 +28963,7 @@ components:
29126
28963
  type: integer
29127
28964
  description: Current `automation_versions` version.
29128
28965
  webhook_signature_scheme:
29129
- type: string
29130
- nullable: true
28966
+ type: [string, "null"]
29131
28967
  description: Inbound signature scheme name, never the secret.
29132
28968
 
29133
28969
  AutomationCreatedResponse:
@@ -29174,12 +29010,10 @@ components:
29174
29010
  items:
29175
29011
  type: string
29176
29012
  runtime_id:
29177
- type: string
29013
+ type: [string, "null"]
29178
29014
  format: uuid
29179
- nullable: true
29180
29015
  runtime_status:
29181
- type: string
29182
- nullable: true
29016
+ type: [string, "null"]
29183
29017
  cli_hint:
29184
29018
  type: string
29185
29019
 
@@ -29213,55 +29047,42 @@ components:
29213
29047
  are parked states: the run's clock is stopped and it continues when the
29214
29048
  approval is decided, the wake time passes, or the callback URL is posted to.
29215
29049
  paused_reason:
29216
- type: string
29217
- nullable: true
29050
+ type: [string, "null"]
29218
29051
  enum: [approval, wait_until, callback]
29219
29052
  paused_at_step:
29220
- type: integer
29221
- nullable: true
29053
+ type: [integer, "null"]
29222
29054
  paused_approval_id:
29223
- type: string
29055
+ type: [string, "null"]
29224
29056
  format: uuid
29225
- nullable: true
29226
29057
  paused_until:
29227
- type: string
29058
+ type: [string, "null"]
29228
29059
  format: date-time
29229
- nullable: true
29230
29060
  paused_expires_at:
29231
- type: string
29061
+ type: [string, "null"]
29232
29062
  format: date-time
29233
- nullable: true
29234
29063
  spec_version:
29235
- type: integer
29236
- nullable: true
29064
+ type: [integer, "null"]
29237
29065
  idempotency_key:
29238
- type: string
29239
- nullable: true
29066
+ type: [string, "null"]
29240
29067
  parent_run_id:
29241
- type: string
29068
+ type: [string, "null"]
29242
29069
  format: uuid
29243
- nullable: true
29244
29070
  description: Set when a `call_automation` step started this run.
29245
- step_results:
29246
- nullable: true
29071
+ step_results: {}
29247
29072
  error:
29248
- type: string
29249
- nullable: true
29073
+ type: [string, "null"]
29250
29074
  trigger_source:
29251
- type: string
29252
- nullable: true
29075
+ type: [string, "null"]
29253
29076
  context:
29254
- type: object
29077
+ type: [object, "null"]
29255
29078
  additionalProperties: true
29256
- nullable: true
29257
29079
  description: JSONB context passed between workflow steps
29258
29080
  started_at:
29259
29081
  type: string
29260
29082
  format: date-time
29261
29083
  finished_at:
29262
- type: string
29084
+ type: [string, "null"]
29263
29085
  format: date-time
29264
- nullable: true
29265
29086
  tokens_used:
29266
29087
  type: integer
29267
29088
  cost_cents:
@@ -29294,8 +29115,7 @@ components:
29294
29115
  trigger_type:
29295
29116
  type: string
29296
29117
  cron_expr:
29297
- type: string
29298
- nullable: true
29118
+ type: [string, "null"]
29299
29119
  workflow_spec:
29300
29120
  type: object
29301
29121
  additionalProperties: true
@@ -29378,12 +29198,11 @@ components:
29378
29198
  type: object
29379
29199
  properties:
29380
29200
  schedule:
29381
- nullable: true
29382
29201
  description: |
29383
29202
  Scheduled start/stop: start the container when `start_cron` fires (IANA
29384
29203
  `timezone`, default UTC) and stop it `stop_after_secs` later (60–86400; null
29385
29204
  leaves it to the idle reconciler). `null` clears the schedule.
29386
- type: object
29205
+ type: [object, "null"]
29387
29206
  properties:
29388
29207
  start_cron:
29389
29208
  type: string
@@ -29391,8 +29210,7 @@ components:
29391
29210
  type: string
29392
29211
  default: UTC
29393
29212
  stop_after_secs:
29394
- type: integer
29395
- nullable: true
29213
+ type: [integer, "null"]
29396
29214
  name:
29397
29215
  type: string
29398
29216
  template:
@@ -29431,24 +29249,19 @@ components:
29431
29249
  required: [id, name, agent_id, status, created_at, updated_at]
29432
29250
  properties:
29433
29251
  previous_image_digest:
29434
- type: string
29435
- nullable: true
29252
+ type: [string, "null"]
29436
29253
  image_digest:
29437
- type: string
29438
- nullable: true
29254
+ type: [string, "null"]
29439
29255
  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
29256
  schedule:
29441
- type: object
29442
- nullable: true
29257
+ type: [object, "null"]
29443
29258
  additionalProperties: true
29444
29259
  next_scheduled_start_at:
29445
- type: string
29260
+ type: [string, "null"]
29446
29261
  format: date-time
29447
- nullable: true
29448
29262
  scheduled_stop_at:
29449
- type: string
29263
+ type: [string, "null"]
29450
29264
  format: date-time
29451
- nullable: true
29452
29265
  id:
29453
29266
  type: string
29454
29267
  format: uuid
@@ -29458,48 +29271,36 @@ components:
29458
29271
  type: string
29459
29272
  format: uuid
29460
29273
  template:
29461
- type: string
29462
- nullable: true
29274
+ type: [string, "null"]
29463
29275
  preset:
29464
- type: string
29465
- nullable: true
29276
+ type: [string, "null"]
29466
29277
  provider:
29467
- type: string
29468
- nullable: true
29278
+ type: [string, "null"]
29469
29279
  status:
29470
29280
  type: string
29471
29281
  enum: [creating, running, stopping, stopped, failed, deleting]
29472
29282
  image:
29473
- type: string
29474
- nullable: true
29283
+ type: [string, "null"]
29475
29284
  environment:
29476
- type: string
29477
- nullable: true
29285
+ type: [string, "null"]
29478
29286
  description: Vault environment for env var resolution
29479
29287
  env_public:
29480
- type: object
29288
+ type: [object, "null"]
29481
29289
  additionalProperties:
29482
29290
  type: string
29483
- nullable: true
29484
29291
  idle_timeout_secs:
29485
- type: integer
29486
- nullable: true
29292
+ type: [integer, "null"]
29487
29293
  expose_http:
29488
- type: boolean
29489
- nullable: true
29294
+ type: [boolean, "null"]
29490
29295
  slug:
29491
- type: string
29492
- nullable: true
29296
+ type: [string, "null"]
29493
29297
  public_url:
29494
- type: string
29495
- nullable: true
29298
+ type: [string, "null"]
29496
29299
  http_port:
29497
- type: integer
29498
- nullable: true
29300
+ type: [integer, "null"]
29499
29301
  inbound_auth:
29500
- type: string
29302
+ type: [string, "null"]
29501
29303
  enum: [api_key, jwt, public]
29502
- nullable: true
29503
29304
  shell_access_enabled:
29504
29305
  type: boolean
29505
29306
  shell_auth_policy:
@@ -29507,8 +29308,7 @@ components:
29507
29308
  shell_max_session_minutes:
29508
29309
  type: integer
29509
29310
  monthly_hours_used:
29510
- type: number
29511
- nullable: true
29311
+ type: [number, "null"]
29512
29312
  has_paid_addon:
29513
29313
  type: boolean
29514
29314
  description: Whether this runtime has a paid Stripe add-on (unlimited hours).
@@ -29554,8 +29354,7 @@ components:
29554
29354
  slug:
29555
29355
  type: string
29556
29356
  reason:
29557
- type: string
29558
- nullable: true
29357
+ type: [string, "null"]
29559
29358
 
29560
29359
  ShellSessionRequest:
29561
29360
  type: object
@@ -29640,9 +29439,8 @@ components:
29640
29439
  type: string
29641
29440
  format: date-time
29642
29441
  ttl_expires_at:
29643
- type: string
29442
+ type: [string, "null"]
29644
29443
  format: date-time
29645
- nullable: true
29646
29444
 
29647
29445
  PutMemoryRequest:
29648
29446
  type: object
@@ -29651,8 +29449,7 @@ components:
29651
29449
  value:
29652
29450
  type: string
29653
29451
  ttl_seconds:
29654
- type: integer
29655
- nullable: true
29452
+ type: [integer, "null"]
29656
29453
 
29657
29454
  MemorySearchRequest:
29658
29455
  type: object
@@ -29714,18 +29511,15 @@ components:
29714
29511
  name:
29715
29512
  type: string
29716
29513
  description:
29717
- type: string
29718
- nullable: true
29514
+ type: [string, "null"]
29719
29515
  capabilities:
29720
29516
  type: array
29721
29517
  items:
29722
29518
  type: string
29723
29519
  a2a_url:
29724
- type: string
29725
- nullable: true
29520
+ type: [string, "null"]
29726
29521
  mcp_url:
29727
- type: string
29728
- nullable: true
29522
+ type: [string, "null"]
29729
29523
  tags:
29730
29524
  type: array
29731
29525
  items:
@@ -29741,8 +29535,7 @@ components:
29741
29535
  name:
29742
29536
  type: string
29743
29537
  description:
29744
- type: string
29745
- nullable: true
29538
+ type: [string, "null"]
29746
29539
  tags:
29747
29540
  type: array
29748
29541
  items:
@@ -29752,14 +29545,11 @@ components:
29752
29545
  items:
29753
29546
  type: string
29754
29547
  a2a_url:
29755
- type: string
29756
- nullable: true
29548
+ type: [string, "null"]
29757
29549
  mcp_url:
29758
- type: string
29759
- nullable: true
29550
+ type: [string, "null"]
29760
29551
  org_name:
29761
- type: string
29762
- nullable: true
29552
+ type: [string, "null"]
29763
29553
 
29764
29554
  DirectoryResponse:
29765
29555
  type: object
@@ -29792,11 +29582,9 @@ components:
29792
29582
  items:
29793
29583
  type: string
29794
29584
  a2a_url:
29795
- type: string
29796
- nullable: true
29585
+ type: [string, "null"]
29797
29586
  mcp_url:
29798
- type: string
29799
- nullable: true
29587
+ type: [string, "null"]
29800
29588
  intents_api_enabled:
29801
29589
  type: boolean
29802
29590
  execution_intents_enabled:
@@ -30036,9 +29824,8 @@ components:
30036
29824
  is_active:
30037
29825
  type: boolean
30038
29826
  config:
30039
- type: object
29827
+ type: [object, "null"]
30040
29828
  additionalProperties: true
30041
- nullable: true
30042
29829
  description: |
30043
29830
  Channel-specific configuration JSON. May include:
30044
29831
  - sender_allowlist (array of strings): restrict which external senders can trigger the agent
@@ -30053,18 +29840,16 @@ components:
30053
29840
  type: boolean
30054
29841
  description: Whether voice message transcription is enabled
30055
29842
  unified_conversation_id:
30056
- type: string
29843
+ type: [string, "null"]
30057
29844
  format: uuid
30058
- nullable: true
30059
29845
  description: ID linking this channel to a unified cross-platform conversation
30060
29846
  is_home_platform:
30061
29847
  type: boolean
30062
29848
  description: Whether this is the agent's home platform channel
30063
29849
  sender_allowlist:
30064
- type: array
29850
+ type: [array, "null"]
30065
29851
  items:
30066
29852
  type: string
30067
- nullable: true
30068
29853
  description: List of allowed sender IDs for auto-respond
30069
29854
  auto_respond_enabled:
30070
29855
  type: boolean
@@ -30123,16 +29908,13 @@ components:
30123
29908
  type: boolean
30124
29909
  description: Whether this message was a voice message
30125
29910
  voice_file_id:
30126
- type: string
30127
- nullable: true
29911
+ type: [string, "null"]
30128
29912
  description: Telegram voice file ID
30129
29913
  voice_duration_secs:
30130
- type: integer
30131
- nullable: true
29914
+ type: [integer, "null"]
30132
29915
  description: Duration of voice message in seconds
30133
29916
  transcription_status:
30134
- type: string
30135
- nullable: true
29917
+ type: [string, "null"]
30136
29918
  enum: [pending, completed, failed]
30137
29919
  description: Status of voice transcription
30138
29920
  created_at:
@@ -30187,17 +29969,15 @@ components:
30187
29969
  items:
30188
29970
  type: string
30189
29971
  extra_auth_params:
30190
- type: object
29972
+ type: [object, "null"]
30191
29973
  additionalProperties:
30192
29974
  type: string
30193
- nullable: true
30194
29975
  requires_app_credentials:
30195
29976
  type: boolean
30196
29977
  description: Whether custom app credentials are required (vs. shared 1Claw app)
30197
29978
  documentation_url:
30198
- type: string
29979
+ type: [string, "null"]
30199
29980
  format: uri
30200
- nullable: true
30201
29981
 
30202
29982
  OAuthProviderListResponse:
30203
29983
  type: object
@@ -30290,9 +30070,8 @@ components:
30290
30070
  client_id:
30291
30071
  type: string
30292
30072
  redirect_uri:
30293
- type: string
30073
+ type: [string, "null"]
30294
30074
  format: uri
30295
- nullable: true
30296
30075
  created_at:
30297
30076
  type: string
30298
30077
  format: date-time
@@ -30680,9 +30459,8 @@ components:
30680
30459
  type: string
30681
30460
  enum: [narrowing, widening, neutral]
30682
30461
  approval_id:
30683
- type: string
30462
+ type: [string, "null"]
30684
30463
  format: uuid
30685
- nullable: true
30686
30464
  created_at:
30687
30465
  type: string
30688
30466
  format: date-time
@@ -31655,8 +31433,7 @@ components:
31655
31433
  safe_address:
31656
31434
  type: string
31657
31435
  nonce:
31658
- type: integer
31659
- nullable: true
31436
+ type: [integer, "null"]
31660
31437
  created_at:
31661
31438
  type: string
31662
31439
  format: date-time
@@ -31678,22 +31455,18 @@ components:
31678
31455
  items:
31679
31456
  type: string
31680
31457
  git_branch:
31681
- type: string
31682
- nullable: true
31458
+ type: [string, "null"]
31683
31459
  sensitive:
31684
31460
  type: boolean
31685
31461
  comment:
31686
- type: string
31687
- nullable: true
31462
+ type: [string, "null"]
31688
31463
  value:
31689
- type: string
31690
- nullable: true
31464
+ type: [string, "null"]
31691
31465
  description: Null for sensitive vars in list responses
31692
31466
  version:
31693
31467
  type: integer
31694
31468
  created_by:
31695
- type: string
31696
- nullable: true
31469
+ type: [string, "null"]
31697
31470
  created_at:
31698
31471
  type: string
31699
31472
  format: date-time
@@ -31753,8 +31526,7 @@ components:
31753
31526
  environment:
31754
31527
  type: string
31755
31528
  git_branch:
31756
- type: string
31757
- nullable: true
31529
+ type: [string, "null"]
31758
31530
  resolved_at:
31759
31531
  type: string
31760
31532
  format: date-time
@@ -31768,13 +31540,11 @@ components:
31768
31540
  slug:
31769
31541
  type: string
31770
31542
  description:
31771
- type: string
31772
- nullable: true
31543
+ type: [string, "null"]
31773
31544
  is_builtin:
31774
31545
  type: boolean
31775
31546
  copied_from:
31776
- type: string
31777
- nullable: true
31547
+ type: [string, "null"]
31778
31548
  is_detached:
31779
31549
  type: boolean
31780
31550
  created_at:
@@ -31809,11 +31579,9 @@ components:
31809
31579
  sensitive:
31810
31580
  type: boolean
31811
31581
  comment:
31812
- type: string
31813
- nullable: true
31582
+ type: [string, "null"]
31814
31583
  value:
31815
- type: string
31816
- nullable: true
31584
+ type: [string, "null"]
31817
31585
  version:
31818
31586
  type: integer
31819
31587
  linked_vaults:
@@ -31872,9 +31640,8 @@ components:
31872
31640
  enum: [wallet, platform_app, org]
31873
31641
  description: Policy scope — org-wide, platform app, or single wallet
31874
31642
  scope_id:
31875
- type: string
31643
+ type: [string, "null"]
31876
31644
  format: uuid
31877
- nullable: true
31878
31645
  description: Wallet or platform app UUID when scope_type is not org
31879
31646
  principal_type:
31880
31647
  type: string
@@ -31928,9 +31695,8 @@ components:
31928
31695
  scope_type:
31929
31696
  type: string
31930
31697
  scope_id:
31931
- type: string
31698
+ type: [string, "null"]
31932
31699
  format: uuid
31933
- nullable: true
31934
31700
  principal_type:
31935
31701
  type: string
31936
31702
  principal_id:
@@ -31950,19 +31716,16 @@ components:
31950
31716
  items:
31951
31717
  type: string
31952
31718
  max_value_per_tx_eth:
31953
- type: string
31954
- nullable: true
31719
+ type: [string, "null"]
31955
31720
  daily_limit_eth:
31956
- type: string
31957
- nullable: true
31721
+ type: [string, "null"]
31958
31722
  conditions:
31959
31723
  type: object
31960
31724
  is_active:
31961
31725
  type: boolean
31962
31726
  expires_at:
31963
- type: string
31727
+ type: [string, "null"]
31964
31728
  format: date-time
31965
- nullable: true
31966
31729
  created_by:
31967
31730
  type: string
31968
31731
  format: uuid
@@ -32030,8 +31793,7 @@ components:
32030
31793
  type: string
32031
31794
  enum: [approved]
32032
31795
  recovery_code:
32033
- type: string
32034
- nullable: true
31796
+ type: [string, "null"]
32035
31797
  description: One-time recovery code (only present for certain recovery types)
32036
31798
 
32037
31799
  CredentialRecoveryExecuteResponse:
@@ -32138,20 +31900,15 @@ components:
32138
31900
  configured:
32139
31901
  type: boolean
32140
31902
  kek_id:
32141
- type: string
32142
- nullable: true
31903
+ type: [string, "null"]
32143
31904
  threshold:
32144
- type: integer
32145
- nullable: true
31905
+ type: [integer, "null"]
32146
31906
  total_shares:
32147
- type: integer
32148
- nullable: true
31907
+ type: [integer, "null"]
32149
31908
  custody_mode:
32150
- type: string
32151
- nullable: true
31909
+ type: [string, "null"]
32152
31910
  custodians:
32153
- type: array
32154
- nullable: true
31911
+ type: [array, "null"]
32155
31912
  items:
32156
31913
  type: object
32157
31914
  properties:
@@ -32161,9 +31918,8 @@ components:
32161
31918
  share_provided:
32162
31919
  type: boolean
32163
31920
  created_at:
32164
- type: string
31921
+ type: [string, "null"]
32165
31922
  format: date-time
32166
- nullable: true
32167
31923
 
32168
31924
  ShamirKekReconstructRequest:
32169
31925
  type: object
@@ -32241,12 +31997,10 @@ components:
32241
31997
  prior_total:
32242
31998
  type: integer
32243
31999
  delta_pct:
32244
- type: number
32245
- nullable: true
32000
+ type: [number, "null"]
32246
32001
  description: Null when both the current and prior totals are 0.
32247
32002
  notes:
32248
- type: string
32249
- nullable: true
32003
+ type: [string, "null"]
32250
32004
  description: >
32251
32005
  A known limitation worth surfacing for this vertical (e.g.
32252
32006
  a source table with no org_id to exclude test-fixture
@@ -32263,8 +32017,7 @@ components:
32263
32017
  retained_orgs:
32264
32018
  type: integer
32265
32019
  retention_pct:
32266
- type: number
32267
- nullable: true
32020
+ type: [number, "null"]
32268
32021
  description: Null when there is no cohort yet (platform younger than the window).
32269
32022
 
32270
32023
  WebSearchResult: