@1claw/openapi-spec 0.61.20 → 0.61.22
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 +823 -147
- package/openapi.yaml +381 -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.22",
|
|
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"
|
|
@@ -8657,6 +8657,11 @@
|
|
|
8657
8657
|
"enum": [
|
|
8658
8658
|
"solana"
|
|
8659
8659
|
]
|
|
8660
|
+
},
|
|
8661
|
+
"replace_existing": {
|
|
8662
|
+
"type": "boolean",
|
|
8663
|
+
"default": false,
|
|
8664
|
+
"description": "Re-key ceremony: replace the active server-custody wallet on\nthis chain. On `complete` its balance is swept to the new\naddress by the old key's last signature and the old wallet is\ndeactivated (audit `treasury_wallet.rekeyed`).\n"
|
|
8660
8665
|
}
|
|
8661
8666
|
}
|
|
8662
8667
|
}
|
|
@@ -9044,30 +9049,640 @@
|
|
|
9044
9049
|
},
|
|
9045
9050
|
"responses": {
|
|
9046
9051
|
"200": {
|
|
9047
|
-
"description": "Signature",
|
|
9048
|
-
"content": {
|
|
9049
|
-
"application/json": {
|
|
9050
|
-
"schema": {
|
|
9051
|
-
"type": "object",
|
|
9052
|
-
"properties": {
|
|
9053
|
-
"key_id": {
|
|
9054
|
-
"type": "string",
|
|
9055
|
-
"format": "uuid"
|
|
9056
|
-
},
|
|
9057
|
-
"message_digest": {
|
|
9058
|
-
"type": "string"
|
|
9059
|
-
},
|
|
9060
|
-
"signature": {
|
|
9061
|
-
"type": "string",
|
|
9062
|
-
"description": "Base64 64-byte Ed25519 signature."
|
|
9063
|
-
},
|
|
9064
|
-
"signature_hex": {
|
|
9065
|
-
"type": "string"
|
|
9066
|
-
}
|
|
9067
|
-
}
|
|
9068
|
-
}
|
|
9069
|
-
}
|
|
9070
|
-
}
|
|
9052
|
+
"description": "Signature",
|
|
9053
|
+
"content": {
|
|
9054
|
+
"application/json": {
|
|
9055
|
+
"schema": {
|
|
9056
|
+
"type": "object",
|
|
9057
|
+
"properties": {
|
|
9058
|
+
"key_id": {
|
|
9059
|
+
"type": "string",
|
|
9060
|
+
"format": "uuid"
|
|
9061
|
+
},
|
|
9062
|
+
"message_digest": {
|
|
9063
|
+
"type": "string"
|
|
9064
|
+
},
|
|
9065
|
+
"signature": {
|
|
9066
|
+
"type": "string",
|
|
9067
|
+
"description": "Base64 64-byte Ed25519 signature."
|
|
9068
|
+
},
|
|
9069
|
+
"signature_hex": {
|
|
9070
|
+
"type": "string"
|
|
9071
|
+
}
|
|
9072
|
+
}
|
|
9073
|
+
}
|
|
9074
|
+
}
|
|
9075
|
+
}
|
|
9076
|
+
},
|
|
9077
|
+
"400": {
|
|
9078
|
+
"$ref": "#/components/responses/BadRequest"
|
|
9079
|
+
},
|
|
9080
|
+
"401": {
|
|
9081
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
9082
|
+
},
|
|
9083
|
+
"404": {
|
|
9084
|
+
"$ref": "#/components/responses/NotFound"
|
|
9085
|
+
},
|
|
9086
|
+
"409": {
|
|
9087
|
+
"$ref": "#/components/responses/Conflict"
|
|
9088
|
+
}
|
|
9089
|
+
}
|
|
9090
|
+
}
|
|
9091
|
+
},
|
|
9092
|
+
"/v1/treasury/wallets/{chain}/tss/prepare": {
|
|
9093
|
+
"parameters": [
|
|
9094
|
+
{
|
|
9095
|
+
"name": "chain",
|
|
9096
|
+
"in": "path",
|
|
9097
|
+
"required": true,
|
|
9098
|
+
"schema": {
|
|
9099
|
+
"type": "string"
|
|
9100
|
+
}
|
|
9101
|
+
}
|
|
9102
|
+
],
|
|
9103
|
+
"post": {
|
|
9104
|
+
"tags": [
|
|
9105
|
+
"Key Custody"
|
|
9106
|
+
],
|
|
9107
|
+
"summary": "Build the unsigned message for a send from a client_tss wallet",
|
|
9108
|
+
"description": "Runs wallet access, the sanctions screen and spend policies on the\ndeclared destination, fetches a recent blockhash and returns the\nunsigned transaction message. Sign it with `/v1/keys/{key_id}/tss/sign/*`\nand submit with `…/tss/broadcast`.\n",
|
|
9109
|
+
"operationId": "tssTreasuryPrepare",
|
|
9110
|
+
"security": [
|
|
9111
|
+
{
|
|
9112
|
+
"BearerAuth": []
|
|
9113
|
+
}
|
|
9114
|
+
],
|
|
9115
|
+
"requestBody": {
|
|
9116
|
+
"required": true,
|
|
9117
|
+
"content": {
|
|
9118
|
+
"application/json": {
|
|
9119
|
+
"schema": {
|
|
9120
|
+
"type": "object",
|
|
9121
|
+
"required": [
|
|
9122
|
+
"to",
|
|
9123
|
+
"value"
|
|
9124
|
+
],
|
|
9125
|
+
"properties": {
|
|
9126
|
+
"to": {
|
|
9127
|
+
"type": "string"
|
|
9128
|
+
},
|
|
9129
|
+
"value": {
|
|
9130
|
+
"type": "string",
|
|
9131
|
+
"description": "Major units",
|
|
9132
|
+
"e.g. \"0.5\".": null
|
|
9133
|
+
},
|
|
9134
|
+
"memo": {
|
|
9135
|
+
"type": "string"
|
|
9136
|
+
}
|
|
9137
|
+
}
|
|
9138
|
+
}
|
|
9139
|
+
}
|
|
9140
|
+
}
|
|
9141
|
+
},
|
|
9142
|
+
"responses": {
|
|
9143
|
+
"200": {
|
|
9144
|
+
"description": "Unsigned message",
|
|
9145
|
+
"content": {
|
|
9146
|
+
"application/json": {
|
|
9147
|
+
"schema": {
|
|
9148
|
+
"type": "object",
|
|
9149
|
+
"properties": {
|
|
9150
|
+
"key_id": {
|
|
9151
|
+
"type": "string",
|
|
9152
|
+
"format": "uuid"
|
|
9153
|
+
},
|
|
9154
|
+
"chain": {
|
|
9155
|
+
"type": "string"
|
|
9156
|
+
},
|
|
9157
|
+
"from": {
|
|
9158
|
+
"type": "string"
|
|
9159
|
+
},
|
|
9160
|
+
"to": {
|
|
9161
|
+
"type": "string"
|
|
9162
|
+
},
|
|
9163
|
+
"value_base_units": {
|
|
9164
|
+
"type": "string"
|
|
9165
|
+
},
|
|
9166
|
+
"recent_blockhash": {
|
|
9167
|
+
"type": "string"
|
|
9168
|
+
},
|
|
9169
|
+
"message": {
|
|
9170
|
+
"type": "string"
|
|
9171
|
+
},
|
|
9172
|
+
"message_digest": {
|
|
9173
|
+
"type": "string"
|
|
9174
|
+
}
|
|
9175
|
+
}
|
|
9176
|
+
}
|
|
9177
|
+
}
|
|
9178
|
+
}
|
|
9179
|
+
},
|
|
9180
|
+
"400": {
|
|
9181
|
+
"$ref": "#/components/responses/BadRequest"
|
|
9182
|
+
},
|
|
9183
|
+
"401": {
|
|
9184
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
9185
|
+
},
|
|
9186
|
+
"403": {
|
|
9187
|
+
"$ref": "#/components/responses/Forbidden"
|
|
9188
|
+
},
|
|
9189
|
+
"404": {
|
|
9190
|
+
"$ref": "#/components/responses/NotFound"
|
|
9191
|
+
}
|
|
9192
|
+
}
|
|
9193
|
+
}
|
|
9194
|
+
},
|
|
9195
|
+
"/v1/treasury/wallets/{chain}/tss/broadcast": {
|
|
9196
|
+
"parameters": [
|
|
9197
|
+
{
|
|
9198
|
+
"name": "chain",
|
|
9199
|
+
"in": "path",
|
|
9200
|
+
"required": true,
|
|
9201
|
+
"schema": {
|
|
9202
|
+
"type": "string"
|
|
9203
|
+
}
|
|
9204
|
+
}
|
|
9205
|
+
],
|
|
9206
|
+
"post": {
|
|
9207
|
+
"tags": [
|
|
9208
|
+
"Key Custody"
|
|
9209
|
+
],
|
|
9210
|
+
"summary": "Broadcast a threshold-signed send",
|
|
9211
|
+
"description": "Verifies the signature under the wallet's public key over exactly this\nmessage, checks `to` is a transfer destination inside it, assembles the\ntransaction and submits it. Audited as `treasury_wallet.send`.\n",
|
|
9212
|
+
"operationId": "tssTreasuryBroadcast",
|
|
9213
|
+
"security": [
|
|
9214
|
+
{
|
|
9215
|
+
"BearerAuth": []
|
|
9216
|
+
}
|
|
9217
|
+
],
|
|
9218
|
+
"requestBody": {
|
|
9219
|
+
"required": true,
|
|
9220
|
+
"content": {
|
|
9221
|
+
"application/json": {
|
|
9222
|
+
"schema": {
|
|
9223
|
+
"type": "object",
|
|
9224
|
+
"required": [
|
|
9225
|
+
"message",
|
|
9226
|
+
"signature",
|
|
9227
|
+
"to",
|
|
9228
|
+
"value_base_units"
|
|
9229
|
+
],
|
|
9230
|
+
"properties": {
|
|
9231
|
+
"message": {
|
|
9232
|
+
"type": "string"
|
|
9233
|
+
},
|
|
9234
|
+
"signature": {
|
|
9235
|
+
"type": "string"
|
|
9236
|
+
},
|
|
9237
|
+
"to": {
|
|
9238
|
+
"type": "string"
|
|
9239
|
+
},
|
|
9240
|
+
"value_base_units": {
|
|
9241
|
+
"type": "string"
|
|
9242
|
+
}
|
|
9243
|
+
}
|
|
9244
|
+
}
|
|
9245
|
+
}
|
|
9246
|
+
}
|
|
9247
|
+
},
|
|
9248
|
+
"responses": {
|
|
9249
|
+
"200": {
|
|
9250
|
+
"description": "Broadcast",
|
|
9251
|
+
"content": {
|
|
9252
|
+
"application/json": {
|
|
9253
|
+
"schema": {
|
|
9254
|
+
"$ref": "#/components/schemas/TreasuryWalletSendResponse"
|
|
9255
|
+
}
|
|
9256
|
+
}
|
|
9257
|
+
}
|
|
9258
|
+
},
|
|
9259
|
+
"400": {
|
|
9260
|
+
"$ref": "#/components/responses/BadRequest"
|
|
9261
|
+
},
|
|
9262
|
+
"401": {
|
|
9263
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
9264
|
+
},
|
|
9265
|
+
"404": {
|
|
9266
|
+
"$ref": "#/components/responses/NotFound"
|
|
9267
|
+
}
|
|
9268
|
+
}
|
|
9269
|
+
}
|
|
9270
|
+
},
|
|
9271
|
+
"/v1/runtimes/{runtime_id}/tss/holder": {
|
|
9272
|
+
"parameters": [
|
|
9273
|
+
{
|
|
9274
|
+
"name": "runtime_id",
|
|
9275
|
+
"in": "path",
|
|
9276
|
+
"required": true,
|
|
9277
|
+
"schema": {
|
|
9278
|
+
"type": "string",
|
|
9279
|
+
"format": "uuid"
|
|
9280
|
+
}
|
|
9281
|
+
}
|
|
9282
|
+
],
|
|
9283
|
+
"post": {
|
|
9284
|
+
"tags": [
|
|
9285
|
+
"Key Custody"
|
|
9286
|
+
],
|
|
9287
|
+
"summary": "Register the runtime's sidecar as a share holder",
|
|
9288
|
+
"description": "Called by the runtime's agent (the Shroud sidecar, at boot) with the P-256\npublic key it generated. The owner can then provision a threshold-key\nshare to this runtime, letting the agent co-sign below-cap sends\nunattended. Re-registering replaces the key; deleting the runtime revokes\nevery share held by it.\n",
|
|
9289
|
+
"operationId": "registerTssHolder",
|
|
9290
|
+
"security": [
|
|
9291
|
+
{
|
|
9292
|
+
"BearerAuth": []
|
|
9293
|
+
}
|
|
9294
|
+
],
|
|
9295
|
+
"requestBody": {
|
|
9296
|
+
"required": true,
|
|
9297
|
+
"content": {
|
|
9298
|
+
"application/json": {
|
|
9299
|
+
"schema": {
|
|
9300
|
+
"type": "object",
|
|
9301
|
+
"required": [
|
|
9302
|
+
"public_key"
|
|
9303
|
+
],
|
|
9304
|
+
"properties": {
|
|
9305
|
+
"public_key": {
|
|
9306
|
+
"type": "string",
|
|
9307
|
+
"description": "Base64 SEC1 uncompressed P-256 point (65 bytes)."
|
|
9308
|
+
}
|
|
9309
|
+
}
|
|
9310
|
+
}
|
|
9311
|
+
}
|
|
9312
|
+
}
|
|
9313
|
+
},
|
|
9314
|
+
"responses": {
|
|
9315
|
+
"201": {
|
|
9316
|
+
"description": "Registered",
|
|
9317
|
+
"content": {
|
|
9318
|
+
"application/json": {
|
|
9319
|
+
"schema": {
|
|
9320
|
+
"$ref": "#/components/schemas/TssHolder"
|
|
9321
|
+
}
|
|
9322
|
+
}
|
|
9323
|
+
}
|
|
9324
|
+
},
|
|
9325
|
+
"400": {
|
|
9326
|
+
"$ref": "#/components/responses/BadRequest"
|
|
9327
|
+
},
|
|
9328
|
+
"401": {
|
|
9329
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
9330
|
+
},
|
|
9331
|
+
"403": {
|
|
9332
|
+
"$ref": "#/components/responses/Forbidden"
|
|
9333
|
+
},
|
|
9334
|
+
"404": {
|
|
9335
|
+
"$ref": "#/components/responses/NotFound"
|
|
9336
|
+
}
|
|
9337
|
+
}
|
|
9338
|
+
},
|
|
9339
|
+
"get": {
|
|
9340
|
+
"tags": [
|
|
9341
|
+
"Key Custody"
|
|
9342
|
+
],
|
|
9343
|
+
"summary": "The runtime's registered share holder",
|
|
9344
|
+
"operationId": "getTssHolder",
|
|
9345
|
+
"security": [
|
|
9346
|
+
{
|
|
9347
|
+
"BearerAuth": []
|
|
9348
|
+
}
|
|
9349
|
+
],
|
|
9350
|
+
"responses": {
|
|
9351
|
+
"200": {
|
|
9352
|
+
"description": "Holder",
|
|
9353
|
+
"content": {
|
|
9354
|
+
"application/json": {
|
|
9355
|
+
"schema": {
|
|
9356
|
+
"$ref": "#/components/schemas/TssHolder"
|
|
9357
|
+
}
|
|
9358
|
+
}
|
|
9359
|
+
}
|
|
9360
|
+
},
|
|
9361
|
+
"401": {
|
|
9362
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
9363
|
+
},
|
|
9364
|
+
"404": {
|
|
9365
|
+
"$ref": "#/components/responses/NotFound"
|
|
9366
|
+
}
|
|
9367
|
+
}
|
|
9368
|
+
}
|
|
9369
|
+
},
|
|
9370
|
+
"/v1/keys/{key_id}/client-share/holder": {
|
|
9371
|
+
"parameters": [
|
|
9372
|
+
{
|
|
9373
|
+
"name": "key_id",
|
|
9374
|
+
"in": "path",
|
|
9375
|
+
"required": true,
|
|
9376
|
+
"schema": {
|
|
9377
|
+
"type": "string",
|
|
9378
|
+
"format": "uuid"
|
|
9379
|
+
}
|
|
9380
|
+
}
|
|
9381
|
+
],
|
|
9382
|
+
"put": {
|
|
9383
|
+
"tags": [
|
|
9384
|
+
"Key Custody"
|
|
9385
|
+
],
|
|
9386
|
+
"summary": "Provision a threshold-key share to a runtime holder",
|
|
9387
|
+
"description": "The owner's browser unlocks its share with the passkey PRF and re-wraps\nit to the holder's P-256 key (ECIES: ephemeral point ‖ iv ‖ AES-GCM). The\nvault stores the ciphertext unopened. The wallet must be delegated to the\nholder's agent. Audited as `client_share.provisioned_to_runtime`.\n",
|
|
9388
|
+
"operationId": "provisionTssHolderShare",
|
|
9389
|
+
"security": [
|
|
9390
|
+
{
|
|
9391
|
+
"BearerAuth": []
|
|
9392
|
+
}
|
|
9393
|
+
],
|
|
9394
|
+
"requestBody": {
|
|
9395
|
+
"required": true,
|
|
9396
|
+
"content": {
|
|
9397
|
+
"application/json": {
|
|
9398
|
+
"schema": {
|
|
9399
|
+
"type": "object",
|
|
9400
|
+
"required": [
|
|
9401
|
+
"holder_id",
|
|
9402
|
+
"wrapped_share",
|
|
9403
|
+
"salt"
|
|
9404
|
+
],
|
|
9405
|
+
"properties": {
|
|
9406
|
+
"holder_id": {
|
|
9407
|
+
"type": "string",
|
|
9408
|
+
"format": "uuid"
|
|
9409
|
+
},
|
|
9410
|
+
"wrapped_share": {
|
|
9411
|
+
"type": "string"
|
|
9412
|
+
},
|
|
9413
|
+
"salt": {
|
|
9414
|
+
"type": "string"
|
|
9415
|
+
}
|
|
9416
|
+
}
|
|
9417
|
+
}
|
|
9418
|
+
}
|
|
9419
|
+
}
|
|
9420
|
+
},
|
|
9421
|
+
"responses": {
|
|
9422
|
+
"201": {
|
|
9423
|
+
"description": "Stored"
|
|
9424
|
+
},
|
|
9425
|
+
"400": {
|
|
9426
|
+
"$ref": "#/components/responses/BadRequest"
|
|
9427
|
+
},
|
|
9428
|
+
"401": {
|
|
9429
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
9430
|
+
},
|
|
9431
|
+
"403": {
|
|
9432
|
+
"$ref": "#/components/responses/Forbidden"
|
|
9433
|
+
},
|
|
9434
|
+
"404": {
|
|
9435
|
+
"$ref": "#/components/responses/NotFound"
|
|
9436
|
+
}
|
|
9437
|
+
}
|
|
9438
|
+
},
|
|
9439
|
+
"get": {
|
|
9440
|
+
"tags": [
|
|
9441
|
+
"Key Custody"
|
|
9442
|
+
],
|
|
9443
|
+
"summary": "The sidecar fetches the wrap made for it",
|
|
9444
|
+
"description": "Agent-only; returns the wrap whose holder was registered by the calling agent.",
|
|
9445
|
+
"operationId": "getTssHolderShare",
|
|
9446
|
+
"security": [
|
|
9447
|
+
{
|
|
9448
|
+
"BearerAuth": []
|
|
9449
|
+
}
|
|
9450
|
+
],
|
|
9451
|
+
"responses": {
|
|
9452
|
+
"200": {
|
|
9453
|
+
"description": "Wrapped share (opaque)",
|
|
9454
|
+
"content": {
|
|
9455
|
+
"application/json": {
|
|
9456
|
+
"schema": {
|
|
9457
|
+
"type": "object",
|
|
9458
|
+
"properties": {
|
|
9459
|
+
"key_id": {
|
|
9460
|
+
"type": "string",
|
|
9461
|
+
"format": "uuid"
|
|
9462
|
+
},
|
|
9463
|
+
"holder_id": {
|
|
9464
|
+
"type": "string",
|
|
9465
|
+
"format": "uuid"
|
|
9466
|
+
},
|
|
9467
|
+
"wrap_kind": {
|
|
9468
|
+
"type": "string",
|
|
9469
|
+
"enum": [
|
|
9470
|
+
"sidecar"
|
|
9471
|
+
]
|
|
9472
|
+
},
|
|
9473
|
+
"wrapped_share": {
|
|
9474
|
+
"type": "string"
|
|
9475
|
+
},
|
|
9476
|
+
"salt": {
|
|
9477
|
+
"type": "string"
|
|
9478
|
+
}
|
|
9479
|
+
}
|
|
9480
|
+
}
|
|
9481
|
+
}
|
|
9482
|
+
}
|
|
9483
|
+
},
|
|
9484
|
+
"401": {
|
|
9485
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
9486
|
+
},
|
|
9487
|
+
"403": {
|
|
9488
|
+
"$ref": "#/components/responses/Forbidden"
|
|
9489
|
+
},
|
|
9490
|
+
"404": {
|
|
9491
|
+
"$ref": "#/components/responses/NotFound"
|
|
9492
|
+
}
|
|
9493
|
+
}
|
|
9494
|
+
}
|
|
9495
|
+
},
|
|
9496
|
+
"/v1/agents/{agent_id}/tss/prepare": {
|
|
9497
|
+
"parameters": [
|
|
9498
|
+
{
|
|
9499
|
+
"name": "agent_id",
|
|
9500
|
+
"in": "path",
|
|
9501
|
+
"required": true,
|
|
9502
|
+
"schema": {
|
|
9503
|
+
"type": "string",
|
|
9504
|
+
"format": "uuid"
|
|
9505
|
+
}
|
|
9506
|
+
}
|
|
9507
|
+
],
|
|
9508
|
+
"post": {
|
|
9509
|
+
"tags": [
|
|
9510
|
+
"Key Custody"
|
|
9511
|
+
],
|
|
9512
|
+
"summary": "Agent declares a send from a delegated client_tss wallet",
|
|
9513
|
+
"description": "Runs the agent's guardrails (chains, allowlists, caps, daily limits,\napproval policy) and the sanctions screen on the declared call, builds\nthe unsigned message and records it as a prepared intent. Only a\nprepared message can enter `/tss/sign/begin`. Requires a treasury\ndelegation and a share provisioned to the agent's runtime.\n",
|
|
9514
|
+
"operationId": "agentTssPrepare",
|
|
9515
|
+
"security": [
|
|
9516
|
+
{
|
|
9517
|
+
"BearerAuth": []
|
|
9518
|
+
}
|
|
9519
|
+
],
|
|
9520
|
+
"requestBody": {
|
|
9521
|
+
"required": true,
|
|
9522
|
+
"content": {
|
|
9523
|
+
"application/json": {
|
|
9524
|
+
"schema": {
|
|
9525
|
+
"type": "object",
|
|
9526
|
+
"required": [
|
|
9527
|
+
"key_id",
|
|
9528
|
+
"to",
|
|
9529
|
+
"value"
|
|
9530
|
+
],
|
|
9531
|
+
"properties": {
|
|
9532
|
+
"key_id": {
|
|
9533
|
+
"type": "string",
|
|
9534
|
+
"format": "uuid"
|
|
9535
|
+
},
|
|
9536
|
+
"to": {
|
|
9537
|
+
"type": "string"
|
|
9538
|
+
},
|
|
9539
|
+
"value": {
|
|
9540
|
+
"type": "string",
|
|
9541
|
+
"description": "Major units."
|
|
9542
|
+
},
|
|
9543
|
+
"memo": {
|
|
9544
|
+
"type": "string"
|
|
9545
|
+
}
|
|
9546
|
+
}
|
|
9547
|
+
}
|
|
9548
|
+
}
|
|
9549
|
+
}
|
|
9550
|
+
},
|
|
9551
|
+
"responses": {
|
|
9552
|
+
"200": {
|
|
9553
|
+
"description": "Unsigned message"
|
|
9554
|
+
},
|
|
9555
|
+
"400": {
|
|
9556
|
+
"$ref": "#/components/responses/BadRequest"
|
|
9557
|
+
},
|
|
9558
|
+
"401": {
|
|
9559
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
9560
|
+
},
|
|
9561
|
+
"403": {
|
|
9562
|
+
"$ref": "#/components/responses/Forbidden"
|
|
9563
|
+
},
|
|
9564
|
+
"404": {
|
|
9565
|
+
"$ref": "#/components/responses/NotFound"
|
|
9566
|
+
}
|
|
9567
|
+
}
|
|
9568
|
+
}
|
|
9569
|
+
},
|
|
9570
|
+
"/v1/agents/{agent_id}/tss/sign/begin": {
|
|
9571
|
+
"parameters": [
|
|
9572
|
+
{
|
|
9573
|
+
"name": "agent_id",
|
|
9574
|
+
"in": "path",
|
|
9575
|
+
"required": true,
|
|
9576
|
+
"schema": {
|
|
9577
|
+
"type": "string",
|
|
9578
|
+
"format": "uuid"
|
|
9579
|
+
}
|
|
9580
|
+
}
|
|
9581
|
+
],
|
|
9582
|
+
"post": {
|
|
9583
|
+
"tags": [
|
|
9584
|
+
"Key Custody"
|
|
9585
|
+
],
|
|
9586
|
+
"summary": "Agent threshold signing, round 1",
|
|
9587
|
+
"description": "The message must be a live prepared intent for this agent and key; its transfers are screened again.",
|
|
9588
|
+
"operationId": "agentTssSignBegin",
|
|
9589
|
+
"security": [
|
|
9590
|
+
{
|
|
9591
|
+
"BearerAuth": []
|
|
9592
|
+
}
|
|
9593
|
+
],
|
|
9594
|
+
"requestBody": {
|
|
9595
|
+
"required": true,
|
|
9596
|
+
"content": {
|
|
9597
|
+
"application/json": {
|
|
9598
|
+
"schema": {
|
|
9599
|
+
"type": "object",
|
|
9600
|
+
"required": [
|
|
9601
|
+
"key_id",
|
|
9602
|
+
"message"
|
|
9603
|
+
],
|
|
9604
|
+
"properties": {
|
|
9605
|
+
"key_id": {
|
|
9606
|
+
"type": "string",
|
|
9607
|
+
"format": "uuid"
|
|
9608
|
+
},
|
|
9609
|
+
"message": {
|
|
9610
|
+
"type": "string"
|
|
9611
|
+
}
|
|
9612
|
+
}
|
|
9613
|
+
}
|
|
9614
|
+
}
|
|
9615
|
+
}
|
|
9616
|
+
},
|
|
9617
|
+
"responses": {
|
|
9618
|
+
"201": {
|
|
9619
|
+
"description": "Session opened"
|
|
9620
|
+
},
|
|
9621
|
+
"401": {
|
|
9622
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
9623
|
+
},
|
|
9624
|
+
"403": {
|
|
9625
|
+
"$ref": "#/components/responses/Forbidden"
|
|
9626
|
+
},
|
|
9627
|
+
"404": {
|
|
9628
|
+
"$ref": "#/components/responses/NotFound"
|
|
9629
|
+
}
|
|
9630
|
+
}
|
|
9631
|
+
}
|
|
9632
|
+
},
|
|
9633
|
+
"/v1/agents/{agent_id}/tss/sign/complete": {
|
|
9634
|
+
"parameters": [
|
|
9635
|
+
{
|
|
9636
|
+
"name": "agent_id",
|
|
9637
|
+
"in": "path",
|
|
9638
|
+
"required": true,
|
|
9639
|
+
"schema": {
|
|
9640
|
+
"type": "string",
|
|
9641
|
+
"format": "uuid"
|
|
9642
|
+
}
|
|
9643
|
+
}
|
|
9644
|
+
],
|
|
9645
|
+
"post": {
|
|
9646
|
+
"tags": [
|
|
9647
|
+
"Key Custody"
|
|
9648
|
+
],
|
|
9649
|
+
"summary": "Agent threshold signing, round 2",
|
|
9650
|
+
"operationId": "agentTssSignComplete",
|
|
9651
|
+
"security": [
|
|
9652
|
+
{
|
|
9653
|
+
"BearerAuth": []
|
|
9654
|
+
}
|
|
9655
|
+
],
|
|
9656
|
+
"requestBody": {
|
|
9657
|
+
"required": true,
|
|
9658
|
+
"content": {
|
|
9659
|
+
"application/json": {
|
|
9660
|
+
"schema": {
|
|
9661
|
+
"type": "object",
|
|
9662
|
+
"required": [
|
|
9663
|
+
"session_id",
|
|
9664
|
+
"client_commitments",
|
|
9665
|
+
"client_signature_share"
|
|
9666
|
+
],
|
|
9667
|
+
"properties": {
|
|
9668
|
+
"session_id": {
|
|
9669
|
+
"type": "string",
|
|
9670
|
+
"format": "uuid"
|
|
9671
|
+
},
|
|
9672
|
+
"client_commitments": {
|
|
9673
|
+
"type": "string"
|
|
9674
|
+
},
|
|
9675
|
+
"client_signature_share": {
|
|
9676
|
+
"type": "string"
|
|
9677
|
+
}
|
|
9678
|
+
}
|
|
9679
|
+
}
|
|
9680
|
+
}
|
|
9681
|
+
}
|
|
9682
|
+
},
|
|
9683
|
+
"responses": {
|
|
9684
|
+
"200": {
|
|
9685
|
+
"description": "Signature"
|
|
9071
9686
|
},
|
|
9072
9687
|
"400": {
|
|
9073
9688
|
"$ref": "#/components/responses/BadRequest"
|
|
@@ -9084,14 +9699,15 @@
|
|
|
9084
9699
|
}
|
|
9085
9700
|
}
|
|
9086
9701
|
},
|
|
9087
|
-
"/v1/
|
|
9702
|
+
"/v1/agents/{agent_id}/tss/broadcast": {
|
|
9088
9703
|
"parameters": [
|
|
9089
9704
|
{
|
|
9090
|
-
"name": "
|
|
9705
|
+
"name": "agent_id",
|
|
9091
9706
|
"in": "path",
|
|
9092
9707
|
"required": true,
|
|
9093
9708
|
"schema": {
|
|
9094
|
-
"type": "string"
|
|
9709
|
+
"type": "string",
|
|
9710
|
+
"format": "uuid"
|
|
9095
9711
|
}
|
|
9096
9712
|
}
|
|
9097
9713
|
],
|
|
@@ -9099,9 +9715,9 @@
|
|
|
9099
9715
|
"tags": [
|
|
9100
9716
|
"Key Custody"
|
|
9101
9717
|
],
|
|
9102
|
-
"summary": "
|
|
9103
|
-
"description": "
|
|
9104
|
-
"operationId": "
|
|
9718
|
+
"summary": "Broadcast an agent's threshold-signed send",
|
|
9719
|
+
"description": "Verifies the signature under the wallet key, checks the message is the\nprepared one, re-runs the agent's guardrails, records the transaction\n(daily limits count it) and submits. Audited as `treasury_wallet.send`\nwith `via: runtime_share_holder`.\n",
|
|
9720
|
+
"operationId": "agentTssBroadcast",
|
|
9105
9721
|
"security": [
|
|
9106
9722
|
{
|
|
9107
9723
|
"BearerAuth": []
|
|
@@ -9114,126 +9730,20 @@
|
|
|
9114
9730
|
"schema": {
|
|
9115
9731
|
"type": "object",
|
|
9116
9732
|
"required": [
|
|
9117
|
-
"
|
|
9118
|
-
"
|
|
9733
|
+
"key_id",
|
|
9734
|
+
"message",
|
|
9735
|
+
"signature"
|
|
9119
9736
|
],
|
|
9120
9737
|
"properties": {
|
|
9121
|
-
"
|
|
9122
|
-
"type": "string"
|
|
9123
|
-
},
|
|
9124
|
-
"value": {
|
|
9738
|
+
"key_id": {
|
|
9125
9739
|
"type": "string",
|
|
9126
|
-
"
|
|
9127
|
-
"e.g. \"0.5\".": null
|
|
9740
|
+
"format": "uuid"
|
|
9128
9741
|
},
|
|
9129
|
-
"memo": {
|
|
9130
|
-
"type": "string"
|
|
9131
|
-
}
|
|
9132
|
-
}
|
|
9133
|
-
}
|
|
9134
|
-
}
|
|
9135
|
-
}
|
|
9136
|
-
},
|
|
9137
|
-
"responses": {
|
|
9138
|
-
"200": {
|
|
9139
|
-
"description": "Unsigned message",
|
|
9140
|
-
"content": {
|
|
9141
|
-
"application/json": {
|
|
9142
|
-
"schema": {
|
|
9143
|
-
"type": "object",
|
|
9144
|
-
"properties": {
|
|
9145
|
-
"key_id": {
|
|
9146
|
-
"type": "string",
|
|
9147
|
-
"format": "uuid"
|
|
9148
|
-
},
|
|
9149
|
-
"chain": {
|
|
9150
|
-
"type": "string"
|
|
9151
|
-
},
|
|
9152
|
-
"from": {
|
|
9153
|
-
"type": "string"
|
|
9154
|
-
},
|
|
9155
|
-
"to": {
|
|
9156
|
-
"type": "string"
|
|
9157
|
-
},
|
|
9158
|
-
"value_base_units": {
|
|
9159
|
-
"type": "string"
|
|
9160
|
-
},
|
|
9161
|
-
"recent_blockhash": {
|
|
9162
|
-
"type": "string"
|
|
9163
|
-
},
|
|
9164
|
-
"message": {
|
|
9165
|
-
"type": "string"
|
|
9166
|
-
},
|
|
9167
|
-
"message_digest": {
|
|
9168
|
-
"type": "string"
|
|
9169
|
-
}
|
|
9170
|
-
}
|
|
9171
|
-
}
|
|
9172
|
-
}
|
|
9173
|
-
}
|
|
9174
|
-
},
|
|
9175
|
-
"400": {
|
|
9176
|
-
"$ref": "#/components/responses/BadRequest"
|
|
9177
|
-
},
|
|
9178
|
-
"401": {
|
|
9179
|
-
"$ref": "#/components/responses/Unauthorized"
|
|
9180
|
-
},
|
|
9181
|
-
"403": {
|
|
9182
|
-
"$ref": "#/components/responses/Forbidden"
|
|
9183
|
-
},
|
|
9184
|
-
"404": {
|
|
9185
|
-
"$ref": "#/components/responses/NotFound"
|
|
9186
|
-
}
|
|
9187
|
-
}
|
|
9188
|
-
}
|
|
9189
|
-
},
|
|
9190
|
-
"/v1/treasury/wallets/{chain}/tss/broadcast": {
|
|
9191
|
-
"parameters": [
|
|
9192
|
-
{
|
|
9193
|
-
"name": "chain",
|
|
9194
|
-
"in": "path",
|
|
9195
|
-
"required": true,
|
|
9196
|
-
"schema": {
|
|
9197
|
-
"type": "string"
|
|
9198
|
-
}
|
|
9199
|
-
}
|
|
9200
|
-
],
|
|
9201
|
-
"post": {
|
|
9202
|
-
"tags": [
|
|
9203
|
-
"Key Custody"
|
|
9204
|
-
],
|
|
9205
|
-
"summary": "Broadcast a threshold-signed send",
|
|
9206
|
-
"description": "Verifies the signature under the wallet's public key over exactly this\nmessage, checks `to` is a transfer destination inside it, assembles the\ntransaction and submits it. Audited as `treasury_wallet.send`.\n",
|
|
9207
|
-
"operationId": "tssTreasuryBroadcast",
|
|
9208
|
-
"security": [
|
|
9209
|
-
{
|
|
9210
|
-
"BearerAuth": []
|
|
9211
|
-
}
|
|
9212
|
-
],
|
|
9213
|
-
"requestBody": {
|
|
9214
|
-
"required": true,
|
|
9215
|
-
"content": {
|
|
9216
|
-
"application/json": {
|
|
9217
|
-
"schema": {
|
|
9218
|
-
"type": "object",
|
|
9219
|
-
"required": [
|
|
9220
|
-
"message",
|
|
9221
|
-
"signature",
|
|
9222
|
-
"to",
|
|
9223
|
-
"value_base_units"
|
|
9224
|
-
],
|
|
9225
|
-
"properties": {
|
|
9226
9742
|
"message": {
|
|
9227
9743
|
"type": "string"
|
|
9228
9744
|
},
|
|
9229
9745
|
"signature": {
|
|
9230
9746
|
"type": "string"
|
|
9231
|
-
},
|
|
9232
|
-
"to": {
|
|
9233
|
-
"type": "string"
|
|
9234
|
-
},
|
|
9235
|
-
"value_base_units": {
|
|
9236
|
-
"type": "string"
|
|
9237
9747
|
}
|
|
9238
9748
|
}
|
|
9239
9749
|
}
|
|
@@ -9257,8 +9767,8 @@
|
|
|
9257
9767
|
"401": {
|
|
9258
9768
|
"$ref": "#/components/responses/Unauthorized"
|
|
9259
9769
|
},
|
|
9260
|
-
"
|
|
9261
|
-
"$ref": "#/components/responses/
|
|
9770
|
+
"403": {
|
|
9771
|
+
"$ref": "#/components/responses/Forbidden"
|
|
9262
9772
|
}
|
|
9263
9773
|
}
|
|
9264
9774
|
}
|
|
@@ -24792,6 +25302,54 @@
|
|
|
24792
25302
|
}
|
|
24793
25303
|
}
|
|
24794
25304
|
},
|
|
25305
|
+
"/v1/agents/enroll/{pairing_id}/status": {
|
|
25306
|
+
"parameters": [
|
|
25307
|
+
{
|
|
25308
|
+
"name": "pairing_id",
|
|
25309
|
+
"in": "path",
|
|
25310
|
+
"required": true,
|
|
25311
|
+
"schema": {
|
|
25312
|
+
"type": "string",
|
|
25313
|
+
"format": "uuid"
|
|
25314
|
+
}
|
|
25315
|
+
},
|
|
25316
|
+
{
|
|
25317
|
+
"name": "poll",
|
|
25318
|
+
"in": "query",
|
|
25319
|
+
"required": true,
|
|
25320
|
+
"schema": {
|
|
25321
|
+
"type": "string"
|
|
25322
|
+
},
|
|
25323
|
+
"description": "The `poll_token` from the enrol response."
|
|
25324
|
+
}
|
|
25325
|
+
],
|
|
25326
|
+
"get": {
|
|
25327
|
+
"tags": [
|
|
25328
|
+
"Agents"
|
|
25329
|
+
],
|
|
25330
|
+
"summary": "Public: pairing status — the agent learns the decision and collects its key once",
|
|
25331
|
+
"operationId": "getEnrollmentStatus",
|
|
25332
|
+
"security": [],
|
|
25333
|
+
"responses": {
|
|
25334
|
+
"200": {
|
|
25335
|
+
"description": "Status",
|
|
25336
|
+
"content": {
|
|
25337
|
+
"application/json": {
|
|
25338
|
+
"schema": {
|
|
25339
|
+
"$ref": "#/components/schemas/EnrollmentStatusResponse"
|
|
25340
|
+
}
|
|
25341
|
+
}
|
|
25342
|
+
}
|
|
25343
|
+
},
|
|
25344
|
+
"400": {
|
|
25345
|
+
"$ref": "#/components/responses/BadRequest"
|
|
25346
|
+
},
|
|
25347
|
+
"404": {
|
|
25348
|
+
"$ref": "#/components/responses/NotFound"
|
|
25349
|
+
}
|
|
25350
|
+
}
|
|
25351
|
+
}
|
|
25352
|
+
},
|
|
24795
25353
|
"/v1/agents/enroll/pending": {
|
|
24796
25354
|
"get": {
|
|
24797
25355
|
"tags": [
|
|
@@ -24802,7 +25360,30 @@
|
|
|
24802
25360
|
"security": [],
|
|
24803
25361
|
"responses": {
|
|
24804
25362
|
"200": {
|
|
24805
|
-
"description": "Success"
|
|
25363
|
+
"description": "Success",
|
|
25364
|
+
"content": {
|
|
25365
|
+
"application/json": {
|
|
25366
|
+
"schema": {
|
|
25367
|
+
"type": "object",
|
|
25368
|
+
"properties": {
|
|
25369
|
+
"agent_name": {
|
|
25370
|
+
"type": "string"
|
|
25371
|
+
},
|
|
25372
|
+
"expires_at": {
|
|
25373
|
+
"type": "string",
|
|
25374
|
+
"format": "date-time"
|
|
25375
|
+
},
|
|
25376
|
+
"fingerprint": {
|
|
25377
|
+
"type": "string",
|
|
25378
|
+
"description": "Pairing only — the agent key's `SHA256:` fingerprint to verify visually."
|
|
25379
|
+
},
|
|
25380
|
+
"description": {
|
|
25381
|
+
"type": "string"
|
|
25382
|
+
}
|
|
25383
|
+
}
|
|
25384
|
+
}
|
|
25385
|
+
}
|
|
25386
|
+
}
|
|
24806
25387
|
},
|
|
24807
25388
|
"404": {
|
|
24808
25389
|
"description": "Not found"
|
|
@@ -30834,6 +31415,10 @@
|
|
|
30834
31415
|
"description": {
|
|
30835
31416
|
"type": "string",
|
|
30836
31417
|
"description": "Optional agent description"
|
|
31418
|
+
},
|
|
31419
|
+
"public_key": {
|
|
31420
|
+
"type": "string",
|
|
31421
|
+
"description": "Pairing ceremony. The agent's own Ed25519 public key (`ssh-ed25519 AAAA…`\nor base64 of the raw 32 bytes). Its `SHA256:` fingerprint is shown to the\nhuman on the approval page for visual verification, and the agent\ncollects its API key itself by polling\n`GET /v1/agents/enroll/{pairing_id}/status?poll=<poll_token>` — no key\nin an email, nothing to copy. `1claw agent enroll --pair` does all of this.\n"
|
|
30837
31422
|
}
|
|
30838
31423
|
}
|
|
30839
31424
|
},
|
|
@@ -30853,6 +31438,62 @@
|
|
|
30853
31438
|
"type": "string",
|
|
30854
31439
|
"format": "uri",
|
|
30855
31440
|
"description": "Present when a pending enrollment was created and the client should show\nthis link (email flow includes it as a fallback; name-only flow requires it).\n"
|
|
31441
|
+
},
|
|
31442
|
+
"pairing_id": {
|
|
31443
|
+
"type": "string",
|
|
31444
|
+
"format": "uuid",
|
|
31445
|
+
"description": "Pairing only."
|
|
31446
|
+
},
|
|
31447
|
+
"fingerprint": {
|
|
31448
|
+
"type": "string",
|
|
31449
|
+
"description": "Pairing only. `SHA256:<base64>` of the key, as `ssh-keygen -lf` prints it. Show it to the human."
|
|
31450
|
+
},
|
|
31451
|
+
"poll_token": {
|
|
31452
|
+
"type": "string",
|
|
31453
|
+
"description": "Pairing only. Presented as `?poll=` on the status endpoint. Shown once."
|
|
31454
|
+
},
|
|
31455
|
+
"expires_at": {
|
|
31456
|
+
"type": "string",
|
|
31457
|
+
"format": "date-time"
|
|
31458
|
+
}
|
|
31459
|
+
}
|
|
31460
|
+
},
|
|
31461
|
+
"EnrollmentStatusResponse": {
|
|
31462
|
+
"type": "object",
|
|
31463
|
+
"properties": {
|
|
31464
|
+
"pairing_id": {
|
|
31465
|
+
"type": "string",
|
|
31466
|
+
"format": "uuid"
|
|
31467
|
+
},
|
|
31468
|
+
"status": {
|
|
31469
|
+
"type": "string",
|
|
31470
|
+
"enum": [
|
|
31471
|
+
"pending",
|
|
31472
|
+
"approved",
|
|
31473
|
+
"denied",
|
|
31474
|
+
"expired"
|
|
31475
|
+
]
|
|
31476
|
+
},
|
|
31477
|
+
"agent_name": {
|
|
31478
|
+
"type": "string"
|
|
31479
|
+
},
|
|
31480
|
+
"fingerprint": {
|
|
31481
|
+
"type": "string",
|
|
31482
|
+
"nullable": true
|
|
31483
|
+
},
|
|
31484
|
+
"agent_id": {
|
|
31485
|
+
"type": "string",
|
|
31486
|
+
"format": "uuid"
|
|
31487
|
+
},
|
|
31488
|
+
"api_key": {
|
|
31489
|
+
"type": "string",
|
|
31490
|
+
"description": "Present exactly once, on the first poll after approval; the pairing is then closed."
|
|
31491
|
+
},
|
|
31492
|
+
"vault_ids": {
|
|
31493
|
+
"type": "array",
|
|
31494
|
+
"items": {
|
|
31495
|
+
"type": "string"
|
|
31496
|
+
}
|
|
30856
31497
|
}
|
|
30857
31498
|
}
|
|
30858
31499
|
},
|
|
@@ -39420,7 +40061,8 @@
|
|
|
39420
40061
|
"enum": [
|
|
39421
40062
|
"passkey_prf",
|
|
39422
40063
|
"recovery_code"
|
|
39423
|
-
]
|
|
40064
|
+
],
|
|
40065
|
+
"description": "Sidecar wraps are stored through `PUT /v1/keys/{key_id}/client-share/holder`."
|
|
39424
40066
|
},
|
|
39425
40067
|
"credential_id": {
|
|
39426
40068
|
"type": "string",
|
|
@@ -39460,7 +40102,8 @@
|
|
|
39460
40102
|
"type": "string",
|
|
39461
40103
|
"enum": [
|
|
39462
40104
|
"passkey_prf",
|
|
39463
|
-
"recovery_code"
|
|
40105
|
+
"recovery_code",
|
|
40106
|
+
"sidecar"
|
|
39464
40107
|
]
|
|
39465
40108
|
},
|
|
39466
40109
|
"credential_id": {
|
|
@@ -39468,6 +40111,11 @@
|
|
|
39468
40111
|
"format": "uuid",
|
|
39469
40112
|
"nullable": true
|
|
39470
40113
|
},
|
|
40114
|
+
"holder_id": {
|
|
40115
|
+
"type": "string",
|
|
40116
|
+
"format": "uuid",
|
|
40117
|
+
"nullable": true
|
|
40118
|
+
},
|
|
39471
40119
|
"wrapped_share": {
|
|
39472
40120
|
"type": "string",
|
|
39473
40121
|
"description": "Base64, exactly as stored."
|
|
@@ -39486,6 +40134,34 @@
|
|
|
39486
40134
|
}
|
|
39487
40135
|
}
|
|
39488
40136
|
},
|
|
40137
|
+
"TssHolder": {
|
|
40138
|
+
"type": "object",
|
|
40139
|
+
"properties": {
|
|
40140
|
+
"holder_id": {
|
|
40141
|
+
"type": "string",
|
|
40142
|
+
"format": "uuid"
|
|
40143
|
+
},
|
|
40144
|
+
"runtime_id": {
|
|
40145
|
+
"type": "string",
|
|
40146
|
+
"format": "uuid"
|
|
40147
|
+
},
|
|
40148
|
+
"agent_id": {
|
|
40149
|
+
"type": "string",
|
|
40150
|
+
"format": "uuid"
|
|
40151
|
+
},
|
|
40152
|
+
"public_key": {
|
|
40153
|
+
"type": "string"
|
|
40154
|
+
},
|
|
40155
|
+
"registered_at": {
|
|
40156
|
+
"type": "string",
|
|
40157
|
+
"format": "date-time"
|
|
40158
|
+
},
|
|
40159
|
+
"last_seen_at": {
|
|
40160
|
+
"type": "string",
|
|
40161
|
+
"format": "date-time"
|
|
40162
|
+
}
|
|
40163
|
+
}
|
|
40164
|
+
},
|
|
39489
40165
|
"PasskeySafe": {
|
|
39490
40166
|
"type": "object",
|
|
39491
40167
|
"properties": {
|