Investigations
Investigations are agent-driven sessions that analyze and diagnose issues in your system. Each investigation tracks metadata like a display name, description, and execution status.
Service: firetiger.investigations.v1.InvestigationService
Resource name pattern: investigations/{investigation_id}
Access: Read-write (no delete)
Resource type: Investigation
Example flow
Create an investigation to kick off an agent session, then poll for its status.
1. Create an investigation
The agent’s initial prompt is the content of the user-text activity in initial_activities — that’s what the agent reads and acts on. The description field is investigation metadata only and is not sent to the agent. You don’t need to set display_name: when a seed message is present the server generates the title from it.
curl -X POST "https://api.cloud.firetiger.com/firetiger.investigations.v1.InvestigationService/CreateInvestigation" \
-u "$USERNAME:$PASSWORD" \
-H "Content-Type: application/json" \
-d '{
"investigation": {},
"initial_activities": [
{
"user": {
"text": {
"content": "The payments service started returning 500s at 14:00 UTC. Investigate the root cause and affected scope.",
"role": "USER"
}
}
}
]
}'
{
"investigation": {
"name": "investigations/inv_abc123",
"displayName": "Payments service returning 500s",
"status": "INVESTIGATION_STATUS_EXECUTING",
"createdBy": "user_2xK9mBqHn1pL4vR7wT3eYjZ8aFd",
"createTime": "2024-06-15T14:30:00Z",
"updateTime": "2024-06-15T14:30:00Z"
}
}
The displayName in the response is the title the server generated from the seed message.
2. Check investigation status
Poll the investigation to see whether the agent has finished its analysis.
curl -X POST "https://api.cloud.firetiger.com/firetiger.investigations.v1.InvestigationService/GetInvestigation" \
-u "$USERNAME:$PASSWORD" \
-H "Content-Type: application/json" \
-d '{"name": "investigations/inv_abc123"}'
{
"investigation": {
"name": "investigations/inv_abc123",
"displayName": "Payments service returning 500s",
"status": "INVESTIGATION_STATUS_WAITING",
"createdBy": "user_2xK9mBqHn1pL4vR7wT3eYjZ8aFd",
"createTime": "2024-06-15T14:30:00Z",
"updateTime": "2024-06-15T14:35:12Z"
}
}
Methods
| Method | Description |
|---|---|
| CreateInvestigation | Create a new investigation |
| GetInvestigation | Retrieve an investigation by name |
| ListInvestigations | List investigations with filtering and pagination |
| UpdateInvestigation | Update an existing investigation |
CreateInvestigation
Create a new investigation. The server auto-generates the investigation ID and starts an agent session. The agent’s prompt comes from initial_activities — seed it with a user-text activity describing what to investigate. If you omit display_name, the server auto-titles the investigation from the seed message.
POST /firetiger.investigations.v1.InvestigationService/CreateInvestigation
Request body
| Field | Type | Required | Description |
|---|---|---|---|
investigation |
Investigation | Yes | The investigation to create. Only display_name and description are read from the client (both metadata); other fields are set by the server. description is not sent to the agent. |
initial_activities |
Activity[] | No (but effectively required to give the agent a prompt) | Activities to seed the investigation session with. This is the client input that carries the agent’s prompt — put the problem statement in a user-text activity (user.text.content), plus any context like log snippets, metric data, or prior analysis. (artifacts below can attach files alongside it.) |
artifacts |
Artifact[] | No | References (by sha256) to artifacts already uploaded via PUT /v1/artifacts/{sha256}. Each entry carries {name, sha256, content_type, content_encoding}. The server imports each referenced object into the new session’s artifact namespace under the given name before the initial activities are appended, so attachments arrive atomically with the message. The CAS object must already exist (returns FailedPrecondition otherwise). Each artifact is capped at 64 MiB, with a 128 MiB combined per-request cap. |
Example
curl -X POST "https://api.cloud.firetiger.com/firetiger.investigations.v1.InvestigationService/CreateInvestigation" \
-u "$USERNAME:$PASSWORD" \
-H "Content-Type: application/json" \
-d '{
"investigation": {},
"initial_activities": [
{
"user": {
"text": {
"content": "The payments service started returning 500s at 14:00 UTC. Investigate the root cause and affected scope.",
"role": "USER"
}
}
}
]
}'
Response
{
"investigation": {
"name": "investigations/inv_abc123",
"displayName": "Payments service returning 500s",
"status": "INVESTIGATION_STATUS_EXECUTING",
"createdBy": "user_2xK9mBqHn1pL4vR7wT3eYjZ8aFd",
"createTime": "2024-06-15T14:30:00Z",
"updateTime": "2024-06-15T14:30:00Z"
}
}
GetInvestigation
Retrieve an investigation by name.
POST /firetiger.investigations.v1.InvestigationService/GetInvestigation
Request body
| Field | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Resource name of the investigation (investigations/{id}) |
Example
curl -X POST "https://api.cloud.firetiger.com/firetiger.investigations.v1.InvestigationService/GetInvestigation" \
-u "$USERNAME:$PASSWORD" \
-H "Content-Type: application/json" \
-d '{"name": "investigations/inv_abc123"}'
ListInvestigations
List investigations with optional filtering and pagination.
POST /firetiger.investigations.v1.InvestigationService/ListInvestigations
Request body
| Field | Type | Required | Description |
|:——|:—–|:———|:————|
| filter | string | No | Filter expression (e.g. status = INVESTIGATION_STATUS_EXECUTING) |
| order_by | string | No | Field to sort by. Supported: create_time, update_time, display_name. Append ` desc or asc for direction. Default: create_time desc. |
| page_size | integer | No | Maximum results per page |
| page_token | string | No | Token for the next page of results |
| show_deleted` | boolean | No | Include soft-deleted investigations |
Example
curl -X POST "https://api.cloud.firetiger.com/firetiger.investigations.v1.InvestigationService/ListInvestigations" \
-u "$USERNAME:$PASSWORD" \
-H "Content-Type: application/json" \
-d '{"filter": "status = \"INVESTIGATION_STATUS_EXECUTING\"", "page_size": 25}'
Response
{
"investigations": [
{
"name": "investigations/inv_abc123",
"displayName": "Elevated error rate in payments service",
"status": "INVESTIGATION_STATUS_EXECUTING",
"createdBy": "user_2xK9mBqHn1pL4vR7wT3eYjZ8aFd",
"createTime": "2024-06-15T14:30:00Z",
"updateTime": "2024-06-15T14:30:00Z"
}
],
"nextPageToken": ""
}
UpdateInvestigation
Update an existing investigation’s metadata. Use update_mask to specify which fields to modify.
POST /firetiger.investigations.v1.InvestigationService/UpdateInvestigation
Request body
| Field | Type | Required | Description |
|---|---|---|---|
investigation |
Investigation | Yes | The investigation with name set and updated fields |
update_mask |
string | No | Comma-separated list of fields to update. Supported: display_name, description, status. If omitted, all provided fields are updated. |
Example
curl -X POST "https://api.cloud.firetiger.com/firetiger.investigations.v1.InvestigationService/UpdateInvestigation" \
-u "$USERNAME:$PASSWORD" \
-H "Content-Type: application/json" \
-d '{
"investigation": {
"name": "investigations/inv_abc123",
"display_name": "Payments 500s - resolved: bad deploy"
},
"update_mask": "display_name"
}'