# 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://{server-hostname}:8383/dcapi/reports/customReports/v2/{reportId}` ### Scope `CustomReport.READ` ### Header `Authorization: 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/onpremise/report-create-custom-report.html) of the created custom report ### Sample Request ```curl curl --request GET \ --url https://appdomain/dcapi/reports/customReports/v2/{reportId} \ --header 'Accept: application/selectedCustomReport.v2+json' \ --header 'Authorization: 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 ### 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 ### HTTP Code 401 Response Body — `application/json` - `JSON object` - **errorCode** — `long` - Unauthorized error code returned when authentication credentials are missing, expired, or invalid (authentication=required) - **errorMsg** — `string` - Authentication failure reason ### HTTP Code 403 Response Body — `application/json` - `JSON object` - **errorCode** — `long` - Forbidden error code returned when the authenticated user does not have the required uem-roles (e.g., DataEncryption_Admin or DataEncryptionRecoveryKey_Admin) - **errorMsg** — `string` - Message indicating insufficient privileges to access this resource ### 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 ### HTTP Code 429 Response Body — `application/json` - `JSON object` - **errorCode** — `long` - Rate limit error code returned when the API call threshold (configured via threshold/duration in security XML) is exceeded; client is locked out for lock-period minutes - **errorMsg** — `string` - Rate limit exceeded message with retry guidance ### Possible Response Codes - `200` — HTTP code - `400` — HTTP code - `401` — HTTP code - `403` — HTTP code - `417` — HTTP code - `429` — HTTP code ## Sample Responses ### 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 400 Report ID not found or user not authorized: ```json { "errorMessage": "Unauthorized to access this custom report", "errorCode": 40001 } ``` ### HTTP 401 Missing or invalid authentication token: ```json { "errorMessage": "Authentication token is missing or invalid", "errorCode": "401" } ``` ### 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 417 Custom Report V2 is not enabled: ```json { "errorMessage": "Custom Report V2 is not enabled", "errorCode": "417" } ``` ### HTTP 429 Rate limit exceeded: ```json { "errorMessage": "Rate limit exceeded. Please retry after some time", "errorCode": "429" } ``` ## Rate Limits ![](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.