# Fetch custom report details for the specified report ID Fetches the full details of a specific custom report by its ID. Returns all configuration details including report name, description, sub-module, selected columns, criteria, grouping, and chart metadata. ## Endpoint `GET /dcapi/reports/customReports/v2/{reportId}` ## Request ### Request URL https://[{serverurl}](https://www.manageengine.com/products/desktop-central/help/api/cloud/oauth-authentication-endpoint-domain.html)/dcapi/reports/customReports/v2/{reportId} ### Scope `DesktopCentralCloud.CustomReport.READ` ### Header `Authorization: Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52` ### Request Parameters #### Request Headers - **Accept** `string` — **Mandatory** - `application/selectedCustomReport.v2+json` #### Path Parameters - **reportId** `string` — **Mandatory** - The [unique id](https://www.manageengine.com/products/desktop-central/help/api/cloud/report-create-custom-report.html) of the created custom report #### Query Parameters - **saveAsNew** `boolean` — Optional - When true, the report name is suffixed with _copy to support Save As functionality. Default is false - **component** `string` — Optional - Fetch a specific component of the report. Valid values: reportName, reportDesc, subModule, criteria, editable, selectComponents, groupby, chartMeta, isReportCountExceeded, componentType ### Sample Request ```curl curl --request GET \ --url https://appdomains/dcapi/reports/customReports/v2/{reportId} \ --header 'Accept: application/selectedCustomReport.v2+json' \ --header 'Authorization: Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52' ``` ## Response Parameters ### HTTP Code 200 Response body: `application/json` - `JSON Object` - **reportName** `string` - Display name of the custom report (suffixed with _copy when saveAsNew=true) - **reportDesc** `string` - Description of the custom report - **subModule** `string` - Sub-module name (e.g., Computer, Hardware, Software) - **criteria** `JSON Array` - Array of filter criteria objects applied to the report - **criteriaPattern** `string` - Criteria pattern expression (e.g., (1 AND 2) OR 3). Empty string if not set - **editable** `boolean` - Whether the current user can edit this report - **componentType** `string` - Type of report component: Table or Chart - **selectComponents** `JSON Array` - Array of selected column objects for table reports. Present only when componentType is Table - **groupby** `array` - Array of column IDs used for grouping. Present only when componentType is Table - **chartMeta** `JSON Object` - Chart configuration object. Present only when componentType is Chart - **isReportCountExceeded** `boolean` - Whether the report exceeds the configured column or criteria limits #### Sample Response: HTTP 200 Full details of a table-based custom report: ```json { "componentType": "Table", "reportDesc": "List of all active computers with OS details", "reportName": "Active Computers Report", "subModule": "Computer", "criteria": [ { "comparator": "contains", "logicalOperator": "AND", "columnID": 103, "searchValue": [ "Windows" ] } ], "editable": true, "selectComponents": [ { "columnID": 101, "aggregation": "ACTUAL_VALUE", "columnName": "Computer Name" }, { "columnID": 102, "aggregation": "ACTUAL_VALUE", "columnName": "IP Address" }, { "columnID": 105, "aggregation": "COUNT", "columnName": "Total Memory (MB)" } ], "groupby": [ 101 ], "isReportCountExceeded": false, "chartMeta": null, "criteriaPattern": "1" } ``` Full details of a chart-based custom report: ```json { "componentType": "Chart", "reportDesc": "", "reportName": "OS Distribution Chart", "subModule": "Computer", "criteria": [], "editable": true, "selectComponents": null, "groupby": null, "isReportCountExceeded": false, "chartMeta": { "yAxis": { "columnID": "101", "aggregation": "COUNT" }, "xAxis": { "columnID": "103" }, "chartType": "pie", "zAxis": null }, "criteriaPattern": "" } ``` ### HTTP Code 400 Response body: `application/json` - `JSON Object` - **errorCode** `long` - Numeric error code: report ID not found or user is not authorized to access the report - **errorMessage** `string` - Detailed error description indicating the specific failure #### Sample Response: HTTP 400 Report ID not found or user not authorized: ```json { "errorMessage": "Unauthorized to access this custom report", "errorCode": 40001 } ``` ### HTTP Code 401 Response body: `application/json` - `JSON Object` - **errorCode** `long` - Unauthorized error code: credentials missing, expired, or invalid - **errorMsg** `string` - Authentication failure reason #### Sample Response: HTTP 401 Missing or invalid authentication token: ```json { "errorMessage": "Authentication token is missing or invalid", "errorCode": "401" } ``` ### HTTP Code 403 Response body: `application/json` - `JSON Object` - **errorCode** `long` - Error code indicating insufficient permissions - **errorMsg** `string` - Message indicating insufficient privileges to access this resource #### Sample Response: HTTP 403 User does not have the required role: ```json { "errorMessage": "User does not have the required role to access this resource", "errorCode": "403" } ``` ### HTTP Code 417 Response body: `application/json` - `JSON Object` - **errorCode** `string` - Expectation failed error code: Custom Report V2 is not enabled - **errorMessage** `string` - Message indicating Custom Report V2 feature is not active #### Sample Response: HTTP 417 Custom Report V2 is not enabled: ```json { "errorMessage": "Custom Report V2 is not enabled", "errorCode": "417" } ``` ### HTTP Code 429 Response body: `application/json` - `JSON Object` - **errorCode** `long` - Rate limit error code returned when the API call reached threshold - **errorMsg** `string` - Rate limit exceeded message with retry guidance #### Sample Response: HTTP 429 Rate limit exceeded: ```json { "errorMessage": "Rate limit exceeded. Please retry after some time", "errorCode": "429" } ``` ## Possible Response Codes - `200` — HTTP code - `400` — HTTP code - `401` — HTTP code - `403` — HTTP code - `417` — HTTP code - `429` — HTTP code ## Rate Limit ![](https://www.zohowebstatic.com/sites/zweb/images/people/ico-help.png) **Duration:** 1 minute | **Threshold:** 30 | **Lock period:** 5 minutes Duration - Time window for the threshold. Threshold - Number of API calls allowed within the specified duration. Lock Period - Wait time before consecutive API requests.