Services
/api/v1/servicesServices in the active organization, paginated, newest-name-first.
Authorization
HTTPBearer In: header
Query Parameters
Page number
1 <= value1Items per page
1 <= value <= 10020Filter by status
Filter by tier
Response Body
application/json
application/json
curl -X GET "https://example.com/api/v1/services"{ "items": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "org_id": "a40f5d1f-d889-42e9-94ea-b9b33585fc6b", "name": "string", "first_seen_at": "2019-08-24T14:15:22Z", "last_seen_at": "2019-08-24T14:15:22Z", "status": "active", "owner": "string", "tier": "string", "environment": "string", "repo_url": "string", "runbook_url": "string", "dashboard_url": "string", "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "last_applied_config": {} } ], "total": 0, "page": 0, "per_page": 0}/api/v1/services/{name}One service by its natural key, within the active organization.
Authorization
HTTPBearer In: header
Path Parameters
Response Body
application/json
application/json
curl -X GET "https://example.com/api/v1/services/string"{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "org_id": "a40f5d1f-d889-42e9-94ea-b9b33585fc6b", "name": "string", "first_seen_at": "2019-08-24T14:15:22Z", "last_seen_at": "2019-08-24T14:15:22Z", "status": "active", "owner": "string", "tier": "string", "environment": "string", "repo_url": "string", "runbook_url": "string", "dashboard_url": "string", "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "last_applied_config": {}}/api/v1/services/{name}Patches annotations only. name, first_seen_at, last_seen_at
and status have no field on ServiceAnnotationUpdate at all, so
FastAPI's extra="forbid" turns an attempt to set any of them into a
422 before this handler runs.
Authorization
HTTPBearer In: header
Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
PATCH /api/v1/services/{name} body. Annotations only.
No name, first_seen_at, last_seen_at or status field exists
here — attempting to set any of them is an unknown field under
extra="forbid" and FastAPI turns that into a 422, which is the
guard the acceptance criteria ask for.
Response Body
application/json
application/json
curl -X PATCH "https://example.com/api/v1/services/string" \ -H "Content-Type: application/json" \ -d '{}'{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "org_id": "a40f5d1f-d889-42e9-94ea-b9b33585fc6b", "name": "string", "first_seen_at": "2019-08-24T14:15:22Z", "last_seen_at": "2019-08-24T14:15:22Z", "status": "active", "owner": "string", "tier": "string", "environment": "string", "repo_url": "string", "runbook_url": "string", "dashboard_url": "string", "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "last_applied_config": {}}/api/v1/services/{name}/signalsRequest rate, error rate and latency percentiles from spans,
bucketed server-side. No saturation or availability fields — see this
module's docstring and app/schemas/service.py's: those need M02's
metrics range query and #535's probe metrics, neither of which exists
yet, so this response simply does not carry them.
Authorization
HTTPBearer In: header
Path Parameters
Query Parameters
Range start (inclusive)
date-timeRange end (inclusive)
date-timeResponse Body
application/json
application/json
curl -X GET "https://example.com/api/v1/services/string/signals?from=2019-08-24T14%3A15%3A22Z&to=2019-08-24T14%3A15%3A22Z"{ "service": "string", "bucket_width_seconds": 0, "buckets": [ { "bucket_start": "2019-08-24T14:15:22Z", "bucket_end": "2019-08-24T14:15:22Z", "request_count": 0, "error_count": 0, "error_rate": 0, "p50_ms": 0, "p95_ms": 0, "p99_ms": 0 } ]}/api/v1/services/{name}/edgesInbound and outbound edges from otel.service_edges, with count,
error rate and p95 — one service's neighbourhood, not the whole graph
(see GET /api/v1/topology for that).
Authorization
HTTPBearer In: header
Path Parameters
Query Parameters
Range start (inclusive)
date-timeRange end (inclusive)
date-timeResponse Body
application/json
application/json
curl -X GET "https://example.com/api/v1/services/string/edges?from=2019-08-24T14%3A15%3A22Z&to=2019-08-24T14%3A15%3A22Z"{ "service": "string", "inbound": [ { "service": "string", "request_count": 0, "error_count": 0, "error_rate": 0, "p95_ms": 0 } ], "outbound": [ { "service": "string", "request_count": 0, "error_count": 0, "error_rate": 0, "p95_ms": 0 } ]}