Services
The Services catalog is the system map agents use to reason about ownership, blast radius, and which components show up in a given Flow. Each Service entry carries its inter-service dependencies and key/value tags.
Service: firetiger.objectives.v1.ServicesService
Resource name pattern: services/{service_id}
Access: Read-write
CRUD methods
The standard AIP-compliant CRUD surface is available: CreateService, GetService, UpdateService, DeleteService, ListServices. See proto/firetiger/objectives/v1/services.proto for request/response shapes — they follow the same patterns as other resources documented here (e.g. Tags).
Revision history (AIP-162)
Every mutation to a Service (Create, Update, Delete, Undelete) atomically writes a revision row recording who changed the resource, what kind of change, and when. Two RPCs expose the history:
ListServiceRevisions
List the revision history of one Service. Default order is reverse-chronological (newest first).
GET /v1/{parent=services/*}/revisions
or as a Connect RPC:
POST /firetiger.objectives.v1.ServicesService/ListServiceRevisions
Request body
| Field | Type | Required | Description |
|---|---|---|---|
parent |
string | Yes | Resource name of the Service whose revisions to list. Format: services/{service} |
page_size |
integer | No | Maximum revisions per page |
page_token |
string | No | Token from a previous ListServiceRevisionsResponse |
filter |
string | No | AIP-160 filter over name, revision_number, operation, actor_subject, actor_kind, create_time |
order_by |
string | No | AIP-132 ordering. Defaults to create_time desc |
Example
curl -X POST "https://api.cloud.firetiger.com/firetiger.objectives.v1.ServicesService/ListServiceRevisions" \
-u "$USERNAME:$PASSWORD" \
-H "Content-Type: application/json" \
-d '{"parent": "services/checkout-api", "page_size": 50}'
Response
{
"serviceRevisions": [
{
"name": "services/checkout-api/revisions/3",
"snapshot": { "name": "services/checkout-api", "displayName": "Checkout API v3", "...": "..." },
"createTime": "2026-05-14T18:10:11Z",
"operation": "REVISION_OPERATION_UPDATE",
"actor": { "subject": "user_2abc", "kind": "ACTOR_KIND_USER" }
}
],
"nextPageToken": ""
}
GetServiceRevision
Return a single revision by its AIP-162 nested-collection name.
GET /v1/{name=services/*/revisions/*}
or:
POST /firetiger.objectives.v1.ServicesService/GetServiceRevision
Request body
| Field | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Format: services/{service}/revisions/{n} where n is a positive integer |
Example
curl -X POST "https://api.cloud.firetiger.com/firetiger.objectives.v1.ServicesService/GetServiceRevision" \
-u "$USERNAME:$PASSWORD" \
-H "Content-Type: application/json" \
-d '{"name": "services/checkout-api/revisions/2"}'
Notes
- History starts at opt-in time. Services that existed before this revision API shipped have no historical revisions until their next mutation.
Purge(force delete) cascades to revisions atomically.- See Flows for the same revision pattern applied to the Flows resource.