Issues and health
Read authorized issues, inspect workload health, and request fresh checks.
Issues combine deployment problems, incidents, domain failures, component health, and update advisories. Results are filtered to resources the caller can see.
List issues
const result = await ship.issues.list({ status: "open" });
console.log(result.issues, result.counts);curl "$OPENSHIP_URL/api/issues?status=open" \
-H "Authorization: Bearer $OPENSHIP_TOKEN"status is open or resolved. The result contains issues, counts, and the selected status.
Each issue includes its severity, source, target, message, and any supported resolution action.
Counts are grouped as outage, actionRequired, advisory, and total.
Clear resolved history
Desktop and self-hosted organization owners/admins can call ship.issues.clearHistory()
(or DELETE /api/issues/history). The response is { deleted: number }. This permanently
removes resolved incidents in the current organization, including history beyond the feed
limit. Active incidents, later recoveries, other organizations, audit logs and notifications
remain. The list response exposes canClearHistory for the current caller; read-only and
restricted credentials cannot use this operation. The dashboard requires confirmation,
and openship monitoring clear-history --yes exposes the same operation from the CLI.
Inspect workload health
const health = await ship.issues.health();
console.log(health.workloads, health.currentScan);curl "$OPENSHIP_URL/api/issues/health" \
-H "Authorization: Bearer $OPENSHIP_TOKEN"The health snapshot includes workload observations, scan timing, and watcher capabilities. It does not
start a continuous watcher. scanHealth() requests a fresh one-time check where the host supports it;
it refreshes snapshots without opening or resolving incidents. Native scheduling remains disabled
unless explicitly configured.
Refresh issue sources
rescan() starts the broader rescan pipeline on self-hosted instances and requires an instance
administrator with job-write access. rescanStatus() reads the latest scan's stage statuses, summaries,
and failures. A completed stage can still report gaps such as unreachable servers or an offline desktop.
Use rescan({ healthOnly: true }) to run the existing container/server health watcher and reconcile
incidents without component updates or domain reconciliation. The REST equivalent accepts
{"healthOnly":true} in the body of POST /api/issues/rescan. Omitting the input keeps the full rescan
behavior. If a scan is already running, the request returns that existing session; follow its progress
with rescanStatus().
A disconnected desktop cannot establish remote server health. The Monitoring page requests a fresh health check on desktop reconnection, and an unreachable-server incident resolves only after the daemon answers successfully.
Operations
| Operation | SDK | REST API |
|---|---|---|
| Read visible active or resolved issues and their suggested actions. | issues.list(input?) | GET /api/issuesproject:list |
| Read issue counts by severity. | issues.summary() | GET /api/issues/summaryproject:list |
| Read cached workload health snapshots. | issues.health() | GET /api/issues/healthproject:list |
| Refresh current workload health without enabling the scheduler. | issues.scanHealth() | POST /api/issues/health/scanproject:list |
| Run applicable issue checkers, or only container/server health. | issues.rescan(input?) | POST /api/issues/rescanjob:write · Self-hosted |
| Read the status of an issue rescan. | issues.rescanStatus() | GET /api/issues/rescan/statusjob:read · Self-hosted |
| Permanently clear resolved incident history in the current organization; preserves active incidents and later recoveries. Owner/admin only. | issues.clearHistory() | DELETE /api/issues/historyproject:admin · Self-hosted |