Portfolio Health
Build issue work queues from versioned current-state snapshots
Use GET /teams/issues to read current open issues across accessible teams in
one regional data partition. Use a partner API key for a managed portfolio or
a team API key for that team's scope.
For an interactive partner UI, discover available partitions from
GET /me at partnerContext.managedTeamRegions. Send x-data-region when
reading a partition. The API does not merge multiple regions in one response;
call each advertised regional API base URL independently when the screen needs
the full portfolio.
Pagination and Filters
teamIds: optional comma-separated team UUIDs; omit for all accessible teams.codes: optional comma-separated values from the Issue Catalog.includeEmptyTeams: include teams with no open issues.view=summary|detail:view=detail(default) includes each issue's code-specificcontext;view=summaryomits it.limit: 1 to 100.cursor: opaque value returned by the previous page.
Pass cursors back unchanged. Cursors belong to one region and filter set, so reset them when switching region. Requested teams outside the credential's access scope are not disclosed.
Snapshot Contract
Each team result includes teamId, teamName, snapshotVersion,
computedAt, issues[], and summary counts.
snapshotVersionincreases only when normalized open issue content changes.computedAtalso changes after a no-op reconciliation and indicates freshness.- Issue
idis stable for one team and code. - If a resolved issue later reopens, its ID is reused and version increases.
summary.totalcounts open codes;affectedTotalsums their affected values.
Never parse issue title or message. Branch on code, severity, category, and
context. Use each issue's generated documentationUrl to open its catalog
entry in the public documentation.
Initial Materialization
If any team in the request scope lacks its first materialized snapshot, the
whole request fails with 503 SERVICE_UNAVAILABLE; no partial result is
returned for the teams that do have snapshots. The structured context lists
only the affected teams in pendingTeamIds, with a retryAfterSeconds hint.
A pending team is not silently treated as healthy. To recover, retry the same
request after retryAfterSeconds, or scope teamIds to exclude the pending
teams and read the rest immediately. Alert if materialization remains
unavailable.
UI Pattern
Use summary view for portfolio queues. Fetch detail when a user opens a repair workflow. Keep region identity on every queue row if the UI combines regional responses. Replace current team state after every newer snapshot; do not retain resolved codes.
Exact contract: List team issues.
