Returns one layout of a report, including its output columns and filters.
Purpose: Read the exact filters, defaults and allowed values of the layout you will run, so you can build a valid run request.
When to use: When you run one known layout and need its current filters, defaults and allowed values to build or validate the run request.
Notes:
- The layout must belong to the report in the path; otherwise the response is
404.
| Parameter | In | Type | Required | Default | Description |
|---|---|---|---|---|---|
reportId | path | integer | Yes | Identifier of the report. | |
layoutId | path | integer | Yes | Identifier of the layout. | |
Accept-Language | header | string | No | Optional language for translated report names, labels and filter options, for example en or ja. Defaults to the user's profile language. | |
Zuora-Track-Id | header | string | No | Optional correlation identifier (up to 64 characters) that you choose. The Zuora One gateway records it; quote it to Zuora Support when you report a problem. | |
Authorization | header | string | Yes | Bearer <access_token> (Zuora OneID OAuth). |
Request body: none.
| HTTP status | Content type | Response schema |
|---|---|---|
200 | application/json | ReportLayout |
400 | application/json | SpringError |
401 | application/json | GatewayError |
403 | application/json | GatewayError |
404 | none | No body |
429 | application/json | GatewayError |
500 | application/json | ServiceError |
ReportLayout: A saved layout of a report: the columns to output, the filters with their defaults, and the output file-name prefix. A report can have many layouts.
| Field | Type | Required | Description |
|---|---|---|---|
id | integer | No | Unique identifier of the layout. Send it as layoutId when you run the report. |
reportId | integer | No | Identifier of the report the layout belongs to. |
name | string | No | Layout name. |
description | string | No | Layout description. |
filenamePrefix | string | No | Prefix used for the generated output file name. |
createdBy | string | No | User name that created the layout. |
createdAt | string (date-time) | No | Creation date and time, formatted yyyy-MM-dd'T'HH:mm:ss. |
updatedBy | string | No | User name that last changed the layout. |
updatedAt | string (date-time) | No | Last change date and time, formatted yyyy-MM-dd'T'HH:mm:ss. |
fields | array of LayoutField | No | Output columns of the layout, in output order. |
fields[].id | integer | No | Unique identifier of this column assignment within the layout. |
fields[].layoutId | integer | No | Identifier of the layout the column belongs to. |
fields[].fieldId | integer | No | Identifier of the underlying report field (column definition). |
fields[].seq | integer | No | Position of the column in the output file. Lower numbers appear further left. |
fields[].sortSeq | integer | No | Sort priority of the column. null when the layout does not sort by this column. |
fields[].fieldName | string | No | Technical field name in lowerCamelCase. Use this value as fieldName when you filter a report run. |
fields[].fieldLabel | string | No | Column heading shown in the output file, translated to the caller's language when a translation exists. |
fields[].fieldType | string | No | Database data type of the column, for example VARCHAR2, NUMBER, DATE or DATE_TIME. |
filters | array of LayoutFilter | No | Filters defined on the layout, with required flags and allowed values. |
filters[].id | integer | No | Unique identifier of the filter definition. |
filters[].layoutId | integer | No | Identifier of the layout the filter belongs to. |
filters[].fieldId | integer | No | Identifier of the report field the filter applies to. |
filters[].fieldName | string | No | Technical field name in lowerCamelCase. Send this as fieldName in a run request to override the filter. |
filters[].fieldLabel | string | No | Display label of the filter, translated when a translation exists. |
filters[].fieldType | string | No | Database data type of the filtered field, for example VARCHAR2, NUMBER, DATE or DATE_TIME. |
filters[].type | string | No | How the filter is presented and evaluated, for example LOV (pick from a list), RANGE (from/to) or EQUALS (single value). |
filters[].valueFrom | string | No | Saved default value, or the lower bound of a range filter. |
filters[].valueTo | string | No | Saved upper bound of a range filter. null for single-value filters. |
filters[].createdBy | string | No | User name that created the filter. |
filters[].createdAt | string (date-time) | No | Creation date and time, formatted yyyy-MM-dd'T'HH:mm:ss. |
filters[].updatedBy | string | No | User name that last changed the filter. |
filters[].updatedAt | string (date-time) | No | Last change date and time, formatted yyyy-MM-dd'T'HH:mm:ss. |
filters[].required | boolean | No | true when the layout requires a value for this filter before a run is accepted; null when the filter is optional. |
filters[].options | array of FilterOption | No | Allowed values for an LOV filter. Always an array; empty for other filter types or when no list is configured. |
filters[].options[].label | string | No | Human-readable text of the option, already translated. |
filters[].options[].value | string | No | Value to send as the filter value when you select this option. |
Error response schemas (GatewayError, ServiceError, SpringError, SimpleError, MissingFiltersError, RunStatusConflict, RiaError, SignedUrlError) are defined once under Error response schemas in the API overview and in components/schemas.
Response codes: 200, 400, 401, 403, 404, 429, 500. Each response with a body includes worked examples; responses without a body say so.
- Zuora One production. Revenue Reporting paths start with /revenue/services/v1; Integration Reporting paths start with /api/integration/v1 or /api/integration/v2.https://one.zuora.com/revenue/services/v1/reports/{reportId}/layouts/{layoutId}
curl -i -X GET \
https://one.zuora.com/revenue/services/v1/reports/10021/layouts/3105 \
-H 'Accept-Language: en' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Zuora-Track-Id: close-run-2026-09-001'Success. The layout.
Unique identifier of the layout. Send it as layoutId when you run the report.
Creation date and time, formatted yyyy-MM-dd'T'HH:mm:ss.
Last change date and time, formatted yyyy-MM-dd'T'HH:mm:ss.
{ "id": 3105, "reportId": 10021, "name": "Monthly Close - Summary", "description": "Summary by period for month-end close", "filenamePrefix": "WF_SUMMARY", "createdBy": "FIN.ADMIN", "createdAt": "2025-03-01T10:00:00", "updatedBy": "FIN.ADMIN", "updatedAt": "2026-07-30T16:12:45", "fields": [ { … }, { … }, { … } ], "filters": [ { … }, { … } ] }