# Add a new ADCS server configuration for AD Certificate payload Save the ADCS Server details ## Endpoints **POST** `/api/v1/mdm/adcs/servers` ## Request URL ``` https://{serverurl}/api/v1/mdm/adcs/servers ``` ## Scope ``` MDMOnDemand.MDMDeviceMgmt.CREATE ``` ## Header ``` Authorization: Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52 ``` ## Request Parameters ### 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 ## Sample Request ### Curl ```bash curl --request POST \ --url https://appdomain/api/v1/mdm/adcs/servers \ --header 'Authorization: Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52' \ --header 'content-type: application/json' \ --data '{"ad_config_name":"computer_1","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")) .header("content-type", "application/json") .header("Authorization", "Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52") .method("POST", HttpRequest.BodyPublishers.ofString("{\"ad_config_name\":\"computer_1\",\"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\",\"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("POST", "/api/v1/mdm/adcs/servers", 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" type: POST 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' -Method POST -Headers $headers -ContentType 'application/json' -Body '{"ad_config_name":"computer_1","cert_authority":"CN=zylker-SERVER-CA2","cert_template_name":"computer_1","cert_server_address":"http://cert.zylker.com/certsrv/"}' ``` ## Sample Request Body Add a new ADCS server configuration ```json { "ad_config_name": "computer_1", "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": "ADCS server for computer certificates", "cert_template_name": "computer_1", "cert_server_address": "http://cert.zylker.com/certsrv/", "rsa_key_size": 1 } ``` ## Response Parameters ### HTTP 200 **Response Body:** `application/json` **Type:** JSON object #### Attributes - **ad_config_id** `long` Unique identifier of the newly created ADCS configuration - **ad_config_name** `string` Name of the ADCS configuration - **cert_server_address** `string` URL of the ADCS server - **cert_authority** `string` Common Name (CN) of the Certificate Authority - **cert_template_name** `string` Template name of the certificate - **description** `string` Description of the ADCS server configuration - **cert_exp_notify_thread** `integer` Number of days before certificate expiry to notify - **rsa_key_size** `integer` RSA key size for the certificate. - `0` = 1024 - `1` = 2048 - `2` = 4096 - **auto_renew_enabled** `boolean` Whether auto-renewal is enabled - **allow_all_apps_to_access** `boolean` Whether all apps can access the certificate ### HTTP 400 **Response Body:** `application/json` **Type:** JSON object #### Attributes - **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 ## Possible Response Codes - **200** — HTTP code - **400** — HTTP code ## Sample Response: HTTP 200 ADCS server configuration successfully added ```json { "ad_config_name": "computer_1", "cert_authority": "CN=zylker-SERVER-CA2", "auto_renew_enabled": true, "cert_exp_notify_thread": 14, "allow_all_apps_to_access": true, "description": "ADCS server for computer certificates", "cert_template_name": "computer_1", "cert_server_address": "http://cert.zylker.com/certsrv/", "ad_config_id": 9007199254744896, "rsa_key_size": 1 } ``` ## Sample Response: HTTP 400 ADCS configuration name already exists ```json { "error_description": "ADCS configuration name already exists.", "error_code": "ADCS0001", "localized_error_description": "ADCS configuration name already exists." } ``` ## Rate Limit **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