breaker metadata API

breaker metadata

Lightweight endpoints for reading and writing breaker metadata without touching full breaker configs.

GET /v1/projects/:project_id/breakers/metadata

List metadata for all breakers in a project

Auth: Project API key

Parameters

Name In Type Required Description
project_id path uuid Yes Project ID

Responses

200 Breaker metadata list. Response includes a weak ETag header for conditional requests.
breakers
- Array of {id, name, metadata} objects
project_id
- Project ID
304 Not Modified (when If-None-Match matches current ETag)

Example

Request
curl https://api.tripswitch.dev/v1/projects/PROJECT_ID/breakers/metadata \
  -H "Authorization: Bearer YOUR_PROJECT_API_KEY"
Response
{
  "project_id": "1234-432...",
  "breakers": [
    {
      "id": "98765-5gf...",
      "name": "payments-primary",
      "metadata": {"phase": "enforce", "owner": "payments"}
    }
  ]
}
PATCH /v1/projects/:project_id/breakers/:breaker_id/metadata

Merge keys into breaker metadata

Auth: Admin API key

Parameters

Name In Type Required Description
project_id path uuid Yes Project ID
breaker_id path uuid Yes Breaker ID

Request Body

metadata *
object Key/value pairs to merge. String keys and string values; set value to null to delete a key. Max 20 keys after merge; key max 64 chars; value max 255 chars.

Responses

200 Updated breaker metadata
id
- Breaker ID
metadata
- Updated metadata object
name
- Breaker name
404 Breaker not found
422 Validation failed

Example

Request
curl -X PATCH https://api.tripswitch.dev/v1/projects/PROJECT_ID/breakers/BREAKER_ID/metadata \
  -H "Authorization: Bearer YOUR_USER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"metadata": {"phase": "observe", "old_key": null}}'
Response
{
  "id": "98765-5gf...",
  "name": "payments-primary",
  "metadata": {"phase": "observe", "owner": "payments"}
}