@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 CHANGED
@@ -2,7 +2,7 @@
2
2
  "openapi": "3.1.0",
3
3
  "info": {
4
4
  "title": "1Claw API",
5
- "version": "0.61.21",
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.21"
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
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@1claw/openapi-spec",
3
- "version": "0.61.21",
3
+ "version": "0.61.22",
4
4
  "description": "OpenAPI 3.1.0 specification for the 1Claw Vault API \u2014 generate clients in any language",
5
5
  "license": "MIT",
6
6
  "repository": {