VRPlatformVRPlatform
Run in Production

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-specific context; view=summary omits 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.

  • snapshotVersion increases only when normalized open issue content changes.
  • computedAt also changes after a no-op reconciliation and indicates freshness.
  • Issue id is stable for one team and code.
  • If a resolved issue later reopens, its ID is reused and version increases.
  • summary.total counts open codes; affectedTotal sums 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.

On this page