Skip to main content
An issue is a problem Atlas has identified — a failure, anomaly, root cause, or action item — with status, priority, and links back to the data it came from. Issues can be created manually or generated automatically by a job run. See Generating an Issue for a workflow guide.

Endpoints

MethodPathDescription
POST/issuesCreate an issue
GET/issuesList issues
GET/issues/metricsGet 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}/commentsList comments on an issue
POST/issues/{issue_id}/commentsAdd 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}/filesList files attached to an issue

Create an issue

POST /issues Request body:
FieldRequiredTypeDescription
titleYesstringShort description of the finding
descriptionYesarrayStructured content blocks. Pass [] for an empty description
statusNostringopen (default), in_progress, resolved, rejected
priorityNostringlow (default), medium, high
tagsNoarray of stringLabels for categorization
ownerNostringAssigned owner. Defaults to "Unassigned"
resolution_summaryNostringSummary of how the issue was resolved
attachment_idsNoarray of stringUUIDs of attachments to associate
session_idsNoarray of stringUUIDs of sessions to associate
Example request:
curl -X POST "https://spacex.atlas.arenaphysica.com/api/v1/issues" \
  -H "Authorization: Bearer $ATLAS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Power rail undervoltage at startup",
    "description": [],
    "status": "open",
    "priority": "high",
    "tags": ["power", "startup"]
  }'
Response fields:
FieldTypeNullableDescription
uuidstringNoIssue identifier
titlestringNoIssue title
descriptionarrayNoStructured content blocks
statusstringYesCurrent status
prioritystringYesPriority level
tagsarrayNoLabels
ownerstringNoAssigned owner
resolution_summarystringYesResolution notes
created_bystringNoCreator (email or "Atlas" for auto-generated)
created_atstringNoISO 8601 creation timestamp
sessionsarrayNoAssociated sessions
attachmentsarrayNoDirectly attached files
session_attachmentsarrayNoFiles from associated sessions
job_run_idstringYesJob run that generated this issue
Example response:
{
  "uuid": "b8c9d0e1-f2a3-4567-bcde-678901234567",
  "title": "Power rail undervoltage at startup",
  "description": [],
  "status": "open",
  "priority": "high",
  "tags": ["power", "startup"],
  "owner": "Unassigned",
  "resolution_summary": null,
  "created_by": "engineer@example.com",
  "created_at": "2026-04-13T10:30:00.000000",
  "sessions": [],
  "attachments": [],
  "session_attachments": [],
  "job_run_id": null
}

List issues

GET /issues Query parameters:
ParameterTypeDescription
statusstring (repeatable)Filter by status: open, in_progress, resolved, rejected. Pass multiple times to match any
prioritystring (repeatable)Filter by priority: low, medium, high. Pass multiple times to match any
limitintegerDefault 100, max 1000
offsetintegerDefault 0
Example request:
curl "https://spacex.atlas.arenaphysica.com/api/v1/issues?status=open&priority=high" \
  -H "Authorization: Bearer $ATLAS_TOKEN"
Returns {"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:
curl "https://spacex.atlas.arenaphysica.com/api/v1/issues/$ISSUE_ID" \
  -H "Authorization: Bearer $ATLAS_TOKEN"
Returns a single issue object with the same fields as the create response.

Update an issue

PATCH /issues/{issue_id} All fields are optional. Only provided fields are updated.
FieldTypeDescription
titlestringUpdated title
statusstringopen, in_progress, resolved, rejected
prioritystringlow, medium, high
tagsarray of stringReplaces existing tags
ownerstringAssigned owner
resolution_summarystringResolution notes
Example request:
curl -X PATCH "https://spacex.atlas.arenaphysica.com/api/v1/issues/$ISSUE_ID" \
  -H "Authorization: Bearer $ATLAS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"status": "in_progress", "owner": "engineer@example.com"}'
Returns the updated issue object with the same fields as the create response.

Delete an issue

DELETE /issues/{issue_id} Example request:
curl -X DELETE "https://spacex.atlas.arenaphysica.com/api/v1/issues/$ISSUE_ID" \
  -H "Authorization: Bearer $ATLAS_TOKEN"
Returns 204 No Content.

Get metrics

GET /issues/metrics Returns aggregate issue counts broken down by status, rendered as chart-ready data. Example request:
curl "https://spacex.atlas.arenaphysica.com/api/v1/issues/metrics" \
  -H "Authorization: Bearer $ATLAS_TOKEN"
Response fields:
FieldTypeDescription
metricsarrayList of chart objects
Each chart object:
FieldTypeDescription
chart_typestringpie_chart or mixed_chart
chart_dataobjectChart-specific data payload
Pie chart chart_data:
FieldTypeDescription
titlestringChart title
dataarrayList of {label, value, color} objects
colorsobjectColor overrides (nullable)
display_configobjectDisplay options (nullable)
Example response:
{
  "metrics": [
    {
      "chart_type": "pie_chart",
      "chart_data": {
        "title": "Active Issues",
        "data": [
          {"label": "high", "value": 5, "color": null},
          {"label": "medium", "value": 3, "color": null},
          {"label": "low", "value": 1, "color": null}
        ],
        "colors": null,
        "display_config": null
      }
    }
  ]
}

List comments

GET /issues/{issue_id}/comments Query parameters:
ParameterTypeDescription
limitintegerDefault 50, max 1000
offsetintegerDefault 0
Example request:
curl "https://spacex.atlas.arenaphysica.com/api/v1/issues/$ISSUE_ID/comments" \
  -H "Authorization: Bearer $ATLAS_TOKEN"
Returns {"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:
FieldRequiredTypeDescription
contentYesstringComment text (1–10,000 characters)
attachment_idsNoarray of stringUp to 10 attachment UUIDs
Example request:
curl -X POST "https://spacex.atlas.arenaphysica.com/api/v1/issues/$ISSUE_ID/comments" \
  -H "Authorization: Bearer $ATLAS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"content": "Reproduced on bench. Voltage sag starts at C12. Isolating now."}'
Response fields:
FieldTypeNullableDescription
uuidstringNoComment identifier
contentstringNoComment text
attachmentsarrayNoAttached files
created_bystringNoAuthor email
created_atstringNoISO 8601 creation timestamp
updated_atstringNoISO 8601 last-update timestamp
is_editedbooleanNotrue if updated after creation
is_deletedbooleanNoSoft-delete flag
reactionsarrayNoEmoji reaction summaries
Example response:
{
  "uuid": "e1f2a3b4-c5d6-7890-efab-901234567890",
  "content": "Reproduced on bench. Voltage sag starts at C12. Isolating now.",
  "attachments": [],
  "created_by": "engineer@example.com",
  "created_at": "2026-04-13T10:32:00.000000",
  "updated_at": "2026-04-13T10:32:00.000000",
  "is_edited": false,
  "is_deleted": false,
  "reactions": []
}

Update a comment

PATCH /issues/{issue_id}/comments/{comment_id} Request body:
FieldRequiredTypeDescription
contentYesstringUpdated comment text
Example request:
curl -X PATCH "https://spacex.atlas.arenaphysica.com/api/v1/issues/$ISSUE_ID/comments/$COMMENT_ID" \
  -H "Authorization: Bearer $ATLAS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"content": "Confirmed C12 is root cause. Ordering replacement."}'
Returns the updated comment object with the same fields as the create comment response.

Delete a comment

DELETE /issues/{issue_id}/comments/{comment_id} Example request:
curl -X DELETE "https://spacex.atlas.arenaphysica.com/api/v1/issues/$ISSUE_ID/comments/$COMMENT_ID" \
  -H "Authorization: Bearer $ATLAS_TOKEN"
Returns 204 No Content.

List issue files

GET /issues/{issue_id}/files Returns files associated with an issue (e.g. troubleshooting plans). Query parameters:
ParameterTypeDescription
file_typestringFilter by file type (e.g. troubleshooting_plan)
Example request:
curl "https://spacex.atlas.arenaphysica.com/api/v1/issues/$ISSUE_ID/files" \
  -H "Authorization: Bearer $ATLAS_TOKEN"
Response fields (array):
FieldTypeDescription
uuidstringFile record identifier
file_namestringDisplay name
file_typestringFile type (e.g. troubleshooting_plan)
attachment_idstringAssociated attachment identifier
created_atstringISO 8601 creation timestamp
Example response:
[
  {
    "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "file_name": "troubleshooting_plan.md",
    "file_type": "troubleshooting_plan",
    "attachment_id": "f2a3b4c5-d6e7-8901-fabc-012345678901",
    "created_at": "2026-04-13T10:35:00.000000"
  }
]