@1claw/openapi-spec 0.61.21 → 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 +133 -2
- package/openapi.yaml +79 -1
- 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"
|
|
@@ -25302,6 +25302,54 @@
|
|
|
25302
25302
|
}
|
|
25303
25303
|
}
|
|
25304
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
|
+
},
|
|
25305
25353
|
"/v1/agents/enroll/pending": {
|
|
25306
25354
|
"get": {
|
|
25307
25355
|
"tags": [
|
|
@@ -25312,7 +25360,30 @@
|
|
|
25312
25360
|
"security": [],
|
|
25313
25361
|
"responses": {
|
|
25314
25362
|
"200": {
|
|
25315
|
-
"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
|
+
}
|
|
25316
25387
|
},
|
|
25317
25388
|
"404": {
|
|
25318
25389
|
"description": "Not found"
|
|
@@ -31344,6 +31415,10 @@
|
|
|
31344
31415
|
"description": {
|
|
31345
31416
|
"type": "string",
|
|
31346
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"
|
|
31347
31422
|
}
|
|
31348
31423
|
}
|
|
31349
31424
|
},
|
|
@@ -31363,6 +31438,62 @@
|
|
|
31363
31438
|
"type": "string",
|
|
31364
31439
|
"format": "uri",
|
|
31365
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
|
+
}
|
|
31366
31497
|
}
|
|
31367
31498
|
}
|
|
31368
31499
|
},
|
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.22"
|
|
6
6
|
description: |
|
|
7
7
|
Secure secret management for AI agents. Provides vaults, secrets,
|
|
8
8
|
policy-based access control, agent identity, Intents API,
|
|
@@ -16156,6 +16156,34 @@ paths:
|
|
|
16156
16156
|
description: Forbidden, or the plan does not include this
|
|
16157
16157
|
'404':
|
|
16158
16158
|
description: Not found
|
|
16159
|
+
/v1/agents/enroll/{pairing_id}/status:
|
|
16160
|
+
parameters:
|
|
16161
|
+
- name: pairing_id
|
|
16162
|
+
in: path
|
|
16163
|
+
required: true
|
|
16164
|
+
schema: { type: string, format: uuid }
|
|
16165
|
+
- name: poll
|
|
16166
|
+
in: query
|
|
16167
|
+
required: true
|
|
16168
|
+
schema: { type: string }
|
|
16169
|
+
description: The `poll_token` from the enrol response.
|
|
16170
|
+
get:
|
|
16171
|
+
tags: [Agents]
|
|
16172
|
+
summary: "Public: pairing status — the agent learns the decision and collects its key once"
|
|
16173
|
+
operationId: getEnrollmentStatus
|
|
16174
|
+
security: []
|
|
16175
|
+
responses:
|
|
16176
|
+
"200":
|
|
16177
|
+
description: Status
|
|
16178
|
+
content:
|
|
16179
|
+
application/json:
|
|
16180
|
+
schema:
|
|
16181
|
+
$ref: "#/components/schemas/EnrollmentStatusResponse"
|
|
16182
|
+
"400":
|
|
16183
|
+
$ref: "#/components/responses/BadRequest"
|
|
16184
|
+
"404":
|
|
16185
|
+
$ref: "#/components/responses/NotFound"
|
|
16186
|
+
|
|
16159
16187
|
/v1/agents/enroll/pending:
|
|
16160
16188
|
get:
|
|
16161
16189
|
tags: [Agents]
|
|
@@ -16165,6 +16193,17 @@ paths:
|
|
|
16165
16193
|
responses:
|
|
16166
16194
|
'200':
|
|
16167
16195
|
description: Success
|
|
16196
|
+
content:
|
|
16197
|
+
application/json:
|
|
16198
|
+
schema:
|
|
16199
|
+
type: object
|
|
16200
|
+
properties:
|
|
16201
|
+
agent_name: { type: string }
|
|
16202
|
+
expires_at: { type: string, format: date-time }
|
|
16203
|
+
fingerprint:
|
|
16204
|
+
type: string
|
|
16205
|
+
description: Pairing only — the agent key's `SHA256:` fingerprint to verify visually.
|
|
16206
|
+
description: { type: string }
|
|
16168
16207
|
'404':
|
|
16169
16208
|
description: Not found
|
|
16170
16209
|
/v1/agents/{agent_id}/channels/{channel_id}/refresh-webhook:
|
|
@@ -19991,6 +20030,15 @@ components:
|
|
|
19991
20030
|
description:
|
|
19992
20031
|
type: string
|
|
19993
20032
|
description: Optional agent description
|
|
20033
|
+
public_key:
|
|
20034
|
+
type: string
|
|
20035
|
+
description: |
|
|
20036
|
+
Pairing ceremony. The agent's own Ed25519 public key (`ssh-ed25519 AAAA…`
|
|
20037
|
+
or base64 of the raw 32 bytes). Its `SHA256:` fingerprint is shown to the
|
|
20038
|
+
human on the approval page for visual verification, and the agent
|
|
20039
|
+
collects its API key itself by polling
|
|
20040
|
+
`GET /v1/agents/enroll/{pairing_id}/status?poll=<poll_token>` — no key
|
|
20041
|
+
in an email, nothing to copy. `1claw agent enroll --pair` does all of this.
|
|
19994
20042
|
|
|
19995
20043
|
EnrollAgentResponse:
|
|
19996
20044
|
type: object
|
|
@@ -20008,6 +20056,36 @@ components:
|
|
|
20008
20056
|
description: |
|
|
20009
20057
|
Present when a pending enrollment was created and the client should show
|
|
20010
20058
|
this link (email flow includes it as a fallback; name-only flow requires it).
|
|
20059
|
+
pairing_id:
|
|
20060
|
+
type: string
|
|
20061
|
+
format: uuid
|
|
20062
|
+
description: Pairing only.
|
|
20063
|
+
fingerprint:
|
|
20064
|
+
type: string
|
|
20065
|
+
description: Pairing only. `SHA256:<base64>` of the key, as `ssh-keygen -lf` prints it. Show it to the human.
|
|
20066
|
+
poll_token:
|
|
20067
|
+
type: string
|
|
20068
|
+
description: Pairing only. Presented as `?poll=` on the status endpoint. Shown once.
|
|
20069
|
+
expires_at:
|
|
20070
|
+
type: string
|
|
20071
|
+
format: date-time
|
|
20072
|
+
|
|
20073
|
+
EnrollmentStatusResponse:
|
|
20074
|
+
type: object
|
|
20075
|
+
properties:
|
|
20076
|
+
pairing_id: { type: string, format: uuid }
|
|
20077
|
+
status:
|
|
20078
|
+
type: string
|
|
20079
|
+
enum: [pending, approved, denied, expired]
|
|
20080
|
+
agent_name: { type: string }
|
|
20081
|
+
fingerprint: { type: string, nullable: true }
|
|
20082
|
+
agent_id: { type: string, format: uuid }
|
|
20083
|
+
api_key:
|
|
20084
|
+
type: string
|
|
20085
|
+
description: Present exactly once, on the first poll after approval; the pairing is then closed.
|
|
20086
|
+
vault_ids:
|
|
20087
|
+
type: array
|
|
20088
|
+
items: { type: string }
|
|
20011
20089
|
|
|
20012
20090
|
# --- Agents ---
|
|
20013
20091
|
|