# Fetch all available custom reports for the user Retrieves a list of all custom reports accessible to the user, along with metadata such as report name, owner, last modified time, and associated view name. ## Endpoint `GET /dcapi/reports/customReports` ## Request ### Request URL https://[*{serverurl}*](https://www.manageengine.com/products/desktop-central/help/api/cloud/oauth-authentication-endpoint-domain.html)/dcapi/reports/customReports ### Scope `DesktopCentralCloud.CustomReport.READ` ### Header `Authorization: Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52` ### Request Parameters #### Request Headers - **Accept** `string` — **Mandatory** - `application/allCustomReports.v1+json` ### Sample Request ```curl curl --request GET \ --url https://appdomains/dcapi/reports/customReports \ --header 'Accept: application/allCustomReports.v1+json' \ --header 'Authorization: Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52' ``` ## Response Parameters ### HTTP 200 Response Body — `application/json` - `JSON Object` - **id** `string`: Root node identifier. Always `'customReports'` - **parent** `string`: Parent node identifier. Always null for the root node - **label** `string`: Localized display name of the root node (e.g., Custom Reports) - **properties** `JSON Object`: Root node metadata including report type, expandable, and selectable flags - **children** `JSON Array`: Array of child custom report nodes. Null when no reports exist - **leaf** `boolean`: False when children exist, true when no children - **errorMessage** `string`: Warning message when some reports are affected or disabled. Null when all reports are healthy - **root** `boolean`: Always true for the root node ### HTTP 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 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 417 Response Body — `application/json` - `JSON Object` - **errorCode** `string`: Error code: REPORT_UNAUTHORIZED. PMP users are not allowed to access custom reports - **errorMessage** `string`: Message indicating PMP product users are not authorized to access custom reports ### HTTP 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 ### HTTP 500 Response Body — `application/json` - `JSON Object` - **errorCode** `string`: Error code: INTERNAL_ERROR. Unexpected failure during custom report list retrieval (e.g., database exception) - **errorMessage** `string`: Detailed error description for the internal server error ## Possible Response Codes - `200` HTTP code - `401` HTTP code - `403` HTTP code - `417` HTTP code - `429` HTTP code - `500` HTTP code ## Sample Responses ### HTTP 200 #### Root node with two custom report children ```json { "parent": null, "children": [ { "parent": "customReports", "children": null, "root": false, "errorMessage": null, "id": "2", "label": "Untitled2", "leaf": true, "properties": { "owner": "admin", "viewName": "CRVIEW_1776239184200", "expandable": false, "selectable": true, "actionURL": "/webclient#/uems/reports/report/custom/view-report/2?viewName=CRVIEW_1776239184200", "description": "Test Description", "lastModified": "Apr 15, 2026 01:16 PM" } }, { "parent": "customReports", "children": null, "root": false, "errorMessage": null, "id": "1", "label": "Untitled1", "leaf": true, "properties": { "owner": "admin", "viewName": "CRVIEW_1776239157642", "expandable": false, "selectable": false, "actionURL": "/webclient#/uems/reports/report/custom/view-report/1?viewName=CRVIEW_1776239157642", "description": "Test Description", "lastModified": "Apr 15, 2026 01:15 PM" } } ], "root": true, "errorMessage": null, "id": "customReports", "label": "Custom Reports", "leaf": false, "properties": { "reportType": "2", "expandable": true, "selectable": false } } ``` #### No saved custom reports — root node with null children ```json { "parent": null, "children": null, "root": true, "errorMessage": null, "id": "customReports", "label": "Custom Reports", "leaf": true, "properties": { "reportType": "2", "expandable": false, "selectable": false } } ``` ### 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 #### PMP product users are not allowed access ```json { "errorMessage": "You are not authorized to access custom reports", "errorCode": "REPORT_UNAUTHORIZED" } ``` ### HTTP 429 #### Rate limit exceeded ```json { "errorMessage": "Rate limit exceeded. Please retry after some time", "errorCode": "429" } ``` ### HTTP 500 #### Unexpected failure during custom report list retrieval ```json { "errorMessage": "Internal server error while fetching custom reports", "errorCode": "INTERNAL_ERROR" } ``` ## 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.