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 accepted smart tags 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 smart tags. 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 — Smart Tags 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.