# Modify an existing ADCS server configuration Update the individual AD Certificate server details ## Endpoint **PUT** `/api/v1/mdm/adcs/servers/{ad_config_id}` ## Request URL ``` https://{serverurl}/api/v1/mdm/adcs/servers/{ad_config_id} ``` ## Scope ``` MDMOnDemand.MDMDeviceMgmt.UPDATE ``` ## Header ``` Authorization: Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52 ``` ## Request Parameters ### Path Parameters - **ad_config_id** (string, Mandatory) Unique identifier of the ADCS configuration to modify. Use the `ad_config_id` from the [Add ADCS Server API](https://www.manageengine.com/mobile-device-management/help/api/cloud/mac-add-adcs-server.html) response. ### Query Parameters - **t** (long, Optional) - **ignoreHeader** (boolean, Optional) - **qlt** (long, Optional) - **previousTab** (string, Optional) - **service** (string, Optional) - **search** (string, Optional) Free-text search string applied to the default searchable fields of the resource - **all** (boolean, Optional) - **dc_customerid** (long, Optional) - **mdm_instance** (string, Optional) - **signupsrc** (string, Optional) - **zaaid** (string, Optional) - **command** (string, Optional) - **orderby** (string, Optional) - **sortorder** (string, Optional) - **select_all** (boolean, Optional) When true, applies the operation to every record matching the current filter rather than to specific IDs. Default: false - **zoho-internal** (boolean, Optional) - **dc_instance** (string, Optional) - **SUBREQUEST** (string, Optional) - **source** (string, Optional) - **nocache** (long, Optional) param to avoid being served from cache - **wms_csrparam** (string, Optional) CSRF Token ### Request Body **Content-Type:** `application/json` **Type:** JSON object #### Attributes - **ad_config_name** (string, Mandatory) Name of the ADCS configuration. Must be unique across the organization - **cert_server_address** (string, Mandatory) URL of the ADCS server (e.g., http://adcs.zylker.com/certsrv/) - **cert_authority** (string, Mandatory) Common Name (CN) of the Certificate Authority (e.g., CN=ZylkerCA-SERVER-CA) - **cert_template_name** (string, Mandatory) Template name of the certificate configured in the ADCS server - **description** (string, Optional) Description of the ADCS server configuration. Defaults to `'--'` if not provided - **cert_exp_notify_thread** (integer, Optional) Number of days before certificate expiry to notify. Defaults to 14 if not provided - **rsa_key_size** (integer, Optional) RSA key size for the certificate. Allowed values: - `0` (1024) - `1` (2048) - `2` (4096) Defaults to `1` (2048) if not provided - **auto_renew_enabled** (boolean, Optional) Whether auto-renewal is enabled for the certificate. Defaults to false if not provided - **allow_all_apps_to_access** (boolean, Optional) Whether all apps can access the certificate. Defaults to false if not provided - **is_key_extractable** (boolean, Optional) Whether the private key is extractable. Defaults to false if not provided - **redistribute_profiles** (boolean, Optional) Whether to redistribute associated profiles after modification. Defaults to false if not provided ## Sample Request ### Curl ```bash curl --request PUT \ --url https://appdomain/api/v1/mdm/adcs/servers/{ad_config_id} \ --header 'Authorization: Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52' \ --header 'content-type: application/json' \ --data '{"ad_config_name":"computer_1_updated","cert_authority":"CN=zylker-SERVER-CA2","cert_template_name":"computer_1","cert_server_address":"http://cert.zylker.com/certsrv/"}' ``` ### Java ```java import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.io.IOException; import java.net.http.HttpTimeoutException; public class Main { public static void main(String[] args) { HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://appdomain/api/v1/mdm/adcs/servers/{ad_config_id}")) .header("content-type", "application/json") .header("Authorization", "Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52") .method("PUT", HttpRequest.BodyPublishers.ofString("{\"ad_config_name\":\"computer_1_updated\",\"cert_authority\":\"CN=zylker-SERVER-CA2\",\"cert_template_name\":\"computer_1\",\"cert_server_address\":\"http://cert.zylker.com/certsrv/\"}")) .build(); HttpResponse response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body()); } } ``` ### Python ```python import http.client conn = http.client.HTTPSConnection("appdomain") payload = "{\"ad_config_name\":\"computer_1_updated\",\"cert_authority\":\"CN=zylker-SERVER-CA2\",\"cert_template_name\":\"computer_1\",\"cert_server_address\":\"http://cert.zylker.com/certsrv/\"}" headers = { 'content-type': "application/json", 'Authorization': "Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52" } conn.request("PUT", "/api/v1/mdm/adcs/servers/{ad_config_id}", payload, headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) ``` ### Deluge ```javascript headersMap = Map(); headersMap.put("Content-Type", "application/json"); headersMap.put("Accept", "application/json"); data=Map(); data.put("ad_config_name","value"); data.put("cert_authority","value"); data.put("cert_template_name","value"); data.put("cert_server_address","value"); response = invokeUrl [ url: "https://appDomain/api/v1/mdm/adcs/servers/{ad_config_id}" type: PUT headers: headersMap body: data connection: connection_name ] info response; ``` ### PowerShell ```powershell $headers=@{} $headers.Add("content-type", "application/json") $headers.Add("Authorization", "Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52") $response = Invoke-WebRequest -Uri 'https://appdomain/api/v1/mdm/adcs/servers/{ad_config_id}' -Method PUT -Headers $headers -ContentType 'application/json' -Body '{"ad_config_name":"computer_1_updated","cert_authority":"CN=zylker-SERVER-CA2","cert_template_name":"computer_1","cert_server_address":"http://cert.zylker.com/certsrv/"}' ``` ## Sample Request Body ```json { "ad_config_name": "computer_1_updated", "cert_authority": "CN=zylker-SERVER-CA2", "auto_renew_enabled": true, "cert_exp_notify_thread": 14, "is_key_extractable": false, "allow_all_apps_to_access": true, "description": "Updated ADCS server configuration", "cert_template_name": "computer_1", "cert_server_address": "http://cert.zylker.com/certsrv/", "rsa_key_size": 1, "redistribute_profiles": false } ``` ## Response Parameters ### HTTP 200 **Response Body:** `application/json` - **ad_config_id** (long) Unique identifier of the modified ADCS configuration ### HTTP 400 **Response Body:** `application/json` - **error_code** (string) Error code: `ADCS0001` — ADCS configuration name already exists - **error_description** (string) Human-readable error description - **localized_error_description** (string) Localized error description for display ## Sample Response: HTTP 200 ```json { "ad_config_id": 9007199254740996 } ``` ## Sample Response: HTTP 400 ```json { "error_description": "ADCS configuration name already exists.", "error_code": "ADCS0001", "localized_error_description": "ADCS configuration name already exists." } ``` ## Possible Response Codes - **200** — HTTP code - **400** — HTTP code ## API Rate Limits **Duration:** 1 minute **Threshold:** 60 **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.