Documentation

Showback (Cost Attribution)

Showback is the practice of slicing your total cloud bill by the organizational unit that incurred it — by team, by tag, or by both. ZopNight computes showback from the same daily billing rollup that powers Reports, so team and tag totals always reconcile to the org-wide total.

No separate database

Showback is not a separate aggregation. It's the same daily cost records sliced by different dimensions, with auto-tag predictions layered in for resources whose owners haven't tagged them yet.

By Team

Team attribution is derived from resource-team assignments. A resource that's not assigned to any team rolls up under Unassigned in the team report.

GET
/reports/teams

List cost per team for the selected period.

Responsejson
{
  "data": [
    {
      "teamID": "team_001",
      "teamName": "Platform",
      "costUSD": 4200.50,
      "resourceCount": 42,
      "percentOfTotal": 33.7
    },
    {
      "teamID": null,
      "teamName": "Unassigned",
      "costUSD": 312.00,
      "resourceCount": 14,
      "percentOfTotal": 2.5
    }
  ]
}
GET
/reports/teams/{teamID}

Per-team breakdown by provider and resource type.

GET
/reports/teams/{teamID}/resources

Per-resource cost for a team — used for the drilldown table.

GET
/reports/teams/trends

Daily / weekly / monthly trend series for all teams.

Team anomaly dots

When cost anomaly detection finds a spike attributed to a specific team, the showback trend chart displays a pulsing severity-coloured dot on the affected day. Clicking the dot opens the anomaly detail panel with root cause analysis and affected resources. The team detector filters out cross-team redistribution (resource retagging) so only genuine cost growth triggers anomalies.

By Tag

Tag attribution covers cloud-native tags (AWS tags, GCP labels, Azure tags) plus accepted auto-tag predictions. Each report endpoint returns tag coverage so you know how much of the total is fully attributed vs. attributed to Unknown.

GET
/reports/tags

List tag keys with attributed cost. Used to build the tag-key picker.

Responsejson
{
  "data": [
    {
      "tagKey": "Environment",
      "coverage": { "tagged": 128, "untagged": 18 },
      "costUSD": 12450.50
    },
    {
      "tagKey": "Team",
      "coverage": { "tagged": 110, "untagged": 36 },
      "costUSD": 12450.50
    }
  ]
}
GET
/reports/tags/{tagKey}

List tag values for a key with their attributed cost.

GET
/reports/tags/{tagKey}/values/{tagValue}/resources

List resources carrying a given tag value with their per-resource cost.

GET
/reports/tags/trends

Daily / weekly / monthly trend series filtered by tag key, value, provider, or type.

Coverage & Reconciliation

  • Tagged vs. untagged. The coverage field on tag responses surfaces how many of the period's resources carry the key. Low coverage usually means the tag is inconsistent across accounts — Auto-Tagging can close the gap.
  • Reconcile to org total. Sum across all teams (or across all values for a given tag key) always equals the org's total cost for the period. If they don't, that's a bug — file it.
  • Time alignment. Showback uses the same calendar month boundaries as billing exports — not deploy-day or your fiscal calendar. For fiscal-month views, export and re-aggregate downstream.

For exports of these reports as CSV/JSON, use the POST /reports/export endpoint documented in Reports & Analytics.