RunWhen issues API
The issues API from RunWhen — 14 operation(s) for issues.
The issues API from RunWhen — 14 operation(s) for issues.
openapi: 3.1.0
info:
title: papi alert-query-proxy issues API
description: RunWhen Platform API
version: 2.0.0
tags:
- name: issues
paths:
/api/v1/workspaces/{workspace_name}/issues:
get:
tags:
- issues
summary: List issues for a workspace
description: 'List issues for a workspace with optional filters.
Supports Django-compatible query parameters for filtering and pagination.'
operationId: list_workspace_issues_api_v1_workspaces__workspace_name__issues_get
parameters:
- name: workspace_name
in: path
required: true
schema:
type: string
title: Workspace Name
- name: severity
in: query
required: false
schema:
anyOf:
- type: array
items:
type: string
- type: 'null'
description: Filter by severity (1-4 or SEV1-SEV4, repeatable)
title: Severity
description: Filter by severity (1-4 or SEV1-SEV4, repeatable)
- name: severity__in
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter by severity (comma-sep, e.g. 1,2,3)
title: Severity In
description: Filter by severity (comma-sep, e.g. 1,2,3)
- name: severity__gte
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Filter: severity >= value'
title: Severity Gte
description: 'Filter: severity >= value'
- name: severity__lte
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Filter: severity <= value'
title: Severity Lte
description: 'Filter: severity <= value'
- name: closed
in: query
required: false
schema:
anyOf:
- type: boolean
- type: 'null'
description: Filter by closed status - true for closed, false for open
title: Closed
description: Filter by closed status - true for closed, false for open
- name: search
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Search in title, task_title, and slx_name
title: Search
description: Search in title, task_title, and slx_name
- name: task_title
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Exact match filter on issue.task_title. Use together with slx_name to narrow to all issues belonging to one task within an SLX without scanning the full SLX issue set on the client.
title: Task Title
description: Exact match filter on issue.task_title. Use together with slx_name to narrow to all issues belonging to one task within an SLX without scanning the full SLX issue set on the client.
- name: latest_occurrence_at__gte
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Filter: latest_occurrence_at >= ISO datetime'
title: Latest Occurrence At Gte
description: 'Filter: latest_occurrence_at >= ISO datetime'
- name: modified__gte
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Filter: modified_at >= ISO datetime'
title: Modified Gte
description: 'Filter: modified_at >= ISO datetime'
- name: modified__lte
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Filter: modified_at <= ISO datetime'
title: Modified Lte
description: 'Filter: modified_at <= ISO datetime'
- name: created__gte
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Filter: created_at >= ISO datetime'
title: Created Gte
description: 'Filter: created_at >= ISO datetime'
- name: created__lte
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Filter: created_at <= ISO datetime'
title: Created Lte
description: 'Filter: created_at <= ISO datetime'
- name: open_since__gte
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Filter: open_since >= ISO datetime'
title: Open Since Gte
description: 'Filter: open_since >= ISO datetime'
- name: open_since__lte
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Filter: open_since <= ISO datetime'
title: Open Since Lte
description: 'Filter: open_since <= ISO datetime'
- name: open_occurrence_count__gte
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Filter: open_occurrence_count >= value'
title: Open Occurrence Count Gte
description: 'Filter: open_occurrence_count >= value'
- name: open_occurrence_count__lte
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Filter: open_occurrence_count <= value'
title: Open Occurrence Count Lte
description: 'Filter: open_occurrence_count <= value'
- name: total_occurrence_count__gte
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Filter: total_occurrence_count >= value'
title: Total Occurrence Count Gte
description: 'Filter: total_occurrence_count >= value'
- name: total_occurrence_count__lte
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Filter: total_occurrence_count <= value'
title: Total Occurrence Count Lte
description: 'Filter: total_occurrence_count <= value'
- name: details
in: query
required: false
schema:
type: boolean
description: Include heavy fields from latest occurrence
default: false
title: Details
description: Include heavy fields from latest occurrence
- name: limit
in: query
required: false
schema:
type: integer
maximum: 250
minimum: 1
description: Maximum number of results
default: 100
title: Limit
description: Maximum number of results
- name: offset
in: query
required: false
schema:
type: integer
minimum: 0
description: Number of results to skip
default: 0
title: Offset
description: Number of results to skip
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/IssueListResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- BearerAuth: []
/api/v1/workspaces/{workspace_name}/issues/{issue_id}:
get:
tags:
- issues
summary: Get an issue by ID
description: "Get an issue by ID within a workspace.\n\nSupports optional occurrence timestamp slicing via query parameters.\n\nArgs:\n workspace_name: The workspace name.\n issue_id: The issue ID.\n include_occurrence_timestamps: Opt-in for occurrence timestamps.\n occurrence_tail: Return N most recent occurrences.\n occurrence_from: Slice from position (1=latest).\n occurrence_to: Slice to position (1=latest).\n occurrence_window_gte: Filter occurrences observed_at >= this datetime.\n occurrence_window_lte: Filter occurrences observed_at <= this datetime.\n session: Database session.\n current_user: The authenticated user.\n\nReturns:\n The issue details.\n\nRaises:\n HTTPException: 404 if workspace or issue not found."
operationId: get_workspace_issue_api_v1_workspaces__workspace_name__issues__issue_id__get
parameters:
- name: workspace_name
in: path
required: true
schema:
type: string
title: Workspace Name
- name: issue_id
in: path
required: true
schema:
type: integer
title: Issue Id
- name: include_occurrence_timestamps
in: query
required: false
schema:
type: boolean
description: Include occurrence timestamps
default: false
title: Include Occurrence Timestamps
description: Include occurrence timestamps
- name: occurrence_tail
in: query
required: false
schema:
anyOf:
- type: integer
minimum: 1
- type: 'null'
description: Return N most recent occurrences
title: Occurrence Tail
description: Return N most recent occurrences
- name: occurrence_from
in: query
required: false
schema:
anyOf:
- type: integer
minimum: 1
- type: 'null'
description: Slice from (1=latest, inclusive)
title: Occurrence From
description: Slice from (1=latest, inclusive)
- name: occurrence_to
in: query
required: false
schema:
anyOf:
- type: integer
minimum: 1
- type: 'null'
description: Slice to (1=latest, inclusive)
title: Occurrence To
description: Slice to (1=latest, inclusive)
- name: occurrence_window_gte
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Window filter: observed_at >= ISO datetime'
title: Occurrence Window Gte
description: 'Window filter: observed_at >= ISO datetime'
- name: occurrence_window_lte
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Window filter: observed_at <= ISO datetime'
title: Occurrence Window Lte
description: 'Window filter: observed_at <= ISO datetime'
- name: occurrence_fields
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated occurrence fields to include (e.g. observed_at)
title: Occurrence Fields
description: Comma-separated occurrence fields to include (e.g. observed_at)
- name: occurrence_order
in: query
required: false
schema:
type: string
description: 'Sort order for occurrences: asc or desc (default desc)'
default: desc
title: Occurrence Order
description: 'Sort order for occurrences: asc or desc (default desc)'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/IssueResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- BearerAuth: []
patch:
tags:
- issues
summary: Update an issue
description: "Update an issue (partial update).\n\nArgs:\n workspace_name: The workspace name.\n issue_id: The issue ID.\n issue_data: The issue update data.\n session: Database session.\n current_user: The authenticated user.\n\nReturns:\n The updated issue.\n\nRaises:\n HTTPException: 404 if workspace or issue not found."
operationId: update_workspace_issue_api_v1_workspaces__workspace_name__issues__issue_id__patch
parameters:
- name: workspace_name
in: path
required: true
schema:
type: string
title: Workspace Name
- name: issue_id
in: path
required: true
schema:
type: integer
title: Issue Id
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/IssueUpdate'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/IssueResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- BearerAuth: []
delete:
tags:
- issues
summary: Delete an issue
description: "Delete an issue.\n\nArgs:\n workspace_name: The workspace name.\n issue_id: The issue ID.\n session: Database session.\n current_user: The authenticated user.\n\nRaises:\n HTTPException: 404 if workspace or issue not found."
operationId: delete_workspace_issue_api_v1_workspaces__workspace_name__issues__issue_id__delete
parameters:
- name: workspace_name
in: path
required: true
schema:
type: string
title: Workspace Name
- name: issue_id
in: path
required: true
schema:
type: integer
title: Issue Id
responses:
'204':
description: Successful Response
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- BearerAuth: []
/api/v1/workspaces/{workspace_name}/issues/{issue_id}/ignore:
patch:
tags:
- issues
summary: Ignore an issue
description: "Ignore an issue.\n\nSets ignored_by_user, ignored_since, and ignored_until.\nAlso resets open_since and open_occurrence_count to close the issue.\n\nArgs:\n workspace_name: The workspace name.\n issue_id: The issue ID.\n ignore_data: The ignore request data with required ignored_until.\n session: Database session.\n current_user: The authenticated user.\n\nReturns:\n The ignored issue.\n\nRaises:\n HTTPException: 404 if workspace or issue not found."
operationId: ignore_workspace_issue_api_v1_workspaces__workspace_name__issues__issue_id__ignore_patch
parameters:
- name: workspace_name
in: path
required: true
schema:
type: string
title: Workspace Name
- name: issue_id
in: path
required: true
schema:
type: integer
title: Issue Id
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/IssueIgnoreRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/IssueResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- BearerAuth: []
/api/v1/workspaces/{workspace_name}/issues/{issue_id}/close:
patch:
tags:
- issues
summary: Close an issue
description: "Close an issue, optionally with a comment.\n\nSets the issue's closed_at timestamp and resets open_since\nand open_occurrence_count to 0.\n\nArgs:\n workspace_name: The workspace name.\n issue_id: The issue ID.\n body: Optional request body with a comment.\n session: Database session.\n current_user: The authenticated user.\n\nReturns:\n The closed issue.\n\nRaises:\n HTTPException: 404 if workspace or issue not found."
operationId: close_workspace_issue_api_v1_workspaces__workspace_name__issues__issue_id__close_patch
parameters:
- name: workspace_name
in: path
required: true
schema:
type: string
title: Workspace Name
- name: issue_id
in: path
required: true
schema:
type: integer
title: Issue Id
requestBody:
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/IssueCloseRequest'
- type: 'null'
title: Body
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/IssueResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- BearerAuth: []
/api/v1/workspaces/{workspace_name}/issues/{issue_id}/generate-next-steps:
post:
tags:
- issues
summary: Generate next steps for an issue using AI
description: "Generate intelligent next steps for an issue using sobrain AI service.\n\nThis endpoint calls the sobrain service to generate suggested next steps\nbased on the issue details and optional comment context.\n\nArgs:\n workspace_name: The workspace name.\n issue_id: The issue ID.\n request_data: Optional request data with comment contents.\n session: Database session.\n current_user: The authenticated user.\n sobrain: Sobrain client for AI features.\n\nReturns:\n Generated next steps for the issue.\n\nRaises:\n HTTPException: 404 if workspace or issue not found.\n HTTPException: 503 if sobrain service is unavailable."
operationId: generate_issue_next_steps_api_v1_workspaces__workspace_name__issues__issue_id__generate_next_steps_post
parameters:
- name: workspace_name
in: path
required: true
schema:
type: string
title: Workspace Name
- name: issue_id
in: path
required: true
schema:
type: integer
title: Issue Id
requestBody:
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/GenerateNextStepsRequest'
- type: 'null'
title: Request Data
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/GenerateNextStepsResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- BearerAuth: []
/api/v1/workspaces/{workspace_name}/issues/{issue_id}/generate-summary:
post:
tags:
- issues
summary: Generate a summary for an issue using AI
description: "Generate a summary for an issue using sobrain AI service.\n\nArgs:\n workspace_name: The workspace name.\n issue_id: The issue ID.\n session: Database session.\n current_user: The authenticated user.\n sobrain: Sobrain client for AI features.\n\nReturns:\n Generated summary for the issue.\n\nRaises:\n HTTPException: 404 if workspace or issue not found.\n HTTPException: 503 if sobrain service is unavailable."
operationId: generate_issue_summary_api_v1_workspaces__workspace_name__issues__issue_id__generate_summary_post
parameters:
- name: workspace_name
in: path
required: true
schema:
type: string
title: Workspace Name
- name: issue_id
in: path
required: true
schema:
type: integer
title: Issue Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/GenerateSummaryResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- BearerAuth: []
/api/v1/workspaces/{workspace_name}/runsessions/{runsession_id}/issues/{issue_id}/jit-summary:
post:
tags:
- issues
summary: Generate a just-in-time summary for an issue occurrence in a run session
description: 'Generate a JIT summary for an issue within a specific run session context.
Finds the latest occurrence of the issue, looks up the RunSessionIssueMap
entry for the given run session, builds a payload, and calls Sobrain to
generate a summary. Stores the summary in the occurrence''s additional_context.'
operationId: jit_summary_api_v1_workspaces__workspace_name__runsessions__runsession_id__issues__issue_id__jit_summary_post
parameters:
- name: workspace_name
in: path
required: true
schema:
type: string
title: Workspace Name
- name: runsession_id
in: path
required: true
schema:
type: integer
title: Runsession Id
- name: issue_id
in: path
required: true
schema:
type: integer
title: Issue Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/JitSummaryResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- BearerAuth: []
/api/v3/workspaces/{workspace_name}/issues:
get:
tags:
- issues
summary: List issues for a workspace
description: 'List issues for a workspace with optional filters.
Supports Django-compatible query parameters for filtering and pagination.'
operationId: list_workspace_issues_api_v3_workspaces__workspace_name__issues_get
parameters:
- name: workspace_name
in: path
required: true
schema:
type: string
title: Workspace Name
- name: severity
in: query
required: false
schema:
anyOf:
- type: array
items:
type: string
- type: 'null'
description: Filter by severity (1-4 or SEV1-SEV4, repeatable)
title: Severity
description: Filter by severity (1-4 or SEV1-SEV4, repeatable)
- name: severity__in
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter by severity (comma-sep, e.g. 1,2,3)
title: Severity In
description: Filter by severity (comma-sep, e.g. 1,2,3)
- name: severity__gte
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Filter: severity >= value'
title: Severity Gte
description: 'Filter: severity >= value'
- name: severity__lte
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Filter: severity <= value'
title: Severity Lte
description: 'Filter: severity <= value'
- name: closed
in: query
required: false
schema:
anyOf:
- type: boolean
- type: 'null'
description: Filter by closed status - true for closed, false for open
title: Closed
description: Filter by closed status - true for closed, false for open
- name: search
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Search in title, task_title, and slx_name
title: Search
description: Search in title, task_title, and slx_name
- name: task_title
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Exact match filter on issue.task_title. Use together with slx_name to narrow to all issues belonging to one task within an SLX without scanning the full SLX issue set on the client.
title: Task Title
description: Exact match filter on issue.task_title. Use together with slx_name to narrow to all issues belonging to one task within an SLX without scanning the full SLX issue set on the client.
- name: latest_occurrence_at__gte
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Filter: latest_occurrence_at >= ISO datetime'
title: Latest Occurrence At Gte
description: 'Filter: latest_occurrence_at >= ISO datetime'
- name: modified__gte
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Filter: modified_at >= ISO datetime'
title: Modified Gte
description: 'Filter: modified_at >= ISO datetime'
- name: modified__lte
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Filter: modified_at <= ISO datetime'
title: Modified Lte
description: 'Filter: modified_at <= ISO datetime'
- name: created__gte
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Filter: created_at >= ISO datetime'
title: Created Gte
description: 'Filter: created_at >= ISO datetime'
- name: created__lte
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Filter: created_at <= ISO datetime'
title: Created Lte
description: 'Filter: created_at <= ISO datetime'
- name: open_since__gte
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Filter: open_since >= ISO datetime'
title: Open Since Gte
description: 'Filter: open_since >= ISO datetime'
- name: open_since__lte
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Filter: open_since <= ISO datetime'
title: Open Since Lte
description: 'Filter: open_since <= ISO datetime'
- name: open_occurrence_count__gte
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Filter: open_occurrence_count >= value'
title: Open Occurrence Count Gte
description: 'Filter: open_occurrence_count >= value'
- name: open_occurrence_count__lte
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Filter: open_occurrence_count <= value'
title: Open Occurrence Count Lte
description: 'Filter: open_occurrence_count <= value'
- name: total_occurrence_count__gte
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Filter: total_occurrence_count >= value'
title: Total Occurrence Count Gte
description: 'Filter: total_occurrence_count >= value'
- name: total_occurrence_count__lte
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Filter: total_occurrence_count <= value'
title: Total Occurrence Count Lte
description: 'Filter: total_occurrence_count <= value'
- name: details
in: query
required: false
schema:
type: boolean
description: Include heavy fields from latest occurrence
default: false
title: Details
description: Include heavy fields from latest occurrence
- name: limit
in: query
required: false
schema:
type: integer
maximum: 250
minimum: 1
description: Maximum number of results
default: 100
title: Limit
description: Maximum number of results
- name: offset
in: query
required: false
schema:
type: integer
minimum: 0
description: Number of results to skip
default: 0
title: Offset
description: Number of results to skip
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/IssueListResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- BearerAuth: []
/api/v3/workspaces/{workspace_name}/issues/{issue_id}:
get:
tags:
- issues
summary: Get an issue by ID
description: "Get an issue by ID within a workspace.\n\nSupports optional occurrence timestamp slicing via query parameters.\n\nArgs:\n workspace_name: The workspace name.\n issue_id: The issue ID.\n include_occurrence_timestamps: Opt-in for occurrence timestamps.\n occurrence_tail: Return N most recent occurrences.\n occurrence_from: Slice from position (1=latest).\n occurrence_to: Slice to position (1=latest).\n occurrence_window_gte: Filter occurrences observed_at >= this datetime.\n occurrence_window_lte: Filter occurrences observed_at <= this datetime.\n session: Database session.\n current_user: The authenticated user.\n\nReturns:\n The issue details.\n\nRaises:\n HTTPException: 404 if workspace or issue not found."
operationId: get_workspace_issue_api_v3_workspaces__workspace_name__issues__issue_id__get
parameters:
- name: workspace_name
in: path
required: true
schema:
type: string
title: Workspace Name
- name: issue_id
in: path
required: true
schema:
type: integer
title: Issue Id
- name: include_occurrence_timestamps
in: query
required: false
schema:
type: boolean
description: Include occurrence timestamps
default: false
title: Include Occurrence Timestamps
description: Include occurrence timestamps
- name: occurrence_tail
in: query
required: false
schema:
anyOf:
- type: integer
minimum: 1
- type: 'null'
description: Return N most recent occurrences
title: Occurrence Tail
description: Return N most recent occurrences
- name: occurrence_from
in: query
required: false
schema:
anyOf:
- type: integer
# --- truncated at 32 KB (55 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/runwhen/refs/heads/main/openapi/runwhen-issues-api-openapi.yml