@1claw/openapi-spec 0.61.7 → 0.61.8

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.7",
5
+ "version": "0.61.8",
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"
@@ -25551,6 +25551,109 @@
25551
25551
  }
25552
25552
  }
25553
25553
  },
25554
+ "/v1/otel/flows": {
25555
+ "get": {
25556
+ "tags": [
25557
+ "Observability"
25558
+ ],
25559
+ "summary": "Who actually read from which vault",
25560
+ "description": "Reachability (the topology's policy edges) says who *could* read a vault. This says who *did*, counted from `audit_events.action = 'secret.read'` — the durable record every read already writes — grouped by agent and vault. That is what lets a Sankey ribbon's width be a count of real reads rather than a guess.\n\nAgent actors only; a human reading a secret through the dashboard is not an agent flow. Deleted agents and vaults are kept and labelled as such — a read that happened is still a read.",
25561
+ "operationId": "get_otel_flows",
25562
+ "parameters": [
25563
+ {
25564
+ "name": "window",
25565
+ "in": "query",
25566
+ "required": false,
25567
+ "description": "Lookback, e.g. `1h`, `24h`, `7d`. Default 24h, maximum 30d.",
25568
+ "schema": {
25569
+ "type": "string",
25570
+ "default": "24h"
25571
+ }
25572
+ }
25573
+ ],
25574
+ "responses": {
25575
+ "200": {
25576
+ "description": "Read flows, highest first",
25577
+ "content": {
25578
+ "application/json": {
25579
+ "schema": {
25580
+ "type": "object",
25581
+ "required": [
25582
+ "window",
25583
+ "edges",
25584
+ "total_reads"
25585
+ ],
25586
+ "properties": {
25587
+ "window": {
25588
+ "type": "object",
25589
+ "properties": {
25590
+ "window_secs": {
25591
+ "type": "integer"
25592
+ },
25593
+ "step_secs": {
25594
+ "type": "integer"
25595
+ }
25596
+ }
25597
+ },
25598
+ "edges": {
25599
+ "type": "array",
25600
+ "maxItems": 500,
25601
+ "items": {
25602
+ "type": "object",
25603
+ "required": [
25604
+ "agent_id",
25605
+ "agent_name",
25606
+ "vault_id",
25607
+ "vault_name",
25608
+ "reads",
25609
+ "distinct_paths"
25610
+ ],
25611
+ "properties": {
25612
+ "agent_id": {
25613
+ "type": "string",
25614
+ "format": "uuid"
25615
+ },
25616
+ "agent_name": {
25617
+ "type": "string"
25618
+ },
25619
+ "vault_id": {
25620
+ "type": "string",
25621
+ "format": "uuid"
25622
+ },
25623
+ "vault_name": {
25624
+ "type": "string"
25625
+ },
25626
+ "reads": {
25627
+ "type": "integer",
25628
+ "description": "secret.read events in the window."
25629
+ },
25630
+ "distinct_paths": {
25631
+ "type": "integer",
25632
+ "description": "Distinct secret paths touched."
25633
+ }
25634
+ }
25635
+ }
25636
+ },
25637
+ "total_reads": {
25638
+ "type": "integer"
25639
+ }
25640
+ }
25641
+ }
25642
+ }
25643
+ }
25644
+ },
25645
+ "400": {
25646
+ "description": "Unparseable window or window over 30d"
25647
+ },
25648
+ "401": {
25649
+ "description": "Unauthenticated"
25650
+ },
25651
+ "403": {
25652
+ "description": "Not a human user"
25653
+ }
25654
+ }
25655
+ }
25656
+ },
25554
25657
  "/v1/otel/summary": {
25555
25658
  "get": {
25556
25659
  "tags": [
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.7"
5
+ version: "0.61.8"
6
6
  description: |
7
7
  Secure secret management for AI agents. Provides vaults, secrets,
8
8
  policy-based access control, agent identity, Intents API,
@@ -16402,6 +16402,61 @@ paths:
16402
16402
  description: Unauthenticated
16403
16403
  '403':
16404
16404
  description: Not a human user
16405
+ /v1/otel/flows:
16406
+ get:
16407
+ tags: [Observability]
16408
+ summary: "Who actually read from which vault"
16409
+ description: >-
16410
+ Reachability (the topology's policy edges) says who *could*
16411
+ read a vault. This says who *did*, counted from
16412
+ `audit_events.action = 'secret.read'` — the durable record every
16413
+ read already writes — grouped by agent and vault. That is what
16414
+ lets a Sankey ribbon's width be a count of real reads rather
16415
+ than a guess.
16416
+
16417
+
16418
+ Agent actors only; a human reading a secret through the
16419
+ dashboard is not an agent flow. Deleted agents and vaults are
16420
+ kept and labelled as such — a read that happened is still a
16421
+ read.
16422
+ operationId: get_otel_flows
16423
+ parameters:
16424
+ - name: window
16425
+ in: query
16426
+ required: false
16427
+ description: "Lookback, e.g. `1h`, `24h`, `7d`. Default 24h, maximum 30d."
16428
+ schema: { type: string, default: "24h" }
16429
+ responses:
16430
+ '200':
16431
+ description: Read flows, highest first
16432
+ content:
16433
+ application/json:
16434
+ schema:
16435
+ type: object
16436
+ required: [window, edges, total_reads]
16437
+ properties:
16438
+ window:
16439
+ type: object
16440
+ properties:
16441
+ window_secs: { type: integer }
16442
+ step_secs: { type: integer }
16443
+ edges:
16444
+ type: array
16445
+ maxItems: 500
16446
+ items:
16447
+ type: object
16448
+ required: [agent_id, agent_name, vault_id, vault_name, reads, distinct_paths]
16449
+ properties:
16450
+ agent_id: { type: string, format: uuid }
16451
+ agent_name: { type: string }
16452
+ vault_id: { type: string, format: uuid }
16453
+ vault_name: { type: string }
16454
+ reads: { type: integer, description: "secret.read events in the window." }
16455
+ distinct_paths: { type: integer, description: "Distinct secret paths touched." }
16456
+ total_reads: { type: integer }
16457
+ '400': { description: Unparseable window or window over 30d }
16458
+ '401': { description: Unauthenticated }
16459
+ '403': { description: Not a human user }
16405
16460
  /v1/otel/summary:
16406
16461
  get:
16407
16462
  tags: [Observability]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@1claw/openapi-spec",
3
- "version": "0.61.7",
3
+ "version": "0.61.8",
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": {