# GET /api/usage/reports/dimensional-summary

Get a paged dimensional rollup for a SKU.

E.g. transactions by Processor or Network. Uses continuation-token paging —
high-cardinality dimensions like card BIN or country would otherwise materialize
an unbounded list and spike RU/memory.

**Operation ID:** `GET_api_usage_reports_dimensional-summary`

## Authorization

Requires: Usage.Reports, merchant scope.

Required permissions:
- `Usage.Reports`

## Parameters

| Name | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| SkuCode | query | no | string | The SKU to roll up. |
| DimensionKey | query | no | string | Facet to roll up by (e.g. "Processor", "Network"). |
| Period | query | no | string | Period key (defaults to the current month). |
| ResellerId | query | no | string(uuid) | Reseller scope. |
| MerchantId | query | no | string(uuid) | Optional merchant scope. Null returns the reseller-level rollup. |
| MaxResultCount | query | no | integer(int32) | Maximum rows per page. Clamped server-side to `MaxAllowedPageSize` so a caller  can't force a single unbounded read. |
| ContinuationToken | query | no | string | Opaque cursor from a prior page; null for the first page. |
| IncludeDeleted | query | no | boolean | Not used by this read-only endpoint. |
| IncludeInactive | query | no | boolean | Not used by this read-only endpoint. |
| suppressNulls | query | no | boolean | If true, omit properties with null values. |

## Responses

### 200

OK

**Content type:** `text/plain`

Schema: `PhoenixAbpCoreApplicationContractsContinuationPagedResultDtoOfWinkPGUsageDtosReportingDimensionalUsageDto`

**Content type:** `application/json`

Schema: `PhoenixAbpCoreApplicationContractsContinuationPagedResultDtoOfWinkPGUsageDtosReportingDimensionalUsageDto`

**Content type:** `text/json`

Schema: `PhoenixAbpCoreApplicationContractsContinuationPagedResultDtoOfWinkPGUsageDtosReportingDimensionalUsageDto`

### 403

Forbidden

**Content type:** `text/plain`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `application/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `text/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

### 401

Unauthorized

**Content type:** `text/plain`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `application/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `text/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

### 400

Bad Request

**Content type:** `text/plain`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `application/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `text/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

### 404

Not Found

**Content type:** `text/plain`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `application/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `text/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

### 501

Not Implemented

**Content type:** `text/plain`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `application/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `text/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

### 500

Internal Server Error

**Content type:** `text/plain`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `application/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `text/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

### default

The request failed. The body carries the standard error envelope: a machine-readable `error.code`, a human-readable `error.message`, and `error.validationErrors` when the failure was a validation rejection. See the error-code reference in this document's description for the values `error.code` can take.

**Content type:** `application/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

## See also

- [All documentation](https://docs.winkpg.io/llms.txt): the machine-readable index of every public page on this site.
