@1claw/openapi-spec 0.61.5 → 0.61.7
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 +310 -1
- package/openapi.yaml +178 -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.7",
|
|
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"
|
|
@@ -25248,6 +25248,309 @@
|
|
|
25248
25248
|
}
|
|
25249
25249
|
}
|
|
25250
25250
|
},
|
|
25251
|
+
"/v1/org/settings/otel-export": {
|
|
25252
|
+
"get": {
|
|
25253
|
+
"tags": [
|
|
25254
|
+
"Observability"
|
|
25255
|
+
],
|
|
25256
|
+
"summary": "Read the org's OTLP export configuration",
|
|
25257
|
+
"description": "Owner or admin, Team tier and above. Returns header *names* only — the values are the customer's collector credentials and never round-trip through the browser.",
|
|
25258
|
+
"operationId": "get_otel_export_config",
|
|
25259
|
+
"responses": {
|
|
25260
|
+
"200": {
|
|
25261
|
+
"description": "Current config, or null when unconfigured",
|
|
25262
|
+
"content": {
|
|
25263
|
+
"application/json": {
|
|
25264
|
+
"schema": {
|
|
25265
|
+
"nullable": true,
|
|
25266
|
+
"type": "object",
|
|
25267
|
+
"properties": {
|
|
25268
|
+
"enabled": {
|
|
25269
|
+
"type": "boolean"
|
|
25270
|
+
},
|
|
25271
|
+
"endpoint": {
|
|
25272
|
+
"type": "string"
|
|
25273
|
+
},
|
|
25274
|
+
"header_names": {
|
|
25275
|
+
"type": "array",
|
|
25276
|
+
"items": {
|
|
25277
|
+
"type": "string"
|
|
25278
|
+
}
|
|
25279
|
+
},
|
|
25280
|
+
"resource_attributes": {
|
|
25281
|
+
"type": "object",
|
|
25282
|
+
"additionalProperties": {
|
|
25283
|
+
"type": "string"
|
|
25284
|
+
}
|
|
25285
|
+
},
|
|
25286
|
+
"signal_filter": {
|
|
25287
|
+
"type": "array",
|
|
25288
|
+
"items": {
|
|
25289
|
+
"type": "string",
|
|
25290
|
+
"enum": [
|
|
25291
|
+
"spans",
|
|
25292
|
+
"metrics",
|
|
25293
|
+
"logs"
|
|
25294
|
+
]
|
|
25295
|
+
}
|
|
25296
|
+
}
|
|
25297
|
+
}
|
|
25298
|
+
}
|
|
25299
|
+
}
|
|
25300
|
+
}
|
|
25301
|
+
},
|
|
25302
|
+
"401": {
|
|
25303
|
+
"description": "Unauthenticated"
|
|
25304
|
+
},
|
|
25305
|
+
"402": {
|
|
25306
|
+
"description": "Requires the Team plan or higher"
|
|
25307
|
+
},
|
|
25308
|
+
"403": {
|
|
25309
|
+
"description": "Not an owner or admin"
|
|
25310
|
+
}
|
|
25311
|
+
}
|
|
25312
|
+
},
|
|
25313
|
+
"patch": {
|
|
25314
|
+
"tags": [
|
|
25315
|
+
"Observability"
|
|
25316
|
+
],
|
|
25317
|
+
"summary": "Update the org's OTLP export configuration",
|
|
25318
|
+
"description": "Every field is optional and only present fields change. The endpoint is validated *and DNS-resolved* on save: HTTPS only, no embedded credentials, and refused if any resolved address is private, loopback, link-local, metadata or ULA. A URL that resolves to a private address is the SSRF, and it is refused here rather than left in the database looking configured.\n\n`headers` replaces the whole map when present and is encrypted at rest under the org's key. Omit it to change other fields without touching stored header values you cannot read back.\n\nTransport is OTLP over HTTP with JSON encoding, posted to `<endpoint>/v1/traces`, `/v1/metrics` and `/v1/logs`. What leaves is exactly what the org's own dashboard stream carries — signals already through the collector's redaction pass.",
|
|
25319
|
+
"operationId": "patch_otel_export_config",
|
|
25320
|
+
"requestBody": {
|
|
25321
|
+
"content": {
|
|
25322
|
+
"application/json": {
|
|
25323
|
+
"schema": {
|
|
25324
|
+
"type": "object",
|
|
25325
|
+
"properties": {
|
|
25326
|
+
"enabled": {
|
|
25327
|
+
"type": "boolean"
|
|
25328
|
+
},
|
|
25329
|
+
"endpoint": {
|
|
25330
|
+
"type": "string",
|
|
25331
|
+
"format": "uri",
|
|
25332
|
+
"description": "HTTPS only."
|
|
25333
|
+
},
|
|
25334
|
+
"headers": {
|
|
25335
|
+
"type": "object",
|
|
25336
|
+
"additionalProperties": {
|
|
25337
|
+
"type": "string"
|
|
25338
|
+
},
|
|
25339
|
+
"description": "Sent on every export request, e.g. an Authorization header. Reserved hop-by-hop names are refused."
|
|
25340
|
+
},
|
|
25341
|
+
"resource_attributes": {
|
|
25342
|
+
"type": "object",
|
|
25343
|
+
"additionalProperties": {
|
|
25344
|
+
"type": "string"
|
|
25345
|
+
}
|
|
25346
|
+
},
|
|
25347
|
+
"signal_filter": {
|
|
25348
|
+
"type": "array",
|
|
25349
|
+
"minItems": 1,
|
|
25350
|
+
"items": {
|
|
25351
|
+
"type": "string",
|
|
25352
|
+
"enum": [
|
|
25353
|
+
"spans",
|
|
25354
|
+
"metrics",
|
|
25355
|
+
"logs"
|
|
25356
|
+
]
|
|
25357
|
+
}
|
|
25358
|
+
}
|
|
25359
|
+
}
|
|
25360
|
+
}
|
|
25361
|
+
}
|
|
25362
|
+
}
|
|
25363
|
+
},
|
|
25364
|
+
"responses": {
|
|
25365
|
+
"200": {
|
|
25366
|
+
"description": "The updated config, header names only"
|
|
25367
|
+
},
|
|
25368
|
+
"400": {
|
|
25369
|
+
"description": "Endpoint refused (scheme",
|
|
25370
|
+
"credentials": null,
|
|
25371
|
+
"private or unresolvable host)": null,
|
|
25372
|
+
"reserved header": null,
|
|
25373
|
+
"or enabling with no endpoint": null
|
|
25374
|
+
},
|
|
25375
|
+
"401": {
|
|
25376
|
+
"description": "Unauthenticated"
|
|
25377
|
+
},
|
|
25378
|
+
"402": {
|
|
25379
|
+
"description": "Requires the Team plan or higher"
|
|
25380
|
+
},
|
|
25381
|
+
"403": {
|
|
25382
|
+
"description": "Not an owner or admin"
|
|
25383
|
+
}
|
|
25384
|
+
}
|
|
25385
|
+
}
|
|
25386
|
+
},
|
|
25387
|
+
"/v1/org/settings/otel-export/test": {
|
|
25388
|
+
"post": {
|
|
25389
|
+
"tags": [
|
|
25390
|
+
"Observability"
|
|
25391
|
+
],
|
|
25392
|
+
"summary": "Send one synthetic span to the configured endpoint",
|
|
25393
|
+
"description": "Re-resolves the endpoint at send time and pins the connection to the resolved address, with redirects disabled. Rate-limited to 5 per minute per org: even a validated endpoint is an outbound request the caller chose the target of.",
|
|
25394
|
+
"operationId": "test_otel_export",
|
|
25395
|
+
"responses": {
|
|
25396
|
+
"200": {
|
|
25397
|
+
"description": "The collector's HTTP status for the probe",
|
|
25398
|
+
"content": {
|
|
25399
|
+
"application/json": {
|
|
25400
|
+
"schema": {
|
|
25401
|
+
"type": "object",
|
|
25402
|
+
"properties": {
|
|
25403
|
+
"endpoint": {
|
|
25404
|
+
"type": "string"
|
|
25405
|
+
},
|
|
25406
|
+
"status": {
|
|
25407
|
+
"type": "integer"
|
|
25408
|
+
},
|
|
25409
|
+
"ok": {
|
|
25410
|
+
"type": "boolean"
|
|
25411
|
+
}
|
|
25412
|
+
}
|
|
25413
|
+
}
|
|
25414
|
+
}
|
|
25415
|
+
}
|
|
25416
|
+
},
|
|
25417
|
+
"400": {
|
|
25418
|
+
"description": "Not configured",
|
|
25419
|
+
"or the send failed": null
|
|
25420
|
+
},
|
|
25421
|
+
"401": {
|
|
25422
|
+
"description": "Unauthenticated"
|
|
25423
|
+
},
|
|
25424
|
+
"402": {
|
|
25425
|
+
"description": "Requires the Team plan or higher"
|
|
25426
|
+
},
|
|
25427
|
+
"403": {
|
|
25428
|
+
"description": "Not an owner or admin"
|
|
25429
|
+
},
|
|
25430
|
+
"429": {
|
|
25431
|
+
"description": "More than 5 test sends this minute"
|
|
25432
|
+
}
|
|
25433
|
+
}
|
|
25434
|
+
}
|
|
25435
|
+
},
|
|
25436
|
+
"/v1/otel/metrics": {
|
|
25437
|
+
"get": {
|
|
25438
|
+
"tags": [
|
|
25439
|
+
"Observability"
|
|
25440
|
+
],
|
|
25441
|
+
"summary": "Time-bucketed rollups from durable tables",
|
|
25442
|
+
"description": "Volume, denials and latency over a window. Sourced from durable tables, never from in-process counters: an in-memory histogram is per-replica and resets on deploy, so a 24h chart drawn from one disagrees between instances and is wrong after every release.\n\nEvery bucket in the range is returned, including empty ones. A quiet hour is a zero, not a missing point — a line chart given a hole joins across it as though nothing happened.\n\n`step` may be widened from what was requested when the window would otherwise produce more than 500 buckets. The response echoes the window and step actually used, so a chart can label its own resolution rather than the one it asked for.",
|
|
25443
|
+
"operationId": "get_otel_metrics",
|
|
25444
|
+
"parameters": [
|
|
25445
|
+
{
|
|
25446
|
+
"name": "window",
|
|
25447
|
+
"in": "query",
|
|
25448
|
+
"required": false,
|
|
25449
|
+
"description": "Lookback, e.g. `30m`, `24h`, `7d`. Default 24h, maximum 30d.",
|
|
25450
|
+
"schema": {
|
|
25451
|
+
"type": "string",
|
|
25452
|
+
"default": "24h"
|
|
25453
|
+
}
|
|
25454
|
+
},
|
|
25455
|
+
{
|
|
25456
|
+
"name": "step",
|
|
25457
|
+
"in": "query",
|
|
25458
|
+
"required": false,
|
|
25459
|
+
"description": "Bucket width. Defaults to a twenty-fourth of the window, minimum 60s.",
|
|
25460
|
+
"schema": {
|
|
25461
|
+
"type": "string"
|
|
25462
|
+
}
|
|
25463
|
+
}
|
|
25464
|
+
],
|
|
25465
|
+
"responses": {
|
|
25466
|
+
"200": {
|
|
25467
|
+
"description": "Bucketed metrics",
|
|
25468
|
+
"content": {
|
|
25469
|
+
"application/json": {
|
|
25470
|
+
"schema": {
|
|
25471
|
+
"type": "object",
|
|
25472
|
+
"required": [
|
|
25473
|
+
"window",
|
|
25474
|
+
"buckets",
|
|
25475
|
+
"total_executions",
|
|
25476
|
+
"total_denials"
|
|
25477
|
+
],
|
|
25478
|
+
"properties": {
|
|
25479
|
+
"window": {
|
|
25480
|
+
"type": "object",
|
|
25481
|
+
"description": "The window and step actually used.",
|
|
25482
|
+
"properties": {
|
|
25483
|
+
"window_secs": {
|
|
25484
|
+
"type": "integer"
|
|
25485
|
+
},
|
|
25486
|
+
"step_secs": {
|
|
25487
|
+
"type": "integer"
|
|
25488
|
+
}
|
|
25489
|
+
}
|
|
25490
|
+
},
|
|
25491
|
+
"buckets": {
|
|
25492
|
+
"type": "array",
|
|
25493
|
+
"items": {
|
|
25494
|
+
"type": "object",
|
|
25495
|
+
"required": [
|
|
25496
|
+
"t",
|
|
25497
|
+
"executions",
|
|
25498
|
+
"denials",
|
|
25499
|
+
"transactions",
|
|
25500
|
+
"llm_calls"
|
|
25501
|
+
],
|
|
25502
|
+
"properties": {
|
|
25503
|
+
"t": {
|
|
25504
|
+
"type": "string",
|
|
25505
|
+
"format": "date-time"
|
|
25506
|
+
},
|
|
25507
|
+
"executions": {
|
|
25508
|
+
"type": "integer"
|
|
25509
|
+
},
|
|
25510
|
+
"denials": {
|
|
25511
|
+
"type": "integer"
|
|
25512
|
+
},
|
|
25513
|
+
"transactions": {
|
|
25514
|
+
"type": "integer"
|
|
25515
|
+
},
|
|
25516
|
+
"llm_calls": {
|
|
25517
|
+
"type": "integer"
|
|
25518
|
+
}
|
|
25519
|
+
}
|
|
25520
|
+
}
|
|
25521
|
+
},
|
|
25522
|
+
"latency_p50_ms": {
|
|
25523
|
+
"type": "number",
|
|
25524
|
+
"nullable": true,
|
|
25525
|
+
"description": "Null when nothing in the window recorded a duration."
|
|
25526
|
+
},
|
|
25527
|
+
"latency_p95_ms": {
|
|
25528
|
+
"type": "number",
|
|
25529
|
+
"nullable": true
|
|
25530
|
+
},
|
|
25531
|
+
"total_executions": {
|
|
25532
|
+
"type": "integer"
|
|
25533
|
+
},
|
|
25534
|
+
"total_denials": {
|
|
25535
|
+
"type": "integer"
|
|
25536
|
+
}
|
|
25537
|
+
}
|
|
25538
|
+
}
|
|
25539
|
+
}
|
|
25540
|
+
}
|
|
25541
|
+
},
|
|
25542
|
+
"400": {
|
|
25543
|
+
"description": "Unparseable window or step, window over 30d, or step larger than window"
|
|
25544
|
+
},
|
|
25545
|
+
"401": {
|
|
25546
|
+
"description": "Unauthenticated"
|
|
25547
|
+
},
|
|
25548
|
+
"403": {
|
|
25549
|
+
"description": "Not a human user"
|
|
25550
|
+
}
|
|
25551
|
+
}
|
|
25552
|
+
}
|
|
25553
|
+
},
|
|
25251
25554
|
"/v1/otel/summary": {
|
|
25252
25555
|
"get": {
|
|
25253
25556
|
"tags": [
|
|
@@ -25383,6 +25686,12 @@
|
|
|
25383
25686
|
"suspended",
|
|
25384
25687
|
"ok"
|
|
25385
25688
|
]
|
|
25689
|
+
},
|
|
25690
|
+
"trust": {
|
|
25691
|
+
"type": "integer",
|
|
25692
|
+
"minimum": 0,
|
|
25693
|
+
"maximum": 100,
|
|
25694
|
+
"description": "Agents only. Absent until the trust engine has scored the agent."
|
|
25386
25695
|
}
|
|
25387
25696
|
}
|
|
25388
25697
|
}
|
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.7"
|
|
6
6
|
description: |
|
|
7
7
|
Secure secret management for AI agents. Provides vaults, secrets,
|
|
8
8
|
policy-based access control, agent identity, Intents API,
|
|
@@ -16230,6 +16230,178 @@ paths:
|
|
|
16230
16230
|
description: Unauthenticated
|
|
16231
16231
|
'403':
|
|
16232
16232
|
description: Not a human user
|
|
16233
|
+
/v1/org/settings/otel-export:
|
|
16234
|
+
get:
|
|
16235
|
+
tags: [Observability]
|
|
16236
|
+
summary: "Read the org's OTLP export configuration"
|
|
16237
|
+
description: >-
|
|
16238
|
+
Owner or admin, Team tier and above. Returns header *names*
|
|
16239
|
+
only — the values are the customer's collector credentials and
|
|
16240
|
+
never round-trip through the browser.
|
|
16241
|
+
operationId: get_otel_export_config
|
|
16242
|
+
responses:
|
|
16243
|
+
'200':
|
|
16244
|
+
description: Current config, or null when unconfigured
|
|
16245
|
+
content:
|
|
16246
|
+
application/json:
|
|
16247
|
+
schema:
|
|
16248
|
+
nullable: true
|
|
16249
|
+
type: object
|
|
16250
|
+
properties:
|
|
16251
|
+
enabled: { type: boolean }
|
|
16252
|
+
endpoint: { type: string }
|
|
16253
|
+
header_names: { type: array, items: { type: string } }
|
|
16254
|
+
resource_attributes: { type: object, additionalProperties: { type: string } }
|
|
16255
|
+
signal_filter:
|
|
16256
|
+
type: array
|
|
16257
|
+
items: { type: string, enum: [spans, metrics, logs] }
|
|
16258
|
+
'401': { description: Unauthenticated }
|
|
16259
|
+
'402': { description: Requires the Team plan or higher }
|
|
16260
|
+
'403': { description: Not an owner or admin }
|
|
16261
|
+
patch:
|
|
16262
|
+
tags: [Observability]
|
|
16263
|
+
summary: "Update the org's OTLP export configuration"
|
|
16264
|
+
description: >-
|
|
16265
|
+
Every field is optional and only present fields change. The
|
|
16266
|
+
endpoint is validated *and DNS-resolved* on save: HTTPS only, no
|
|
16267
|
+
embedded credentials, and refused if any resolved address is
|
|
16268
|
+
private, loopback, link-local, metadata or ULA. A URL that
|
|
16269
|
+
resolves to a private address is the SSRF, and it is refused
|
|
16270
|
+
here rather than left in the database looking configured.
|
|
16271
|
+
|
|
16272
|
+
|
|
16273
|
+
`headers` replaces the whole map when present and is encrypted
|
|
16274
|
+
at rest under the org's key. Omit it to change other fields
|
|
16275
|
+
without touching stored header values you cannot read back.
|
|
16276
|
+
|
|
16277
|
+
|
|
16278
|
+
Transport is OTLP over HTTP with JSON encoding, posted to
|
|
16279
|
+
`<endpoint>/v1/traces`, `/v1/metrics` and `/v1/logs`. What
|
|
16280
|
+
leaves is exactly what the org's own dashboard stream carries —
|
|
16281
|
+
signals already through the collector's redaction pass.
|
|
16282
|
+
operationId: patch_otel_export_config
|
|
16283
|
+
requestBody:
|
|
16284
|
+
content:
|
|
16285
|
+
application/json:
|
|
16286
|
+
schema:
|
|
16287
|
+
type: object
|
|
16288
|
+
properties:
|
|
16289
|
+
enabled: { type: boolean }
|
|
16290
|
+
endpoint: { type: string, format: uri, description: "HTTPS only." }
|
|
16291
|
+
headers:
|
|
16292
|
+
type: object
|
|
16293
|
+
additionalProperties: { type: string }
|
|
16294
|
+
description: "Sent on every export request, e.g. an Authorization header. Reserved hop-by-hop names are refused."
|
|
16295
|
+
resource_attributes: { type: object, additionalProperties: { type: string } }
|
|
16296
|
+
signal_filter:
|
|
16297
|
+
type: array
|
|
16298
|
+
minItems: 1
|
|
16299
|
+
items: { type: string, enum: [spans, metrics, logs] }
|
|
16300
|
+
responses:
|
|
16301
|
+
'200':
|
|
16302
|
+
description: The updated config, header names only
|
|
16303
|
+
'400': { description: Endpoint refused (scheme, credentials, private or unresolvable host), reserved header, or enabling with no endpoint }
|
|
16304
|
+
'401': { description: Unauthenticated }
|
|
16305
|
+
'402': { description: Requires the Team plan or higher }
|
|
16306
|
+
'403': { description: Not an owner or admin }
|
|
16307
|
+
/v1/org/settings/otel-export/test:
|
|
16308
|
+
post:
|
|
16309
|
+
tags: [Observability]
|
|
16310
|
+
summary: "Send one synthetic span to the configured endpoint"
|
|
16311
|
+
description: >-
|
|
16312
|
+
Re-resolves the endpoint at send time and pins the connection to
|
|
16313
|
+
the resolved address, with redirects disabled. Rate-limited to 5
|
|
16314
|
+
per minute per org: even a validated endpoint is an outbound
|
|
16315
|
+
request the caller chose the target of.
|
|
16316
|
+
operationId: test_otel_export
|
|
16317
|
+
responses:
|
|
16318
|
+
'200':
|
|
16319
|
+
description: The collector's HTTP status for the probe
|
|
16320
|
+
content:
|
|
16321
|
+
application/json:
|
|
16322
|
+
schema:
|
|
16323
|
+
type: object
|
|
16324
|
+
properties:
|
|
16325
|
+
endpoint: { type: string }
|
|
16326
|
+
status: { type: integer }
|
|
16327
|
+
ok: { type: boolean }
|
|
16328
|
+
'400': { description: Not configured, or the send failed }
|
|
16329
|
+
'401': { description: Unauthenticated }
|
|
16330
|
+
'402': { description: Requires the Team plan or higher }
|
|
16331
|
+
'403': { description: Not an owner or admin }
|
|
16332
|
+
'429': { description: More than 5 test sends this minute }
|
|
16333
|
+
/v1/otel/metrics:
|
|
16334
|
+
get:
|
|
16335
|
+
tags: [Observability]
|
|
16336
|
+
summary: "Time-bucketed rollups from durable tables"
|
|
16337
|
+
description: >-
|
|
16338
|
+
Volume, denials and latency over a window. Sourced from durable
|
|
16339
|
+
tables, never from in-process counters: an in-memory histogram
|
|
16340
|
+
is per-replica and resets on deploy, so a 24h chart drawn from
|
|
16341
|
+
one disagrees between instances and is wrong after every
|
|
16342
|
+
release.
|
|
16343
|
+
|
|
16344
|
+
|
|
16345
|
+
Every bucket in the range is returned, including empty ones. A
|
|
16346
|
+
quiet hour is a zero, not a missing point — a line chart given a
|
|
16347
|
+
hole joins across it as though nothing happened.
|
|
16348
|
+
|
|
16349
|
+
|
|
16350
|
+
`step` may be widened from what was requested when the window
|
|
16351
|
+
would otherwise produce more than 500 buckets. The response
|
|
16352
|
+
echoes the window and step actually used, so a chart can label
|
|
16353
|
+
its own resolution rather than the one it asked for.
|
|
16354
|
+
operationId: get_otel_metrics
|
|
16355
|
+
parameters:
|
|
16356
|
+
- name: window
|
|
16357
|
+
in: query
|
|
16358
|
+
required: false
|
|
16359
|
+
description: "Lookback, e.g. `30m`, `24h`, `7d`. Default 24h, maximum 30d."
|
|
16360
|
+
schema: { type: string, default: "24h" }
|
|
16361
|
+
- name: step
|
|
16362
|
+
in: query
|
|
16363
|
+
required: false
|
|
16364
|
+
description: "Bucket width. Defaults to a twenty-fourth of the window, minimum 60s."
|
|
16365
|
+
schema: { type: string }
|
|
16366
|
+
responses:
|
|
16367
|
+
'200':
|
|
16368
|
+
description: Bucketed metrics
|
|
16369
|
+
content:
|
|
16370
|
+
application/json:
|
|
16371
|
+
schema:
|
|
16372
|
+
type: object
|
|
16373
|
+
required: [window, buckets, total_executions, total_denials]
|
|
16374
|
+
properties:
|
|
16375
|
+
window:
|
|
16376
|
+
type: object
|
|
16377
|
+
description: The window and step actually used.
|
|
16378
|
+
properties:
|
|
16379
|
+
window_secs: { type: integer }
|
|
16380
|
+
step_secs: { type: integer }
|
|
16381
|
+
buckets:
|
|
16382
|
+
type: array
|
|
16383
|
+
items:
|
|
16384
|
+
type: object
|
|
16385
|
+
required: [t, executions, denials, transactions, llm_calls]
|
|
16386
|
+
properties:
|
|
16387
|
+
t: { type: string, format: date-time }
|
|
16388
|
+
executions: { type: integer }
|
|
16389
|
+
denials: { type: integer }
|
|
16390
|
+
transactions: { type: integer }
|
|
16391
|
+
llm_calls: { type: integer }
|
|
16392
|
+
latency_p50_ms:
|
|
16393
|
+
type: number
|
|
16394
|
+
nullable: true
|
|
16395
|
+
description: Null when nothing in the window recorded a duration.
|
|
16396
|
+
latency_p95_ms: { type: number, nullable: true }
|
|
16397
|
+
total_executions: { type: integer }
|
|
16398
|
+
total_denials: { type: integer }
|
|
16399
|
+
'400':
|
|
16400
|
+
description: Unparseable window or step, window over 30d, or step larger than window
|
|
16401
|
+
'401':
|
|
16402
|
+
description: Unauthenticated
|
|
16403
|
+
'403':
|
|
16404
|
+
description: Not a human user
|
|
16233
16405
|
/v1/otel/summary:
|
|
16234
16406
|
get:
|
|
16235
16407
|
tags: [Observability]
|
|
@@ -16330,6 +16502,11 @@ paths:
|
|
|
16330
16502
|
type: string
|
|
16331
16503
|
description: Agents only. Derived, not stored.
|
|
16332
16504
|
enum: [compromised, warn, suspended, ok]
|
|
16505
|
+
trust:
|
|
16506
|
+
type: integer
|
|
16507
|
+
minimum: 0
|
|
16508
|
+
maximum: 100
|
|
16509
|
+
description: Agents only. Absent until the trust engine has scored the agent.
|
|
16333
16510
|
edges:
|
|
16334
16511
|
type: array
|
|
16335
16512
|
items:
|