Endpoints
| Method | Path | Description |
|---|---|---|
POST | /issues | Create an issue |
GET | /issues | List issues |
GET | /issues/metrics | Get aggregate metrics |
GET | /issues/{issue_id} | Get an issue |
PATCH | /issues/{issue_id} | Update an issue |
DELETE | /issues/{issue_id} | Delete an issue |
GET | /issues/{issue_id}/comments | List comments on an issue |
POST | /issues/{issue_id}/comments | Add a comment |
PATCH | /issues/{issue_id}/comments/{comment_id} | Update a comment |
DELETE | /issues/{issue_id}/comments/{comment_id} | Delete a comment |
GET | /issues/{issue_id}/files | List files attached to an issue |
Create an issue
POST /issues
Request body:
| Field | Required | Type | Description |
|---|---|---|---|
title | Yes | string | Short description of the finding |
description | Yes | array | Structured content blocks. Pass [] for an empty description |
status | No | string | open (default), in_progress, resolved, rejected |
priority | No | string | low (default), medium, high |
tags | No | array of string | Labels for categorization |
owner | No | string | Assigned owner. Defaults to "Unassigned" |
resolution_summary | No | string | Summary of how the issue was resolved |
attachment_ids | No | array of string | UUIDs of attachments to associate |
session_ids | No | array of string | UUIDs of sessions to associate |
| Field | Type | Nullable | Description |
|---|---|---|---|
uuid | string | No | Issue identifier |
title | string | No | Issue title |
description | array | No | Structured content blocks |
status | string | Yes | Current status |
priority | string | Yes | Priority level |
tags | array | No | Labels |
owner | string | No | Assigned owner |
resolution_summary | string | Yes | Resolution notes |
created_by | string | No | Creator (email or "Atlas" for auto-generated) |
created_at | string | No | ISO 8601 creation timestamp |
sessions | array | No | Associated sessions |
attachments | array | No | Directly attached files |
session_attachments | array | No | Files from associated sessions |
job_run_id | string | Yes | Job run that generated this issue |
List issues
GET /issues
Query parameters:
| Parameter | Type | Description |
|---|---|---|
status | string (repeatable) | Filter by status: open, in_progress, resolved, rejected. Pass multiple times to match any |
priority | string (repeatable) | Filter by priority: low, medium, high. Pass multiple times to match any |
limit | integer | Default 100, max 1000 |
offset | integer | Default 0 |
{"items": [...], "count": N} where each item is an issue object with the same fields as the create response.
Get an issue
GET /issues/{issue_id}
Example request:
Update an issue
PATCH /issues/{issue_id}
All fields are optional. Only provided fields are updated.
| Field | Type | Description |
|---|---|---|
title | string | Updated title |
status | string | open, in_progress, resolved, rejected |
priority | string | low, medium, high |
tags | array of string | Replaces existing tags |
owner | string | Assigned owner |
resolution_summary | string | Resolution notes |
Delete an issue
DELETE /issues/{issue_id}
Example request:
Get metrics
GET /issues/metrics
Returns aggregate issue counts broken down by status, rendered as chart-ready data.
Example request:
| Field | Type | Description |
|---|---|---|
metrics | array | List of chart objects |
| Field | Type | Description |
|---|---|---|
chart_type | string | pie_chart or mixed_chart |
chart_data | object | Chart-specific data payload |
chart_data:
| Field | Type | Description |
|---|---|---|
title | string | Chart title |
data | array | List of {label, value, color} objects |
colors | object | Color overrides (nullable) |
display_config | object | Display options (nullable) |
List comments
GET /issues/{issue_id}/comments
Query parameters:
| Parameter | Type | Description |
|---|---|---|
limit | integer | Default 50, max 1000 |
offset | integer | Default 0 |
{"items": [...], "count": N} where each item is a comment object with the same fields as the create comment response.
Add a comment
POST /issues/{issue_id}/comments
Request body:
| Field | Required | Type | Description |
|---|---|---|---|
content | Yes | string | Comment text (1–10,000 characters) |
attachment_ids | No | array of string | Up to 10 attachment UUIDs |
| Field | Type | Nullable | Description |
|---|---|---|---|
uuid | string | No | Comment identifier |
content | string | No | Comment text |
attachments | array | No | Attached files |
created_by | string | No | Author email |
created_at | string | No | ISO 8601 creation timestamp |
updated_at | string | No | ISO 8601 last-update timestamp |
is_edited | boolean | No | true if updated after creation |
is_deleted | boolean | No | Soft-delete flag |
reactions | array | No | Emoji reaction summaries |
Update a comment
PATCH /issues/{issue_id}/comments/{comment_id}
Request body:
| Field | Required | Type | Description |
|---|---|---|---|
content | Yes | string | Updated comment text |
Delete a comment
DELETE /issues/{issue_id}/comments/{comment_id}
Example request:
List issue files
GET /issues/{issue_id}/files
Returns files associated with an issue (e.g. troubleshooting plans).
Query parameters:
| Parameter | Type | Description |
|---|---|---|
file_type | string | Filter by file type (e.g. troubleshooting_plan) |
| Field | Type | Description |
|---|---|---|
uuid | string | File record identifier |
file_name | string | Display name |
file_type | string | File type (e.g. troubleshooting_plan) |
attachment_id | string | Associated attachment identifier |
created_at | string | ISO 8601 creation timestamp |

