Flows

Flows are structured descriptions of user journeys or business processes that span multiple services. Each Flow lists the ordered steps, their dependencies, the services touched, and the telemetry signals that identify each step. Agents use Flows to ground investigations in the caller’s real call graph instead of reasoning about opaque service boundaries.

Service: firetiger.objectives.v1.FlowsService

Resource name pattern: flows/{flow_id}

Access: Read-write

CRUD methods

The standard AIP-compliant CRUD surface is available: CreateFlow, GetFlow, UpdateFlow, DeleteFlow, ListFlows. See proto/firetiger/objectives/v1/flows.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 Flow (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:

ListFlowRevisions

List the revision history of one Flow. Default order is reverse-chronological (newest first).

GET /v1/{parent=flows/*}/revisions

or as a Connect RPC:

POST /firetiger.objectives.v1.FlowsService/ListFlowRevisions

Request body

Field Type Required Description
parent string Yes Resource name of the Flow whose revisions to list. Format: flows/{flow}
page_size integer No Maximum revisions per page
page_token string No Token from a previous ListFlowRevisionsResponse
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 — full history

curl -X POST "https://api.cloud.firetiger.com/firetiger.objectives.v1.FlowsService/ListFlowRevisions" \
  -u "$USERNAME:$PASSWORD" \
  -H "Content-Type: application/json" \
  -d '{"parent": "flows/checkout", "page_size": 50}'

Example — temporal read (“what did this Flow look like at time T?”)

curl -X POST "https://api.cloud.firetiger.com/firetiger.objectives.v1.FlowsService/ListFlowRevisions" \
  -u "$USERNAME:$PASSWORD" \
  -H "Content-Type: application/json" \
  -d '{
    "parent": "flows/checkout",
    "filter": "create_time <= \"2026-05-14T18:06:00Z\"",
    "order_by": "create_time desc",
    "page_size": 1
  }'

The first item in the response carries the snapshot of the Flow as of T.

Response

{
  "flowRevisions": [
    {
      "name": "flows/checkout/revisions/3",
      "snapshot": { "name": "flows/checkout", "displayName": "Checkout v3", "...": "..." },
      "createTime": "2026-05-14T18:10:11Z",
      "operation": "REVISION_OPERATION_UPDATE",
      "actor": { "subject": "user_2abc", "kind": "ACTOR_KIND_USER" }
    }
  ],
  "nextPageToken": ""
}

GetFlowRevision

Return a single revision by its AIP-162 nested-collection name.

GET /v1/{name=flows/*/revisions/*}

or:

POST /firetiger.objectives.v1.FlowsService/GetFlowRevision

Request body

Field Type Required Description
name string Yes Format: flows/{flow}/revisions/{n} where n is a positive integer

Example

curl -X POST "https://api.cloud.firetiger.com/firetiger.objectives.v1.FlowsService/GetFlowRevision" \
  -u "$USERNAME:$PASSWORD" \
  -H "Content-Type: application/json" \
  -d '{"name": "flows/checkout/revisions/2"}'

Response

{
  "flowRevision": {
    "name": "flows/checkout/revisions/2",
    "snapshot": { "name": "flows/checkout", "displayName": "Checkout v2", "...": "..." },
    "createTime": "2026-05-14T18:05:32Z",
    "operation": "REVISION_OPERATION_UPDATE",
    "actor": { "subject": "user_2abc", "kind": "ACTOR_KIND_USER" }
  }
}

Notes

  • History starts at opt-in time. Flows that existed before this revision API shipped have no historical revisions until their next mutation. Calls against the pre-opt-in window return an empty page (not NotFound).
  • Purge (force delete) cascades to revisions atomically — deleting a Flow erases its history.
  • The snapshot field is the full Flow body at that revision. For the canonical AIP-162 spec, see google.aip.dev/162.

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