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.

This site uses Just the Docs, a documentation theme for Jekyll.