@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.
- package/openapi.json +167 -2
- package/openapi.yaml +131 -2
- 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.
|
|
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,
|
|
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.
|
|
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:
|
|
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: >
|