@1claw/openapi-spec 0.61.47 → 0.61.48

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 +167 -2
  2. package/openapi.yaml +131 -2
  3. package/package.json +1 -1
package/openapi.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "openapi": "3.1.0",
3
3
  "info": {
4
4
  "title": "1Claw API",
5
- "version": "0.61.47",
5
+ "version": "0.61.48",
6
6
  "description": "Secure secret management for AI agents. Provides vaults, secrets,\npolicy-based access control, agent identity, Intents API,\nsharing, billing, and audit logging. Automations (workflow_spec,\nwebhook tokens, event triggers, Assist), cloud runtimes with\ninteractive shell sessions, agent memory, and discovery.\n\n## Domains\n\n`api.1claw.co` is canonical: it is the OIDC issuer, the `aud` the API\nmints, and the first entry in `servers` — a generated client takes its\nbase URL from there, and the previous ordering pointed every SDK at the\ndomain the issuer had already left. `api.1claw.xyz` still answers and is\nstill accepted on token validation, because tokens minted before the\nmove carry it; it is never minted now.\n\nOne deliberate exception: the Shroud attestation identity token is\nrequested from GCP with `audience: https://api.1claw.xyz`, so\n`/v1/shroud/attestation` reports that as its `expected_audience`. That\nis accurate rather than stale — the audience is a verification contract\nwith anyone already checking the token, and moving it is a breaking\nchange for them, not a rename.\n\nAll endpoints require JWT Bearer authentication unless marked with\n`security: []`.\n",
7
7
  "contact": {
8
8
  "email": "ops@1claw.co"
@@ -11372,6 +11372,146 @@
11372
11372
  }
11373
11373
  }
11374
11374
  },
11375
+ "/v1/treasury/wallets/{chain}/sign-message": {
11376
+ "post": {
11377
+ "tags": [
11378
+ "Treasury"
11379
+ ],
11380
+ "summary": "Sign a message with a human wallet (EIP-191)",
11381
+ "description": "`personal_sign` over the given text, hashed as `\\x19Ethereum Signed Message:\\n<len>` + message — what viem's `verifyMessage` and ethers' `verifyMessage` expect.\n\nHuman callers only; an agent signs with its own key via `POST /v1/agents/{agent_id}/sign`. Gated exactly as a send is: `X-Auth-Confirm` step-up scored as a Send action, wallet access policies (`WalletAction::Sign`), and a refusal for wallets whose key is split or passkey-owned — those have no server-side key and will not fall back to one.\n\nEVM chains only.\n",
11382
+ "operationId": "signTreasuryMessage",
11383
+ "parameters": [
11384
+ {
11385
+ "name": "chain",
11386
+ "in": "path",
11387
+ "required": true,
11388
+ "schema": {
11389
+ "type": "string",
11390
+ "example": "ethereum"
11391
+ }
11392
+ },
11393
+ {
11394
+ "name": "X-Auth-Confirm",
11395
+ "in": "header",
11396
+ "required": true,
11397
+ "schema": {
11398
+ "type": "string"
11399
+ },
11400
+ "description": "Account password, or a `rat_` token from `POST /v1/auth/reauth/complete`."
11401
+ }
11402
+ ],
11403
+ "requestBody": {
11404
+ "required": true,
11405
+ "content": {
11406
+ "application/json": {
11407
+ "schema": {
11408
+ "type": "object",
11409
+ "required": [
11410
+ "message"
11411
+ ],
11412
+ "properties": {
11413
+ "message": {
11414
+ "type": "string",
11415
+ "maxLength": 16384,
11416
+ "example": "Sign in to Example at 2026-10-01T10:00:00Z"
11417
+ }
11418
+ }
11419
+ }
11420
+ }
11421
+ }
11422
+ },
11423
+ "responses": {
11424
+ "200": {
11425
+ "description": "Signature",
11426
+ "content": {
11427
+ "application/json": {
11428
+ "schema": {
11429
+ "$ref": "#/components/schemas/WalletSignature"
11430
+ }
11431
+ }
11432
+ }
11433
+ },
11434
+ "400": {
11435
+ "description": "Empty or oversized message, or a non-EVM chain"
11436
+ },
11437
+ "403": {
11438
+ "description": "Agent caller, missing or insufficient step-up, denied by a wallet access policy, or a self-custody wallet the server cannot sign for.\n"
11439
+ },
11440
+ "404": {
11441
+ "description": "No wallet on that chain for this user"
11442
+ }
11443
+ }
11444
+ }
11445
+ },
11446
+ "/v1/treasury/wallets/{chain}/sign-typed-data": {
11447
+ "post": {
11448
+ "tags": [
11449
+ "Treasury"
11450
+ ],
11451
+ "summary": "Sign EIP-712 typed data with a human wallet",
11452
+ "description": "Hashes and signs a full EIP-712 payload. Include `EIP712Domain` in `types` — viem and ethers synthesise that entry and omit it, and this hashes exactly what you send.\n\nSame gates as `sign-message`.\n",
11453
+ "operationId": "signTreasuryTypedData",
11454
+ "parameters": [
11455
+ {
11456
+ "name": "chain",
11457
+ "in": "path",
11458
+ "required": true,
11459
+ "schema": {
11460
+ "type": "string",
11461
+ "example": "base"
11462
+ }
11463
+ },
11464
+ {
11465
+ "name": "X-Auth-Confirm",
11466
+ "in": "header",
11467
+ "required": true,
11468
+ "schema": {
11469
+ "type": "string"
11470
+ }
11471
+ }
11472
+ ],
11473
+ "requestBody": {
11474
+ "required": true,
11475
+ "content": {
11476
+ "application/json": {
11477
+ "schema": {
11478
+ "type": "object",
11479
+ "required": [
11480
+ "typed_data"
11481
+ ],
11482
+ "properties": {
11483
+ "typed_data": {
11484
+ "type": "object",
11485
+ "description": "`types`, `primaryType`, `domain`, `message`."
11486
+ }
11487
+ }
11488
+ }
11489
+ }
11490
+ }
11491
+ },
11492
+ "responses": {
11493
+ "200": {
11494
+ "description": "Signature",
11495
+ "content": {
11496
+ "application/json": {
11497
+ "schema": {
11498
+ "$ref": "#/components/schemas/WalletSignature"
11499
+ }
11500
+ }
11501
+ }
11502
+ },
11503
+ "400": {
11504
+ "description": "Malformed EIP-712 payload, or a non-EVM chain"
11505
+ },
11506
+ "403": {
11507
+ "description": "Same refusals as sign-message"
11508
+ },
11509
+ "404": {
11510
+ "description": "No wallet on that chain for this user"
11511
+ }
11512
+ }
11513
+ }
11514
+ },
11375
11515
  "/v1/treasury/wallets/{chain}/swap": {
11376
11516
  "post": {
11377
11517
  "tags": [
@@ -28565,6 +28705,10 @@
28565
28705
  "granted_read": {
28566
28706
  "type": "boolean",
28567
28707
  "description": "False when the secret was stored but the read grant could not be written — the agent will need access granted by hand.\n"
28708
+ },
28709
+ "bound_new_vault": {
28710
+ "type": "boolean",
28711
+ "description": "True when the agent had to be bound to a vault it was not bound to before. Its access is correct from now on, but a JWT carries the `vault_ids` it was minted with, so a token the agent already holds is refused until it re-mints. Answering into a vault the agent already reaches avoids this.\n"
28568
28712
  }
28569
28713
  }
28570
28714
  }
@@ -28572,7 +28716,7 @@
28572
28716
  }
28573
28717
  },
28574
28718
  "400": {
28575
- "description": "Already answered, expired, or an invalid path"
28719
+ "description": "Already answered, expired, an invalid path, or nothing is stored at that path — the location the agent is sent to has to be real.\n"
28576
28720
  },
28577
28721
  "403": {
28578
28722
  "description": "Called by an agent"
@@ -42408,6 +42552,27 @@
42408
42552
  }
42409
42553
  }
42410
42554
  },
42555
+ "WalletSignature": {
42556
+ "type": "object",
42557
+ "required": [
42558
+ "signature",
42559
+ "address",
42560
+ "chain"
42561
+ ],
42562
+ "properties": {
42563
+ "signature": {
42564
+ "type": "string",
42565
+ "description": "65-byte `0x`-prefixed signature, r‖s‖v."
42566
+ },
42567
+ "address": {
42568
+ "type": "string",
42569
+ "description": "The signing wallet, so it can be passed straight to `verifyMessage`."
42570
+ },
42571
+ "chain": {
42572
+ "type": "string"
42573
+ }
42574
+ }
42575
+ },
42411
42576
  "SecretRequest": {
42412
42577
  "type": "object",
42413
42578
  "description": "An agent's open ask, as the human sees it. Carries the request and, once fulfilled, a reference — never a value.\n",
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.47"
5
+ version: "0.61.48"
6
6
  description: |
7
7
  Secure secret management for AI agents. Provides vaults, secrets,
8
8
  policy-based access control, agent identity, Intents API,
@@ -7207,6 +7207,109 @@ paths:
7207
7207
  "404":
7208
7208
  $ref: "#/components/responses/NotFound"
7209
7209
 
7210
+ /v1/treasury/wallets/{chain}/sign-message:
7211
+ post:
7212
+ tags: [Treasury]
7213
+ summary: "Sign a message with a human wallet (EIP-191)"
7214
+ description: >
7215
+ `personal_sign` over the given text, hashed as
7216
+ `\x19Ethereum Signed Message:\n<len>` + message — what
7217
+ viem's `verifyMessage` and ethers' `verifyMessage` expect.
7218
+
7219
+
7220
+ Human callers only; an agent signs with its own key via
7221
+ `POST /v1/agents/{agent_id}/sign`. Gated exactly as a send
7222
+ is: `X-Auth-Confirm` step-up scored as a Send action, wallet
7223
+ access policies (`WalletAction::Sign`), and a refusal for
7224
+ wallets whose key is split or passkey-owned — those have no
7225
+ server-side key and will not fall back to one.
7226
+
7227
+
7228
+ EVM chains only.
7229
+ operationId: signTreasuryMessage
7230
+ parameters:
7231
+ - name: chain
7232
+ in: path
7233
+ required: true
7234
+ schema: { type: string, example: ethereum }
7235
+ - name: X-Auth-Confirm
7236
+ in: header
7237
+ required: true
7238
+ schema: { type: string }
7239
+ description: Account password, or a `rat_` token from `POST /v1/auth/reauth/complete`.
7240
+ requestBody:
7241
+ required: true
7242
+ content:
7243
+ application/json:
7244
+ schema:
7245
+ type: object
7246
+ required: [message]
7247
+ properties:
7248
+ message:
7249
+ type: string
7250
+ maxLength: 16384
7251
+ example: Sign in to Example at 2026-10-01T10:00:00Z
7252
+ responses:
7253
+ '200':
7254
+ description: Signature
7255
+ content:
7256
+ application/json:
7257
+ schema:
7258
+ $ref: '#/components/schemas/WalletSignature'
7259
+ '400':
7260
+ description: Empty or oversized message, or a non-EVM chain
7261
+ '403':
7262
+ description: >
7263
+ Agent caller, missing or insufficient step-up, denied by a
7264
+ wallet access policy, or a self-custody wallet the server
7265
+ cannot sign for.
7266
+ '404':
7267
+ description: No wallet on that chain for this user
7268
+ /v1/treasury/wallets/{chain}/sign-typed-data:
7269
+ post:
7270
+ tags: [Treasury]
7271
+ summary: "Sign EIP-712 typed data with a human wallet"
7272
+ description: >
7273
+ Hashes and signs a full EIP-712 payload. Include
7274
+ `EIP712Domain` in `types` — viem and ethers synthesise that
7275
+ entry and omit it, and this hashes exactly what you send.
7276
+
7277
+
7278
+ Same gates as `sign-message`.
7279
+ operationId: signTreasuryTypedData
7280
+ parameters:
7281
+ - name: chain
7282
+ in: path
7283
+ required: true
7284
+ schema: { type: string, example: base }
7285
+ - name: X-Auth-Confirm
7286
+ in: header
7287
+ required: true
7288
+ schema: { type: string }
7289
+ requestBody:
7290
+ required: true
7291
+ content:
7292
+ application/json:
7293
+ schema:
7294
+ type: object
7295
+ required: [typed_data]
7296
+ properties:
7297
+ typed_data:
7298
+ type: object
7299
+ description: '`types`, `primaryType`, `domain`, `message`.'
7300
+ responses:
7301
+ '200':
7302
+ description: Signature
7303
+ content:
7304
+ application/json:
7305
+ schema:
7306
+ $ref: '#/components/schemas/WalletSignature'
7307
+ '400':
7308
+ description: Malformed EIP-712 payload, or a non-EVM chain
7309
+ '403':
7310
+ description: Same refusals as sign-message
7311
+ '404':
7312
+ description: No wallet on that chain for this user
7210
7313
  /v1/treasury/wallets/{chain}/swap:
7211
7314
  post:
7212
7315
  tags: [Treasury Wallets]
@@ -18279,8 +18382,22 @@ paths:
18279
18382
  the read grant could not be written —
18280
18383
  the agent will need access granted
18281
18384
  by hand.
18385
+ bound_new_vault:
18386
+ type: boolean
18387
+ description: >
18388
+ True when the agent had to be bound to
18389
+ a vault it was not bound to before. Its
18390
+ access is correct from now on, but a
18391
+ JWT carries the `vault_ids` it was
18392
+ minted with, so a token the agent
18393
+ already holds is refused until it
18394
+ re-mints. Answering into a vault the
18395
+ agent already reaches avoids this.
18282
18396
  '400':
18283
- description: Already answered, expired, or an invalid path
18397
+ description: >
18398
+ Already answered, expired, an invalid path, or nothing is
18399
+ stored at that path — the location the agent is sent to has
18400
+ to be real.
18284
18401
  '403':
18285
18402
  description: Called by an agent
18286
18403
  '404':
@@ -27298,6 +27415,18 @@ components:
27298
27415
  an approval by reply.
27299
27416
  created_at: { type: string, format: date-time }
27300
27417
 
27418
+ WalletSignature:
27419
+ type: object
27420
+ required: [signature, address, chain]
27421
+ properties:
27422
+ signature:
27423
+ type: string
27424
+ description: 65-byte `0x`-prefixed signature, r‖s‖v.
27425
+ address:
27426
+ type: string
27427
+ description: The signing wallet, so it can be passed straight to `verifyMessage`.
27428
+ chain: { type: string }
27429
+
27301
27430
  SecretRequest:
27302
27431
  type: object
27303
27432
  description: >
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@1claw/openapi-spec",
3
- "version": "0.61.47",
3
+ "version": "0.61.48",
4
4
  "description": "OpenAPI 3.1.0 specification for the 1Claw Vault API — generate clients in any language",
5
5
  "license": "MIT",
6
6
  "repository": {