# Certificate Manager 25.8 REST API

# Overview

The Sectigo Certificate Manager (SCM) REST API allows for the automation of many tasks normally done via the SCM UI. This includes:

- issuance and management of SSL, client and device certificates

- domain management

- organization management

- person management

- discovery

- reporting

- ACME enrollment endpoints

- network and MS agent management

- admin management

Requests to the SCM REST API are performed as an administrator so all results will be filtered based on the administrator’s role and privileges.

## HTTP verbs

This API tries to adhere as closely as possible to standard HTTP and REST conventions in its use of HTTP verbs.

Verb | Usage
--- | ---
`GET` | Used to retrieve a resource
`POST` | Used to create a new resource
`PATCH` | Used to update an existing resource, including partial updates
`DELETE` | Used to delete an existing resource

## HTTP status codes

This API tries to adhere as closely as possible to standard HTTP and REST conventions in its use of HTTP status codes.

Status code | Usage
--- | ---
`200 OK` | The request completed successfully
`201 Created` | A new resource has been created successfully. The resource’s URI is available from the response’s `Location` header
`204 No Content` | An update to an existing resource has been applied successfully
`400 Bad Request` | The request was malformed. The response body will include an error providing further information
`404 Not Found` | The requested resource did not exist

## Authorization

All API methods require HTTP headers for authentication. In addition, some API methods require certificate authentication as well. There are three authentication styles used by the API methods.

### User Login via Password

Most API methods use this authentication style.

The required HTTP headers are:

Header name | Description
--- | ---
`login` | User login name
`password` | User password
`customerUri` | Customer URI part

### User Login via Certificate

This can be used for all API methods except the APIs requiring Developer Login and is required by some APIs. In addition to the HTTP headers described below, the requests must have 'private' suffix in the URL, i.e. https://cert-manager.com/private/api/ssl/v1/types.

The required HTTP headers are:

Header name | Description
--- | ---
`login` | User login name
`customerUri` | Customer URI part

### Developer Login

Some APIs require this authentication style since a developer doesn’t need a user account. The required HTTP headers are:

Header name | Description
--- | ---
`email` | Developer email address
`password` | Developer password
`customerUri` | Customer URI part

## Errors

Whenever an error response (status code >= 400) is returned, the body will contain a JSON object that describes the problem. The error object has the following structure:

Path | Type | Description
--- | --- | ---
`code` | Number | The error code
`description` | String | Error message

For example, a request that attempts to access resource with bad credentials will produce a `401 Unauthorized` response:

    HTTP/1.1 401 Unauthorized
    Content-Type: application/json
    Content-Length: 41

    {"code":-16,"description":"Unknown user"}

Possible values for JSON object fields include:

Error code | Error message
--- | ---
-1 | Unknown error.
-2 | Internal error. Please contact Support for details.
-3 | You are not authorized to perform {0}.
-7 | {0} is required but missing.
-9 | Unknown notification type: {0}
-9 | The CSR is not valid Base-64 data!
-10 | Error while decoding CSR.
-11 | The CSR uses an unsupported algorithm!
-13 | The CSR uses an unsupported key size!
-14 | Unknown error.
-25 | You are not authorized to execute {0}
-35 | The Server type is invalid!
-36 | The validity period (term) is invalid for this certificate profile.
-37 | Access denied.
-39 | {0}
-39 | The certificate profile id is invalid!
-43 | Internal error while decrypting.
-44 | Error while generating key pair with open SSL
-62 | Missing mandatory custom field!
-62 | Invalid IP address {0}
-64 | Optional field 'name' is invalid!
-65 | Internal error {0}. Please contact Support for details.
-76 | KU/EKU template is not allowed for customer.
-78 | The public key is invalid or not supported.
-102 | Only issued certificates could be revoked.
-103 | Certificate has not been collected yet.
-105 | Person not found.
-105 | Error was occurred while renewing cert. Status = {0}
-107 | Domain Control Validation is either incomplete or expired for {0}. Please complete it before requesting a certificate.
-109 | Certificate is not available now, please try again later.
-110 | Certificate has been revoked and cannot be downloaded.
-111 | No certificate profile found by id {0}
-123 | SSL Certificate to renew is invalid (null)
-124 | Wrong SSL certificate id {0}.
-126 | Unknown SSL certificate file format requested: {0}
-129 | Connection error while applying certificate.
-130 | SSL state is not ''ISSUED'': {0}
-131 | Custom fields limit exceeded for customer.
-134 | Custom field has to have unique name.
-135 | Custom field cannot be found.
-138 | Invalid CSR.
-140 | CSR decoding temporarily unavailable. Please try again later.
-141 | The public key size in the CSR should be {0} bits minimum.
-159 | Your certificate already revoked
-159 | Custom fields limit has been exceeded for this customer. Only {0} custom fields or fewer are allowed.
-160 | You can''t create fields with the same name - {0}!
-164 | Certificate cannot be enrolled for a Local Domain and/or Private IP for a validity period exceeding {0}.
-166 | Entered data doesn''t match the certificate or no valid certificate found
-169 | Certificate is not available, please contact administrator.
-170 | Based on the customer configuration, ECC CSRs are not allowed.
-172 | The Client Certificate Profile is invalid!
-176 | Updating is not possible. List of your Client Certificate Profile was changed by super admin.
-180 | This SSL Certificate Profile doesn''t allow renew
-181 | Anchor Certificate details do not match to your request.
-183 | Certificate is not collectable.
-184 | Object has no available customized Client Certificate Profile.
-185 | Customized Client Certificate Profile: {0} has no available terms.
-188 | This user have already reached the maximum allowed number of valid certificates: {0}
-194 | The CSR uses an unsupported key size.
-195 | CA is not available now. Please try again later.
-196 | Connection error while retrieving DCV email list.
-213 | Old password is incorrect
-219 | Cannot change the role of the only {0} user.
-220 | Password can''t be the same.
-221 | Please select at least one Organization/Department for each selected role
-222 | Please select roles for the same level
-223 | Please select only one Organization/Department for each selected role
-226 | This Admin account does not have privileges required to manage ''{0}'' <org>.
-233 | You have no privilege to create this admin user.
-234 | You have no privilege to modify the privileges of this admin.
-237 | Client Admin''s Email is invalid
-249 | You cannot update this client admin which has already been deleted.
-253 | You have no privilege to modify the role of this admin.
-255 | Privilege "Allow DCV" can''t be added to non SSL admins.
-256 | You have no privilege to assign DCV privileges.
-303 | The range is too wide. Maximum of {0} public ip-port pairs and {1} private ip-port pairs per scan are allowed.
-304 | Incorrect format CIDR.
-305 | The range of ip-port pairs is too wide.
-306 | Domain name {0} exceeds {1} characters limit.
-410 | Customer {0} cannot be found.
-429 | Customer {0} does not have a login name for CA.
-500 | Person name cannot be empty
-507 | You can''t change organization for this person.<br> Key escrow of its level has been enabled for either current organization/department or target organization/department.
-508 | New person. Please specify name
-518 | Unknown email address
-524 | You have no privilege to modify the email of this person.
-607 | Available Agent(s) are not configured to scan the specified private range(s).
-615 | To scan, you must first enter at least one range parameter.
-618 | Discovery is currently running. Please try again later.
-637 | Available Agent(s) are not configured to scan the specified public range(s).
-639 | Supplied orgid invalid..
-700 | Such domain already exists
-705 | This operation cannot be performed as the delegation status is other than ‘‘Requested’’.
-707 | This domain delegation request has already been deleted.
-709 | Please delegate domain to at least one organization or department.
-711 | Domain can''t be delegated to deleted organization.
-712 | The domain name should be at least {0} characters in length.
-713 | The domain name should be at most {0} characters in length.
-714 | The domain name should have at least {0} dots.
-715 | The domain ''{0}'' is inactive.
-723 | <Something> is not a high-level domain. Only high-level domains can be validated.
-724 | The request for ''{0}'' cannot be processed since it''s domain validation status is {1}.
-727 | The domain ''{0}'' does not exist.
-728 | One or more delegations have been changed by another administrator. Your changes will be ignored.
-731 | You do not have sufficient privileges to modify the name of this domain.
-732 | Invalid domain name.
-737 | The domain(s): {0} are not validated! Please perform the DCV process for them before proceed.
-738 | Access denied. You are not allowed to perform the {0} operation on this domain.
-740 | This operation cannot be performed due to SSL certificates enrolled for this domain or its subdomains.
-741 | Access denied due to a DRAO’s request that has not been approved for domain {0}. Force domain creation is disabled.
-834 | The changes of Client Certificate Profile settings will cause the following departments have <br> no available customized Client Certificate Profile, or customized Client Certificate Profiles have no available term or default term: {0}
-840 | The changes of Client Certificate Profile settings will cause the under levels have <br> no available customized Client Certificate Profile, or customized Client Certificate Profiles have no available term or default term.
-843 | SSL certificate of this type cannot be requested due to ‘{0}’ validation status of the selected organization.
-951 | 'At least one of the following fields must be filled in: {0}.
-970 | Incorrect login credentials.
-976 | New password must be between {0} and 32 characters.
-977 | New password length must be 32 characters.
-982 | New password must not contain Login.
-1010 | Domain ''{0}'' is not allowed.
-1021 | This operation cannot be performed for Organization ''{0}''.
-1023 | Organization ''{0}'' not found.
-1104 | Invalid order number {0}
-1108 | No valid client certificates found for {0}.
-1112 | Certificate can''t be approved cause it has state = {0}
-1113 | {0} certificate is not ready to be applied. Current certificate state is {1}.
-1117 | The SSL is null.
-1137 | The domain(s) {0} have not been validated under the DCV procedure.
-1138 | Error while checking size of public key in CSR.
-1140 | Since you are a requester of this certificate you can''t approve it. For EV certificates the requester and the approver must not be the same person.
-1144 | SSL certificate id: {0} must be re-discovered due to migration need. We are sorry for inconvenience.
-1148 | Replace is forbidden for autoinstalled certificates.
-1400 | The request is being processed by Sectigo.
-1450 | Unsupported certificate format specified: {0}
-1601 | Field ''{0}'' has invalid value.
-1603 | Error while validating the domain {0}
-1608 | DCV is not enabled for this customer.
-3114 | This {0} was modified or deleted by another user.
-3115 | This {0} was modified or deleted by another user. Please refresh data.
-3301 | Invalid scan range: {0}
-5001 | You don' t have access to Organization assigned to the Rule
-5002 | Assignment rules cannot be empty.
-5003 | Cannot delete. An assignment rule has been assigned to the Net Discovery Tasks {0}
-5101 | Certificate not found. {0}
-5109 | Device Certificate Profile not found.

## Date formatting

The `dateFormat` parameter allows you to specify the format in which date and time values are serialized in the API responses. You can pass either the name of an enum or the format string associated with an enum from the following list.

### Supported Date Formats

Description | Parameter name | Format | Example
--- | --- | --- | ---
ISO 8601 (International Standard) | ISO | `yyyy-MM-dd` | 2024-07-10
ISO_HMS | yyyy-MM-dd’T’HH:mm:ss.SSS’Z' | 2024-07-10T14:30:00.000Z
European Format (Day-Month-Year) | EU | dd.MM.yyyy | 10.07.2024
EU_HMS | dd.MM.yyyy HH:mm:ss | 10.07.2024 14:30:00
US Format (Month-Day-Year) | US | MM/dd/yyyy | 07/10/2024
US_HMS | MM/dd/yyyy HH:mm:ss | 07/10/2024 14:30:00
UK Format (Day-Month-Year with Slashes) | UK | dd/MM/yyyy | 10/07/2024
UK_HMS | dd/MM/yyyy HH:mm:ss | 10/07/2024 14:30:00
Japan Format (Year-Month-Day) | JP | yyyy/MM/dd | 2024/07/10
JP_HMS | yyyy/MM/dd HH:mm:ss | 2024/07/10 14:30:00

### Usage

It is possible to use the `dateFormat` in two case-independent ways:

- Parameter name

Example

    GET /api/resource?dateFormat=eu

or

    GET /api/resource?dateFormat=EU

- Format

Example

    GET /api/resource?dateFormat=dd.mm.yyyy

or

    GET /api/resource?dateFormat=dd.MM.yyyy

# API reference

## SSL Certificates

Used to perform operations on SSL certificates. SSL certificates are identified by an ID field, usually known as sslId in this API.

### SSL helper APIs

#### List SSL certificate profiles

List SSL certificate profiles, previously known as a certificate type. An enrollment request will require the certificate profile be specified.

##### Query parameters

Parameter | Description
--- | ---
`organizationId` | Filter by Organization ID (optional)

##### Example request

    $ curl 'https://cert-manager.com/api/ssl/v1/types?organizationId=510' -i -X GET \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer703' \
        -H 'password: Password123!' \
        -H 'customerUri: cst703'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | An array of available SSL Certificate Profiles
`[].id` | `Number` | Certificate Profile ID
`[].name` | `String` | Certificate Profile name
`[].useSecondaryOrgName` | `Boolean` | Use secondary Organization name
`[].description` | `String` | Certificate Profile description
`[].terms` | `Array` | Terms (in days) available for the Certificate Profile
`[].keyTypes` | `Object` | Key types available for the Certificate Profile

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json;charset=UTF-8
    Content-Length: 210

    [ {
      "id" : 1134,
      "name" : "SSL SASP 523912935",
      "description" : "SSL SASP 1587542533",
      "terms" : [ 365 ],
      "keyTypes" : {
        "RSA" : [ "1024", "2048", "4096" ]
      },
      "useSecondaryOrgName" : false
    } ]

#### List SSL certificate custom fields

List SSL certificate custom fields. An enrollment require will require all mandatory custom fields be specified.

##### Example request

    $ curl 'https://cert-manager.com/api/ssl/v1/customFields' -i -X GET \
        -H 'login: admin_customer715' \
        -H 'password: Password123!' \
        -H 'customerUri: cst715' \
        -H 'Accept: application/json'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | An array of custom fields
`[].id` | `Number` | Custom field ID
`[].name` | `String` | Custom field name
`[].mandatory` | `Boolean` | Is field mandatory

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json;charset=UTF-8
    Content-Length: 64

    [ {
      "id" : 54,
      "name" : "testName",
      "mandatory" : true
    } ]

### SSL certificate Locations

#### List SSL certificate locations

##### Path parameters

Table 1. /api/ssl/v1/{sslId}/location
Parameter | Description
--- | ---
`sslId` | Certificate ID

##### Example request

    $ curl 'https://cert-manager.com/api/ssl/v1/144/location' -i -X GET \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer1024' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1024'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | List of SSL Certificate Locations
`[].id` | `Number` | Location ID
`[].locationType` | `String` | Location Type
`[].name` | `String` | Location Name (optional)
`[].details` | `Object` | Location Details

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json;charset=UTF-8
    Content-Length: 209

    [ {
      "id" : 56,
      "locationType" : "CUSTOM",
      "name" : "",
      "details" : {
        "IP" : "1.1.1.1"
      }
    }, {
      "id" : 57,
      "locationType" : "CUSTOM",
      "name" : "",
      "details" : {
        "alias" : "value"
      }
    } ]

#### Create custom location for SSL certificate

##### Path parameters

Table 1. /api/ssl/v1/{sslId}/location
Parameter | Description
--- | ---
`sslId` | Certificate ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
details | Object | Location details in key-value format that should be applied. |

##### Example request

    $ curl 'https://cert-manager.com/api/ssl/v1/133/location' -i -X POST \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer917' \
        -H 'password: Password123!' \
        -H 'customerUri: cst917' \
        -d '{
      "details" : {
        "Server" : "Apache"
      }
    }'

##### Response headers

Name | Description
--- | ---
`Location` | URL location of the created certificate location entity

##### Example response

    HTTP/1.1 201 Created
    Location: https://cert-manager.com/api/ssl/v1/133/location/53

#### Get details of SSL certificate’s custom location

##### Path parameters

Table 1. /api/ssl/v1/{sslId}/location/{locationId}
Parameter | Description
--- | ---
`sslId` | Certificate ID
`locationId` | Location ID

##### Example request

    $ curl 'https://cert-manager.com/api/ssl/v1/143/location/55' -i -X GET \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer1014' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1014'

##### Response fields

Path | Type | Description
--- | --- | ---
`id` | `Number` | Location ID
`locationType` | `String` | Location Type
`name` | `String` | Location Name (optional)
`details` | `Object` | Location Details

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json;charset=UTF-8
    Content-Length: 101

    {
      "id" : 55,
      "locationType" : "CUSTOM",
      "name" : "",
      "details" : {
        "IP" : "1.1.1.1"
      }
    }

#### Update SSL certificate’s custom location

##### Path parameters

Table 1. /api/ssl/v1/{sslId}/location/{locationId}
Parameter | Description
--- | ---
`sslId` | Certificate ID
`locationId` | Location ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
details | Object | Location details in key-value format that should be applied. |

##### Example request

    $ curl 'https://cert-manager.com/api/ssl/v1/173/location/58' -i -X PUT \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer1262' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1262' \
        -d '{
      "details" : {
        "Server" : "Apache"
      }
    }'

##### Example response

    HTTP/1.1 200 OK

#### Delete SSL certificate’s custom location

##### Path parameters

Table 1. /api/ssl/v1/{sslId}/location/{locationId}
Parameter | Description
--- | ---
`sslId` | Certificate ID
`locationId` | Location ID

##### Example request

    $ curl 'https://cert-manager.com/api/ssl/v1/135/location/54' -i -X DELETE \
        -H 'login: admin_customer933' \
        -H 'password: Password123!' \
        -H 'customerUri: cst933'

##### Example response

    HTTP/1.1 204 No Content

### View SSL certificates

#### List SSL certificates

List all SSL certificates that match the requested filter.

##### Query parameters

Parameter | Description
--- | ---
`size` | Number of returned entries
`position` | the first position (entry) to return from the results of the query
`commonName` | Filter by Common Name
`subjectAlternativeName` | Filter by Subject Alternative Name
`status` | Filter by status. Possible values: ', 'Invalid', 'Requested', 'Approved', 'Declined', 'Applied', 'Issued', 'Revoked', 'Expired', 'Replaced', 'Rejected', 'Unmanaged' - deprecated, result will be empty, 'SAApproved', 'Init''
`sslTypeId` | Filter by Certificate Profile ID
`discoveryStatus` | Filter by discovery status. Possible values: 'NotDeployed', 'Deployed' (deprecated, see "requestedVia").
`vendor` | Filter by Vendor
`orgId` | Filter by Organization ID
`installStatus` | Filter by Install status. Possible values: 'NONE', 'NOT_STARTED', 'KEY_PROCESSING', 'KEY_READY', 'CERT_PROCESSING', 'SCHEDULED', 'INSTALLING', 'ACTION_REQUIRED', 'READY_FOR_INSTALL', 'NEED_SERVER_RESTART', 'COMPLETED', 'INVALID'
`renewalStatus` | Filter by Renewal status. Possible values: 'NOT_SCHEDULED', 'SCHEDULED', 'STARTED', 'SUCCESSFUL', 'FAILED'
`issuer` | Filter by Issuer
`serialNumber` | Filter by Serial Number
`requester` | Filter by Requester
`externalRequester` | Filter by External Requester
`signatureAlgorithm` | Filter by Signature Algorithm
`keyAlgorithm` | Filter by Key Algorithm
`keySize` | Filter by Key Size filter (deprecated, see "keyParam")
`keyParam` | Filter by Key Size / Curve Name
`sha1Hash` | Filter by SHA1 Hash
`md5Hash` | Filter by MD5 Hash
`sha256Hash` | Filter by SHA256 Hash
`keyUsage` | Filter by Key Usage
`extendedKeyUsage` | Filter by Extended Key Usage
`requestedVia` | Filter by Requested Via. Possible values: 'WEB_FORM', 'CLIENT_ADMIN', 'API', 'DISCOVERY', 'IMPORTED', 'SCEP', 'CD_AGENT', 'MS_AGENT', 'MS_CA', 'BULK_REQUEST', 'ACME', 'EST', 'REST'

##### Example request

    $ curl 'https://cert-manager.com/api/ssl/v1' -i -X GET \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer1152' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1152'

##### Response headers

Name | Description
--- | ---
`X-Total-Count` | Contains total number of SSL certificates available according to the filtering applied

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | Array of requested ssls
`[].sslId` | `Number` | SSL ID
`[].commonName` | `String` | SSL Common Name
`[].subjectAlternativeNames` | `Array` | SSL Subject Alternative Names
`[].serialNumber` | `String` | SSL Serial Number

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 1
    Content-Type: application/json;charset=UTF-8
    Content-Length: 53

    [ {
      "sslId" : 162,
      "commonName" : "ccmqa.com"
    } ]

#### Count SSL certificates

Count all SSL certificates that match the requested filter.

##### Query parameters

Parameter | Description
--- | ---
`commonName` | Common Name
`subjectAlternativeName` | Subject Alternative Name
`status` | Filter by Status. Possible values: ', 'Invalid', 'Requested', 'Approved', 'Declined', 'Applied', 'Issued', 'Revoked', 'Expired', 'Replaced', 'Rejected', 'Unmanaged' - deprecated, result will be empty, 'SAApproved', 'Init''
`sslTypeId` | Filter by certificate Profile ID
`discoveryStatus` | Filter by discovery status. Possible values: 'NotDeployed', 'Deployed' (deprecated, see "requestedVia").
`vendor` | Filter by Vendor
`orgId` | Filter by Organization ID
`installStatus` | Filter by Install status. Possible values: 'NONE', 'NOT_STARTED', 'KEY_PROCESSING', 'KEY_READY', 'CERT_PROCESSING', 'SCHEDULED', 'INSTALLING', 'ACTION_REQUIRED', 'READY_FOR_INSTALL', 'NEED_SERVER_RESTART', 'COMPLETED', 'INVALID'
`renewalStatus` | Filter by Renewal status. Possible values: 'NOT_SCHEDULED', 'SCHEDULED', 'STARTED', 'SUCCESSFUL', 'FAILED'
`issuer` | Filter by Issuer
`serialNumber` | Filter by Serial Number
`requester` | Filter by Requester
`externalRequester` | Filter by External Requester
`signatureAlgorithm` | Filter by Signature Algorithm
`keyAlgorithm` | Filter by Key Algorithm
`keySize` | Filter by Key Size filter (deprecated, see "keyParam")
`keyParam` | Filter by Key Size / Curve Name
`sha1Hash` | Filter by SHA1 Hash
`md5Hash` | Filter by MD5 Hash
`keyUsage` | Filter by Key Usage
`extendedKeyUsage` | Filter by Extended Key Usage
`requestedVia` | Filter by Requested Via. Possible values: 'WEB_FORM', 'CLIENT_ADMIN', 'API', 'DISCOVERY', 'IMPORTED', 'SCEP', 'CD_AGENT', 'MS_AGENT', 'MS_CA', 'BULK_REQUEST', 'ACME', 'EST', 'REST'

##### Example request

    $ curl 'https://cert-manager.com/api/ssl/v1' -i -X HEAD \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer827' \
        -H 'password: Password123!' \
        -H 'customerUri: cst827'

##### Response headers

Name | Description
--- | ---
`X-Total-Count` | Contains total number of SSL certificates available according to the filtering applied

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 42

#### Get SSL certificate details

Get SSL certificate details.

##### Path parameters

Table 1. /api/ssl/v1/{sslId}
Parameter | Description
--- | ---
`sslId` | Certificate ID.

##### Example request

    $ curl 'https://cert-manager.com/api/ssl/v1/71' -i -X GET \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer631' \
        -H 'password: Password123!' \
        -H 'customerUri: cst631'

##### Response fields

Path | Type | Description
--- | --- | ---
`commonName` | `String` | Certificate common name
`sslId` | `Number` | An ID using which this certificate can be renewed or revoked through Enrollment form. Deprecated. Use 'id' instead
`id` | `Number` | An ID using which this certificate can be renewed or revoked through Enrollment form
`orgId` | `Number` | An organization which this certificate is associated with
`status` | `String` | The status of this certificate
`orderNumber` | `Number` | The obsolete parameter for the order identifier under which the certificate request has been processed. backendCertId should be used instead
`backendCertId` | `String` | Certificate ID in enrolling backend
`vendor` | `String` | The name of the issuing CA
`certType` | `Object` | Information about Certificate Profile this certificate was enrolled from
`certType.id` | `Number` | Certificate Profile ID
`certType.useSecondaryOrgName` | `Boolean` | Use secondary organization name
`certType.name` | `String` | Certificate Profile name
`certType.description` | `String` | Certificate Profile description
`certType.terms` | `Array` | Terms (in days) available for the Certificate Profile
`certType.keyTypes` | `Object` | Key types available for the Certificate Profile
`subType` | `String` | SSL Subtype, available only for managed certificates. Deprecated, will be removed in favor of validationType
`validationType` | `String` | Validation type, available only for managed certificates
`term` | `Number` | Term (days)
`owner` | `String` | The approver of the request for this certificate
`ownerId` | `Number` | The approver ID of the request for this certificate
`requester` | `String` | Requester
`requesterId` | `Number` | The Requester ID, when available
`requestedVia` | `String` | Requested Via. Possible values: 'Enrollment Form', 'Client Admin', 'Web API', 'Discovery', 'Imported', 'SCEP', 'CD Agent', 'MS Agent', 'MS CA', 'Bulk Request', 'ACME', 'EST', 'REST API'
`externalRequester` | `String` | External Requester, when available
`comments` | `String` | Comments
`requested` | `String` | Requested date
`approved` | `String` | Approved date
`issued` | `String` | Issued date
`declined` | `String` | Declined date
`expires` | `String` | Expiration date
`replaced` | `String` | Replaced date
`revoked` | `String` | Revocation date
`reasonCode` | `Number` | Revocation reason code provided on revoke to CRL (Mozilla Root Store Policy 2.8 section 6.1.1) Reason code (unspecified (0), keyCompromise (1), affiliationChanged (3), superseded (4), cessationOfOperation (5))
`renewed` | `Boolean` | Renewal indicator
`renewedDate` | `String` | Renewal date
`serialNumber` | `String` | SSL Serial Number
`signatureAlg` | `String` | Signature Algorithm
`keyAlgorithm` | `String` | Key algorithm (deprecated, see "keyType")
`keySize` | `Number` | Key size (deprecated, see "keyType")
`keyType` | `String` | Key type. For example: RSA - 2048, EC - P-256.
`keyUsages` | `Array` | Key Usages
`extendedKeyUsages` | `Array` | Extended Key Usages
`subjectAlternativeNames` | `Array` | Subject alternative names
`customFields.[]` | `Array` | Custom fields
`customFields.[].name` | `String` | Custom field name
`customFields.[].value` | `String` | Custom field value. For input type 'DATE' format is yyyy-MM-dd
`certificateDetails` | `Object` | Certificate details
`certificateDetails.issuer` | `String` | The subject of the issuing CA certificate
`certificateDetails.subject` | `String` | The subject of CA certificate
`certificateDetails.subjectAltNames` | `String` | The subject alternative names of the issuing CA certificate
`certificateDetails.md5Hash` | `String` | The MD5 fingerprint of CA certificate
`certificateDetails.sha1Hash` | `String` | The SHA1 fingerprint of CA certificate
`certificateDetails.sha256Hash` | `String` | The SHA256 fingerprint of CA certificate
`autoInstallDetails` | `Object` | Auto-Installation Information
`autoInstallDetails.state` | `String` | Auto-Installation state
`autoInstallDetails.nodes[]` | `Array` | Auto-Installation nodes (planned or already installed to)
`autoInstallDetails.nodes[].name` | `String` | Node name
`autoInstallDetails.nodes[].port` | `Number` | Node port
`autoRenewDetails` | `Object` | Auto-Renewal Information
`autoRenewDetails.state` | `String` | Auto-Renewal state
`autoRenewDetails.daysBeforeExpiration` | `Number` | Days before expiration to start auto-renewal
`suspendNotifications` | `Boolean` | Suspend Notifications for the certificate

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json;charset=UTF-8
    Content-Length: 1324

    {
      "commonName" : "ccmqa.com",
      "sslId" : 71,
      "id" : 71,
      "orgId" : 487,
      "status" : "Issued",
      "orderNumber" : 7344326,
      "backendCertId" : "7344326",
      "vendor" : "Vendor",
      "certType" : {
        "id" : 1125,
        "name" : "SSL SASP -636901162",
        "description" : "SSL SASP 879220013",
        "terms" : [ 365 ],
        "keyTypes" : {
          "RSA" : [ "1024", "2048", "4096" ]
        },
        "useSecondaryOrgName" : false
      },
      "validationType" : "Organization Validation (OV)",
      "term" : 365,
      "owner" : "client-admin-636 client-admin-636",
      "ownerId" : 322,
      "requester" : "634_nobody@nobody.sectigo.com",
      "requestedVia" : "Enrollment Form",
      "comments" : "some comments",
      "requested" : "08/15/2025",
      "expires" : "08/15/2026",
      "renewed" : false,
      "serialNumber" : "00:0::11::2:2::33",
      "keyAlgorithm" : "RSA",
      "keySize" : 2048,
      "keyType" : "RSA - 2048",
      "subjectAlternativeNames" : [ "ccmqa.com" ],
      "customFields" : [ {
        "name" : "name1",
        "value" : "value1"
      } ],
      "certificateDetails" : {
        "issuer" : "issuer",
        "sha1Hash" : "AAABBBCCC",
        "sha256Hash" : "7fbdaa891e461c286ecce7a92a8fb7fa89a5ce0cef813b3fd4b221c69b38388a"
      },
      "autoInstallDetails" : {
        "state" : "Not configured"
      },
      "autoRenewDetails" : {
        "state" : "Not scheduled"
      },
      "suspendNotifications" : false
    }

##### Get SSL certificate DCV details

###### Path parameters

Table 1. /api/ssl/v1/{sslId}/dcv
Parameter | Description
--- | ---
`sslId` | Certificate ID

###### Example request

    $ curl 'https://cert-manager.com/api/ssl/v1/142/dcv' -i -X GET \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer1006' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1006'

###### Response fields

Path | Type | Description
--- | --- | ---
`dcvLog` | `Object` | DCV Log
`dcvLog.error` | `Object` | Error details
`dcvLog.error.code` | `Number` | Error code
`dcvLog.error.description` | `String` | Error description
`dcvLog.log` | `Array` | DCV Log
`dcvLog.log[].dcvStatus` | `String` | DCV Status
`dcvLog.log[].domainName` | `String` | Domain Name
`dcvLog.log[].dcvDate` | `String` | DCV Date
`dcvLog.log[].lastCheck` | `String` | Last check
`dcvLog.log[].nextCheck` | `String` | Next check
`dcvLog.log[].dcvEmailRefNumber` | `Number` | EMAIL DCV reference number
`instructions` | `Array` | DCV Instructions
`instructions[].domainName` | `String` | Domain Name
`instructions[].dcvMode` | `String` | DCV Mode
`instructions[].host` | `String` | DNS DCV host part
`instructions[].point` | `String` | DNS DCV point part
`instructions[].url` | `String` | HTTP/S DCV file url
`instructions[].file` | `String` | HTTP/S DCV file content
`instructions[].dcvEmail` | `String` | EMAIL DCV admin contact email

###### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json;charset=UTF-8
    Content-Length: 574

    {
      "dcvLog" : {
        "error" : {
          "code" : 0,
          "description" : null
        },
        "log" : [ {
          "dcvStatus" : "Awaiting Validation",
          "domainName" : "ccmqa.com",
          "lastCheck" : "2025-08-15 09:09:01",
          "nextCheck" : "2025-08-15 10:09:01",
          "dcvDate" : null,
          "dcvEmailRefNumber" : 1
        } ]
      },
      "instructions" : [ {
        "domainName" : "ccmqa.com",
        "dcvMode" : "CNAME",
        "host" : "_4E380094C3B3B40C69203451D32E78D3.ccmqa.com.",
        "point" : "7A16100AAE509FE98CE5AC6D6F04AC81.151A1EB4B2324F07D2BDCDB6D02452D2.sectigo.com."
      } ]
    }

##### Recheck SSL certificate DCV details

Initiate recheck of SSL certificate DCV details on CA.

###### Path parameters

Table 1. /api/ssl/v1/{sslId}/dcv/recheck
Parameter | Description
--- | ---
`sslId` | Certificate ID

###### Example request

    $ curl 'https://cert-manager.com/api/ssl/v1/166/dcv/recheck' -i -X POST \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer1202' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1202'

###### Example response

    HTTP/1.1 202 Accepted
    Content-Type: application/json;charset=UTF-8
    Content-Length: 331

    {
      "dcvLog" : {
        "error" : {
          "code" : 0,
          "description" : null
        },
        "log" : [ {
          "dcvStatus" : "Awaiting Validation",
          "domainName" : "ccmqa.com",
          "lastCheck" : "2025-08-15 09:09:01",
          "nextCheck" : "2025-08-15 10:09:01",
          "dcvDate" : null,
          "dcvEmailRefNumber" : 1
        } ]
      }
    }

### Enroll SSL certificate

#### Request SSL certificate

Submit request for a new SSL certificate.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
orgId | Number | Organization ID |
csr | String | Certificate signing request | 'Must match the regular expression `[a-zA-Z0-9-=\/\s]`,Must not be empty,Size must be between 1 and 32767 inclusive'
subjAltNames | String | Subject alternative names (comma separated) |
certType | Number | Certificate Profile ID |
term | Number | Certificate validity period in days | 'Must be at least 1'
comments | String | Comments for enroll request | 'Maximum length is 1024 characters or can be empty'
customFields[] | Array | Custom fields to be applied to requested certificate. Must contain mandatory custom fields. |
customFields[].name | String | Name of an enabled custom field. | []
customFields[].value | String | Value of the custom field. | []
externalRequester | String | External Requester. Acceptable format: 'email@domain.com' or 'email1@domain.com, email2@domain.com' | 'Maximum length is 512 characters or can be empty'
dcvMode | String | DCV validation mode. Possible values: [CNAME, EMAIL, HTTP, HTTPS, TXT]. Required in case of disabled DCV pre-validation. |
dcvEmail | String | DCV validation email. Required in case of EMAIL DCV mode. | 'Must be a well-formed email address'

##### Example request

    $ curl 'https://cert-manager.com/api/ssl/v1/enroll' -i -X POST \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer647' \
        -H 'password: Password123!' \
        -H 'customerUri: cst647' \
        -d '{
      "orgId" : 491,
      "subjAltNames" : "ccmqa.com",
      "certType" : 1129,
      "term" : 365,
      "comments" : "test",
      "externalRequester" : "",
      "customFields" : [ {
        "name" : "custom field",
        "value" : "custom field value"
      } ],
      "dcvMode" : "EMAIL",
      "dcvEmail" : "admin@ccmqa.com",
      "csr" : "-----BEGIN CERTIFICATE REQUEST-----\nMIICyTCCAbECAQAwgYMxCzAJBgNVBAYTAlVBMQ8wDQYDVQQIDAZPZGVzc2ExDzAN\nBgNVBAcMBk9kZXNzYTERMA8GA1UECgwIQWR2YW5jZWQxCzAJBgNVBAsMAklUMRIw\nEAYDVQQDDAljY21xYS5jb20xHjAcBgkqhkiG9w0BCQEWD25teXphQGNjbXFhLmNv\nbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMHZo0lPzCqBVu03qHJa\np2wbOyN8kvdkU2VRj+GaF2APgrQps/sepvhyralxa9w5WD5KyoXhnM+7DPCsqDxK\nkxsBjEliLQqXwmoiai0A2DMmjWCoSMopzNTIORLPn8GaWFJSEtCa+9D1EXD2UZjS\nY/8MN0fEAIqaXFUrfW3cqW/QUjZH0mlJumUqQjtZY0DnAQsCxxZUlsHCkKEHuEQu\n5WhY8ys1/RANaoJmRh2xZuFMOZ71kLkwi5fvReqxjkRRHwG9cYDyurTNYmjkaICN\n/hqUwk9VKkW0G5ol8t0xau8RuHdDHi5Wb/R6+d/G+8/kn0BoOqseABih1+FYs+Ws\nK8UCAwEAAaAAMA0GCSqGSIb3DQEBBQUAA4IBAQA15aWRLayIuUZmPhdrpJXQAtrw\nAoeYYwp5hvaTLwZBWEg5n+ZhH5SaSCpt+53QW3+jiT8jTsPKAqyvgSQI0MVi8o5J\nJhig6pPHGSKbfxmvmfSwxK4F9W2GNVcdICX+Js0BB5UXsZB4k1gTRr1VdICNiCDc\nDZAC0+HhkZSU9StD43T9ac3gZIfEEepX9WBx9QbBASbUZ1ziSBfGKA7vnQHbC9lT\nphLa2SvCSozmG36vYMV+Ak5YWnrp2c1Jhcd8PE0TIW6yPT+D6UvcZWb+KHfw2KAH\nVXPNFSgSZkMzFBMQJH9UcfyvPX5+7qXakxAhLS/zKOg7Y601cRg5/Eqa0Z59\n-----END CERTIFICATE REQUEST-----"
    }'

##### Response fields

Path | Type | Description
--- | --- | ---
`renewId` | `String` | Renew id
`sslId` | `Number` | SSL id

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json;charset=UTF-8
    Content-Length: 56

    {
      "sslId" : 72,
      "renewId" : "SwtLTSwRitETQXEKXTrq"
    }

#### Request SSL certificate with Private Key Agent

Submit request for a new SSL certificate with generated keypair. Private key will be generated on the Private Key Agent.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
orgId | Number | Organization ID |
commonName | String | Certificate common name | 'Must not be null,Size must be between 1 and 64 inclusive'
subjAltNames | String | Subject alternative names (comma separated) |
certType | Number | Certificate Profile ID |
term | Number | Certificate validity period in days | 'Must be at least 1'
comments | String | Comments for enroll request | 'Maximum length is 1024 characters or can be empty'
algorithm | String | Keypair algorithm | Possible values: RSA, EC
keySize | Number | Keypair key size (deprecated, see "keyParam") | Applied only in case keypair algorithm is specified.
keyParam | String | Keypair key size (for RSA) or curve name (for EC) | Applied only in case keypair algorithm is specified.
customFields[] | Array | Custom fields to be applied to requested certificate. Must contain mandatory custom fields. |
customFields[].name | String | Name of an enabled custom field. | []
customFields[].value | String | Value of the custom field. | []
externalRequester | String | External Requester. Acceptable format: 'email@domain.com' or 'email1@domain.com, email2@domain.com' | 'Maximum length is 512 characters or can be empty'
keyGenerationMethod | String | Key generation method | Possible values: [PK_AGENT, AZURE_KEY_VAULT]
passPhrase | String | Password to protect PKCS#12 certificate.(Only for Private Key agent key generation) | 'Size must be between 8 and 64 inclusive'

##### Example request

    $ curl 'https://cert-manager.com/api/ssl/v1/enroll-keygen' -i -X POST \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer659' \
        -H 'password: Password123!' \
        -H 'customerUri: cst659' \
        -d '{
      "orgId" : 495,
      "subjAltNames" : "ccmqa.com",
      "certType" : 1133,
      "term" : 365,
      "comments" : "test",
      "externalRequester" : "",
      "customFields" : [ {
        "name" : "custom field",
        "value" : "custom field value"
      } ],
      "commonName" : "ccmqa.com",
      "passPhrase" : "password",
      "keySize" : 2048,
      "keyParam" : "2048",
      "algorithm" : "RSA",
      "keyGenerationMethod" : "PK_AGENT"
    }'

##### Response fields

Path | Type | Description
--- | --- | ---
`renewId` | `String` | Renew id
`sslId` | `Number` | SSL id

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json;charset=UTF-8
    Content-Length: 56

    {
      "sslId" : 74,
      "renewId" : "k1UFQF1ZJpsAAER71Tjh"
    }

#### Request SSL certificate with Azure KeyVault

Submit request for a new SSL certificate with generated keypair. Private key will be generated in Azure KeyVault.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
orgId | Number | Organization ID |
commonName | String | Certificate common name | 'Must not be null,Size must be between 1 and 64 inclusive'
subjAltNames | String | Subject alternative names (comma separated) |
certType | Number | Certificate Profile ID |
term | Number | Certificate validity period in days | 'Must be at least 1'
comments | String | Comments for enroll request | 'Maximum length is 1024 characters or can be empty'
algorithm | String | Keypair algorithm | Possible values: RSA, EC
keySize | Number | Keypair key size (deprecated, see "keyParam") | Applied only in case keypair algorithm is specified.
keyParam | String | Keypair key size (for RSA) or curve name (for EC) | Applied only in case keypair algorithm is specified.
customFields[] | Array | Custom fields to be applied to requested certificate. Must contain mandatory custom fields. |
customFields[].name | String | Name of an enabled custom field. | []
customFields[].value | String | Value of the custom field. | []
externalRequester | String | External Requester. Acceptable format: 'email@domain.com' or 'email1@domain.com, email2@domain.com' | 'Maximum length is 512 characters or can be empty'
keyGenerationMethod | String | Key generation method | Possible values: [PK_AGENT, AZURE_KEY_VAULT]
azureKeyVault | Object | Azure Key Vault settings |
azureKeyVault.azureAccountId | Number | Azure Account ID |
azureKeyVault.vaultKey | String | Vault Key |
reuseKey | Boolean | Reuse key from Azure Key Vault |
exportableKey | Boolean | Exportable key from Azure Key Vault (only for non HSM vaults) |
hsmOnly | Boolean | HSM only key from Azure Key Vault |
dcvMode | String | DCV validation mode. Possible values: [CNAME, EMAIL, HTTP, HTTPS, TXT]. Required in case of disabled DCV pre-validation. |
dcvEmail | String | DCV validation email. Required in case of EMAIL DCV mode. | 'Must be a well-formed email address'

##### Example request

    $ curl 'https://cert-manager.com/api/ssl/v1/enroll-keygen' -i -X POST \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer653' \
        -H 'password: Password123!' \
        -H 'customerUri: cst653' \
        -d '{
      "orgId" : 493,
      "subjAltNames" : "ccmqa.com",
      "certType" : 1132,
      "term" : 365,
      "comments" : "test",
      "externalRequester" : "",
      "customFields" : [ {
        "name" : "custom field",
        "value" : "custom field value"
      } ],
      "dcvMode" : null,
      "dcvEmail" : null,
      "commonName" : "ccmqa.com",
      "keySize" : 2048,
      "keyParam" : "2048",
      "algorithm" : "RSA",
      "keyGenerationMethod" : "AZURE_KEY_VAULT",
      "azureKeyVault" : {
        "azureAccountId" : 50,
        "vaultKey" : "/subscriptions/dde65984-58b0-4495-bfb6-76b08f0681d7/resourceGroups/testResourceGroup/providers/Microsoft.KeyVault/vaults/name2-kv"
      },
      "reuseKey" : false,
      "exportableKey" : false,
      "hsmOnly" : false
    }'

##### Response fields

Path | Type | Description
--- | --- | ---
`renewId` | `String` | Renew id
`sslId` | `Number` | SSL id

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json;charset=UTF-8
    Content-Length: 56

    {
      "sslId" : 73,
      "renewId" : "horQl1PEmas9MycxtEpb"
    }

#### Collect SSL certificate

Download issued SSL certificate.

##### Path parameters

Table 1. /api/ssl/v1/collect/{sslId}
Parameter | Description
--- | ---
`sslId` | Certificate ID.

##### Query parameters

Parameter | Description
--- | ---

`format`

Format type for certificate. Allowed values: 'x509' - for Certificate (w/ chain), PEM encoded, 'x509CO' - for Certificate only, PEM encoded, 'base64' - for PKCS#7, PEM encoded, 'bin' - for PKCS#7, 'x509IO' - for Root/Intermediate(s) only, PEM encoded, 'x509IOR' - for Intermediate(s)/Root only, PEM encoded, 'pem' - for Certificate (w/ chain), PEM encoded, 'pemco' - for Certificate only, PEM encoded, 'pemia' - for Certificate (w/ issuer after), PEM encoded, 'x509R' - for Certificate (w/ chain), PEM encoded. base64 is default.

##### Example request

    $ curl 'https://cert-manager.com/api/ssl/v1/collect/67?format=base64' -i -X GET \
        -H 'login: admin_customer599' \
        -H 'password: Password123!' \
        -H 'customerUri: cst599'

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/octet-stream;charset=UTF-8
    Content-Length: 7411
    Content-Disposition: attachment; filename="test.cert"

    -----BEGIN CERTIFICATE-----
    MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU
    MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs
    IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290
    MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux
    FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h
    bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v
    dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt
    H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9
    uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX
    mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX
    a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN
    E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0
    WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD
    VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0
    Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU
    cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx
    IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN
    AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH
    YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
    6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC
    Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX
    c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a
    mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    MIIFdzCCBF+gAwIBAgIQE+oocFv07O0MNmMJgGFDNjANBgkqhkiG9w0BAQwFADBv
    MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFk
    ZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBF
    eHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFow
    gYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5MRQwEgYDVQQHEwtK
    ZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMS4wLAYD
    VQQDEyVVU0VSVHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjAN
    BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAgBJlFzYOw9sIs9CsVw127c0n00yt
    UINh4qogTQktZAnczomfzD2p7PbPwdzx07HWezcoEStH2jnGvDoZtF+mvX2do2NC
    tnbyqTsrkfjib9DsFiCQCT7i6HTJGLSR1GJk23+jBvGIGGqQIjy8/hPwhxR79uQf
    jtTkUcYRZ0YIUcuGFFQ/vDP+fmyc/xadGL1RjjWmp2bIcmfbIWax1Jt4A8BQOujM
    8Ny8nkz+rwWWNR9XWrf/zvk9tyy29lTdyOcSOk2uTIq3XJq0tyA9yn8iNK5+O2hm
    AUTnAU5GU5szYPeUvlM3kHND8zLDU+/bqv50TmnHa4xgk97Exwzf4TKuzJM7UXiV
    Z4vuPVb+DNBpDxsP8yUmazNt925H+nND5X4OpWaxKXwyhGNVicQNwZNUMBkTrNN9
    N6frXTpsNVzbQdcS2qlJC9/YgIoJk2KOtWbPJYjNhLixP6Q5D9kCnusSTJV882sF
    qV4Wg8y4Z+LoE53MW4LTTLPtW//e5XOsIzstAL81VXQJSdhJWBp/kjbmUZIO8yZ9
    HE0XvMnsQybQv0FfQKlERPSZ51eHnlAfV1SoPv10Yy+xUGUJ5lhCLkMaTLTwJUdZ
    +gQek9QmRkpQgbLevni3/GcV4clXhB4PY9bpYrrWX1Uu6lzGKAgEJTm4Diup8kyX
    HAc/DVL17e8vgg8CAwEAAaOB9DCB8TAfBgNVHSMEGDAWgBStvZh6NLQm9/rEJlTv
    A73gJMtUGjAdBgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/
    BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0gBAowCDAGBgRVHSAAMEQGA1Ud
    HwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9BZGRUcnVzdEV4
    dGVybmFsQ0FSb290LmNybDA1BggrBgEFBQcBAQQpMCcwJQYIKwYBBQUHMAGGGWh0
    dHA6Ly9vY3NwLnVzZXJ0cnVzdC5jb20wDQYJKoZIhvcNAQEMBQADggEBAJNl9jeD
    lQ9ew4IcH9Z35zyKwKoJ8OkLJvHgwmp1ocd5yblSYMgpEg7wrQPWCcR23+WmgZWn
    RtqCV6mVksW2jwMibDN3wXsyF24HzloUQToFJBv2FAY7qCUkDrvMKnXduXBBP3zQ
    YzYhBx9G/2CkkeFnvN4ffhkUyWNnkepnB2u0j4vAbkN9w6GAbLIevFOFfdyQoaS8
    Le9Gclc1Bb+7RrtubTeZtv8jkpHGbkD4jylW6l/VXxRTrPBPYer3IsynVgviuDQf
    Jtl7GQVoP7o81DgGotPmjw7jtHFtQELFhLRAlSv0ZaBIefYdgWOWnU914Ph85I6p
    0fKtirOMxyHNwu8=
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    MIIF9TCCA92gAwIBAgIQHaJIMG+bJhjQguCWfTPTajANBgkqhkiG9w0BAQwFADCB
    iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl
    cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV
    BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTgx
    MTAyMDAwMDAwWhcNMzAxMjMxMjM1OTU5WjB8MQswCQYDVQQGEwJHQjEbMBkGA1UE
    CBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQK
    Ew9TZWN0aWdvIExpbWl0ZWQxJDAiBgNVBAMTG1NlY3RpZ28gUlNBIENvZGUgU2ln
    bmluZyBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAIYijTKFehif
    SfCWL2MIHi3cfJ8Uz+MmtiVmKUCGVEZ0MWLFEO2yhyemmcuVMMBW9aR1xqkOUGKl
    UZEQauBLYq798PgYrKf/7i4zIPoMGYmobHutAMNhodxpZW0fbieW15dRhqb0J+V8
    aouVHltg1X7XFpKcAC9o95ftanK+ODtj3o+/bkxBXRIgCFnoOc2P0tbPBrRXBbZO
    oT5Xax+YvMRi1hsLjcdmG0qfnYHEckC14l/vC0X/o84Xpi1VsLewvFRqnbyNVlPG
    8Lp5UEks9wO5/i9lNfIi6iwHr0bZ+UYc3Ix8cSjz/qfGFN1VkW6KEQ3fBiSVfQ+n
    oXw62oY1YdMCAwEAAaOCAWQwggFgMB8GA1UdIwQYMBaAFFN5v1qqK0rPVIDh2JvA
    nfKyA2bLMB0GA1UdDgQWBBQO4TqoUzox1Yq+wbutZxoDha00DjAOBgNVHQ8BAf8E
    BAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHSUEFjAUBggrBgEFBQcDAwYI
    KwYBBQUHAwgwEQYDVR0gBAowCDAGBgRVHSAAMFAGA1UdHwRJMEcwRaBDoEGGP2h0
    dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9u
    QXV0aG9yaXR5LmNybDB2BggrBgEFBQcBAQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6
    Ly9jcnQudXNlcnRydXN0LmNvbS9VU0VSVHJ1c3RSU0FBZGRUcnVzdENBLmNydDAl
    BggrBgEFBQcwAYYZaHR0cDovL29jc3AudXNlcnRydXN0LmNvbTANBgkqhkiG9w0B
    AQwFAAOCAgEATWNQ7Uc0SmGk295qKoyb8QAAHh1iezrXMsL2s+Bjs/thAIiaG20Q
    BwRPvrjqiXgi6w9G7PNGXkBGiRL0C3danCpBOvzW9Ovn9xWVM8Ohgyi33i/klPeF
    M4MtSkBIv5rCT0qxjyT0s4E307dksKYjalloUkJf/wTr4XRleQj1qZPea3FAmZa6
    ePG5yOLDCBaxq2NayBWAbXReSnV+pbjDbLXP30p5h1zHQE1jNfYw08+1Cg4LBH+g
    S667o6XQhACTPlNdNKUANWlsvp8gJRANGftQkGG+OY96jk32nw4e/gdREmaDJhlI
    lc5KycF/8zoFm/lv34h/wCOe0h5DekUxwZxNqfBZslkZ6GqNKQQCd3xLS81wvjqy
    VVp4Pry7bwMQJXcVNIr5NsxDkuS6T/FikyglVyn7URnHoSVAaoRXxrKdsbwcCtp8
    Z359LukoTBh+xHsxQXGaSynsCz1XUNLK3f2eBVHlRHjdAd6xdZgNVCT98E7j4viD
    vXK6yz067vBeF5Jobchh+abxKgoLpbn0nu6YMgWFnuv5gynTxix9vTp3Los3QqBq
    gu07SqqUEKThDfgXxbZaeTMYkuO1dfih6Y4KJR7kHvGfWocj/5+kUZ77OYARzdu1
    xKeogG/lU9Tg46LC0lsa+jImLWpXcBw8pFguo/NbSwfcMlnzh6cabVg=
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    MIIFCjCCA/KgAwIBAgIRAKicluNCIKrVY1IbC+37vhUwDQYJKoZIhvcNAQELBQAw
    fDELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
    A1UEBxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMSQwIgYDVQQD
    ExtTZWN0aWdvIFJTQSBDb2RlIFNpZ25pbmcgQ0EwHhcNMTkwNjEzMDAwMDAwWhcN
    MjEwNjEyMjM1OTU5WjB7MQswCQYDVQQGEwJDQTEOMAwGA1UEEQwFNTU1MjYxDjAM
    BgNVBAgMBUlkYWhvMQ8wDQYDVQQHDAZLYW5hdGExEzARBgNVBAkMCjE5ODggbWFy
    Y2gxEjAQBgNVBAoMCXRlc3QgY3JvcDESMBAGA1UEAwwJdGVzdCBjcm9wMIIBIjAN
    BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6A5w8ndXAWk8+6Zx+84FRiIX+B6t
    xiKp1MHk7YA90mUdoU6nX/nqZErAtLMCr3C8x1nDlKZRvpMQIZhAT30orTm2TQXE
    jOD5zIpxgG0YtQEyGRcpdehviwl+IkdWltgZe4adghJKUWEKfCvnWJrnK81ppcuA
    xla4A1uLXYV7PoZIDi527xZK12SC9hxKYOHlcJ/od+NsUv114KFUTGe/EGuV9TQj
    /VBOeObbfeAoOJvDNSso5EXKOu/WtEdiDZ5+2oUFz4lyzQyTtUA4cikClOfd2xBD
    DvmfuoPhPj+1UsdqSDbE5xS3O8eIU9rnzVAbWe7YKe7+UBq8Sg2HUqJm2QIDAQAB
    o4IBhjCCAYIwHwYDVR0jBBgwFoAUDuE6qFM6MdWKvsG7rWcaA4WtNA4wHQYDVR0O
    BBYEFNpOBbcvZE5tFiSfOs1nwjjWXWtIMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMB
    Af8EAjAAMBMGA1UdJQQMMAoGCCsGAQUFBwMDMBEGCWCGSAGG+EIBAQQEAwIEEDBA
    BgNVHSAEOTA3MDUGDCsGAQQBsjEBAgEDAjAlMCMGCCsGAQUFBwIBFhdodHRwczov
    L3NlY3RpZ28uY29tL0NQUzBDBgNVHR8EPDA6MDigNqA0hjJodHRwOi8vY3JsLnNl
    Y3RpZ28uY29tL1NlY3RpZ29SU0FDb2RlU2lnbmluZ0NBLmNybDBzBggrBgEFBQcB
    AQRnMGUwPgYIKwYBBQUHMAKGMmh0dHA6Ly9jcnQuc2VjdGlnby5jb20vU2VjdGln
    b1JTQUNvZGVTaWduaW5nQ0EuY3J0MCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5z
    ZWN0aWdvLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAAAECAwQFBgcICQoLDA0ODxAR
    EhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BB
    QkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3Bx
    cnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6Ch
    oqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR
    0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w==
    -----END CERTIFICATE-----

#### Download private key from Private Key Agent

Generation of a link to download private key from Private Key Agent.

##### Path parameters

Table 1. /api/ssl/v1/keystore/{sslId}/{formatType}
Parameter | Description
--- | ---
`sslId` | SSL ID for which the link will be generated.
`formatType` | Parameter to specify download format: key only or entire certificate. Possible values: 'key' - for Private Key, Base64 encoded, 'p12' - for PKCS#12, Base64 encoded, 'p12aes' - for Certificate and Private Key, PKCS#12, 'jks' - for Certificate and Private Key, Java Key Store, 'pem' - for Certificate and Private Key, Encrypted PEM,

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
passphrase | String | Passphrase to protect certificate with private key. | Must comply to organization password policy. [Maximum length is 32 characters or can be empty]

##### Example request

    $ curl 'https://cert-manager.com/api/ssl/v1/keystore/138/p12' -i -X POST \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer971' \
        -H 'password: Password123!' \
        -H 'customerUri: cst971' \
        -H 'Accept: application/json' \
        -d '{
      "passphrase" : "123"
    }'

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json;charset=UTF-8
    Content-Length: 110

    {
      "link" : "https://{private_key_agent_host_name}/download?token=9STOEPH57C84UOME35RFR165QI&keyformat=p12"
    }

#### Approve SSL certificate

Approve a SSL certificate request that needs approval.

##### Path parameters

Table 1. /api/ssl/v1/approve/{sslId}
Parameter | Description
--- | ---
`sslId` | Certificate ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
message | String | Short message containing accompanying information for certificate approval action | [Must not be empty, Size must be between 1 and 512 inclusive]

##### Example request

    $ curl 'https://cert-manager.com/api/ssl/v1/approve/90' -i -X POST \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer819' \
        -H 'password: Password123!' \
        -H 'customerUri: cst819' \
        -d '{
      "message" : "test"
    }'

##### Example response

    HTTP/1.1 204 No Content

#### Decline SSL certificate

Decline a SSL certificate request.

##### Path parameters

Table 1. /api/ssl/v1/decline/{sslId}
Parameter | Description
--- | ---
`sslId` | Certificate ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
message | String | Short message containing accompanying information for certificate declining action | [Must not be empty, Size must be between 1 and 512 inclusive]

##### Example request

    $ curl 'https://cert-manager.com/api/ssl/v1/decline/134' -i -X POST \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer925' \
        -H 'password: Password123!' \
        -H 'customerUri: cst925' \
        -d '{
      "message" : "test"
    }'

##### Example response

    HTTP/1.1 204 No Content

### Manage SSL certificate

#### Update SSL certificate details

Update SSL certificate.

| You can update only certificate fields listed in the table below. Organization ID, Certificate Profile ID, Term, Common name, CSR, SANs can be edited if a certificate state is one of: Requested, Declined, Rejected, Invalid

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
sslId | Number | Certificate ID | [Must be at least 1, Must not be null]
term | Number | Term (days) | [Must be at least 1]
certTypeId | Number | Certificate Profile ID | [Must be at least 1]
orgId | Number | Organization ID | [Must be at least 1]
commonName | String | Certificate common name | []
csr | String | Certificate signing request | [Must match the regular expression `[a-zA-Z0-9-=\/\s]`, Size must be between 1 and 32767 inclusive]
externalRequester | String | External requester emails, comma-separated | []
comments | String | Comments | [Maximum length is 1024 characters or can be empty]
subjectAlternativeNames | Array | Subject alternative names | []
customFields | Array | Custom fields | []
customFields[].name | String | Example of custom field name | [Must not be null, Size must be between 1 and 256 inclusive]
customFields[].value | String | Example of custom field value. For input type 'DATE' format is yyyy-MM-dd | [Must not be null, Maximum length is 256 characters or can be empty]
autoRenewDetails | Object | Auto-Renewal Information | []
autoRenewDetails.state | String | Auto-Renewal state | [Allowed values 'Not scheduled' and 'Scheduled'], defaults to 'Not scheduled'
autoRenewDetails.daysBeforeExpiration | Number | Days before expiration to start auto-renewal | [Must be at least 1], defaults to 30 days. Auto-renewal state must be 'Scheduled' for days to update
suspendNotifications | Boolean | Suspend Notifications for the certificate | []
requester | String | Requester | []
requesterAdminId | Number | Requester Admin Id | [Must be at least 1]
approverAdminId | Number | Approver Admin Id. Value -1 will set the approver admin to <None> | [Must be at least -1]

##### Example request

    $ curl 'https://cert-manager.com/api/ssl/v1' -i -X PUT \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer1294' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1294' \
        -H 'Accept: application/json' \
        -d '{
      "customFields" : [ {
        "name" : "name1",
        "value" : "value1"
      } ],
      "comments" : "some comments",
      "sslId" : 176,
      "term" : 365,
      "certTypeId" : 1200,
      "orgId" : 732,
      "commonName" : "ccmqa.com",
      "csr" : "MIIC1zCCAb8CAQAwgZExCzAJBgNVBAYTAlVBMRIwEAYDVQQIDAljY21xYS5jb20x\nEjAQBgNVBAcMCWNjbXFhLmNvbTESMBAGA1UECgwJY2NtcWEuY29tMRIwEAYDVQQL\nDAljY21xYS5jb20xEjAQBgNVBAMMCWNjbXFhLmNvbTEeMBwGCSqGSIb3DQEJARYP\nYWRtaW5AY2NtcWEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nsdkqSb/r4zpbi2GCnCRvYo+CbnQg/wRbsObr0m9OXEP1jSTuj8CqJZvTnGjE15fy\npdTGadc40saepghV4gIUOnFpYQRZacSN3VPLxF9rjnLEDBn7mTqbtbvxjhOaiPYz\nZgEa6kOOf851rujvl0WClMuWTIoXM7OmaHZA1NorGc3lag+D+4Tx8j1ry22EphXE\nd+Pm+4Tf/Fshd9Cm1r1JLcnlq0YdkV6ynzeKbUJX1cdYyMrxWTnBy/Tp0dM8FDGY\nMQ3ArQBIaDPGOnq1Gfd/yLrbaQD/j0ntZ4WKIWTlJLAkDu0AySz9Tc+DBCTrGvor\n9tjfWaeQo7CU+pENRyYzEwIDAQABoAAwDQYJKoZIhvcNAQEFBQADggEBAIBptH2V\nU66GWFt5nHiMZnPRD8r4/JfqDvtPbV+qbXz2G/S+nuw0dhzGb4zCp6INH7UgO21o\nGHqIO2we9o31CmfbfJBptQdcJ0h+b/1Awp/DJulwoNXHgUqq+PbKe2j+QdOTH8EG\nszGnRo3Li9WA+V3LkYi0GkBFKsP5SyKFA/am2A0TRyy9FJ6MaMPkwV397tKJJ+Hu\n0/YfJkwTaK6JGujEQOUBtTU6QmpWjfih5CafxaDFrFkzdPo8by+W8W13T1dvqBcs\nAZtdcEIcajHZ6sF/xEm9Dfui17R8a4kAHx8QD046mEt0/OxAacEURKkJeRQlRgN9\nTSfJ16hdPk69U4M=",
      "externalRequester" : "",
      "subjectAlternativeNames" : [ "ccmqa.com" ]
    }'

##### Response fields

Path | Type | Description
--- | --- | ---
`commonName` | `String` | Certificate common name
`sslId` | `Number` | An ID using which this certificate can be renewed or revoked through Enrollment form. Deprecated. Use 'id' instead
`id` | `Number` | An ID using which this certificate can be renewed or revoked through Enrollment form
`orgId` | `Number` | An organization which this certificate is associated with
`status` | `String` | The status of this certificate
`orderNumber` | `Number` | The obsolete parameter for the order identifier under which the certificate request has been processed. backendCertId should be used instead
`backendCertId` | `String` | Certificate ID in enrolling backend
`vendor` | `String` | The name of the issuing CA
`certType` | `Object` | Information about Certificate Profile this certificate was enrolled from
`certType.id` | `Number` | Certificate Profile ID
`certType.useSecondaryOrgName` | `Boolean` | Use secondary organization name
`certType.name` | `String` | Certificate Profile name
`certType.description` | `String` | Certificate Profile description
`certType.terms` | `Array` | Terms (in days) available for the Certificate Profile
`certType.keyTypes` | `Object` | Key types available for the Certificate Profile
`subType` | `String` | SSL Subtype, available only for managed certificates. Deprecated, will be removed in favor of validationType
`validationType` | `String` | Validation type, available only for managed certificates
`term` | `Number` | Term (days)
`owner` | `String` | The approver of the request for this certificate
`ownerId` | `Number` | The approver ID of the request for this certificate
`requester` | `String` | Requester
`requesterId` | `Number` | The Requester ID, when available
`requestedVia` | `String` | Requested Via. Possible values: 'Enrollment Form', 'Client Admin', 'Web API', 'Discovery', 'Imported', 'SCEP', 'CD Agent', 'MS Agent', 'MS CA', 'Bulk Request', 'ACME', 'EST', 'REST API'
`externalRequester` | `String` | External Requester, when available
`comments` | `String` | Comments
`requested` | `String` | Requested date
`approved` | `String` | Approved date
`issued` | `String` | Issued date
`declined` | `String` | Declined date
`expires` | `String` | Expiration date
`replaced` | `String` | Replaced date
`revoked` | `String` | Revocation date
`reasonCode` | `Number` | Revocation reason code provided on revoke to CRL (Mozilla Root Store Policy 2.8 section 6.1.1) Reason code (unspecified (0), keyCompromise (1), affiliationChanged (3), superseded (4), cessationOfOperation (5))
`renewed` | `Boolean` | Renewal indicator
`renewedDate` | `String` | Renewal date
`signatureAlg` | `String` | Signature Algorithm
`keyAlgorithm` | `String` | Key algorithm (deprecated, see "keyType")
`keySize` | `Number` | Key size (deprecated, see "keyType")
`keyType` | `String` | Key type. For example: RSA - 2048, EC - P-256.
`keyUsages` | `Array` | Key Usages
`extendedKeyUsages` | `Array` | Extended Key Usages
`subjectAlternativeNames` | `Array` | Subject alternative names
`customFields.[]` | `Array` | Custom fields
`customFields.[].name` | `String` | Custom field name
`customFields.[].value` | `String` | Custom field value. For input type 'DATE' format is yyyy-MM-dd
`certificateDetails` | `Object` | Certificate details
`certificateDetails.issuer` | `String` | The subject of the issuing CA certificate
`certificateDetails.subject` | `String` | The subject of CA certificate
`certificateDetails.subjectAltNames` | `String` | The subject alternative names of the issuing CA certificate
`certificateDetails.md5Hash` | `String` | The MD5 fingerprint of CA certificate
`certificateDetails.sha1Hash` | `String` | The SHA1 fingerprint of CA certificate
`certificateDetails.sha256Hash` | `String` | The SHA256 fingerprint of CA certificate
`autoInstallDetails` | `Object` | Auto-Installation Information
`autoInstallDetails.state` | `String` | Auto-Installation state
`autoInstallDetails.nodes[]` | `Array` | Auto-Installation nodes (planned or already installed to)
`autoInstallDetails.nodes[].name` | `String` | Node name
`autoInstallDetails.nodes[].port` | `Number` | Node port
`autoRenewDetails` | `Object` | Auto-Renewal Information
`autoRenewDetails.state` | `String` | Auto-Renewal state
`autoRenewDetails.daysBeforeExpiration` | `Number` | Days before expiration to start auto-renewal
`suspendNotifications` | `Boolean` | Suspend Notifications for the certificate

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json;charset=UTF-8
    Content-Length: 1198

    {
      "commonName" : "ccmqa.com",
      "sslId" : 176,
      "id" : 176,
      "orgId" : 732,
      "status" : "Requested",
      "orderNumber" : 7344326,
      "backendCertId" : "7344326",
      "vendor" : "Vendor",
      "certType" : {
        "id" : 1200,
        "name" : "SSL SASP -1212434397",
        "description" : "SSL SASP -1577387451",
        "terms" : [ 365 ],
        "keyTypes" : {
          "RSA" : [ "1024", "2048", "4096" ]
        },
        "useSecondaryOrgName" : false
      },
      "validationType" : "Organization Validation (OV)",
      "term" : 365,
      "owner" : "client-admin-1299 client-admin-1299",
      "ownerId" : 557,
      "requester" : "1297_nobody@nobody.sectigo.com",
      "requestedVia" : "Enrollment Form",
      "comments" : "some comments",
      "requested" : "08/15/2025",
      "expires" : "08/15/2026",
      "renewed" : false,
      "keyAlgorithm" : "RSA",
      "keySize" : 0,
      "keyType" : "RSA",
      "subjectAlternativeNames" : [ "ccmqa.com" ],
      "customFields" : [ {
        "name" : "name1",
        "value" : "value1"
      } ],
      "certificateDetails" : {
        "issuer" : "issuer",
        "sha1Hash" : "AAABBBCCC"
      },
      "autoInstallDetails" : {
        "state" : "Not configured"
      },
      "autoRenewDetails" : {
        "state" : "Not scheduled"
      },
      "suspendNotifications" : false
    }

#### Revoke SSL certificate by Id

Sending a request to CA to add the particular SSL certificate in certificate revocation list.

##### Path parameters

Table 1. /api/ssl/v1/revoke/{sslId}
Parameter | Description
--- | ---
`sslId` | Certificate ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
reasonCode | Number | Revocation reason code to be put to CRL (Mozilla Root Store Policy 2.8 section 6.1.1) Reason code (unspecified (0), keyCompromise (1), affiliationChanged (3), superseded (4), cessationOfOperation (5)) | [Allowed ranges 0,1 and 3-5]
reason | String | Short message with a reason why certificate needs to be revoked | [Must not be empty, Size must be between 1 and 512 inclusive]

##### Example request

    $ curl 'https://cert-manager.com/api/ssl/v1/revoke/167' -i -X POST \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer1210' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1210' \
        -d '{
      "reasonCode" : 4,
      "reason" : "my reason"
    }'

##### Example response

    HTTP/1.1 204 No Content

#### Revoke SSL certificate by serial number

Sending a request to CA to add the particular SSL certificate in certificate revocation list.

##### Path parameters

Table 1. /api/ssl/v1/revoke/serial/{serialNumber}
Parameter | Description
--- | ---
`serialNumber` | Serial Number of certificate

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
reasonCode | Number | Revocation reason code to be put to CRL (Mozilla Root Store Policy 2.8 section 6.1.1) Reason code (unspecified (0), keyCompromise (1), affiliationChanged (3), superseded (4), cessationOfOperation (5)) | [Allowed ranges 0,1 and 3-5]
reason | String | Short message with a reason why certificate needs to be revoked | [Must not be empty, Size must be between 1 and 512 inclusive]

##### Example request

    $ curl 'https://cert-manager.com/api/ssl/v1/revoke/serial/A9:3E:C0:61:FB:1E:C0:10:73:05:65:00:8D:72:D8:69' -i -X POST \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer1254' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1254' \
        -d '{
      "reasonCode" : 3,
      "reason" : "my reason"
    }'

##### Example response

    HTTP/1.1 204 No Content

#### Manual Revoke SSL certificate by Id or serial number + issuer

Mark certificate as revoked. The certificate is not revoked on CA side.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
certId | Number | Certificate ID. Required if `serialNumber` and `issuer` are not provided. | Must be present if serialNumber and issuer are not provided
serialNumber | Number | Certificate serial number. Required if `certId` is not provided (used together with `issuer`). | Must be present with issuer if certId is not provided
issuer | Number | Certificate issuer. Required if `certId` is not provided (used together with `serialNumber`). | Must be present with serialNumber if certId is not provided
revokeDate | String | Certificate revoke date | []
reasonCode | Number | Revocation reason code to be put to CRL (Mozilla Root Store Policy 2.8 section 6.1.1) Reason code (unspecified (0), keyCompromise (1), affiliationChanged (3), superseded (4), cessationOfOperation (5)) | [Allowed ranges 0,1 and 3-5]

##### Example request

    $ curl 'https://cert-manager.com/api/ssl/v1/revoke/manual' -i -X POST \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer1160' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1160' \
        -d '{
      "certId" : 163,
      "serialNumber" : null,
      "issuer" : null,
      "revokeDate" : "2025-06-10T00:00:00Z",
      "reasonCode" : 4
    }'

##### Example response

    HTTP/1.1 204 No Content

#### Renew SSL certificate by renew Id

Submission of a request for a new SSL certificate using the CSR and parameters of the initial certificate. The initial certificate is the one that is selected by the administrator for renewal in this case.

##### Path parameters

Table 1. /api/ssl/v1/renew/{renewId}
Parameter | Description
--- | ---
`renewId` | Renew ID for certificate.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
csr | String | Certificate signing request (optional) | 'Must match the regular expression `[a-zA-Z0-9-=\/\s]`,Size must be between 1 and 32767 inclusive'

##### Example request

    $ curl 'https://cert-manager.com/api/ssl/v1/renew/10' -i -X POST \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer783' \
        -H 'password: Password123!' \
        -H 'customerUri: cst783' \
        -d '{
      "csr" : "-----BEGIN CERTIFICATE REQUEST-----\nMIICyTCCAbECAQAwgYMxCzAJBgNVBAYTAlVBMQ8wDQYDVQQIDAZPZGVzc2ExDzAN\nBgNVBAcMBk9kZXNzYTERMA8GA1UECgwIQWR2YW5jZWQxCzAJBgNVBAsMAklUMRIw\nEAYDVQQDDAljY21xYS5jb20xHjAcBgkqhkiG9w0BCQEWD25teXphQGNjbXFhLmNv\nbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMHZo0lPzCqBVu03qHJa\np2wbOyN8kvdkU2VRj+GaF2APgrQps/sepvhyralxa9w5WD5KyoXhnM+7DPCsqDxK\nkxsBjEliLQqXwmoiai0A2DMmjWCoSMopzNTIORLPn8GaWFJSEtCa+9D1EXD2UZjS\nY/8MN0fEAIqaXFUrfW3cqW/QUjZH0mlJumUqQjtZY0DnAQsCxxZUlsHCkKEHuEQu\n5WhY8ys1/RANaoJmRh2xZuFMOZ71kLkwi5fvReqxjkRRHwG9cYDyurTNYmjkaICN\n/hqUwk9VKkW0G5ol8t0xau8RuHdDHi5Wb/R6+d/G+8/kn0BoOqseABih1+FYs+Ws\nK8UCAwEAAaAAMA0GCSqGSIb3DQEBBQUAA4IBAQA15aWRLayIuUZmPhdrpJXQAtrw\nAoeYYwp5hvaTLwZBWEg5n+ZhH5SaSCpt+53QW3+jiT8jTsPKAqyvgSQI0MVi8o5J\nJhig6pPHGSKbfxmvmfSwxK4F9W2GNVcdICX+Js0BB5UXsZB4k1gTRr1VdICNiCDc\nDZAC0+HhkZSU9StD43T9ac3gZIfEEepX9WBx9QbBASbUZ1ziSBfGKA7vnQHbC9lT\nphLa2SvCSozmG36vYMV+Ak5YWnrp2c1Jhcd8PE0TIW6yPT+D6UvcZWb+KHfw2KAH\nVXPNFSgSZkMzFBMQJH9UcfyvPX5+7qXakxAhLS/zKOg7Y601cRg5/Eqa0Z59\n-----END CERTIFICATE REQUEST-----\n"
    }'

##### Example response

    HTTP/1.1 204 No Content

#### Renew SSL certificate by Id

Submission of a request for a new SSL certificate using the CSR and parameters of the initial SSL certificate. The initial certificate is defined by its ID in this case.

##### Path parameters

Table 1. /api/ssl/v1/renewById/{sslId}
Parameter | Description
--- | ---
`sslId` | Certificate ID.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
csr | String | Certificate signing request (optional) | 'Must match the regular expression `[a-zA-Z0-9-=\/\s]`,Size must be between 1 and 32767 inclusive'
dcvMode | String | Domain control validation mode. Possible values: [CNAME, EMAIL, HTTP, HTTPS, TXT] |
dcvEmail | String | Domain control validation email | 'Must be a well-formed email address'

##### Example request

    $ curl 'https://cert-manager.com/api/ssl/v1/renewById/75' -i -X POST \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer721' \
        -H 'password: Password123!' \
        -H 'customerUri: cst721' \
        -d '{
      "csr" : "-----BEGIN CERTIFICATE REQUEST-----\nMIICyTCCAbECAQAwgYMxCzAJBgNVBAYTAlVBMQ8wDQYDVQQIDAZPZGVzc2ExDzAN\nBgNVBAcMBk9kZXNzYTERMA8GA1UECgwIQWR2YW5jZWQxCzAJBgNVBAsMAklUMRIw\nEAYDVQQDDAljY21xYS5jb20xHjAcBgkqhkiG9w0BCQEWD25teXphQGNjbXFhLmNv\nbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMHZo0lPzCqBVu03qHJa\np2wbOyN8kvdkU2VRj+GaF2APgrQps/sepvhyralxa9w5WD5KyoXhnM+7DPCsqDxK\nkxsBjEliLQqXwmoiai0A2DMmjWCoSMopzNTIORLPn8GaWFJSEtCa+9D1EXD2UZjS\nY/8MN0fEAIqaXFUrfW3cqW/QUjZH0mlJumUqQjtZY0DnAQsCxxZUlsHCkKEHuEQu\n5WhY8ys1/RANaoJmRh2xZuFMOZ71kLkwi5fvReqxjkRRHwG9cYDyurTNYmjkaICN\n/hqUwk9VKkW0G5ol8t0xau8RuHdDHi5Wb/R6+d/G+8/kn0BoOqseABih1+FYs+Ws\nK8UCAwEAAaAAMA0GCSqGSIb3DQEBBQUAA4IBAQA15aWRLayIuUZmPhdrpJXQAtrw\nAoeYYwp5hvaTLwZBWEg5n+ZhH5SaSCpt+53QW3+jiT8jTsPKAqyvgSQI0MVi8o5J\nJhig6pPHGSKbfxmvmfSwxK4F9W2GNVcdICX+Js0BB5UXsZB4k1gTRr1VdICNiCDc\nDZAC0+HhkZSU9StD43T9ac3gZIfEEepX9WBx9QbBASbUZ1ziSBfGKA7vnQHbC9lT\nphLa2SvCSozmG36vYMV+Ak5YWnrp2c1Jhcd8PE0TIW6yPT+D6UvcZWb+KHfw2KAH\nVXPNFSgSZkMzFBMQJH9UcfyvPX5+7qXakxAhLS/zKOg7Y601cRg5/Eqa0Z59\n-----END CERTIFICATE REQUEST-----\n",
      "dcvMode" : "EMAIL",
      "dcvEmail" : "admin@ccmqa.com"
    }'

##### Response fields

Path | Type | Description
--- | --- | ---
`sslId` | `Number` | New certificate ID

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json;charset=UTF-8
    Content-Length: 18

    {
      "sslId" : 76
    }

#### Mark Renewed SSL certificate

Manually marking an SSL certificate as renewed, optionally linking it to a new certificate ID or Order Number. The initial certificate is defined by its ID.

##### Path parameters

Table 1. /api/ssl/v1/renew/manual/{sslId}
Parameter | Description
--- | ---
`sslId` | Certificate ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
id | Number | Renewed certificate ID (optional) |
orderNumber | String | Renewed certificate Order Number (optional) |
dcvMode | String | DCV validation mode. Possible values: [CNAME, EMAIL, HTTP, HTTPS, TXT] |
dcvEmail | String | DCV validation email. Required in case of EMAIL DCV mode. |

##### Example request

    $ curl 'https://cert-manager.com/api/ssl/v1/renew/manual/77' -i -X POST \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer729' \
        -H 'password: Password123!' \
        -H 'customerUri: cst729' \
        -d '{
      "id" : 78,
      "dcvMode" : "EMAIL",
      "dcvEmail" : "admin@ccmqa.com"
    }'

##### Example response

    HTTP/1.1 204 No Content

#### Replace SSL certificate by Id

Submission of a request for the substition of the particular SSL certificate applying its parameters and a new CSR.

##### Path parameters

Table 1. /api/ssl/v1/replace/{sslId}
Parameter | Description
--- | ---
`sslId` | Certificate ID.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
csr | String | Certificate signing request | [Must match the regular expression `[a-zA-Z0-9-=\/\s]`, Must not be empty, Size must be between 1 and 32767 inclusive]
reason | String | Short message with a reason why certificate needs to be replaced | [Must not be empty, Size must be between 1 and 512 inclusive]
commonName | String | Certificate common name | [Size must be between 1 and 64 inclusive]
subjectAlternativeNames | Array | Array of subject alternative names | []
dcvMode | String | Domain control validation mode. Possible values: [CNAME, EMAIL, HTTP, HTTPS, TXT] | []
dcvEmail | String | Domain control validation email | [Must be a well-formed email address]

##### Example request

    $ curl 'https://cert-manager.com/api/ssl/v1/replace/89' -i -X POST \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer799' \
        -H 'password: Password123!' \
        -H 'customerUri: cst799' \
        -d '{
      "csr" : "-----BEGIN CERTIFICATE REQUEST-----\nMIICyTCCAbECAQAwgYMxCzAJBgNVBAYTAlVBMQ8wDQYDVQQIDAZPZGVzc2ExDzAN\nBgNVBAcMBk9kZXNzYTERMA8GA1UECgwIQWR2YW5jZWQxCzAJBgNVBAsMAklUMRIw\nEAYDVQQDDAljY21xYS5jb20xHjAcBgkqhkiG9w0BCQEWD25teXphQGNjbXFhLmNv\nbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMHZo0lPzCqBVu03qHJa\np2wbOyN8kvdkU2VRj+GaF2APgrQps/sepvhyralxa9w5WD5KyoXhnM+7DPCsqDxK\nkxsBjEliLQqXwmoiai0A2DMmjWCoSMopzNTIORLPn8GaWFJSEtCa+9D1EXD2UZjS\nY/8MN0fEAIqaXFUrfW3cqW/QUjZH0mlJumUqQjtZY0DnAQsCxxZUlsHCkKEHuEQu\n5WhY8ys1/RANaoJmRh2xZuFMOZ71kLkwi5fvReqxjkRRHwG9cYDyurTNYmjkaICN\n/hqUwk9VKkW0G5ol8t0xau8RuHdDHi5Wb/R6+d/G+8/kn0BoOqseABih1+FYs+Ws\nK8UCAwEAAaAAMA0GCSqGSIb3DQEBBQUAA4IBAQA15aWRLayIuUZmPhdrpJXQAtrw\nAoeYYwp5hvaTLwZBWEg5n+ZhH5SaSCpt+53QW3+jiT8jTsPKAqyvgSQI0MVi8o5J\nJhig6pPHGSKbfxmvmfSwxK4F9W2GNVcdICX+Js0BB5UXsZB4k1gTRr1VdICNiCDc\nDZAC0+HhkZSU9StD43T9ac3gZIfEEepX9WBx9QbBASbUZ1ziSBfGKA7vnQHbC9lT\nphLa2SvCSozmG36vYMV+Ak5YWnrp2c1Jhcd8PE0TIW6yPT+D6UvcZWb+KHfw2KAH\nVXPNFSgSZkMzFBMQJH9UcfyvPX5+7qXakxAhLS/zKOg7Y601cRg5/Eqa0Z59\n-----END CERTIFICATE REQUEST-----\n",
      "reason" : "test",
      "commonName" : "ccmqa.com",
      "subjectAlternativeNames" : [ "ccmqa1.com", "ccmqa2.com" ],
      "dcvMode" : "EMAIL",
      "dcvEmail" : "admin@ccmqa.com"
    }'

##### Example response

    HTTP/1.1 204 No Content

#### Delete SSL certificate by Id

Submission of a request for deleting SSL certificate for a given SSL Id.

| Only imported or discovered certificates can be deleted.

##### Path parameters

Table 1. /api/ssl/v1/{sslId}
Parameter | Description
--- | ---
`sslId` | Certificate ID.

##### Example request

    $ curl 'https://cert-manager.com/api/ssl/v1/70' -i -X DELETE \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer623' \
        -H 'password: Password123!' \
        -H 'customerUri: cst623'

##### Example response

    HTTP/1.1 204 No Content

#### Import SSL certificates to SCM

Import certificates to SCM

##### Query parameters

Parameter | Description
--- | ---
`orgId` | An organization which this certificates import to

##### Request parts

Part | Description
--- | ---
`file` | Zip archive with certificates to import

##### Example request

    $ curl 'https://cert-manager.com/api/ssl/v1/import?orgId=638' -i -X POST \
        -H 'Content-Type: multipart/form-data;charset=UTF-8' \
        -H 'login: admin_customer1034' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1034' \
        -F 'file=@certs.zip;type=application/zip'

##### Response fields

Path | Type | Description
--- | --- | ---
`errors` | `Array` | An array of occurred errors
`processedCount` | `Number` | Total number of processed certificates

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json;charset=UTF-8
    Content-Length: 426

    {
      "processedCount" : 8,
      "errors" : [ "[appov_ccmqa_com_cert.cer] - SSL certificate already exists. Order number: N/A", "[ccmqa_com.crt] - SSL certificate already exists. Order number: N/A", "admin_ccmqa_com.p12 - Unsupported file extension", "appov_ccmqa_com_interm.cer - Failed to parse certificate: Certificate is corrupted or subject basic constraint is not met", "auto83_ccmqa_com.p12 - Unsupported file extension" ]
    }

#### Import SSL certificates to SCM (extended)

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
[] | Array | Certificates to import | Should not be empty, maximum size is 128
[].orgID | Number | Organization ID | [Must be at least 1, Must not be null]
[].customFields | Array | List of custom certificate fields | []
[].customFields[].name | String | Custom field name | []
[].customFields[].value | String | Custom field value | []
[].owner | String | Certificate owner | [Must be a well-formed email address, Maximum length is 128 characters or can be empty]
[].externalRequester | String | Comma-separated additional emails | [Maximum length is 512 characters or can be empty]
[].backendCertId | String | Backend certificate identifier | [Maximum length is 255 characters or can be empty]
[].cert | String | DER (Base64) certificate | [Must not be empty]
[].csr | String | DER (Base64) Certificate Signing Request | []
[].comments | String | Additional comments | [Maximum length is 1024 characters or can be empty]
[].force | Boolean | Force alter editable certificate fields event if certificate is already exists. | []

##### Example request

    $ curl 'https://cert-manager.com/api/ssl/v2/import' -i -X POST \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer1319' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1319' \
        -d '[{"orgID":739,"customFields":[{"name":"testName","value":"testValue"}],"owner":"admin@requester.com","externalRequester":"email@one.com, email@two.com","backendCertId":"1234567890DFa","cert":" ","csr":" ","comments":"Test comments","force":true}]'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | List of certificates
`[].cert` | `Object` | SSL information
`[].cert.id` | `Number` | SSL ID
`[].cert.subject` | `String` | SSL Subject
`[].cert.serialNumber` | `String` | SSL Serial Number
`[].created` | `Boolean` | Whether certificate been created or not (it could already exist)

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 165

    [{"cert":{"id":179,"subject":"CN=*.stackexchange.com,O=Stack Exchange, Inc.,L=New York,ST=NY,C=US","serialNumber":"E11BBD70D54B710D0C6F540B6B52CA4"},"created":true}]

The response array element can be error message:

##### Response fields

Path | Type | Description
--- | --- | ---
`[].errorMessage` | `String` | Error message

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 59

    [{"errorMessage":"Custom field cannot be found: testName"}]

## Client Certificates

Used to perform operations on client certificates.

### Client certificate helper APIs

#### List client certificate profiles

List client certificate profiles, previously known as a certificate type. An enrollment request will require the certificate profile be specified.

##### Query parameters

Parameter | Description
--- | ---
`organizationId` | Filter by Organization ID (optional)

##### Example request

    $ curl 'https://cert-manager.com/api/smime/v1/types?organizationId=3151' -i -X GET \
        -H 'login: admin_customer21360' \
        -H 'password: Password123!' \
        -H 'customerUri: cst21360' \
        -H 'Accept: application/json'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | An array of available Client Certificate Profiles
`[].id` | `Number` | Certificate Profile ID
`[].name` | `String` | Certificate Profile name
`[].useSecondaryOrgName` | `Boolean` | Use secondary organization name
`[].description` | `String` | Certificate Profile description
`[].terms` | `Array` | Terms (in days) available for the Certificate Profile
`[].keyTypes` | `Object` | Key types available for the Certificate Profile

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 179

    [{"id":2028,"name":"Client cert SASP -1595985077","description":"Client cert SASP 1296632389","terms":[365],"keyTypes":{"RSA":["1024","2048","4096"]},"useSecondaryOrgName":false}]

#### List client certificate custom fields

List client certificate custom fields. An enrollment require will require all mandatory custom fields be specified.

##### Example request

    $ curl 'https://cert-manager.com/api/smime/v1/customFields' -i -X GET \
        -H 'login: admin_customer21322' \
        -H 'password: Password123!' \
        -H 'customerUri: cst21322' \
        -H 'Accept: application/json'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | An array of custom fields
`[].id` | `Number` | Custom field id
`[].name` | `String` | Custom field name
`[].mandatory` | `Boolean` | Is field mandatory

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 47

    [{"id":156,"name":"testName","mandatory":true}]

### Client certificate locations

#### List client certificate locations

##### Path parameters

Table 1. /api/smime/v2/{certId}/location
Parameter | Description
--- | ---
`certId` | Certificate ID

##### Example request

    $ curl 'https://cert-manager.com/api/smime/v2/126/location' -i -X GET \
        -H 'Content-Type: application/json' \
        -H 'login: admin_customer21238' \
        -H 'password: Password123!' \
        -H 'customerUri: cst21238'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | List of Client Certificate Locations
`[].id` | `Number` | Location ID
`[].locationType` | `String` | Location Type
`[].name` | `String` | Location Name (optional)
`[].details` | `Object` | Location Details

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 150

    [{"id":84,"locationType":"CUSTOM","name":"","details":{"location1":"PC"}},{"id":85,"locationType":"CUSTOM","name":"","details":{"location2":"Phone"}}]

#### Create custom location for client certificate

##### Path parameters

Table 1. /api/smime/v2/{certId}/location
Parameter | Description
--- | ---
`certId` | Certificate ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
details | Object | Location details in key-value format that should be applied. |

##### Example request

    $ curl 'https://cert-manager.com/api/smime/v2/123/location' -i -X POST \
        -H 'Content-Type: application/json' \
        -H 'login: admin_customer21201' \
        -H 'password: Password123!' \
        -H 'customerUri: cst21201' \
        -d '{"details":{"location":"Tablet"}}'

##### Response headers

Name | Description
--- | ---
`Location` | URL location of the created certificate location entity

##### Example response

    HTTP/1.1 201 Created
    Location: https://cert-manager.com/api/smime/v2/123/location/81

#### Get details of client certificate’s custom location

##### Path parameters

Table 1. /api/smime/v2/{certId}/location/{locationId}
Parameter | Description
--- | ---
`certId` | Certificate ID
`locationId` | Location ID

##### Example request

    $ curl 'https://cert-manager.com/api/smime/v2/125/location/83' -i -X GET \
        -H 'Content-Type: application/json' \
        -H 'login: admin_customer21229' \
        -H 'password: Password123!' \
        -H 'customerUri: cst21229'

##### Response fields

Path | Type | Description
--- | --- | ---
`id` | `Number` | Location ID
`locationType` | `String` | Location Type
`name` | `String` | Location Name (optional)
`details` | `Object` | Location Details

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 79

    {"id":83,"locationType":"CUSTOM","name":"","details":{"Mail Client":"Outlook"}}

#### Update client certificate’s custom location

##### Path parameters

Table 1. /api/smime/v2/{certId}/location/{locationId}
Parameter | Description
--- | ---
`certId` | Certificate ID
`locationId` | Location ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
details | Object | Location details in key-value format that should be applied. |

##### Example request

    $ curl 'https://cert-manager.com/api/smime/v2/135/location/86' -i -X PUT \
        -H 'Content-Type: application/json' \
        -H 'login: admin_customer21277' \
        -H 'password: Password123!' \
        -H 'customerUri: cst21277' \
        -d '{"details":{"MailClient":"Thunderbird"}}'

##### Example response

    HTTP/1.1 200 OK

#### Delete client certificate’s custom location

##### Path parameters

Table 1. /api/smime/v2/{certId}/location/{locationId}
Parameter | Description
--- | ---
`certId` | Certificate ID
`locationId` | Location ID

##### Example request

    $ curl 'https://cert-manager.com/api/smime/v2/124/location/82' -i -X DELETE \
        -H 'login: admin_customer21208' \
        -H 'password: Password123!' \
        -H 'customerUri: cst21208'

##### Example response

    HTTP/1.1 204 No Content

### View client certificates

#### List client certificates

List all client certificates that match the requested filter.

##### Query parameters

Parameter | Description
--- | ---
`size` | Number of returned entries
`position` | the first position (entry) to return from the results of the query
`keyVault` | Filter by certificate Key Vault flag
`personId` | Filter by certificate person ID
`state` | Filter by certificate state. Possible values: ', 'blank', 'created', 'requested', 'issued', 'downloaded' - deprecated, 'expired', 'revoked', 'rejected', 'pre_revoked''
`certTypeId` | Filter by certificate profile ID
`serialNumber` | Filter by certificate serial number
`backendCertId` | Filter by certificate backend ID
`signatureAlgorithm` | Filter by certificate signature algorithm
`keyAlgorithm` | Filter by certificate public key algorithm
`keyParam` | Filter by certificate public key size or curve name
`keyUsage` | Filter by certificate key usage
`extendedKeyUsage` | Filter by certificate extended key usage
`email` | Filter by certificate person email

##### Example request

    $ curl 'https://cert-manager.com/api/smime/v2?size=10&position=0&personId=42&keyVault=true&certTypeId=100500&serialNumber=C3DB6F88E720DF99717059FBD02D29B0&backendCertId=12345&email=user%40ccmqa.com' -i -X GET \
        -H 'login: admin_customer21226' \
        -H 'password: Password123!' \
        -H 'customerUri: cst21226' \
        -H 'Accept: application/json'

##### Response headers

Name | Description
--- | ---
`X-Total-Count` | Contains total number of client certificates available according to the filtering applied

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | An array of Client certificate properties
`[].id` | `Number` | Certificate ID
`[].certificateDetails` | `Object` | Certificate details
`[].certificateDetails.issuer` | `String` | The subject of the issuing CA certificate
`[].certificateDetails.subject` | `String` | The subject of CA certificate
`[].certificateDetails.subjectAltNames` | `String` | The subject alternative names of the issuing CA certificate
`[].certificateDetails.md5Hash` | `String` | The MD5 fingerprint of CA certificate
`[].certificateDetails.sha1Hash` | `String` | The SHA1 fingerprint of CA certificate
`[].certificateDetails.sha256Hash` | `String` | The SHA256 fingerprint of CA certificate
`[].state` | `String` | Certificate state
`[].orderNumber` | `Number` | Certificate order number
`[].serialNumber` | `String` | Certificate serial number
`[].backendCertId` | `String` | Certificate ID in enrolling backend
`[].expires` | `String` | Certificate expiration date
`[].comments` | `String` | Certificate comments

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 1
    Content-Type: application/json
    Content-Length: 331

    [{"id":1,"state":"issued","certificateDetails":{"subject":"S/MIME Subject string","sha256Hash":"513b909ac0470c0fe23a2af2282b927d25fc590bda99c7dd505b093c975075c9"},"serialNumber":"C3:DB:6F:88:E7:20:DF:99:71:70:59:FB:D0:2D:29:B0","orderNumber":12345,"backendCertId":"12345","expires":"2345-06-07","comments":"S/MIME comment string"}]

#### Count client certificates

Count all client certificates that match the requested filter.

##### Query parameters

Parameter | Description
--- | ---
`keyVault` | Filter by certificate Key Vault flag
`personId` | Filter by certificate person ID
`state` | Filter by certificate state. Possible values: ', 'blank', 'created', 'requested', 'issued', 'downloaded' - deprecated, 'expired', 'revoked', 'rejected', 'pre_revoked''
`certTypeId` | Filter by certificate profile ID
`serialNumber` | Filter by certificate serial number
`backendCertId` | Filter by certificate backend ID
`signatureAlgorithm` | Filter by certificate signature algorithm
`keyAlgorithm` | Filter by certificate public key algorithm
`keyParam` | Filter by certificate public key size or curve name
`keyUsage` | Filter by certificate key usage
`extendedKeyUsage` | Filter by certificate extended key usage
`email` | Filter by certificate person email

##### Example request

    $ curl 'https://cert-manager.com/api/smime/v2?personId=42&keyVault=true&certTypeId=100500&serialNumber=C3DB6F88E720DF99717059FBD02D29B0' -i -X HEAD \
        -H 'login: admin_customer21223' \
        -H 'password: Password123!' \
        -H 'customerUri: cst21223' \
        -H 'Accept: application/json' \
        -H 'Content-Type: application/x-www-form-urlencoded'

##### Response headers

Name | Description
--- | ---
`X-Total-Count` | Contains total number of client certificates available according to the filtering applied

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 1

#### List client certificates by person ID

List all client certificates for a person with given ID.

`V2`

##### Path parameters

Table 1. /api/smime/v2/byPersonId/{pid}
Parameter | Description
--- | ---
`pid` | Person ID.

##### Example request

    $ curl 'https://cert-manager.com/api/smime/v2/byPersonId/1' -i -X GET \
        -H 'login: admin_customer21220' \
        -H 'password: Password123!' \
        -H 'customerUri: cst21220' \
        -H 'Accept: application/json'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | An array of Client certificate properties
`[].id` | `Number` | Certificate ID
`[].certificateDetails` | `Object` | Certificate details
`[].certificateDetails.issuer` | `String` | The subject of the issuing CA certificate
`[].certificateDetails.subject` | `String` | The subject of CA certificate
`[].certificateDetails.subjectAltNames` | `String` | The subject alternative names of the issuing CA certificate
`[].certificateDetails.md5Hash` | `String` | The MD5 fingerprint of CA certificate
`[].certificateDetails.sha1Hash` | `String` | The SHA1 fingerprint of CA certificate
`[].certificateDetails.sha256Hash` | `String` | The SHA256 fingerprint of CA certificate
`[].state` | `String` | Certificate state
`[].orderNumber` | `Number` | Certificate order number
`[].serialNumber` | `String` | Certificate serial number
`[].backendCertId` | `String` | Certificate ID in enrolling backend
`[].expires` | `String` | Certificate expiration date
`[].comments` | `String` | Certificate comments

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 325

    [{"id":1,"state":"issued","certificateDetails":{"subject":"S/MIME Subject string","sha256Hash":"513b909ac0470c0fe23a2af2282b927d25fc590bda99c7dd505b093c975075c9"},"serialNumber":"C3:DB:6F:88:E7:20:DF:99:71:70:59:FB:D0:2D:29:B0","orderNumber":12345,"backendCertId":"12345","expires":"2345-06-07","comments":"Test comments 1"}]

#### List client certificates by person email

List all client certificates for a person with given email.

`V2`

##### Path parameters

Table 1. /api/smime/v2/byPersonEmail/{email}
Parameter | Description
--- | ---
`email` | Person e-mail. Must be formatted as valid e-mail string. Also might need to be properly encoded as required by URL syntax standard. For example, the '@' character should be replaced with the %40 code, '.' - with %2E and so on.

##### Example request

    $ curl 'https://cert-manager.com/api/smime/v2/byPersonEmail/mailbox@domain.com' -i -X GET \
        -H 'login: admin_customer21217' \
        -H 'password: Password123!' \
        -H 'customerUri: cst21217' \
        -H 'Accept: application/json'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | An array of Client certificate properties
`[].id` | `Number` | Certificate ID
`[].certificateDetails` | `Object` | Certificate details
`[].certificateDetails.issuer` | `String` | The subject of the issuing CA certificate
`[].certificateDetails.subject` | `String` | The subject of CA certificate
`[].certificateDetails.subjectAltNames` | `String` | The subject alternative names of the issuing CA certificate
`[].certificateDetails.md5Hash` | `String` | The MD5 fingerprint of CA certificate
`[].certificateDetails.sha1Hash` | `String` | The SHA1 fingerprint of CA certificate
`[].certificateDetails.sha256Hash` | `String` | The SHA256 fingerprint of CA certificate
`[].state` | `String` | Certificate state
`[].orderNumber` | `Number` | Certificate order number
`[].serialNumber` | `String` | Certificate serial number
`[].backendCertId` | `String` | Cert ID in enrolling backend
`[].expires` | `String` | Certificate expiration date
`[].comments` | `String` | Certificate comments

##### Example response

    HTTP/1.1 200 OK
    Content-Disposition: inline;filename=f.txt
    Content-Type: application/json
    Content-Length: 325

    [{"id":1,"state":"issued","certificateDetails":{"subject":"S/MIME Subject string","sha256Hash":"513b909ac0470c0fe23a2af2282b927d25fc590bda99c7dd505b093c975075c9"},"serialNumber":"C3:DB:6F:88:E7:20:DF:99:71:70:59:FB:D0:2D:29:B0","orderNumber":12345,"backendCertId":"12345","expires":"2345-06-07","comments":"Test comments 1"}]

#### Client certificate details

##### Path parameters

Table 1. /api/smime/v1/{id}
Parameter | Description
--- | ---
`id` | Client certificate ID

##### Example request

    $ curl 'https://cert-manager.com/api/smime/v1/139' -i -X GET \
        -H 'login: admin_customer21353' \
        -H 'password: Password123!' \
        -H 'customerUri: cst21353'

##### Response fields

Path | Type | Description
--- | --- | ---
`commonName` | `String` | Certificate common name
`id` | `Number` | An ID using which this certificate can be renewed or revoked through Enrollment form
`subType` | `String` | Certificate subtype
`orgId` | `Number` | An organization which this certificate is associated with
`status` | `String` | The status of this certificate
`backendCertId` | `String` | Certificate ID in enrolling backend
`certType` | `Object` | Information about Certificate Profile this certificate was enrolled from
`certType.id` | `Number` | Certificate Profile ID
`certType.useSecondaryOrgName` | `Boolean` | Use secondary organization name
`certType.name` | `String` | Certificate Profile name
`certType.description` | `String` | Certificate Profile description
`certType.terms` | `Array` | Terms (in days) available for the Certificate Profile
`certType.keyTypes` | `Object` | Key types available for the Certificate Profile
`term` | `Number` | Term (days)
`requestedVia` | `String` | Requested Via. Possible values: 'Admin Enroll', 'Self Enroll', 'API Enroll', 'Auto Enroll', 'CSV Enroll', 'SCEP Enroll', 'IdP Enroll', 'MS Agent Enroll', 'Discovery', 'MS CA Enroll', 'Imported', 'EST Enroll', 'REST Enroll API'
`requested` | `String` | Requested date
`issued` | `String` | Issued date
`expires` | `String` | Expiration date
`revoked` | `String` | Revocation date
`reasonCode` | `Number` | Revocation reason code provided on revoke to CRL (Mozilla Root Store Policy 2.8 section 6.1.1) Reason code (unspecified (0), keyCompromise (1), affiliationChanged (3), superseded (4), cessationOfOperation (5))
`serialNumber` | `String` | SSL Serial Number
`signatureAlg` | `String` | Signature Algorithm
`keyAlgorithm` | `String` | Key algorithm (deprecated, see "keyType")
`keySize` | `Number` | Key size (deprecated, see "keyType")
`keyType` | `String` | Key type. For example: RSA - 2048, EC - P-256.
`keyUsages` | `Array` | Key Usages
`extendedKeyUsages` | `Array` | Extended Key Usages
`subjectAlternativeNames` | `Array` | Subject alternative names
`customFields.[]` | `Array` | Custom fields
`customFields.[].name` | `String` | Custom field name
`customFields.[].value` | `String` | Custom field value
`certificateDetails` | `Object` | Certificate details
`certificateDetails.issuer` | `String` | The subject of the issuing CA certificate
`certificateDetails.subject` | `String` | The subject of CA certificate
`certificateDetails.subjectAltNames` | `String` | The subject alternative names of the issuing CA certificate
`certificateDetails.md5Hash` | `String` | The MD5 fingerprint of CA certificate
`certificateDetails.sha1Hash` | `String` | The SHA1 fingerprint of CA certificate
`certificateDetails.sha256Hash` | `String` | The SHA256 fingerprint of CA certificate
`suspendNotifications` | `Boolean` | Suspend Notifications for the certificate
`comments` | `String` | Certificate comments

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 680

    {"commonName":"Tester","id":139,"orgId":3149,"status":"issued","backendCertId":"12345678","certType":{"id":2025,"name":"High Persona Validated Cert","terms":[365,730],"keyTypes":{"RSA":["1024","2048","4096"]},"useSecondaryOrgName":false},"subType":"Private","term":30,"requestedVia":"Self Enroll","comments":"client certificate 139","requested":"08/15/2025","issued":"08/15/2025","expires":"09/26/2025","keyAlgorithm":"RSA","keySize":2048,"keyType":"RSA - 2048","keyUsages":["Digital Signature","Key Encipherment"],"extendedKeyUsages":["1.3.6.1.5.5.7.3.4","1.3.6.1.5.5.7.3.2"],"certificateDetails":{"sha1Hash":"AAABBBCCC","sha256Hash":"AAABBBCCCddd"},"suspendNotifications":false}

### Enroll client certificate

#### Request client certificate

Creation and submission of a request for a new Client certificate.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
orgId | Number | Organization ID |
csr | String | Certificate signing request |
certType | Number | Certificate Profile ID |
term | Number | Certificate validity period in days | [Must be at least 1]
email | String | Person e-mail | [Must be a well-formed email address, Must not be empty, Maximum length is 128 characters or can be empty]
phone | String | Person telephone | [Must match the regular expression `[#|0-9|\(|\)|\-|\+| x]*`, Maximum length is 32 characters or can be empty]
secondaryEmails | Array | Person secondary e-mails | []
firstName | String | Person first name | firstName must not be empty, firstName + ' ' + middleName + ' ' + lastName must be in range of 1 to 64 characters
middleName | String | Person middle name | firstName + ' ' + middleName + ' ' + lastName must be in range of 1 to 64 characters
lastName | String | Person last name | lastName must not be empty, firstName + ' ' + middleName + ' ' + lastName must be in range of 1 to 64 characters
customFields | Array | Custom fields to be applied to requested certificate | []
commonName | String | Person’s common name, if omitted will be constructed from Person’s full name | [Maximum length is 64 characters or can be empty]
eppn | String | EPPN | [Maximum length is 128 characters or can be empty]
upn | String | Principal name | [Maximum length is 256 characters or can be empty]
comments | String | Certificate comments | [Maximum length is 1024 characters or can be empty]

##### Example request

    $ curl 'https://cert-manager.com/api/smime/v1/enroll' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer21304' \
        -H 'password: Password123!' \
        -H 'customerUri: cst21304' \
        -d '{"orgId":3131,"firstName":"Name","middleName":"","lastName":"LastName","email":"name@test.net","phone":"12345678","secondaryEmails":[],"csr":"-----BEGIN CERTIFICATE REQUEST-----\nMIIC4jCCAcoCAQAwdDELMAkGA1UEBhMCVUExDTALBgNVBAgTBHRlc3QxDTALBgNV\nBAcTBHRlc3QxDTALBgNVBAoTBHRlc3QxDTALBgNVBAsTBHRlc3QxEjAQBgNVBAMT\nCWNjbXFhLmNvbTEVMBMGCSqGSIb3DQEJARYGdGVzdEB0MIIBIjANBgkqhkiG9w0B\nAQEFAAOCAQ8AMIIBCgKCAQEAul8SGkicOnrMjJDvgG8P2j1Ee5hY6ww+qSoe0oI2\ntvRcLBknPHMMAkxTjW9fy80wD8hyrnc+IGlQcq2R/tEMIJHRsJD603M+2FjAwlP9\n8xtiqv0hMyHO4fEt+HMyy8Q367aTBmnZCuAxJZJapfFW9wH5jGZxuX8mnrXVsBTD\n4ZBO4UFd9P4u8P0nJx80CiuDt4COSDl6Br4pNLciPVqfwj7LQ5/skwPkNCggk3/G\nxoQX/3FV7O4fC6WCxVP1uYjJVQjlD1Tf06hPNfonVfThVuP20OL3QAlnIF3lZiyY\nJ5etdFtu+BKcPNMdQDJOS/O4Zz0YJn6K2HdAXSc1YxYniwIDAQABoCkwJwYJKoZI\nhvcNAQkOMRowGDAJBgNVHRMEAjAAMAsGA1UdDwQEAwIF4DANBgkqhkiG9w0BAQsF\nAAOCAQEAVJVTTELGHWoRh8JZt+kx/zO0VnibBq/D6uB405L+Ir80X48Ei9hTLB11\nAqhSBE+AbEgBhRnEIDBjiXEDcWvC532Omex721kc17ZTzowuD8lOjfQkTHbAmjIi\nnCQNFAPf0D/zpi6Eync5pi2P//Uj/Yn7oDYYli1t61EZwuQyEu4mbQ1efUnU/SOl\nAAQtDPhNwATZPmfefjM8+YuzhG70dQvmFAClcFayKM92Zx9khDd/VnLT85YzDULJ\n8iiHW8dZNblaTsUjKrc73iX2hONZIxw6B3tGCFs8mH9lZlExV7Y2er3t/lO1pdxe\nSUohEELWcttIxyWnYgxvwaWX4lfx9A==\n-----END CERTIFICATE REQUEST-----","certType":1992,"term":365,"customFields":[],"commonName":"Common name","upn":null,"eppn":null,"comments":"S/MIME comment string"}'

##### Response fields

Path | Type | Description
--- | --- | ---
`orderNumber` | `Number` | Obsolete parameter for the order identifier under which the certificate request has been processed. BackendCertId should be used instead.
`backendCertId` | `String` | Certificate ID in enrolling backend

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 45

    {"orderNumber":12345,"backendCertId":"12345"}

#### Collect client certificate

Delivering the newly issued Client certificate from CA to the administrator for download.

##### Path parameters

Table 1. /api/smime/v1/collect/{backendCertId}
Parameter | Description
--- | ---
`backendCertId` | Backend certificate ID

##### Query parameters

Parameter | Description
--- | ---

`format`

Format type for certificate. Allowed values: 'x509' - for Certificate (w/ chain), PEM encoded, 'x509CO' - for Certificate only, PEM encoded, 'base64' - for PKCS#7, PEM encoded, 'bin' - for PKCS#7, 'x509IO' - for Root/Intermediate(s) only, PEM encoded, 'x509IOR' - for Intermediate(s)/Root only, PEM encoded, 'pem' - for Certificate (w/ chain), PEM encoded, 'pemco' - for Certificate only, PEM encoded, 'pemia' - for Certificate (w/ issuer after), PEM encoded, 'x509R' - for Certificate (w/ chain), PEM encoded

##### Example request

    $ curl 'https://cert-manager.com/api/smime/v1/collect/12345?format=base64' -i -X GET \
        -H 'login: admin_customer21325' \
        -H 'password: Password123!' \
        -H 'customerUri: cst21325'

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/octet-stream
    Content-Disposition: attachment; filename="test_example_com.p7b"

#### Download P12 client certificate

##### Path parameters

Table 1. /api/smime/v1/keystore/{id}
Parameter | Description
--- | ---
`id` | Client certificate ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
encryptionType | String | Encryption type for the keystore. Allowed values: AES256-SHA256, TripleDES-SHA1. Default AES256-SHA256 |
passphrase | String | Keystore passphrase |

##### Example request

    $ curl 'https://cert-manager.com/api/smime/v1/keystore/1' -i -X POST \
        -H 'Content-Type: application/json' \
        -H 'login: admin_customer21344' \
        -H 'password: Password123!' \
        -H 'customerUri: cst21344' \
        -d '{"passphrase":"12345678"}
    '

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/octet-stream
    Content-Disposition: attachment; filename="key_vault.p12"
    Content-Length: 20

    [ BINARY BODY HERE ]

### Manage client certificate

#### Update client certificate details

Update client certificate.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
customFields | Array | Custom fields | []
customFields[].name | String | Custom field name | [Must not be null, Size must be between 1 and 256 inclusive]
customFields[].value | String | Custom field value. For input type 'DATE' format is yyyy-MM-dd | [Must not be null, Maximum length is 256 characters or can be empty]
comments | String | Comments | [Maximum length is 1024 characters or can be empty]

##### Example request

    $ curl 'https://cert-manager.com/api/smime/v1/140' -i -X PUT \
        -H 'Content-Type: application/json' \
        -H 'login: admin_customer21403' \
        -H 'password: Password123!' \
        -H 'customerUri: cst21403' \
        -d '{
      "customFields": [{"name": "test", "value": "value"}],
      "comments": "client certificate"
    }
    '

##### Response fields

Path | Type | Description
--- | --- | ---
`commonName` | `String` | Certificate common name
`id` | `Number` | An ID using which this certificate can be renewed or revoked through Enrollment form
`subType` | `String` | Certificate subtype
`orgId` | `Number` | An organization which this certificate is associated with
`status` | `String` | The status of this certificate
`backendCertId` | `String` | Certificate ID in enrolling backend
`certType` | `Object` | Information about Certificate Profile this certificate was enrolled from
`certType.id` | `Number` | Certificate Profile ID
`certType.useSecondaryOrgName` | `Boolean` | Use secondary organization name
`certType.name` | `String` | Certificate Profile name
`certType.description` | `String` | Certificate Profile description
`certType.terms` | `Array` | Terms (in days) available for the Certificate Profile
`certType.keyTypes` | `Object` | Key types available for the Certificate Profile
`term` | `Number` | Term (days)
`requestedVia` | `String` | Requested Via. Possible values: 'Admin Enroll', 'Self Enroll', 'API Enroll', 'Auto Enroll', 'CSV Enroll', 'SCEP Enroll', 'IdP Enroll', 'MS Agent Enroll', 'Discovery', 'MS CA Enroll', 'Imported', 'EST Enroll', 'REST Enroll API'
`requested` | `String` | Requested date
`issued` | `String` | Issued date
`expires` | `String` | Expiration date
`revoked` | `String` | Revocation date
`reasonCode` | `Number` | Revocation reason code provided on revoke to CRL (Mozilla Root Store Policy 2.8 section 6.1.1) Reason code (unspecified (0), keyCompromise (1), affiliationChanged (3), superseded (4), cessationOfOperation (5))
`serialNumber` | `String` | SSL Serial Number
`signatureAlg` | `String` | Signature Algorithm
`keyAlgorithm` | `String` | Key algorithm (deprecated, see "keyType")
`keySize` | `Number` | Key size (deprecated, see "keyType")
`keyType` | `String` | Key type. For example: RSA - 2048, EC - P-256.
`keyUsages` | `Array` | Key Usages
`extendedKeyUsages` | `Array` | Extended Key Usages
`subjectAlternativeNames` | `Array` | Subject alternative names
`customFields.[]` | `Array` | Custom fields
`customFields.[].name` | `String` | Custom field name
`customFields.[].value` | `String` | Custom field value
`certificateDetails` | `Object` | Certificate details
`certificateDetails.issuer` | `String` | The subject of the issuing CA certificate
`certificateDetails.subject` | `String` | The subject of CA certificate
`certificateDetails.subjectAltNames` | `String` | The subject alternative names of the issuing CA certificate
`certificateDetails.md5Hash` | `String` | The MD5 fingerprint of CA certificate
`certificateDetails.sha1Hash` | `String` | The SHA1 fingerprint of CA certificate
`certificateDetails.sha256Hash` | `String` | The SHA256 fingerprint of CA certificate
`suspendNotifications` | `Boolean` | Suspend Notifications for the certificate
`comments` | `String` | Certificate comments

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 508

    {"commonName":"Tester","id":140,"orgId":3166,"status":"created","backendCertId":"1","certType":{"id":2054,"name":"High Persona Validated Cert","terms":[365,730],"keyTypes":{"RSA":["1024","2048","4096"]},"useSecondaryOrgName":false},"subType":"Private","term":0,"requestedVia":"Self Enroll","comments":"client certificate","requested":"08/15/2025","keyAlgorithm":"RSA","keySize":2048,"keyType":"RSA - 2048","customFields":[{"name":"test","value":"value"}],"certificateDetails":{},"suspendNotifications":false}

#### Renew client certificate by backend certificate ID

Submission of a request for a new Client certificate using the CSR and parameters of the initial Client certificate. The initial certificate is defined by its backend ID.

##### Path parameters

Table 1. /api/smime/v2/renew/order/{backendCertId}
Parameter | Description
--- | ---
`backendCertId` | Backend certificate ID.

##### Example request

    $ curl 'https://cert-manager.com/api/smime/v2/renew/order/12345' -i -X POST \
        -H 'login: admin_customer21268' \
        -H 'password: Password123!' \
        -H 'customerUri: cst21268' \
        -H 'Accept: application/json'

##### Response fields

Path | Type | Description
--- | --- | ---
`orderNumber` | `Number` | Obsolete parameter for the order identifier under which the certificate request has been processed. BackendCertId should be used instead.
`backendCertId` | `String` | Cert ID in enrolling backend

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 45

    {"orderNumber":12345,"backendCertId":"12345"}

#### Renew client certificate by serial number

Submission of a request for a new Client certificate using the CSR and parameters of the initial Client certificate. The initial certificate is defined by its serial number.

##### Path parameters

Table 1. /api/smime/v2/renew/serial/{serial}
Parameter | Description
--- | ---
`serial` | Serial number.

##### Example request

    $ curl 'https://cert-manager.com/api/smime/v2/renew/serial/test:serial' -i -X POST \
        -H 'login: admin_customer21271' \
        -H 'password: Password123!' \
        -H 'customerUri: cst21271' \
        -H 'Accept: application/json'

##### Response fields

Path | Type | Description
--- | --- | ---
`orderNumber` | `Number` | Obsolete parameter for the order identifier under which the certificate request has been processed. BackendCertId should be used instead.
`backendCertId` | `String` | Cert ID in enrolling backend

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 45

    {"orderNumber":12345,"backendCertId":"12345"}

#### Replace client certificate by backend certificate ID

Deprecated. Please use enroll operation instead.

#### Revoke client certificate by backend certificate ID

Sending a request to CA to add the particular Client certificate in certificate revocation list.

##### Path parameters

Table 1. /api/smime/v1/revoke/order/{backendCertId}
Parameter | Description
--- | ---
`backendCertId` | Backend certificate ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
reasonCode | Number | Revocation reason code to be put to CRL (Mozilla Root Store Policy 2.8 section 6.1.1) Reason code (unspecified (0), keyCompromise (1), affiliationChanged (3), superseded (4), cessationOfOperation (5)) | [Allowed ranges 0,1 and 3-5]
reason | String | Short message explaining why certificate needs to be revoked | [Maximum length is 512 characters or can be empty]

##### Example request

    $ curl 'https://cert-manager.com/api/smime/v1/revoke/order/12345' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer21384' \
        -H 'password: Password123!' \
        -H 'customerUri: cst21384' \
        -H 'Accept: application/json' \
        -d '{"reasonCode":0,"reason":"my reason"}'

##### Example response

    HTTP/1.1 204 No Content

#### Revoke client certificate by serial number

Sending a request to CA to add the Client certificate under the particular serial number in certificate revocation list.

##### Path parameters

Table 1. /api/smime/v1/revoke/serial/{serialNumber}
Parameter | Description
--- | ---
`serialNumber` | Certificate serial number

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
reasonCode | Number | Revocation reason code to be put to CRL (Mozilla Root Store Policy 2.8 section 6.1.1) Reason code (unspecified (0), keyCompromise (1), affiliationChanged (3), superseded (4), cessationOfOperation (5)) | [Allowed ranges 0,1 and 3-5]
reason | String | Short message explaining why certificate needs to be revoked | [Maximum length is 512 characters or can be empty]

##### Example request

    $ curl 'https://cert-manager.com/api/smime/v1/revoke/serial/test:serial' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer21400' \
        -H 'password: Password123!' \
        -H 'customerUri: cst21400' \
        -H 'Accept: application/json' \
        -d '{"reasonCode":1,"reason":"my reason"}'

##### Example response

    HTTP/1.1 204 No Content

#### Revoke all client certificates related to email

Sending a request to CA to add all Client certificates issued for the person with the particular email address in certificate revocation list.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
reasonCode | Number | Revocation reason code to be put to CRL (Mozilla Root Store Policy 2.8 section 6.1.1) Reason code (unspecified (0), keyCompromise (1), affiliationChanged (3), superseded (4), cessationOfOperation (5)) | [Allowed ranges 0,1 and 3-5]
reason | String | Short message explaining why certificate needs to be revoked | [Maximum length is 512 characters or can be empty]
email | String | Person e-mail address |

##### Example request

    $ curl 'https://cert-manager.com/api/smime/v1/revoke' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer21381' \
        -H 'password: Password123!' \
        -H 'customerUri: cst21381' \
        -H 'Accept: application/json' \
        -d '{"reasonCode":0,"reason":"my reason","email":"test@email"}'

##### Example response

    HTTP/1.1 204 No Content

#### Manual Revoke client certificate by Id or serial number + issuer

Mark certificate as revoked. The certificate is not revoked on CA side.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
certId | Number | Certificate ID. Required if `serialNumber` and `issuer` are not provided. | Must be present if serialNumber and issuer are not provided
serialNumber | Number | Certificate serial number. Required if `certId` is not provided (used together with `issuer`). | Must be present with issuer if certId is not provided
issuer | Number | Certificate issuer. Required if `certId` is not provided (used together with `serialNumber`). | Must be present with serialNumber if certId is not provided
revokeDate | String | Certificate revoke date | []
reasonCode | Number | Revocation reason code to be put to CRL (Mozilla Root Store Policy 2.8 section 6.1.1) Reason code (unspecified (0), keyCompromise (1), affiliationChanged (3), superseded (4), cessationOfOperation (5)) | [Allowed ranges 0,1 and 3-5]

##### Example request

    $ curl 'https://cert-manager.com/api/smime/v1/revoke/manual' -i -X POST \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer21363' \
        -H 'password: Password123!' \
        -H 'customerUri: cst21363' \
        -d '{"certId":1,"serialNumber":null,"issuer":null,"revokeDate":"2025-06-10T00:00:00Z","reasonCode":4}'

##### Example response

    HTTP/1.1 204 No Content

#### Delete client certificate by Id

Submission of a request for deleting Client certificate for a given Id.

| Only imported or discovered certificates can be deleted.

##### Path parameters

Table 1. /api/smime/v1/{certId}
Parameter | Description
--- | ---
`certId` | Certificate ID.

##### Example request

    $ curl 'https://cert-manager.com/api/smime/v1/138' -i -X DELETE \
        -H 'login: admin_customer21337' \
        -H 'password: Password123!' \
        -H 'customerUri: cst21337'

##### Example response

    HTTP/1.1 204 No Content

#### Import client certificates to SCM

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
[] | Array | Certificates to import | Should not be empty, maximum size is 128
[].orgID | Number | Organization ID | [Must be at least 1, Must not be null]
[].customFields | Array | List of custom certificate fields | []
[].customFields[].name | String | Custom field name | []
[].customFields[].value | String | Custom field value | []
[].backendCertId | String | Backend certificate identifier | [Maximum length is 255 characters or can be empty]
[].cert | String | DER (Base64) certificate | [Must not be empty]
[].csr | String | DER (Base64) Certificate Signing Request | []
[].comments | String | Additional comments | [Maximum length is 1024 characters or can be empty]
[].force | Boolean | Force alter editable certificate fields event if certificate is already exists. | []

##### Example request

    $ curl 'https://cert-manager.com/api/smime/v2/import' -i -X POST \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer21247' \
        -H 'password: Password123!' \
        -H 'customerUri: cst21247' \
        -d '[{"orgID":3106,"customFields":[{"name":"testName","value":"testValue"}],"backendCertId":"1234567890DFa","cert":" ","csr":" ","comments":"Test comments","force":true}]'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | List of certificates
`[].cert` | `Object` | Client certificate information
`[].cert.id` | `Number` | Client certificate ID
`[].cert.subject` | `String` | Client certificate Subject
`[].cert.serialNumber` | `String` | Client certificate Serial Number
`[].created` | `Boolean` | Whether certificate been created or not (it could already exist)

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 144

    [{"cert":{"id":127,"subject":"CN=Ruslan Shiposha,O=Advanced,ST=Alabama,C=US","serialNumber":"7D395D79C5C46DAF839EF1563D031963"},"created":true}]

The response array element can be error message:

##### Response fields

Path | Type | Description
--- | --- | ---
`[].errorMessage` | `String` | Error message

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 171

    [{"errorMessage":"Certificate under serial number ''E11BBD70D54B710D0C6F540B6B52CA4'' cannot be managed as a certificate of ''Client cert'' type. CN must contain email."}]

## Device Certificates

Used to perform operations on device certificates.

### Device certificate helper APIs

#### List device certificate Profiles

List device certificate profiles, previously known as a certificate type. An enrollment request will require the certificate profile be specified.

##### Query parameters

Parameter | Description
--- | ---
`organizationId` | Filter by Organization ID (optional)

##### Example request

    $ curl 'https://cert-manager.com/api/device/v1/types?organizationId=928' -i -X GET \
        -H 'login: admin_customer1583' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1583' \
        -H 'Accept: application/json'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | An array of available certificate profiles
`[].id` | `Number` | Certificate Profile ID
`[].name` | `String` | Certificate Profile name
`[].description` | `String` | Certificate Profile description
`[].term` | `Number` | First available term (in days) for the Certificate Profile
`[].useSecondaryOrgName` | `Boolean` | Use secondary organization name
`[].terms` | `Array` | Terms (in days) available for the Certificate Profile
`[].keyTypes` | `Object` | Key types available for the Certificate Profile
`[].ku[]` | `Array` | Key Usages available for the Certificate Profile
`[].eku[]` | `Array` | Extended Key Usages available for the Certificate Profile

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 261

    [{"id":1256,"name":"Device cert SASP 151833396","description":"Device cert SASP 1837829685","terms":[365],"keyTypes":{"RSA":["1024","2048","4096"]},"useSecondaryOrgName":false,"term":365,"ku":["Digital Signature","Non repudiation"],"eku":["1.3.6.1.5.5.7.3.2"]}]

#### List device certificate custom fields

List device certificate custom fields. An enrollment require will require all mandatory custom fields be specified.

##### Example request

    $ curl 'https://cert-manager.com/api/device/v1/customFields' -i -X GET \
        -H 'login: admin_customer1587' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1587' \
        -H 'Accept: application/json'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | An array of custom fields
`[].id` | `Number` | Custom field ID
`[].name` | `String` | Custom field name
`[].mandatory` | `Boolean` | Is field mandatory

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 46

    [{"id":60,"name":"testName","mandatory":true}]

### Device certificate locations

#### List device certificate locations

##### Path parameters

Table 1. /api/device/v1/{certId}/location
Parameter | Description
--- | ---
`certId` | Certificate ID

##### Example request

    $ curl 'https://cert-manager.com/api/device/v1/78/location' -i -X GET \
        -H 'Content-Type: application/json' \
        -H 'login: admin_customer1597' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1597'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | List of Device Certificate Locations
`[].id` | `Number` | Location ID
`[].locationType` | `String` | Location Type
`[].name` | `String` | Location Name (optional)
`[].details` | `Object` | Location Details

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 150

    [{"id":62,"locationType":"CUSTOM","name":"","details":{"location1":"PC"}},{"id":63,"locationType":"CUSTOM","name":"","details":{"location2":"Phone"}}]

#### Create custom location for device certificate

##### Path parameters

Table 1. /api/device/v1/{certId}/location
Parameter | Description
--- | ---
`certId` | Certificate ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
details | Object | Location details in key-value format that should be applied. |

##### Example request

    $ curl 'https://cert-manager.com/api/device/v1/65/location' -i -X POST \
        -H 'Content-Type: application/json' \
        -H 'login: admin_customer1557' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1557' \
        -d '{"details":{"device":"Tablet"}}'

##### Response headers

Name | Description
--- | ---
`Location` | URL location of the created certificate location entity

##### Example response

    HTTP/1.1 201 Created
    Location: https://cert-manager.com/api/device/v1/65/location/59

#### Get details of device certificate’s custom location

##### Path parameters

Table 1. /api/device/v1/{certId}/location/{locationId}
Parameter | Description
--- | ---
`certId` | Certificate ID
`locationId` | Location ID

##### Example request

    $ curl 'https://cert-manager.com/api/device/v1/76/location/61' -i -X GET \
        -H 'Content-Type: application/json' \
        -H 'login: admin_customer1591' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1591'

##### Response fields

Path | Type | Description
--- | --- | ---
`id` | `Number` | Location ID
`locationType` | `String` | Location Type
`name` | `String` | Location Name (optional)
`details` | `Object` | Location Details

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 72

    {"id":61,"locationType":"CUSTOM","name":"","details":{"Device":"Phone"}}

#### Update device certificate’s custom location

##### Path parameters

Table 1. /api/device/v1/{certId}/location/{locationId}
Parameter | Description
--- | ---
`certId` | Certificate ID
`locationId` | Location ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
details | Object | Location details in key-value format that should be applied. |

##### Example request

    $ curl 'https://cert-manager.com/api/device/v1/119/location/64' -i -X PUT \
        -H 'Content-Type: application/json' \
        -H 'login: admin_customer1722' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1722' \
        -d '{"details":{"device":"Laptop"}}'

##### Example response

    HTTP/1.1 200 OK

#### Delete device certificate’s custom location

##### Path parameters

Table 1. /api/device/v1/{certId}/location/{locationId}
Parameter | Description
--- | ---
`certId` | Certificate ID
`locationId` | Location ID

##### Example request

    $ curl 'https://cert-manager.com/api/device/v1/70/location/60' -i -X DELETE \
        -H 'login: admin_customer1569' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1569'

##### Example response

    HTTP/1.1 204 No Content

### View device certificates

#### List device certificates

List all device certificates that match the requested filter.

##### Query parameters

Parameter | Description
--- | ---
`size` | Number of returned entries
`position` | the first position (entry) to return from the results of the query
`commonName` | Filter by certificate common name
`email` | Filter by certificate requester email
`status` | Filter by certificate status. Possible values: , 'REQUESTED', 'APPROVED', 'DECLINED', 'APPLIED', 'ISSUED', 'DOWNLOADED' - deprecated, 'EXPIRED', 'REVOKED', 'REJECTED', 'AWAITING_APPROVAL' - deprecated (falls back to 'REQUESTED', please use new status instead)
`orgId` | Filter by certificate organization ID
`certTypeId` | Filter by certificate profile ID
`serialNumber` | Filter by certificate serial number
`backendCertId` | Deprecated Filter by ID of certificate in the enrolling backend. Should not be used for certificate operations but will work during migration phase.
`signatureAlgorithm` | Filter by certificate signature algorithm
`keyAlgorithm` | Filter by certificate public key algorithm
`keyParam` | Filter by certificate public key size or curve name
`keyUsage` | Filter by certificate key usage
`extendedKeyUsage` | Filter by certificate extended key Usage

##### Example request

    $ curl 'https://cert-manager.com/api/device/v1?size=10&position=0&commonName=34356576543tnl54hgnu49u90g&email=Someone%40nobody.sectigo.com&status=APPROVED&certTypeId=1264' -i -X GET \
        -H 'login: admin_customer1619' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1619'

##### Response headers

Name | Description
--- | ---
`X-Total-Count` | Contains total number of device certificates available according to the filtering applied

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | Array of requested device certificates
`[].id` | `Number` | Unique ID for certificate. Known as deviceCertId in some methods. This ID should be used for certificate operations.
`[].backendCertId` | `String` | ID of certificate in the enrolling backend. Should not be used for certificate operations but will work during migration phase.
`[].status` | `String` | Certificate status
`[].certificateDetails` | `Object` | Certificate details
`[].certificateDetails.issuer` | `String` | The subject of the issuing CA certificate
`[].certificateDetails.subject` | `String` | The subject of CA certificate
`[].certificateDetails.subjectAltNames` | `String` | The subject alternative names of the issuing CA certificate
`[].certificateDetails.md5Hash` | `String` | The MD5 fingerprint of CA certificate
`[].certificateDetails.sha1Hash` | `String` | The SHA1 fingerprint of CA certificate
`[].certificateDetails.sha256Hash` | `String` | The SHA256 fingerprint of CA certificate

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 1
    Content-Type: application/json
    Content-Length: 153

    [{"id":87,"status":"APPROVED","backendCertId":"1622","certificateDetails":{"subject":"C=UA,ST=Odessa,L=Odessa,O=Test,OU=Test,CN=Test,E=test@test.test"}}]

#### Count device certificates

Count all device certificates that match the requested filter.

##### Query parameters

Parameter | Description
--- | ---
`commonName` | Filter by certificate common name
`email` | Filter by certificate requester email
`status` | Filter by certificate status. Possible values: ', 'REQUESTED', 'APPROVED', 'DECLINED', 'APPLIED', 'ISSUED', 'DOWNLOADED' - deprecated, 'EXPIRED', 'REVOKED', 'REJECTED', 'AWAITING_APPROVAL' - deprecated (falls back to 'REQUESTED', please use new status instead)'
`orgId` | Filter by certificate organization ID
`certTypeId` | Filter by certificate profile ID
`serialNumber` | Filter by certificate serial number
`backendCertId` | Deprecated Filter by ID of certificate in the enrolling backend. Should not be used for certificate operations but will work during migration phase.
`signatureAlgorithm` | Filter by certificate signature algorithm
`keyAlgorithm` | Filter by certificate public key algorithm
`keyParam` | Filter by certificate public key size or curve name
`keyUsage` | Filter by certificate key usage
`extendedKeyUsage` | Filter by certificate extended key Usage

##### Example request

    $ curl 'https://cert-manager.com/api/device/v1?commonName=34356576543tnl54hgnu49u90g&orgId=912&status=APPROVED' -i -X HEAD \
        -H 'login: admin_customer1553' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1553' \
        -H 'Content-Type: application/x-www-form-urlencoded'

##### Response headers

Name | Description
--- | ---
`X-Total-Count` | Contains total number of device certificates available according to the filtering applied

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 1

#### Get device certificate details

Get device certificate details.

##### Path parameters

Table 1. /api/device/v1/{deviceCertId}
Parameter | Description
--- | ---
`deviceCertId` | Unique ID for certificate.

##### Example request

    $ curl 'https://cert-manager.com/api/device/v1/58' -i -X GET \
        -H 'login: admin_customer1533' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1533'

##### Response fields

Path | Type | Description
--- | --- | ---
`commonName` | `String` | Certificate common name
`id` | `Number` | Unique ID for certificate. Known as deviceCertId in some methods. This ID should be used for certificate operations.
`orgId` | `Number` | An organization which this certificate is associated with
`status` | `String` | The status of this certificate
`orderNumber` | `Number` | Deprecated. Old numeric form of backendCertId. backendCertId is new field but should not be used for certificate operations.
`backendCertId` | `String` | ID of certificate in the enrolling backend. Should not be used for certificate operations but will work during migration phase.
`certType` | `Object` | Information about Certificate Profile this certificate was enrolled from
`certType.id` | `Number` | Certificate Profile ID
`certType.useSecondaryOrgName` | `Boolean` | Use secondary organization name
`certType.name` | `String` | Certificate Profile name
`certType.description` | `String` | Certificate Profile description
`certType.terms` | `Array` | Terms (in days) available for the Certificate Profile
`certType.keyTypes` | `Object` | Key types available for the Certificate Profile
`term` | `Number` | Term (days)
`owner` | `String` | The approver of the request for this certificate
`requester` | `String` | Requester
`requested` | `String` | Requested date
`approved` | `String` | Approved date
`expires` | `String` | Expiration date
`keyAlgorithm` | `String` | Key algorithm (deprecated, see "keyType")
`keySize` | `Number` | Key size (deprecated, see "keyType")
`keyType` | `String` | Key type. For example: RSA - 2048, EC - P-256.
`serialNumber` | `String` | SSL Serial Number
`comments` | `String` | Certificate comments
`customFields.[]` | `Array` | Custom fields
`customFields.[].name` | `String` | Custom field name
`customFields.[].value` | `String` | Custom field value
`certificateDetails` | `Object` | Certificate details
`certificateDetails.issuer` | `String` | The subject of the issuing CA certificate
`certificateDetails.subject` | `String` | The subject of CA certificate
`certificateDetails.subjectAltNames` | `String` | The subject alternative names of the issuing CA certificate
`certificateDetails.md5Hash` | `String` | The MD5 fingerprint of CA certificate
`certificateDetails.sha1Hash` | `String` | The SHA1 fingerprint of CA certificate
`certificateDetails.sha256Hash` | `String` | The SHA256 fingerprint of CA certificate

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 599

    {"commonName":"34356576543tnl54hgnu49u90g","id":58,"orgId":902,"status":"Approved","orderNumber":1536,"backendCertId":"1536","certType":{"id":1243,"name":"Test device type","description":"Device cert profile","terms":[365],"keyTypes":{"RSA":["1024","2048","4096"]},"useSecondaryOrgName":false},"term":365,"requester":"Someone@nobody.sectigo.com","comments":"Device certificate comment string","requested":"08/15/2025","expires":"08/15/2026","keyAlgorithm":"RSA","keySize":2048,"keyType":"RSA - 2048","certificateDetails":{"subject":"C=UA,ST=Odessa,L=Odessa,O=Test,OU=Test,CN=Test,E=test@test.test"}}

### Enroll device certificate

#### Request device certificate

Creation and submission of a request for a new Device certificate.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
orgId | Number | Organization ID | 'Must be at least 1,Must not be null'
csr | String | Certificate signing request | 'Must match the regular expression `[a-zA-Z0-9-=\/\s]`,Must not be empty,Size must be between 1 and 32767 inclusive'
certType | Number | Certificate Profile ID | 'Must be at least 1,Must not be null'
term | Number | Certificate validity period in days | 'Must be at least 1'
comments | String | Certificate comments | [Maximum length is 1024 characters or can be empty]
customFields[] | Array | Custom fields to be applied to requested certificate. Must contain mandatory custom fields. |
customFields[].name | String | Name of an enabled custom field. | []
customFields[].value | String | Value of the custom field. For input type 'DATE' format is yyyy-MM-dd | []
optionalFields[] | Array | Optional fields to be applied to requested certificate | []

optionalFields[].name

String

Name of supported optional field.

Must be one of the following values: [commonName, surname, countryName, localityName, stateOrProvinceName, streetAddress, organizationName, organizationalUnitName, title, description, postalCode, postOfficeBox, telephoneNumber, givenName, initials, emailAddress, DocumentoNacionaldeIdentidad, serialNumber, SIRENE, collectionEmailAddress, rfc822Name, subjectUniqueIdentifier, uniqueIdentifier, PermIdAscentMediaNetSecDept, PermIdAscentMediaEngHomeNet, sAMAccountName, userId, userPrincipalName, unstructuredName, domainComponent, dnsName, servicePrincipalName, eeSID]

optionalFields[].value | String | Value of the optional field. | []

##### Example request

    $ curl 'https://cert-manager.com/api/device/v1/enroll' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer1575' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1575' \
        -d '{"orgId":924,"term":365,"csr":"-----BEGIN CERTIFICATE REQUEST-----\nMIIC4jCCAcoCAQAwdDELMAkGA1UEBhMCVUExDTALBgNVBAgTBHRlc3QxDTALBgNV\nBAcTBHRlc3QxDTALBgNVBAoTBHRlc3QxDTALBgNVBAsTBHRlc3QxEjAQBgNVBAMT\nCWNjbXFhLmNvbTEVMBMGCSqGSIb3DQEJARYGdGVzdEB0MIIBIjANBgkqhkiG9w0B\nAQEFAAOCAQ8AMIIBCgKCAQEAul8SGkicOnrMjJDvgG8P2j1Ee5hY6ww+qSoe0oI2\ntvRcLBknPHMMAkxTjW9fy80wD8hyrnc+IGlQcq2R/tEMIJHRsJD603M+2FjAwlP9\n8xtiqv0hMyHO4fEt+HMyy8Q367aTBmnZCuAxJZJapfFW9wH5jGZxuX8mnrXVsBTD\n4ZBO4UFd9P4u8P0nJx80CiuDt4COSDl6Br4pNLciPVqfwj7LQ5/skwPkNCggk3/G\nxoQX/3FV7O4fC6WCxVP1uYjJVQjlD1Tf06hPNfonVfThVuP20OL3QAlnIF3lZiyY\nJ5etdFtu+BKcPNMdQDJOS/O4Zz0YJn6K2HdAXSc1YxYniwIDAQABoCkwJwYJKoZI\nhvcNAQkOMRowGDAJBgNVHRMEAjAAMAsGA1UdDwQEAwIF4DANBgkqhkiG9w0BAQsF\nAAOCAQEAVJVTTELGHWoRh8JZt+kx/zO0VnibBq/D6uB405L+Ir80X48Ei9hTLB11\nAqhSBE+AbEgBhRnEIDBjiXEDcWvC532Omex721kc17ZTzowuD8lOjfQkTHbAmjIi\nnCQNFAPf0D/zpi6Eync5pi2P//Uj/Yn7oDYYli1t61EZwuQyEu4mbQ1efUnU/SOl\nAAQtDPhNwATZPmfefjM8+YuzhG70dQvmFAClcFayKM92Zx9khDd/VnLT85YzDULJ\n8iiHW8dZNblaTsUjKrc73iX2hONZIxw6B3tGCFs8mH9lZlExV7Y2er3t/lO1pdxe\nSUohEELWcttIxyWnYgxvwaWX4lfx9A==\n-----END CERTIFICATE REQUEST-----","certType":1253,"customFields":[{"name":"custom field","value":"custom field value"}],"optionalFields":[{"name":"commonName","value":"test.example.com"}],"comments":"Device certificate comment string"}'

##### Response fields

Path | Type | Description
--- | --- | ---
`deviceCertId` | `Number` | Unique ID for certificate. This ID should be used for certificate operations.
`status` | `String` | Certificate status.
`backendCertId` | `String` | Deprecated. ID of certificate in the enrolling backend. Should not be used for certificate operations but will work during migration phase.
`orderNumber` | `Number` | Deprecated. Currently identical to deviceCertId for backwards compatibility during migration phase.

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 79

    {"deviceCertId":71,"status":"APPROVED","backendCertId":"1578","orderNumber":71}

#### Collect device certificate

Delivering the newly issued Device certificate from CA to the administrator for download.

##### Path parameters

Table 1. /api/device/v1/collect/{deviceCertId}
Parameter | Description
--- | ---
`deviceCertId` | Unique ID for certificate.

##### Query parameters

Parameter | Description
--- | ---

`format`

Format type name for certificate. If not specified, PKCS#7 Base64 encoded is default. Allowed values: 'x509R' - for Certificate (w/ chain), PEM encoded, 'x509' - for Certificate (w/ chain), PEM encoded, 'pem' - for Certificate (w/ chain), PEM encoded, 'x509CO' - for Certificate only, PEM encoded, 'pemco' - for Certificate only, PEM encoded, 'x509IO' - for Root/Intermediate(s) only, PEM encoded, 'x509IOR' - for Intermediate(s)/Root only, PEM encoded, 'pemia' - for Certificate (w/ issuer after), PEM encoded, 'base64' - for PKCS#7, PEM encoded, 'bin' - for PKCS#7

##### Example request

    $ curl 'https://cert-manager.com/api/device/v1/collect/132132?format=base64' -i -X GET \
        -H 'login: admin_customer1537' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1537'

##### Example response

    HTTP/1.1 200 OK
    Content-Length: 3218
    Content-Type: application/octet-stream
    Content-Disposition: attachment; filename="test.cert"

    -----BEGIN PKCS7-----
    MIIJJQYJKoZIhvcNAQcCoIIJFjCCCRICAQExADALBgkqhkiG9w0BBwGgggj6MIIF
    HjCCBAagAwIBAgIQBXQwB2XNLnzRqXF67yXetTANBgkqhkiG9w0BAQsFADCBgzEL
    MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE
    BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKTAnBgNVBAMT
    IFRlc3QgUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTE3MTEyNzAwMDAw
    MFoXDTE4MTEyNzIzNTk1OVowaTELMAkGA1UECxMCSVQxFzAVBgNVBAoTDk15Q29t
    cGFueSBMdGQuMQ4wDAYDVQQIEwVZb3JrczENMAsGA1UEBxMEWW9yazELMAkGA1UE
    BhMCR0IxFTATBgNVBAMTDHR0LmNjbXFhLmNvbTCCASIwDQYJKoZIhvcNAQEBBQAD
    ggEPADCCAQoCggEBAMjaijCapexR3eiRTcRrJNF3jqF9msby8qRvDHK5MNJ3WMQU
    HgtcxSVRItBBV9M0GM2agG/+zOCvez71n2IfMoqqouZRfBsw7DMqnVMGQVYhBfVE
    Mr2fsP0BGk1SdGaoZYgACKUkjc7MbdESyJhmEvEYIBpdVHzqDU2dJ2Op1t2G7Kpb
    rzpRupMqmuQybGqJlidnicFf9irDcqd22Koih9TjfKM/4ZYMCBs3fv0bZVyM9Alh
    lOEMFj1ytmcGLHa5ojnX1lLT4xjZNFaJJv9ZwNYAA+YkE29q7uJZINPcTf+CfqUe
    UEWdq5cBiAPoPMrtsHimfLEvf3UmRxKhzNYEv6kCAwEAAaOCAaUwggGhMB8GA1Ud
    IwQYMBaAFIaGHcsGJX0nAVdr5Wo40OREr5MyMB0GA1UdDgQWBBTXOsPzzx5rZ2/g
    MmTvN+0y0Ys3XTAOBgNVHQ8BAf8EBAMCA/gwDAYDVR0TAQH/BAIwADAdBgNVHSUE
    FjAUBggrBgEFBQcDBAYIKwYBBQUHAwIwEQYJYIZIAYb4QgEBBAQDAgWgMEYGA1Ud
    IAQ/MD0wOwYMKwYBBAGyMQECAQMFMCswKQYIKwYBBQUHAgEWHWh0dHBzOi8vc2Vj
    dXJlLmNvbW9kby5uZXQvQ1BTMEoGA1UdHwRDMEEwP6A9oDuGOWh0dHA6Ly9jcmwu
    Y29tb2RvY2EuY29tL1Rlc3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDB7
    BggrBgEFBQcBAQRvMG0wRQYIKwYBBQUHMAKGOWh0dHA6Ly9jcnQuY29tb2RvY2Eu
    Y29tL1Rlc3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNydDAkBggrBgEFBQcw
    AYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQAA
    AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8w
    MTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9g
    YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4CBgoOEhYaHiImKi4yNjo+Q
    kZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/A
    wcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w
    8fLz9PX29/j5+vv8/f7/MIID1DCCArygAwIBAgIQHpFpjHVf56b6C+OC9siGTDAN
    BgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIg
    TWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENB
    IExpbWl0ZWQxKTAnBgNVBAMTIFRlc3QgUlNBIENlcnRpZmljYXRpb24gQXV0aG9y
    aXR5MB4XDTE0MDEwMTAwMDAwMFoXDTMwMTIzMTIzNTk1OVowgYMxCzAJBgNVBAYT
    AkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZv
    cmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMSkwJwYDVQQDEyBUZXN0IFJT
    QSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEP
    ADCCAQoCggEBAL/ZSIMZBY4Ifq5oXcdSPDa5ArrYahP4qhO9aES9jT7TEr5tpNIQ
    QP044h+3MGc7Cgf17OYSqpd4WvvhgUCkc8XDda3JgKEgCaHfnjgynBtXk6JP8stM
    IuKPZS9WcEQSKB7JPOnjaHdBkLRfbuSu0y7he9IoibiSCIU5mJ8T6QNd5wEWBp4j
    gRQWnLBXtJENtCzcU5j2sPh0gZUFjlu1V3Cc8JUENzDpMpjtxNYHtbL68BFXcWvy
    7hrqnE4eNM5K3DfEacdrvFgIQNfCMc4KEh2DFzDoCZpchDLhVGrYrTObG4D/RR0o
    T2QuFqbaiatLcG/armNUgb+4VH1R/HOQaf0CAwEAAaNCMEAwHQYDVR0OBBYEFIaG
    HcsGJX0nAVdr5Wo40OREr5MyMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTAD
    AQH/MA0GCSqGSIb3DQEBCwUAA4IBAQCeQAWeNNtsKuUt5V9JifMy2AduOcK7lndh
    M24L8KG86o7aoye1QDqMfFmUrFo7nDVno6G013PnRo97BcrVPoMVB66TP5LywOrL
    rVoiIF9I5OD4BrtgvrRtlT3iMZwxjzU19lgEcLs+sJZhug2eDKAjp0PaJ40Wg5sn
    o3CRq/urYgtIAiFdxgMBefK0Ejivos5RLDzmHjA/Wo+jFMfXvdP6RxVmz7Nxfcws
    I+sOSWmb60dZlaC1yVZ0PbD2DFj7yEnW94p86d7Thmv6ksaqbOeWdJErnYJkqXPB
    0wSazHQeQHjWp91j4ZwlYRhZQfovwiRi601iWNNE7hPrMb87FkvyMQA=
    -----END PKCS7-----

### Manage device certificate

#### Update device certificate details

Update device certificate.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
customFields | Array | Custom fields | []
customFields[].name | String | Custom field name | [Must not be null, Size must be between 1 and 256 inclusive]
customFields[].value | String | Custom field value. For input type 'DATE' format is yyyy-MM-dd | [Must not be null, Maximum length is 256 characters or can be empty]
comments | String | Comments | [Maximum length is 1024 characters or can be empty]

##### Example request

    $ curl 'https://cert-manager.com/api/device/v1/117' -i -X PUT \
        -H 'Content-Type: application/json' \
        -H 'login: admin_customer1717' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1717' \
        -d '{
      "customFields": [{"name": "test", "value": "value"}],
      "comments": "device certificate"
    }
    '

##### Response fields

Path | Type | Description
--- | --- | ---
`commonName` | `String` | Certificate common name
`id` | `Number` | Unique ID for certificate. Known as deviceCertId in some methods. This ID should be used for certificate operations.
`orgId` | `Number` | An organization which this certificate is associated with
`status` | `String` | The status of this certificate
`orderNumber` | `Number` | Deprecated. Old numeric form of backendCertId. backendCertId is new field but should not be used for certificate operations.
`backendCertId` | `String` | ID of certificate in the enrolling backend. Should not be used for certificate operations but will work during migration phase.
`certType` | `Object` | Information about Certificate Profile this certificate was enrolled from
`certType.id` | `Number` | Certificate Profile ID
`certType.useSecondaryOrgName` | `Boolean` | Use secondary organization name
`certType.name` | `String` | Certificate Profile name
`certType.description` | `String` | Certificate Profile description
`certType.terms` | `Array` | Terms (in days) available for the Certificate Profile
`certType.keyTypes` | `Object` | Key types available for the Certificate Profile
`term` | `Number` | Term (days)
`owner` | `String` | The approver of the request for this certificate
`requester` | `String` | Requester
`requested` | `String` | Requested date
`approved` | `String` | Approved date
`expires` | `String` | Expiration date
`keyAlgorithm` | `String` | Key algorithm (deprecated, see "keyType")
`keySize` | `Number` | Key size (deprecated, see "keyType")
`keyType` | `String` | Key type. For example: RSA - 2048, EC - P-256.
`serialNumber` | `String` | SSL Serial Number
`comments` | `String` | Certificate comments
`customFields.[]` | `Array` | Custom fields
`customFields.[].name` | `String` | Custom field name
`customFields.[].value` | `String` | Custom field value
`certificateDetails` | `Object` | Certificate details
`certificateDetails.issuer` | `String` | The subject of the issuing CA certificate
`certificateDetails.subject` | `String` | The subject of CA certificate
`certificateDetails.subjectAltNames` | `String` | The subject alternative names of the issuing CA certificate
`certificateDetails.md5Hash` | `String` | The MD5 fingerprint of CA certificate
`certificateDetails.sha1Hash` | `String` | The SHA1 fingerprint of CA certificate
`certificateDetails.sha256Hash` | `String` | The SHA256 fingerprint of CA certificate

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 553

    {"commonName":"device cert","id":117,"orgId":1004,"status":"Issued","orderNumber":111111,"backendCertId":"111111","certType":{"id":1288,"name":"Device cert SASP 1776429334","description":"Device cert SASP -1835101769","terms":[180],"keyTypes":{"RSA":["1024","2048","4096"]},"useSecondaryOrgName":false},"term":0,"requester":"test@4v2la.com","comments":"device certificate","requested":"08/15/2025","expires":"02/11/2026","keyAlgorithm":"RSA","keySize":2048,"keyType":"RSA - 2048","customFields":[{"name":"test","value":"value"}],"certificateDetails":{}}

#### Approve device certificate

Allows admin to approve the requested Device certificate.

##### Path parameters

Table 1. /api/device/v1/approve/{deviceCertId}
Parameter | Description
--- | ---
`deviceCertId` | Unique ID for certificate.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
message | String | Short message containing accompanying information for certificate approval action | [Must not be empty, Size must be between 1 and 512 inclusive]

##### Example request

    $ curl 'https://cert-manager.com/api/device/v1/approve/57' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer1529' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1529' \
        -d '{"message":"Approval message"}'

##### Example response

    HTTP/1.1 204 No Content

#### Decline device certificate

Allows admin to decline the requested Device certificate.

##### Path parameters

Table 1. /api/device/v1/decline/{deviceCertId}
Parameter | Description
--- | ---
`deviceCertId` | Unique ID for certificate.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
message | String | Short message containing accompanying information for certificate declining action | [Must not be empty, Size must be between 1 and 512 inclusive]

##### Example request

    $ curl 'https://cert-manager.com/api/device/v1/decline/66' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer1561' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1561' \
        -d '{"message":"Decline message"}'

##### Example response

    HTTP/1.1 204 No Content

#### Revoke device certificate by Id

Sending a request to CA to add the Device certificate under the particular Id to certificate revocation list.

##### Path parameters

Table 1. /api/device/v1/revoke/order/{deviceCertId}
Parameter | Description
--- | ---
`deviceCertId` | Unique ID for certificate.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
reasonCode | Number | Revocation reason code to be put to CRL (Mozilla Root Store Policy 2.8 section 6.1.1) Reason code (unspecified (0), keyCompromise (1), affiliationChanged (3), superseded (4), cessationOfOperation (5)) | [Allowed ranges 0,1 and 3-5]
reason | String | Short message explaining why certificate needs to be revoked | [Maximum length is 512 characters or can be empty]

##### Example request

    $ curl 'https://cert-manager.com/api/device/v1/revoke/order/125546' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer1689' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1689' \
        -d '{"reasonCode":4,"reason":"my reason"}'

##### Example response

    HTTP/1.1 204 No Content

#### Revoke device certificate by serial number

Sending a request to CA to add the Device certificate under the particular serial number to certificate revocation list.

##### Path parameters

Table 1. /api/device/v1/revoke/serial/{serialNumber}
Parameter | Description
--- | ---
`serialNumber` | Certificate Serial Number

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
reasonCode | Number | Revocation reason code to be put to CRL (Mozilla Root Store Policy 2.8 section 6.1.1) Reason code (unspecified (0), keyCompromise (1), affiliationChanged (3), superseded (4), cessationOfOperation (5)) | [Allowed ranges 0,1 and 3-5]
reason | String | Short message explaining why certificate needs to be revoked | [Maximum length is 512 characters or can be empty]

##### Example request

    $ curl 'https://cert-manager.com/api/device/v1/revoke/serial/A7:35:E0:9A:D6:D1:C0:CC:56:EA:6C:D0:E3:97:B6:D9' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer1701' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1701' \
        -d '{"reasonCode":4,"reason":"my reason"}'

##### Example response

    HTTP/1.1 204 No Content

#### Manual Revoke device certificate by Id or serial number + issuer

Mark certificate as revoked. The certificate is not revoked on CA side.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
certId | Number | Certificate ID. Required if `serialNumber` and `issuer` are not provided. | Must be present if serialNumber and issuer are not provided
serialNumber | Number | Certificate serial number. Required if `certId` is not provided (used together with `issuer`). | Must be present with issuer if certId is not provided
issuer | Number | Certificate issuer. Required if `certId` is not provided (used together with `serialNumber`). | Must be present with serialNumber if certId is not provided
revokeDate | String | Certificate revoke date | []
reasonCode | Number | Revocation reason code to be put to CRL (Mozilla Root Store Policy 2.8 section 6.1.1) Reason code (unspecified (0), keyCompromise (1), affiliationChanged (3), superseded (4), cessationOfOperation (5)) | [Allowed ranges 0,1 and 3-5]

##### Example request

    $ curl 'https://cert-manager.com/api/device/v1/revoke/manual' -i -X POST \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer1627' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1627' \
        -d '{"certId":91,"serialNumber":null,"issuer":null,"revokeDate":"2025-06-10T00:00:00Z","reasonCode":4}'

##### Example response

    HTTP/1.1 204 No Content

#### Renew device certificate by Id

Submission of a request for a new Device certificate using the CSR and parameters of the initial Device certificate. The initial certificate is defined by its Id.

##### Path parameters

Table 1. /api/device/v1/renew/order/{deviceCertId}
Parameter | Description
--- | ---
`deviceCertId` | Unique ID for certificate.

##### Example request

    $ curl 'https://cert-manager.com/api/device/v1/renew/order/12345' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer1651' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1651'

##### Response fields

Path | Type | Description
--- | --- | ---
`deviceCertId` | `Number` | Unique ID for certificate. This ID should be used for certificate operations.
`status` | `String` | Certificate status.
`backendCertId` | `String` | Deprecated. ID of certificate in the enrolling backend. Should not be used for certificate operations but will work during migration phase.
`orderNumber` | `Number` | Deprecated. Currently identical to deviceCertId for backwards compatibility during migration phase.

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 79

    {"deviceCertId":99,"status":"APPROVED","backendCertId":"1654","orderNumber":99}

#### Renew device certificate by serial number

Submission of a request for a new Device certificate using the CSR and parameters of the initial Device certificate. The initial certificate is defined by its serial number.

##### Path parameters

Table 1. /api/device/v1/renew/serial/{serialNumber}
Parameter | Description
--- | ---
`serialNumber` | Serial Number of certificate which you are going to renew.

##### Example request

    $ curl 'https://cert-manager.com/api/device/v1/renew/serial/A7:35:E0:9A:D6:D1:C0:CC:56:EA:6C:D0:E3:97:B6:D9' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer1673' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1673'

##### Response fields

Path | Type | Description
--- | --- | ---
`deviceCertId` | `Number` | Unique ID for certificate. This ID should be used for certificate operations.
`status` | `String` | Certificate status.
`backendCertId` | `String` | Deprecated. ID of certificate in the enrolling backend. Should not be used for certificate operations but will work during migration phase.
`orderNumber` | `Number` | Deprecated. Currently identical to deviceCertId for backwards compatibility during migration phase.

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 81

    {"deviceCertId":104,"status":"APPROVED","backendCertId":"1676","orderNumber":104}

#### Replace device certificate by Id

Submission of a request for a replace of a Device certificate using new CSR and the parameters of the initial Device certificate. The initial certificate is defined by its Id.

##### Path parameters

Table 1. /api/device/v1/replace/order/{deviceCertId}
Parameter | Description
--- | ---
`deviceCertId` | Unique ID for certificate.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
csr | String | Certificate signing request related to new key pair | [Must match the regular expression `[a-zA-Z0-9-=\/\s]`, Must not be empty, Size must be between 1 and 32767 inclusive]
reason | String | Short message explaining why certificate needs to be replaced | [Must not be empty, Size must be between 1 and 512 inclusive]
revoke | Boolean | Previous certificate will be revoked if true | [Must not be null]

##### Example request

    $ curl 'https://cert-manager.com/api/device/v1/replace/order/252' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer1681' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1681' \
        -d '{"csr":"-----BEGIN CERTIFICATE REQUEST-----\nMIIC4jCCAcoCAQAwdDELMAkGA1UEBhMCVUExDTALBgNVBAgTBHRlc3QxDTALBgNV\nBAcTBHRlc3QxDTALBgNVBAoTBHRlc3QxDTALBgNVBAsTBHRlc3QxEjAQBgNVBAMT\nCWNjbXFhLmNvbTEVMBMGCSqGSIb3DQEJARYGdGVzdEB0MIIBIjANBgkqhkiG9w0B\nAQEFAAOCAQ8AMIIBCgKCAQEAul8SGkicOnrMjJDvgG8P2j1Ee5hY6ww+qSoe0oI2\ntvRcLBknPHMMAkxTjW9fy80wD8hyrnc+IGlQcq2R/tEMIJHRsJD603M+2FjAwlP9\n8xtiqv0hMyHO4fEt+HMyy8Q367aTBmnZCuAxJZJapfFW9wH5jGZxuX8mnrXVsBTD\n4ZBO4UFd9P4u8P0nJx80CiuDt4COSDl6Br4pNLciPVqfwj7LQ5/skwPkNCggk3/G\nxoQX/3FV7O4fC6WCxVP1uYjJVQjlD1Tf06hPNfonVfThVuP20OL3QAlnIF3lZiyY\nJ5etdFtu+BKcPNMdQDJOS/O4Zz0YJn6K2HdAXSc1YxYniwIDAQABoCkwJwYJKoZI\nhvcNAQkOMRowGDAJBgNVHRMEAjAAMAsGA1UdDwQEAwIF4DANBgkqhkiG9w0BAQsF\nAAOCAQEAVJVTTELGHWoRh8JZt+kx/zO0VnibBq/D6uB405L+Ir80X48Ei9hTLB11\nAqhSBE+AbEgBhRnEIDBjiXEDcWvC532Omex721kc17ZTzowuD8lOjfQkTHbAmjIi\nnCQNFAPf0D/zpi6Eync5pi2P//Uj/Yn7oDYYli1t61EZwuQyEu4mbQ1efUnU/SOl\nAAQtDPhNwATZPmfefjM8+YuzhG70dQvmFAClcFayKM92Zx9khDd/VnLT85YzDULJ\n8iiHW8dZNblaTsUjKrc73iX2hONZIxw6B3tGCFs8mH9lZlExV7Y2er3t/lO1pdxe\nSUohEELWcttIxyWnYgxvwaWX4lfx9A==\n-----END CERTIFICATE REQUEST-----","reason":"Test","revoke":false}'

##### Example response

    HTTP/1.1 204 No Content

#### Delete device certificate by Id

Submission of a request for deleting Device certificate for a given Id.

| Only imported or discovered certificates can be deleted.

##### Path parameters

Table 1. /api/device/v1/{certId}
Parameter | Description
--- | ---
`certId` | Certificate ID.

##### Example request

    $ curl 'https://cert-manager.com/api/device/v1/68' -i -X DELETE \
        -H 'login: admin_customer1565' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1565'

##### Example response

    HTTP/1.1 204 No Content

#### Import device certificates to SCM

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
[] | Array | Certificates to import | Should not be empty, maximum size is 128
[].orgID | Number | Organization ID | [Must be at least 1, Must not be null]
[].customFields | Array | List of custom certificate fields | []
[].customFields[].name | String | Custom field name | []
[].customFields[].value | String | Custom field value | []
[].owner | String | Certificate owner | [Must be a well-formed email address, Maximum length is 128 characters or can be empty]
[].backendCertId | String | Backend certificate identifier | [Maximum length is 255 characters or can be empty]
[].cert | String | DER (Base64) certificate | [Must not be empty]
[].csr | String | DER (Base64) Certificate Signing Request | []
[].comments | String | Additional comments | [Maximum length is 1024 characters or can be empty]
[].force | Boolean | Force alter editable certificate fields event if certificate is already exists. | []

##### Example request

    $ curl 'https://cert-manager.com/api/device/v1/import' -i -X POST \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer1603' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1603' \
        -d '[{"orgID":940,"customFields":[{"name":"testName","value":"testValue"}],"owner":"admin@requester.com","backendCertId":"1234567890DFa","cert":" ","csr":" ","comments":"Test comments","force":true}]'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | List of certificates
`[].cert` | `Object` | Device Certificate information
`[].cert.id` | `Number` | Device Certificate ID
`[].cert.subject` | `String` | Device Certificate Subject
`[].cert.serialNumber` | `String` | Device Certificate Serial Number
`[].created` | `Boolean` | Whether certificate been created or not (it could already exist)

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 164

    [{"cert":{"id":80,"subject":"CN=*.stackexchange.com,O=Stack Exchange, Inc.,L=New York,ST=NY,C=US","serialNumber":"E11BBD70D54B710D0C6F540B6B52CA4"},"created":true}]

The response array element can be error message:

##### Response fields

Path | Type | Description
--- | --- | ---
`[].errorMessage` | `String` | Error message

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 59

    [{"errorMessage":"Custom field cannot be found: testName"}]

## Code Signing Certificates

Used to perform operations on code signing certificates.

### Manage code signing certificate

#### Import code signing certificates to SCM

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
[] | Array | Certificates to import | Should not be empty, maximum size is 128
[].orgID | Number | Organization ID | [Must be at least 1, Must not be null]
[].customFields | Array | List of custom certificate fields | []
[].customFields[].name | String | Custom field name | []
[].customFields[].value | String | Custom field value | []
[].backendCertId | String | Backend certificate identifier | [Maximum length is 255 characters or can be empty]
[].cert | String | DER (Base64) certificate | [Must not be empty]
[].csr | String | DER (Base64) Certificate Signing Request | []
[].force | Boolean | Force alter editable certificate fields event if certificate is already exists. | []

##### Example request

    $ curl 'https://cert-manager.com/api/cscert/v1/import' -i -X POST \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer18157' \
        -H 'password: Password123!' \
        -H 'customerUri: cst18157' \
        -d '[{"orgID":1990,"customFields":[{"name":"testName","value":"testValue"}],"backendCertId":"1234567890DFa","cert":" ","csr":" ","force":true}]'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | List of certificates
`[].cert` | `Object` | Code Sign Certificate information
`[].cert.id` | `Number` | Code Sign Certificate ID
`[].cert.subject` | `String` | Code Sign Certificate Subject
`[].cert.serialNumber` | `String` | Code Sign Certificate Serial Number
`[].created` | `Boolean` | Whether certificate been created or not (it could already exist)

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 122

    [{"cert":{"id":59,"subject":"E=someonelikeu@ccmqa.com","serialNumber":"B75366C1F4C90B7353E1375F4639C436"},"created":true}]

#### Manual Revoke code signing certificate by Id or serial number + issuer

Mark certificate as revoked. The certificate is not revoked on CA side.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
certId | Number | Certificate ID. Required if `serialNumber` and `issuer` are not provided. | Must be present if serialNumber and issuer are not provided
serialNumber | Number | Certificate serial number. Required if `certId` is not provided (used together with `issuer`). | Must be present with issuer if certId is not provided
issuer | Number | Certificate issuer. Required if `certId` is not provided (used together with `serialNumber`). | Must be present with serialNumber if certId is not provided
revokeDate | String | Certificate revoke date | []
reasonCode | Number | Revocation reason code to be put to CRL (Mozilla Root Store Policy 2.8 section 6.1.1) Reason code (unspecified (0), keyCompromise (1), affiliationChanged (3), superseded (4), cessationOfOperation (5)) | [Allowed ranges 0,1 and 3-5]

##### Example request

    $ curl 'https://cert-manager.com/api/cscert/v1/revoke/manual' -i -X POST \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer18169' \
        -H 'password: Password123!' \
        -H 'customerUri: cst18169' \
        -d '{"certId":62,"serialNumber":null,"issuer":null,"revokeDate":"2025-06-10T00:00:00Z","reasonCode":4}'

##### Example response

    HTTP/1.1 204 No Content

The response array element can be error message:

##### Response fields

Path | Type | Description
--- | --- | ---
`[].errorMessage` | `String` | Error message

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 50

    [{"errorMessage":"Organization ''2'' not found."}]

## Code Signing on Demand - Deprecated

The Code Signing on Demand (CSoD) API integrates the CSoD service and automation systems (such as Jenkins, TeamCity, Puppet, PerlScript) to provide an end-to-end, automated code signing platform.

Code signing requests are submitted by developers and approved by administrators. The code signing request must first be created, the files uploaded and the request submitted. The request needs to be approved by an administrator. Once approved, the request is completed automatically and the digitally signed files can be downloaded.

In addition to complete files it is possible to just sign hashes. Place the hash in a file with an md5 or sha extension and specify the HASH_SUM signing type when creating the request.

### Developer API

A developer is a special type of user allowed to use the CsoD service to digitally sign files. These API methods require the Developer Login authentication style.

#### Create code signing request

The code signing request must first be created by a developer. The creation returns a request ID and an URL to upload the file to be signed.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
organizationId | Number | Organization ID |
version | String | A free form field that can be used to provide file verson information if required | Should not be empty
algorithms | String | Hashing algorithm to use. Multiple comma separated values are possible if the file signing type supports it | Supported values are: MD5, SHA1, SHA256, SHA384, SHA512
signingType | String | Type of file(s) to sign. All uploaded files must be of the same type | Supported values are: MICROSOFT_AUTHENTICODE, JAVA, MICROSOFT_OFFICE_AND_VBA, WINDOWS_PHONE_AND_XBOX, ANDROID, HASH_SUM, POWERSHELL

##### Response fields

Path | Type | Description
--- | --- | ---
`requestId` | `Number` | ID for created request
`uploadUrl` | `String` | URL to upload files for signing

##### Example request

    $ curl 'https://cert-manager.com/api/csod/v1/requests/developer' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'Accept: application/json' \
        -H 'email: test@email' \
        -H 'password: 123' \
        -H 'customerUri: cst20386' \
        -d '{"organizationId":2762,"version":"1","algorithms":"sha384","signingType":"java"}'

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 96

    {"requestId":5,"uploadUrl":"https://host:123/path?token=9NC87HU4RM044AINI0DVG84UA8&requestId=5"}

##### Additional notes

Certificate Manager 19.10 contains a bug in that the uploadUrl response field is incorrect. The URL needs to have the requestId added as a URL parameter. Look at the Example response above.

#### Upload files

The files to be digitally signed must be uploaded to the URL returned when the code signing request was created. The upload takes the form of a POST with a multipart/form-data content type. If uploading multiple files, the keys just need to be unique, i.e. file1, file2.

##### Example request

    $ curl -F 'file1=@filename' https://agenthost/path?token=L1P1J62D3ALTVB67M511T5CL73&requestId=5

##### Example response

    HTTP/1.1 204 No Content

##### Additional Notes

The hosted code signing agent by default will use a self-signed certificate so the upload may require extra handling. For example if using curl you can specify the --insecure flag.

#### Submit signing request

After the files have been uploaded the signing request is submitted. The request must then be approved by before it is completed. Requests are approved by an administrator.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
requestId | Number | Request ID returned when request created |

##### Example request

    $ curl 'https://cert-manager.com/api/csod/v1/requests/developer' -i -X PUT \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'email: test@email' \
        -H 'password: 123' \
        -H 'customerUri: cst20413' \
        -d '{"requestId":1}'

##### Example response

    HTTP/1.1 204 No Content

#### Get code signing request count

Enables the developer to get the number of code signing requests created by them.

##### Response fields

Path | Type | Description
--- | --- | ---
`count` | `Number` | Requests count

##### Example request

    $ curl 'https://cert-manager.com/api/csod/v1/requests/developer/count' -i -X GET \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'email: test@email' \
        -H 'password: 123' \
        -H 'customerUri: cst20383'

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 11

    {"count":1}

#### Get list of submitted requests

Enables the developer to get the code signing requests IDs created by them.

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | Array of request IDs

##### Example request

    $ curl 'https://cert-manager.com/api/csod/v1/requests/developer/?size=1&position=10' -i -X GET \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'email: test@email' \
        -H 'password: 123' \
        -H 'customerUri: cst20410'

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 3

    [2]

#### Get code signing request details

Enables the developer to get the code signing requests IDs created by them.

##### Response fields

Path | Type | Description
--- | --- | ---
`developerEmail` | `String` | Developer email address
`organization` | `String` | Organization name
`department` | `String` | Department name. Optional
`approver` | `String` | Name of the person who approved operation
`version` | `String` | Value provided when creating request
`signingService` | `String` | Type of file(s), possible values are: MICROSOFT_AUTHENTICODE, JAVA, MICROSOFT_OFFICE_AND_VBA, WINDOWS_PHONE_AND_XBOX, ANDROID, HASH_SUM, POWERSHELL
`created` | `String` | Creation date
`state` | `String` | State of request, posible values are: INIT, CREATED, IN_PROGRESS, DECLINED, SIGNED, EXPIRED, FAILED
`digestAlgorithms[]` | `Array` | Array of applied hash algorithms
`files[]` | `Array` | Array of signed files
`files[].name` | `String` | File name
`files[].downloadUrl` | `String` | URL to download the digitally signed file from. The process of downloading does involve a redirect to the code signing agent
`files[].size` | `Number` | File size

##### Example request

    $ curl 'https://cert-manager.com/api/csod/v1/requests/developer/1' -i -X GET \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'email: test@email' \
        -H 'password: 123' \
        -H 'customerUri: cst20404'

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 358

    {"developerEmail":"test@email","organization":"org4Test","approver":"test ","version":"1","digestAlgorithms":["SHA256"],"signingService":"MICROSOFT_AUTHENTICODE","created":"08/15/2025 09:05:55 GMT","state":"SIGNED","files":[{"name":"test.msi","downloadUrl":"https://cert-manager.com/customer/cst20404/csfile/f337c957-3bb1-43d3-a755-69dced2edeb3","size":10}]}

### Administrator API

An administrator is a Certificate Manager user with privileges to approve code signing requests.

#### Approve code signing request

Enables the administrators to permit execution of the developer’s code signing request.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
requestId | Number | Request ID to be approved |
comment | String | Short message about approval | None

##### Example request

    $ curl 'https://cert-manager.com/api/csod/v1/requests/admin/approve' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer20374' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20374' \
        -d '{"requestId":1,"comment":"Test"}'

##### Example response

    HTTP/1.1 204 No Content

#### Decline code signing request

Enables the administrators to decline execution of the developer’s code signing request.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
requestId | Number | Request ID to be declined |
comment | String | Short message about decline | None

##### Example request

    $ curl 'https://cert-manager.com/api/csod/v1/requests/admin/decline' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer20392' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20392' \
        -d '{"requestId":1,"comment":"Test"}'

##### Example response

    HTTP/1.1 204 No Content

#### Get code signing request count

Enables the administrator to get the number of the code signing requests submitted and assigned to the organization(s) or department(s) that are delegated to them.

##### Response fields

Path | Type | Description
--- | --- | ---
`count` | `Number` | Requests count

##### Example request

    $ curl 'https://cert-manager.com/api/csod/v1/requests/admin/count' -i -X GET \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer20380' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20380'

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 11

    {"count":2}

#### Get list of submitted requests

Enables the administrator to get the code signing requests IDs submitted and assigned to the organization(s) or department(s) that are delegated to them.

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | Array of request IDs

##### Example request

    $ curl 'https://cert-manager.com/api/csod/v1/requests/admin/?size=1&position=10' -i -X GET \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer20407' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20407'

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 5

    [2,3]

#### Get code signing request details

Enables the administrator to get the code signing request details by its ID.

##### Response fields

Path | Type | Description
--- | --- | ---
`developerEmail` | `String` | Developer email address
`organization` | `String` | Organization name
`department` | `String` | Department name. Optional
`approver` | `String` | Name of the person who approved operation
`version` | `String` | Value provided when creating request
`signingService` | `String` | Type of file(s), possible values are: MICROSOFT_AUTHENTICODE, JAVA, MICROSOFT_OFFICE_AND_VBA, WINDOWS_PHONE_AND_XBOX, ANDROID, HASH_SUM, POWERSHELL
`created` | `String` | Creation date
`state` | `String` | State of request, posible values are: INIT, CREATED, IN_PROGRESS, DECLINED, SIGNED, EXPIRED, FAILED
`digestAlgorithms[]` | `Array` | Array of applied hash algorithms
`files[]` | `Array` | Array of signed files
`files[].name` | `String` | File name
`files[].downloadUrl` | `String` | URL to download the digitally signed file from. The process of downloading does involve a redirect to the code signing agent
`files[].size` | `Number` | File size

##### Example request

    $ curl 'https://cert-manager.com/api/csod/v1/requests/admin/1' -i -X GET \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer20401' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20401'

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 358

    {"developerEmail":"test@email","organization":"org4Test","approver":"test ","version":"1","digestAlgorithms":["SHA256"],"signingService":"MICROSOFT_AUTHENTICODE","created":"08/15/2025 09:05:55 GMT","state":"SIGNED","files":[{"name":"test.msi","downloadUrl":"https://cert-manager.com/customer/cst20401/csfile/f337c957-3bb1-43d3-a755-69dced2edeb3","size":10}]}

## Domain Control Validation

Any domain added to SCM must pass Domain Control Validation (DCV) before public certificates can be issued to it. DCV is a procedure of validation of the applicant’s control of the domain which needs to appear in the subject of the certificate.

### View domain control validations

#### List domain control validations

List all domain validations that match the requested filter.

##### Query parameters

Parameter | Description
--- | ---
`position` | the first position (entry) to return from the results of the query
`size` | Count of entries
`domain` | Domain
`org` | Organization ID
`department` | Department ID
`dcvStatus` | DCV Status
`orderStatus` | DCV Order status
`expiresIn` | Expires in (days)

##### Example request

    $ curl 'https://cert-manager.com/api/dcv/v1/validation?size=10&position=0&org=&department=&domain=ccmqa.com&expiresIn=&dcvStatus=&orderStatus=' -i -X GET \
        -H 'login: admin_customer20512' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20512' \
        -H 'Accept: application/json'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | Array of DCV domains
`[].domain` | `String` | Domain
`[].dcvStatus` | `String` | DCV Status
`[].dcvOrderStatus` | `String` | DCV Order status
`[].dcvOrderMethod` | `String` | DCV Order method. Values: [EMAIL, CNAME, HTTP, HTTPS, AUTO, TXT]
`[].dcvMethod` | `String` | DCV Method
`[].expirationDate` | `String` | DCV Expiration date

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 2
    Content-Type: application/json
    Content-Length: 380

    [ {
      "domain" : "ccmqa.com",
      "dcvStatus" : "VALIDATED",
      "dcvMethod" : "EMAIL",
      "dcvOrderStatus" : "NOT_INITIATED",
      "dcvOrderMethod" : "EMAIL",
      "expirationDate" : "2025-08-16"
    }, {
      "domain" : "www.ccmqa.com",
      "dcvStatus" : "VALIDATED",
      "dcvMethod" : "EMAIL",
      "dcvOrderStatus" : "NOT_INITIATED",
      "dcvOrderMethod" : "EMAIL",
      "expirationDate" : "2025-08-16"
    } ]

#### Get domain control validation details

Get domain validation details. The V2 API provides more information about the domain validation and is the preferred version.

`V2`

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
domain | String | Domain which status is requested | [Size must be between 3 and 255 inclusive]

##### Example request

    $ curl 'https://cert-manager.com/api/dcv/v2/validation/status' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer20471' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20471' \
        -H 'Accept: application/json' \
        -d '{
      "domain" : "example.com"
    }'

##### Response fields

Path | Type | Description
--- | --- | ---
`status` | `String` | Validation status
`validationDate` | `String` | Validation date
`expirationDate` | `String` | Validation expiration date
`orderStatus` | `String` | Validation order status
`orderMode` | `String` | Validation order mode. Possible values: [EMAIL, CNAME, HTTP, HTTPS, AUTO, TXT]
`url` | `String` | HTTP(s) validation. URL to the validation txt file in the "/.well-known/pki-validation" directory of the HTTP server
`firstLine` | `String` | HTTP(s) validation. Validation txt file content: first line
`secondLine` | `String` | HTTP(s) validation. Validation txt file content: second line
`host` | `String` | DNS validation record host value
`point` | `String` | DNS validation record point value
`validationEmail` | `String` | Email validation recipient
`emailValidationReferenceNumber` | `String` | Email validation reference number
`orderBackendId` | `String` | Validation order backend ID
`submittedDate` | `String` | Validation order submission date(only for submitted orders)
`lastCheck` | `String` | Time of last check(only for submitted orders)
`nextCheck` | `String` | Time of the scheduled next check(only for submitted orders)

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 518

    {
      "status" : "EXPIRED",
      "validationDate" : "2024-08-15",
      "expirationDate" : "2025-08-05",
      "orderStatus" : "SUBMITTED",
      "orderMode" : "HTTP",
      "url" : "http://example.com/.well-known/pki-validation/328E41AAD15613A48AF48807291C2D63.txt",
      "firstLine" : "b38777ecc4777069142a0e75c16de63716da04aafd74f8b28d284cbbfc131660",
      "secondLine" : "sectigo.com",
      "orderBackendId" : "99887766",
      "submittedDate" : "2025-08-15",
      "lastCheck" : "2025-08-15T08:20:42.718Z",
      "nextCheck" : "2025-08-15T10:20:42.718Z"
    }

`V1` - Deprecated

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
domain | String | Domain to validate | [Size must be between 3 and 255 inclusive]

##### Example request

    $ curl 'https://cert-manager.com/api/dcv/v1/validation/status' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer20502' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20502' \
        -d '{
      "domain" : "ccmqa.com"
    }'

##### Response fields

Path | Type | Description
--- | --- | ---
`status` | `String` | Validation status
`validationDate` | `String` | Validation date
`expirationDate` | `String` | Validation expiration date
`orderStatus` | `String` | Validation order status
`orderMode` | `String` | Validation order mode. Possible values: [EMAIL, CNAME, HTTP, HTTPS, AUTO, TXT]
`url` | `String` | HTTP(s) validation. URL to the validation txt file in the "/.well-known/pki-validation" directory of the HTTP server
`firstLine` | `String` | HTTP(s) validation. Validation txt file content: first line
`secondLine` | `String` | HTTP(s) validation. Validation txt file content: second line
`host` | `String` | DNS validation record host value
`point` | `String` | DNS validation record point value
`validationEmail` | `String` | Email validation recipient
`emailValidationReferenceNumber` | `String` | Email validation reference number
`orderBackendId` | `String` | Validation order backend ID
`submittedDate` | `String` | Validation order submission date(only for submitted orders)
`lastCheck` | `String` | Time of last check(only for submitted orders)
`nextCheck` | `String` | Time of the scheduled next check(only for submitted orders)

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 133

    {
      "status" : "VALIDATED",
      "validationDate" : "2024-08-16",
      "expirationDate" : "2025-08-16",
      "orderStatus" : "NOT_INITIATED"
    }

#### Sync domain control validation details with backend

Synchronize domain validation details with backend.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
domain | String | Domain to validate | [Size must be between 3 and 255 inclusive]

##### Example request

    $ curl 'https://cert-manager.com/api/dcv/v1/validation/sync?force=true' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer20662' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20662' \
        -d '{
      "domain" : "ccmqa.com"
    }'

##### Response fields

Path | Type | Description
--- | --- | ---
`status` | `String` | Validation status
`validationDate` | `String` | Validation date
`expirationDate` | `String` | Validation expiration date
`orderStatus` | `String` | Validation order status
`orderMode` | `String` | Validation order mode. Possible values: [EMAIL, CNAME, HTTP, HTTPS, AUTO, TXT]
`url` | `String` | HTTP(s) validation. URL to the validation txt file in the "/.well-known/pki-validation" directory of the HTTP server
`firstLine` | `String` | HTTP(s) validation. Validation txt file content: first line
`secondLine` | `String` | HTTP(s) validation. Validation txt file content: second line
`host` | `String` | DNS validation record host value
`point` | `String` | DNS validation record point value
`validationEmail` | `String` | Email validation recipient
`emailValidationReferenceNumber` | `String` | Email validation reference number
`orderBackendId` | `String` | Validation order backend ID
`submittedDate` | `String` | Validation order submission date(only for submitted orders)
`lastCheck` | `String` | Time of last check(only for submitted orders)
`nextCheck` | `String` | Time of the scheduled next check(only for submitted orders)

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 168

    {
      "status" : "NOT_VALIDATED",
      "orderStatus" : "SUBMITTED",
      "orderMode" : "EMAIL",
      "emailValidationReferenceNumber" : "1099190539",
      "orderBackendId" : "1234"
    }

#### Clear domain control validation

Reset the parameters of a request for DCV and drop domain validation Status and DCV Order Status of the domain to the initial values.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
domain | String | Domain to validate | [Size must be between 3 and 255 inclusive]

##### Example request

    $ curl 'https://cert-manager.com/api/dcv/v1/validation/clear' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer20487' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20487' \
        -d '{
      "domain" : "ccmqa.com"
    }'

##### Response fields

Path | Type | Description
--- | --- | ---
`orderStatus` | `String` | Order status
`message` | `String` | Message
`status` | `String` | Status

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 135

    {
      "status" : "VALIDATED",
      "orderStatus" : "NOT_INITIATED",
      "message" : "DCV status: VALIDATED; DCV order status: NOT_INITIATED"
    }

#### Delete domain control validation

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
domain | String | Domain to remove validation from | [Size must be between 3 and 255 inclusive]

##### Example request

    $ curl 'https://cert-manager.com/api/dcv/v1/validation/delete' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer20497' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20497' \
        -d '{
      "domain" : "ccmqa.com"
    }'

##### Example response

    HTTP/1.1 200 OK

### Validate domain

#### Method HTTP

##### Start domain control validation HTTP

Start Domain Control Validation using HTTP method.

###### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
domain | String | Domain to validate | [Size must be between 3 and 255 inclusive]

###### Example request

    $ curl 'https://cert-manager.com/api/dcv/v1/validation/start/domain/http' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer20637' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20637' \
        -d '{
      "domain" : "ccmqa.com"
    }'

###### Response fields

Path | Type | Description
--- | --- | ---
`url` | `String` | URL
`firstLine` | `String` | First line
`secondLine` | `String` | Second line

###### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 212

    {
      "url" : "http://ccmqa.com/.well-known/pki-validation/3223E4ECBBA675CF826EF3633AF97ACE.txt",
      "firstLine" : "54e679f20a5476c171bc721bfc51191ea2e8e87b93f0f84f016388e504f67694",
      "secondLine" : "sectigo.com"
    }

##### Start domain control validation HTTPS

Start Domain Control Validation using HTTPS method.

###### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
domain | String | Domain to validate | [Size must be between 3 and 255 inclusive]

###### Example request

    $ curl 'https://cert-manager.com/api/dcv/v1/validation/start/domain/https' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer20647' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20647' \
        -d '{
      "domain" : "ccmqa.com"
    }'

###### Response fields

Path | Type | Description
--- | --- | ---
`url` | `String` | URL
`firstLine` | `String` | First line
`secondLine` | `String` | Second line

###### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 213

    {
      "url" : "https://ccmqa.com/.well-known/pki-validation/3223E4ECBBA675CF826EF3633AF97ACE.txt",
      "firstLine" : "54e679f20a5476c171bc721bfc51191ea2e8e87b93f0f84f016388e504f67694",
      "secondLine" : "sectigo.com"
    }

##### Submit domain control validation HTTP

Submit a request for Domain Control Validation using HTTP method.

###### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
domain | String | Domain to validate | [Size must be between 3 and 255 inclusive]

###### Example request

    $ curl 'https://cert-manager.com/api/dcv/v1/validation/submit/domain/http' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer20637' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20637' \
        -d '{
      "domain" : "ccmqa.com"
    }'

###### Response fields

Path | Type | Description
--- | --- | ---
`orderStatus` | `String` | Order status
`message` | `String` | Message
`status` | `String` | Status
`orderBackendId` | `String` | Validation order backend ID

###### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 130

    {
      "status" : "VALIDATED",
      "orderStatus" : "SUBMITTED",
      "message" : "Submitted successfully",
      "orderBackendId" : "100500"
    }

##### Submit domain control validation HTTPS

Submit a request for Domain Control Validation using HTTPS method.

###### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
domain | String | Domain to validate | [Size must be between 3 and 255 inclusive]

###### Example request

    $ curl 'https://cert-manager.com/api/dcv/v1/validation/submit/domain/https' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer20647' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20647' \
        -d '{
      "domain" : "ccmqa.com"
    }'

###### Response fields

Path | Type | Description
--- | --- | ---
`orderStatus` | `String` | Order status
`message` | `String` | Message
`status` | `String` | Status
`orderBackendId` | `String` | Validation order backend ID

###### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 130

    {
      "status" : "VALIDATED",
      "orderStatus" : "SUBMITTED",
      "message" : "Submitted successfully",
      "orderBackendId" : "100500"
    }

#### Method DNS

##### Start domain control validation CName

Start Domain Control Validation using CName method.

###### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
domain | String | Domain to validate | [Size must be between 3 and 255 inclusive]

###### Example request

    $ curl 'https://cert-manager.com/api/dcv/v1/validation/start/domain/cname' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer20612' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20612' \
        -d '{
      "domain" : "ccmqa.com"
    }'

###### Response fields

Path | Type | Description
--- | --- | ---
`host` | `String` | Host
`point` | `String` | Point

###### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 155

    {
      "host" : "_3223e4ecbba675cf826ef3633af97ace.ccmqa.com.",
      "point" : "54e679f20a5476c171bc721bfc51191e.a2e8e87b93f0f84f016388e504f67694.sectigo.com."
    }

##### Submit domain control validation CName

Submit a request for Domain Control Validation using CName method.

###### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
domain | String | Domain to validate | [Size must be between 3 and 255 inclusive]

###### Example request

    $ curl 'https://cert-manager.com/api/dcv/v1/validation/submit/domain/cname' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer20612' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20612' \
        -d '{
      "domain" : "ccmqa.com"
    }'

###### Response fields

Path | Type | Description
--- | --- | ---
`orderStatus` | `String` | Order status
`message` | `String` | Message
`status` | `String` | Status
`orderBackendId` | `String` | Validation order backend ID

###### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 130

    {
      "status" : "VALIDATED",
      "orderStatus" : "SUBMITTED",
      "message" : "Submitted successfully",
      "orderBackendId" : "100500"
    }

##### Submit domain control validation CName using DNS Connector

Submit a request for Domain Control Validation using CName method in an automated manner. See DNS Connector API for more details.

###### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
domain | String | Domain to validate | [Size must be between 3 and 255 inclusive]
dnsAgentUUID | String | Domain agent UUID | []
dnsProviderName | String | DNS provider name | []

###### Example request

    $ curl 'https://cert-manager.com/api/dcv/v1/validation/submit/domain/cname' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer20607' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20607' \
        -d '{
      "dnsAgentUUID" : "975f32e1ca7942bb8c0a1cc2f80d802f",
      "dnsProviderName" : "cloudflare",
      "domain" : "ccmqa.com"
    }'

###### Response fields

Path | Type | Description
--- | --- | ---
`orderStatus` | `String` | Order status
`message` | `String` | Message
`status` | `String` | Status
`orderBackendId` | `String` | Validation order backend ID

###### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 134

    {
      "status" : "NOT_VALIDATED",
      "orderStatus" : "SUBMITTED",
      "message" : "Submitted successfully",
      "orderBackendId" : "100500"
    }

##### Start domain control validation TXT

Start request is not supported by the API. Use submit directly.

##### Submit domain control validation using TXT record

Submit a request for Domain Control Validation using TXT method. Use information from the response to create a DNS TXT record. (i.e. _pki-validation.<domain name>. TXT <validation code>)

###### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
domain | String | Domain to validate | [Size must be between 3 and 255 inclusive]

###### Example request

    $ curl 'https://cert-manager.com/api/dcv/v1/validation/submit/domain/txt' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer20657' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20657' \
        -d '{
      "domain" : "ccmqa.com"
    }'

###### Response fields

Path | Type | Description
--- | --- | ---
`orderStatus` | `String` | Order status
`message` | `String` | Message
`status` | `String` | Status
`orderBackendId` | `String` | Validation order backend ID
`host` | `String` | DNS TXT record host
`point` | `String` | DNS TXT record point

###### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 220

    {
      "status" : "VALIDATED",
      "orderStatus" : "SUBMITTED",
      "message" : "Submitted successfully",
      "orderBackendId" : "100500",
      "host" : "_pki-validation.ccmqa.com.",
      "point" : "E-_(Nw4eH\" v{zU4m*'zr]!4Np4Ka4aj"
    }

#### Method Email

##### Start domain control validation email

Retrieve emails that could be used for Domain Control Validation.

###### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
domain | String | Domain to validate | [Size must be between 3 and 255 inclusive]

###### Example request

    $ curl 'https://cert-manager.com/api/dcv/v1/validation/start/domain/email' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer20622' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20622' \
        -d '{
      "domain" : "ccmqa.com"
    }'

###### Response fields

Path | Type | Description
--- | --- | ---
`emails[]` | `Array` | Array of e-mails
`dcvEmails` | `Array` | List of e-mails for each domain

###### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 486

    {
      "emails" : [ "webmaster@ccmqa.com", "administrator@ccmqa.com", "hostmaster@ccmqa.com", "dns.txt@sectigo.com", "domain.admin@sectigo.com", "admin@ccmqa.com", "postmaster@ccmqa.com" ],
      "dcvEmails" : [ {
        "domainName" : "ccmqa.com",
        "whoisEmails" : [ "domain.admin@sectigo.com" ],
        "adminEmails" : [ "admin@ccmqa.com", "administrator@ccmqa.com", "hostmaster@ccmqa.com", "postmaster@ccmqa.com", "webmaster@ccmqa.com" ],
        "dnsTxtEmails" : [ "dns.txt@sectigo.com" ]
      } ]
    }

##### Start domain control validation email bulk

Retrieve emails that could be used for Domain Control Validation.

###### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
domains | Array | Domain lists to receive DCV e-mails | []

###### Example request

    $ curl 'https://cert-manager.com/api/dcv/v1/validation/start/domain/email' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer20582' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20582' \
        -d '{
      "domains" : [ "ccmqa.com", "domain.com" ]
    }'

###### Response fields

Path | Type | Description
--- | --- | ---
`emails[]` | `Array` | Common emails applicable for bulk DCV
`dcvEmails` | `Array` | List of e-mails for each domain

###### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 654

    {
      "emails" : [ "dns.txt@sectigo.com", "domain.admin@sectigo.com" ],
      "dcvEmails" : [ {
        "domainName" : "ccmqa.com",
        "whoisEmails" : [ "domain.admin@sectigo.com" ],
        "adminEmails" : [ "admin@ccmqa.com", "administrator@ccmqa.com", "hostmaster@ccmqa.com", "postmaster@ccmqa.com", "webmaster@ccmqa.com" ],
        "dnsTxtEmails" : [ "dns.txt@sectigo.com" ]
      }, {
        "domainName" : "domain.com",
        "whoisEmails" : [ "domain.admin@sectigo.com" ],
        "adminEmails" : [ "admin@domain.com", "administrator@domain.com", "hostmaster@domain.com", "postmaster@domain.com", "webmaster@domain.com" ],
        "dnsTxtEmails" : [ "dns.txt@sectigo.com" ]
      } ]
    }

##### Submit domain control validation email

Submit a request for Domain Control Validation using Email method.

###### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
domain | String | Domain to validate | [Must not be empty, Maximum length is 255 characters or can be empty]
email | String | E-mail | [Must be a well-formed email address, Must not be empty]

###### Example request

    $ curl 'https://cert-manager.com/api/dcv/v1/validation/submit/domain/email' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer20622' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20622' \
        -d '{
      "domain" : "ccmqa.com",
      "email" : "email@ccmqa.com"
    }'

###### Response fields

Path | Type | Description
--- | --- | ---
`orderStatus` | `String` | Order status
`message` | `String` | Message
`status` | `String` | Status
`orderBackendId` | `String` | Validation order backend ID
`emailValidationReferenceNumber` | `String` | Email validation reference number

###### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 181

    {
      "status" : "VALIDATED",
      "orderStatus" : "SUBMITTED",
      "message" : "Submitted successfully",
      "orderBackendId" : "100500",
      "emailValidationReferenceNumber" : "1099190539"
    }

##### Submit bulk domain control validation email

Submit a request for Domain Control Validation using Email method.

###### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
domains | Array | Domains to validate | [Must not be empty]
email | String | DCV email suitable for validating all provided domains. Refer to /api/validation/start/domain/email for more details | [Must be a well-formed email address, Must not be empty]

###### Example request

    $ curl 'https://cert-manager.com/api/dcv/v1/validation/submit-bulk/domain/email' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer20632' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20632' \
        -d '{
      "domains" : [ "ccmqa.com", "domain.com" ],
      "email" : "domain.admin@sectigo.com"
    }'

###### Response fields

Path | Type | Description
--- | --- | ---
`message` | `String` | Message
`orderStatus` | `String` | Validation order status
`orderBackendId` | `String` | Validation order backend ID

###### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 104

    {
      "orderStatus" : "SUBMITTED",
      "message" : "Submitted successfully",
      "orderBackendId" : "100500"
    }

## Custom Fields

Custom fields allow storage of custom metadata with certificates.

### View custom fields

#### List custom fields

List all custom fields. Includes complete details.

`V2`

##### Example request

    $ curl 'https://cert-manager.com/api/customField/v2' -i -X GET \
        -H 'login: admin_customer20705' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20705' \
        -H 'Accept: application/json'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | Array of custom fields
`[].id` | `Number` | Custom field ID
`[].name` | `String` | Custom field name
`[].mandatories` | `Array` | List of access methods for which this field is mandatory
`[].certType` | `String` | Custom field certificate type
`[].state` | `String` | State
`[].input.type` | `String` | Input type
`[].input.options` | `Array` | Input field options (for 'TEXT_OPTION' type only)

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 189

    [{"id":149,"name":"Test field","certType":"ssl","state":"ACTIVE","input":{"type":"TEXT_OPTION","options":["option1","option2"]},"mandatories":["REST_API","SOAP_API","ADMIN_UI","WEB_FORM"]}]

`V1` - Deprecated

##### Example request

    $ curl 'https://cert-manager.com/api/customField/v1' -i -X GET \
        -H 'login: admin_customer20681' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20681' \
        -H 'Accept: application/json'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | Array of custom fields
`[].id` | `Number` | Custom field ID
`[].name` | `String` | Custom field name
`[].mandatory` | `Boolean` | Custom field mandatory attribute
`[].certType` | `String` | Custom field certificate type
`[].state` | `String` | State
`[].input` | `Object` | Input field properties
`[].input.type` | `String` | Input field type

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 119

    [{"id":141,"name":"Test field","mandatory":true,"certType":"ssl","state":"ACTIVE","input":{"type":"TEXT_SINGLE_LINE"}}]

#### List custom fields by certificate type

List all custom fields filtered by certificate type. Includes complete details.

`V2`

##### Query parameters

Parameter | Description
--- | ---
`certType` | Certificate type. Possible values: [SSL, SMIME, CodeSign, Device]

##### Example request

    $ curl 'https://cert-manager.com/api/customField/v2/?certType=SSL' -i -X GET \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'Accept: application/json' \
        -H 'login: admin_customer20708' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20708'

##### Response fields

Path | Type | Description
--- | --- | ---
`[].id` | `Number` | Custom field ID
`[].name` | `String` | Custom field name
`[].mandatories` | `Array` | List of access methods for which this field is mandatory
`[].certType` | `String` | Custom field certificate type
`[].state` | `String` | State
`[].input.type` | `String` | Input type
`[].input.options` | `Array` | Input field options (for 'TEXT_OPTION' type only)

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 189

    [{"id":150,"name":"Test field","certType":"ssl","state":"ACTIVE","input":{"type":"TEXT_OPTION","options":["option1","option2"]},"mandatories":["REST_API","SOAP_API","ADMIN_UI","WEB_FORM"]}]

`V1` - Deprecated

##### Example request

    $ curl 'https://cert-manager.com/api/customField/v1/ssl' -i -X GET \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'Accept: application/json' \
        -H 'login: admin_customer20684' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20684'

##### Response fields

Path | Type | Description
--- | --- | ---
`[].id` | `Number` | Custom field ID
`[].name` | `String` | Custom field name
`[].mandatory` | `Boolean` | Custom field mandatory attribute
`[].certType` | `String` | Custom field certificate type
`[].state` | `String` | State
`[].input` | `Object` | Input field properties
`[].input.type` | `String` | Input field type

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 119

    [{"id":142,"name":"Test field","mandatory":true,"certType":"ssl","state":"ACTIVE","input":{"type":"TEXT_SINGLE_LINE"}}]

#### Get custom field details

Get custom field details.

`V2`

##### Path parameters

Table 1. /api/customField/v2/{id}
Parameter | Description
--- | ---
`id` | ID of custom field whose details are being requested

##### Example request

    $ curl 'https://cert-manager.com/api/customField/v2/148' -i -X GET \
        -H 'Accept: application/json' \
        -H 'login: admin_customer20702' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20702'

##### Response fields

Path | Type | Description
--- | --- | ---
`id` | `Number` | Custom field ID
`name` | `String` | Custom field name
`mandatories` | `Array` | List of access methods for which this field is mandatory
`certType` | `String` | Custom field certificate type
`state` | `String` | State
`input.type` | `String` | Input type

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 154

    {"id":148,"name":"test","certType":"ssl","state":"ACTIVE","input":{"type":"TEXT_SINGLE_LINE"},"mandatories":["REST_API","SOAP_API","ADMIN_UI","WEB_FORM"]}

### Manage custom fields

#### Create custom field

Create the custom field for a particular type of certificate.

`V2`

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Custom field name | [Must not be blank, Maximum length is 256 characters or can be empty]
mandatories | Array | List of access methods for which this field is mandatory | Possible values: ADMIN_UI, REST_API, SOAP_API, WEB_FORM
certType | String | Custom field certificate type | Possible values: ssl, smime, device, codesign
state | String | State | []
input.type | String | Input type | Input type. Allowed values: [TEXT_SINGLE_LINE, TEXT_MULTI_LINE, EMAIL, NUMBER, TEXT_OPTION, DATE]
input.options | Array | Input options (for 'TEXT_OPTION' type only) | [Must not be empty]

##### Example request

    $ curl 'https://cert-manager.com/api/customField/v2' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'Accept: application/json' \
        -H 'login: admin_customer20693' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20693' \
        -d '  {"name":"test","certType":"ssl","state":"ACTIVE","input":{"type":"TEXT_OPTION", "options": ["Option 1", "Option2"]},
                      "mandatories":["ADMIN_UI","REST_API","SOAP_API","WEB_FORM"]}
    '

##### Response headers

Name | Description
--- | ---
`Location` | Url location of created custom field

##### Example response

    HTTP/1.1 201 Created
    Location: https://cert-manager.com/api/customField/v2/145

`V1` - Deprecated

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Custom field name | [Must not be blank, Maximum length is 256 characters or can be empty]
mandatory | Boolean | Custom field mandatory attribute | []
certType | String | Custom field certificate type | Possible values: ssl, smime, device
state | String | State | []

##### Example request

    $ curl 'https://cert-manager.com/api/customField/v1' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'Accept: application/json' \
        -H 'login: admin_customer20672' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20672' \
        -d '  {"name":"test","mandatory":true,"certType":"ssl","state":"ACTIVE"}
    '

##### Response fields

Path | Type | Description
--- | --- | ---
`id` | `Number` | Custom field ID
`name` | `String` | Custom field name
`mandatory` | `Boolean` | Custom field mandatory attribute
`certType` | `String` | Custom field certificate type
`state` | `String` | State
`input` | `Object` | Input field properties
`input.type` | `String` | Input field type

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 111

    {"id":138,"name":"test","mandatory":true,"certType":"ssl","state":"ACTIVE","input":{"type":"TEXT_SINGLE_LINE"}}

#### Update custom field

Update custom field.

`V2`

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
id | Number | Custom field ID |
name | String | Custom field name | [Must not be blank, Maximum length is 256 characters or can be empty]
mandatories | Array | List of access methods for which this field is mandatory | Possible values: ADMIN_UI, REST_API, SOAP_API, WEB_FORM
certType | String | Custom field certificate type | Possible values: ssl, smime, device, codesign
state | String | State | []
input.type | String | Input type | []
input.options | Array | Input options (for 'TEXT_OPTION' type only) | [Must not be empty]

##### Example request

    $ curl 'https://cert-manager.com/api/customField/v2' -i -X PUT \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'Accept: application/json' \
        -H 'login: admin_customer20711' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20711' \
        -d '{
        "id": 151,
        "name":"Test field",
        "certType":"ssl",
        "state":"ACTIVE",
        "mandatories":[],
        "input": {"type": "TEXT_OPTION", "options": ["option1", "option2"]}
    }
    '

##### Response fields

Path | Type | Description
--- | --- | ---
`id` | `Number` | Custom field ID
`name` | `String` | Custom field name
`mandatories` | `Array` | List of access methods for which this field is mandatory
`certType` | `String` | Custom field certificate type
`state` | `String` | State
`input` | `Object` | Input field properties
`input.type` | `String` | Input field type
`input.options` | `Array` | Input field options

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 144

    {"id":151,"name":"Test field","certType":"ssl","state":"ACTIVE","input":{"type":"TEXT_OPTION","options":["option1","option2"]},"mandatories":[]}

`V1` - Deprecated

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
id | Number | Custom field ID | [Must be at least 1]
name | String | Custom field name | [Must not be blank, Maximum length is 256 characters or can be empty]
mandatory | Boolean | Custom field mandatory attribute | []
certType | String | Custom field certificate type | Possible values: ssl, smime, device
state | String | State | []

##### Example request

    $ curl 'https://cert-manager.com/api/customField/v1' -i -X PUT \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'Accept: application/json' \
        -H 'login: admin_customer20687' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20687' \
        -d ' {"id":143,"name":"Test field","mandatory":true,"certType":"ssl","state":"ACTIVE"}
    '

##### Response fields

Path | Type | Description
--- | --- | ---
`id` | `Number` | Custom field ID
`name` | `String` | Custom field name
`mandatory` | `Boolean` | Custom field mandatory attribute
`certType` | `String` | Custom field certificate type
`state` | `String` | State
`input` | `Object` | Input field properties
`input.type` | `String` | Input field type

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 117

    {"id":143,"name":"Test field","mandatory":true,"certType":"ssl","state":"ACTIVE","input":{"type":"TEXT_SINGLE_LINE"}}

#### Delete custom field

Delete the custom field which is no longer needed.

`V2`

##### Path parameters

Table 1. /api/customField/v2/{id}
Parameter | Description
--- | ---
`id` | Custom field ID

##### Example request

    $ curl 'https://cert-manager.com/api/customField/v2/147' -i -X DELETE \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'Accept: application/json' \
        -H 'login: admin_customer20699' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20699'

##### Example response

    HTTP/1.1 204 No Content

`V1` - Deprecated

##### Path parameters

Table 1. /api/customField/v1/{id}
Parameter | Description
--- | ---
`id` | Custom field ID

##### Example request

    $ curl 'https://cert-manager.com/api/customField/v1/140' -i -X DELETE \
        -H 'Content-Type: application/json' \
        -H 'Accept: application/json' \
        -H 'login: admin_customer20678' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20678'

##### Example response

    HTTP/1.1 204 No Content

## Discovery

The Discovery API automates frequently performed operations to accelerate certificate discovery for customers with dynamically changing IP ranges.

The 'Tasks' resource contains information about planned discovery scans. A task comprises general information (task name, agent, ranges to scan), assignment rules, scan schedule, and has a 'Status' parameter.

### Network Discovery Tasks

#### Add network scan task

Enables administrators to create a scan task for the private and/or public network(s) in search of SSL certificates.

`V2` - Deprecated

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Task name | [Must not be empty, Size must be between 1 and 256 inclusive]
agent | String | Agent name | []
ranges | Array | Array of ranges | []
ranges[].address | String | Range address |
ranges[].ports | String | Range port |
certBucketId | String | Id of the bucket to which this task will be applied | [Must not be null]
frequency | String | Task frequency | [Must not be empty]
timeZone | String | Time zone | [Must not be empty]
time | Object | Time | [Must not be null]
time.hours | Number | Hours | []
time.minutes | Number | Minutes | []
month | Number | Month | []
dayOfMonth | Number | Day of month | []
dayOfWeek | Number | Day of week | []

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v2/net_task' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer3560' \
        -H 'password: Password123!' \
        -H 'customerUri: cst3560' \
        -d '{"ranges":[{"address":"134.110.70.147/32","ports":"2"}],"agent":"org4Test73t21","name":"ROSYYVRTRJAGHTSEYPVATBWLZEXYBBUN","certBucketId":"63a804cb-164b-4c08-80d6-757383a6fed5","frequency":"Daily","timeZone":"UTC+00:00 - GMT, UCT, UTC, WET, EGST","time":{"hours":0,"minutes":0},"month":0,"dayOfMonth":0,"dayOfWeek":0}'

##### Response fields

Path | Type | Description
--- | --- | ---
`taskId` | `Number` | Task ID

##### Example response

    HTTP/1.1 201 Created
    Content-Type: application/json
    Content-Length: 15

    {"taskId":1000}

`V3` - Deprecated

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Task name | [Must not be empty, Size must be between 1 and 256 inclusive]
agent | String | Agent name | [Must not be empty]
ranges | Array | Array of ranges | [Must not be empty]
ranges[].address | String | Range address |
ranges[].ports | String | Range port |
certBucketId | String | Id of the bucket to which this task will be applied | [Must not be null]
frequency | String | Task frequency | [Must not be empty]
timeZone | String | Time zone | [Must not be empty]
time | Object | Time | [Must not be null]
time.hours | Number | Hours | []
time.minutes | Number | Minutes | []
month | Number | Month | [Must be at most 11]
dayOfMonth | Number | Day of month | [Must be at most 30]
dayOfWeek | Number | Day of week | [Must be at most 6]

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v3/net_task' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer3354' \
        -H 'password: Password123!' \
        -H 'customerUri: cst3354' \
        -d '{"ranges":[{"address":"128.17.118.232/32","ports":"2"}],"agent":"org4Testkatb9","name":"UGHHRWLCIOBBCYDZJKKHNDPKPUFUWBYU","certBucketId":"a2a8e7ea-73f8-42a4-98f3-16ec54229e42","frequency":"Daily","timeZone":"UTC+00:00 - GMT, UCT, UTC, WET, EGST","time":{"hours":0,"minutes":0},"month":0,"dayOfMonth":0,"dayOfWeek":0}'

##### Response headers

Name | Description
--- | ---
`Location` | URL location of created task

##### Example response

    HTTP/1.1 201 Created
    Location: https://cert-manager.com/api/discovery/v3/net_task/10000

`V4`

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Task name | [Must not be empty, Size must be between 1 and 256 inclusive]
agent | String | Agent name | [Must not be empty]
ranges | Array | Array of ranges | [Must not be empty]
ranges[].address | String | Range address |
ranges[].ports | String | Range port |
certBucketId | String | Id of the bucket to which this task will be applied | [Must not be null]
frequency | String | Task frequency. Possible values are [Manual, Daily, Weekly, Monthly, Quarterly, SemiAnnually, Annually, Once] | [Must not be empty]
timeZone | String | Time zone | [Must not be empty]
time | Object | Time | [Must not be null]
time.hours | Number | Hours | []
time.minutes | Number | Minutes | []
month | Number | Month. Possible values is 1 for January, 2 for February and etc. | [Must be at least 1, Must be at most 12]
dayOfMonth | Number | Day of month. Possible values is 1 for 1st day of month, 2 for 2nd day of month and etc. | [Must be at least 1, Must be at most 31]
dayOfWeek | Number | Day of week. Possible values is 7 for Sunday, 1 for Monday, 2 for Tuesday and etc. | [Must be at least 1, Must be at most 7]
year | Number | Year | []

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v4/net_task' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer18115' \
        -H 'password: Password123!' \
        -H 'customerUri: cst18115' \
        -d '{"ranges":[{"address":"145.170.241.77/32","ports":"2"}],"agent":"org4Testwjw8i","name":"ALTYCNWVPFOHNZDSDTYFFWDDBRSHPNLJ","certBucketId":"c6fd7b18-b60a-4b27-b701-1ce5c097ea1c","frequency":"Daily","timeZone":"UTC+00:00 - GMT, UCT, UTC, WET, EGST","time":{"hours":0,"minutes":0},"month":12,"dayOfMonth":31,"dayOfWeek":7,"year":2049}'

##### Response headers

Name | Description
--- | ---
`Location` | URL location of created task

##### Example response

    HTTP/1.1 201 Created
    Location: https://cert-manager.com/api/discovery/v4/net_task/41708

#### Update network scan task

Enables administrators to edit a network scan task.

`V2` - Deprecated

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
taskId | Number | Task ID | [Must be at least 1]
name | String | Task name | [Must not be empty, Size must be between 1 and 256 inclusive]
agent | String | Agent name | [Must not be empty]
ranges | Array | Array of ranges | [Must not be empty]
ranges[].address | String | Range address |
ranges[].ports | String | Range port |
certBucketId | String | Id of the bucket to which this task will be applied | [Must not be null]
frequency | String | Task frequency | [Must not be empty]
timeZone | String | Time zone | [Must not be empty]
time | Object | Time | [Must not be null]
time.hours | Number | Hours | []
time.minutes | Number | Minutes | []
month | Number | Month | [Must be at most 11]
dayOfMonth | Number | Day of month | [Must be at most 30]
dayOfWeek | Number | Day of week | [Must be at most 6]

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v2/net_task' -i -X PUT \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer3617' \
        -H 'password: Password123!' \
        -H 'customerUri: cst3617' \
        -d '{"taskId":16420,"ranges":[{"address":"140.107.236.79/32","ports":"0"}],"agent":"org4Test6vs8h","name":"UJQKVBWUBVQQFMYQSHTLGQWTCMUBFMZG","certBucketId":"bf67cb16-c6c7-4a35-a6cb-eaa928d7b8d4","frequency":"Monthly","timeZone":"UTC+00:00 - GMT, UCT, UTC, WET, EGST","time":{"hours":0,"minutes":0},"month":0,"dayOfMonth":0,"dayOfWeek":0}'

##### Example response

    HTTP/1.1 200 OK

`V3` - Deprecated

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Task name | [Must not be empty, Size must be between 1 and 256 inclusive]
agent | String | Agent name | [Must not be empty]
ranges | Array | Array of ranges | [Must not be empty]
ranges[].address | String | Range address |
ranges[].ports | String | Range port |
certBucketId | String | Id of the bucket to which this task will be applied | [Must not be null]
frequency | String | Task frequency | [Must not be empty]
timeZone | String | Time zone | [Must not be empty]
time | Object | Time | [Must not be null]
time.hours | Number | Hours | []
time.minutes | Number | Minutes | []
month | Number | Month | [Must be at most 11]
dayOfMonth | Number | Day of month | [Must be at most 30]
dayOfWeek | Number | Day of week | [Must be at most 6]

##### Path parameters

Table 1. /api/discovery/v3/net_task/{id}
Parameter | Description
--- | ---
`id` | ID of task whose details are being updated

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v3/net_task/6118' -i -X PUT \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer3357' \
        -H 'password: Password123!' \
        -H 'customerUri: cst3357' \
        -d '{"ranges":[{"address":"29.205.121.101/32","ports":"3"}],"agent":"org4Test2pmpu","name":"DJTEKQRPINDRRKYGTYJGCUKBSTWYSUQO","certBucketId":"f9e195f5-eab1-4973-bce3-447d053992b5","frequency":"Monthly","timeZone":"UTC+00:00 - GMT, UCT, UTC, WET, EGST","time":{"hours":0,"minutes":0},"month":0,"dayOfMonth":0,"dayOfWeek":0}'

##### Example response

    HTTP/1.1 200 OK

`V4`

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Task name | [Must not be empty, Size must be between 1 and 256 inclusive]
agent | String | Agent name | [Must not be empty]
ranges | Array | Array of ranges | [Must not be empty]
ranges[].address | String | Range address |
ranges[].ports | String | Range port |
certBucketId | String | Id of the bucket to which this task will be applied | [Must not be null]
frequency | String | Task frequency. Possible values are [Manual, Daily, Weekly, Monthly, Quarterly, SemiAnnually, Annually, Once] | [Must not be empty]
timeZone | String | Time zone | [Must not be empty]
time | Object | Time | [Must not be null]
time.hours | Number | Hours | []
time.minutes | Number | Minutes | []
month | Number | Month. Possible values is 1 for January, 2 for February and etc. | [Must be at least 1, Must be at most 12]
dayOfMonth | Number | Day of month. Possible values is 1 for 1st day of month, 2 for 2nd day of month and etc. | [Must be at least 1, Must be at most 31]
dayOfWeek | Number | Day of week. Possible values is 7 for Sunday, 1 for Monday, 2 for Tuesday and etc. | [Must be at least 1, Must be at most 7]
year | Number | Year | []

##### Path parameters

Table 1. /api/discovery/v4/net_task/{id}
Parameter | Description
--- | ---
`id` | ID of task whose details are being updated

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v4/net_task/43728' -i -X PUT \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer18148' \
        -H 'password: Password123!' \
        -H 'customerUri: cst18148' \
        -d '{"ranges":[{"address":"190.215.110.38/32","ports":"0"}],"agent":"org4Test770f0","name":"ARRUYUSFMFGYYWRQEXDKXITVPWRMGFGK","certBucketId":"fc8a44c2-1c9d-42ed-aa47-b66ec6ba0a44","frequency":"Daily","timeZone":"UTC+00:00 - GMT, UCT, UTC, WET, EGST","time":{"hours":0,"minutes":0},"month":12,"dayOfMonth":31,"dayOfWeek":7,"year":2049}'

##### Example response

    HTTP/1.1 200 OK

#### Get network scan task

Enables the administrator to get the parameters of a particular task of network scanning which he/she is authorized to view and manage.

`V2` - Deprecated

##### Path parameters

Table 1. /api/discovery/v2/net_task/{taskId}
Parameter | Description
--- | ---
`taskId` | Task ID

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v2/net_task/15814' -i -X GET \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer3605' \
        -H 'password: Password123!' \
        -H 'customerUri: cst3605'

##### Response fields

Path | Type | Description
--- | --- | ---
`name` | `String` | Task name
`agent` | `String` | Agent name
`ranges` | `Array` | Array of ranges
`ranges[].address` | `Array` | Range address
`ranges[].ports` | `Array` | Range port
`status` | `String` | Task status. Values: [IN_PROCESS, FAILED, CANCELED, SUCCESSFUL, PARTIAL_SUCCESSFUL, PROCESSING_RESULT, null]
`frequency` | `String` | Task frequency
`timeZone` | `String` | Time zone
`time` | `Object` | Time
`time.hours` | `Number` | Hours
`time.minutes` | `Number` | Minutes
`month` | `Number` | Month
`dayOfMonth` | `Number` | Day of month
`dayOfWeek` | `Number` | Day of week

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 179

    {"name":"Discovery task 0","agent":"","ranges":[],"frequency":"Daily","timeZone":"UTC+00:00 - GMT, UCT, UTC, WET, EGST","time":{"hours":9,"minutes":13},"status":"Scan in process"}

`V3` - Deprecated

##### Path parameters

Table 1. /api/discovery/v3/net_task/{taskId}
Parameter | Description
--- | ---
`taskId` | Task ID

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v3/net_task/2684' -i -X GET \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer3270' \
        -H 'password: Password123!' \
        -H 'customerUri: cst3270'

##### Response fields

Path | Type | Description
--- | --- | ---
`name` | `String` | Task name
`agent` | `String` | Agent name
`ranges` | `Array` | Array of ranges
`ranges[].address` | `Array` | Range address
`ranges[].ports` | `Array` | Range port
`status` | `String` | Task status. Values: [IN_PROCESS, FAILED, CANCELED, SUCCESSFUL, PARTIAL_SUCCESSFUL, PROCESSING_RESULT, null]
`frequency` | `String` | Task frequency
`timeZone` | `String` | Time zone
`time` | `Object` | Time
`time.hours` | `Number` | Hours
`time.minutes` | `Number` | Minutes
`month` | `Number` | Month
`dayOfMonth` | `Number` | Day of month
`dayOfWeek` | `Number` | Day of week

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 179

    {"name":"Discovery task 0","agent":"","ranges":[],"frequency":"Daily","timeZone":"UTC+00:00 - GMT, UCT, UTC, WET, EGST","time":{"hours":9,"minutes":12},"status":"Scan in process"}

`V4`

##### Path parameters

Table 1. /api/discovery/v4/net_task/{taskId}
Parameter | Description
--- | ---
`taskId` | Task ID

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v4/net_task/43526' -i -X GET \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer18145' \
        -H 'password: Password123!' \
        -H 'customerUri: cst18145'

##### Response fields

Path | Type | Description
--- | --- | ---
`name` | `String` | Task name
`agent` | `String` | Agent name
`ranges` | `Array` | Array of ranges
`ranges[].address` | `Array` | Range address
`ranges[].ports` | `Array` | Range port
`status` | `String` | Task status. Values: [IN_PROCESS, FAILED, CANCELED, SUCCESSFUL, PARTIAL_SUCCESSFUL, PROCESSING_RESULT, null]
`frequency` | `String` | Task frequency. Possible values are [Manual, Daily, Weekly, Monthly, Quarterly, SemiAnnually, Annually, Once]
`timeZone` | `String` | Time zone
`time` | `Object` | Time
`time.hours` | `Number` | Hours
`time.minutes` | `Number` | Minutes
`month` | `Number` | Month. Possible values is 1 for January, 2 for February and etc.
`dayOfMonth` | `Number` | Day of month. Possible values is 1 for 1st day of month, 2 for 2nd day of month and etc.
`dayOfWeek` | `Number` | Day of week. Possible values is 7 for Sunday, 1 for Monday, 2 for Tuesday and etc.
`year` | `Number` | Year

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 179

    {"name":"Discovery task 0","agent":"","ranges":[],"frequency":"Daily","timeZone":"UTC+00:00 - GMT, UCT, UTC, WET, EGST","time":{"hours":9,"minutes":15},"status":"Scan in process"}

#### Get network scan task list

Enables the administrator to get the list of existing tasks of scanning the network(s) which he/she is authorized to view and manage.

`V2` - Deprecated

##### Query parameters

Parameter | Description
--- | ---
`size` | Number of returned entries
`position` | Position shift
`name` | Task name
`status` | Task status. Values: [IN_PROCESS, FAILED, CANCELED, SUCCESSFUL, PARTIAL_SUCCESSFUL, PROCESSING_RESULT, null]

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v2/net_task?size=10&position=0&name=Discovery+task+1&status=IN_PROCESS' -i -X GET \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer3728' \
        -H 'password: Password123!' \
        -H 'customerUri: cst3728'

##### Response headers

Name | Description
--- | ---
`X-Total-Count` | Contains total number of network discovery tasks available according to the filtering applied

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | List of Scan Tasks
`[].taskId` | `Number` | Scan Task ID
`[].name` | `String` | Name of Scan Task
`[].status` | `String` | Scan Task Status

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 10
    Content-Type: application/json
    Content-Length: 743

    [{"taskId":21874,"name":"Discovery task 0","status":"Scan in process"},{"taskId":21875,"name":"Discovery task 1","status":"Scan FAILED"},{"taskId":21876,"name":"Discovery task 2","status":"Scan CANCELED by user"},{"taskId":21877,"name":"Discovery task 3","status":"Scan completed (Successful)"},{"taskId":21878,"name":"Discovery task 4","status":"Scan completed (Partial SUCCESSFUL)"},{"taskId":21879,"name":"Discovery task 5","status":"Scan completed (Processing Result)"},{"taskId":21880,"name":"Discovery task 6","status":null},{"taskId":21881,"name":"Discovery task 7","status":"Scan in process"},{"taskId":21882,"name":"Discovery task 8","status":"Scan FAILED"},{"taskId":21883,"name":"Discovery task 9","status":"Scan CANCELED by user"}]

`V3`

##### Query parameters

Parameter | Description
--- | ---
`size` | Number of returned entries
`position` | Position shift
`name` | Task name
`status` | Task status. Values: [IN_PROCESS, FAILED, CANCELED, SUCCESSFUL, PARTIAL_SUCCESSFUL, PROCESSING_RESULT, null]

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v3/net_task?size=10&position=0&name=Discovery+task+1&status=IN_PROCESS' -i -X GET \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer3342' \
        -H 'password: Password123!' \
        -H 'customerUri: cst3342'

##### Response headers

Name | Description
--- | ---
`X-Total-Count` | Contains total number of network discovery tasks available according to the filtering applied

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | List of Scan Tasks
`[].taskId` | `Number` | Scan Task ID
`[].name` | `String` | Name of Scan Task
`[].status` | `String` | Scan Task Status

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 10
    Content-Type: application/json
    Content-Length: 733

    [{"taskId":5310,"name":"Discovery task 0","status":"Scan in process"},{"taskId":5311,"name":"Discovery task 1","status":"Scan FAILED"},{"taskId":5312,"name":"Discovery task 2","status":"Scan CANCELED by user"},{"taskId":5313,"name":"Discovery task 3","status":"Scan completed (Successful)"},{"taskId":5314,"name":"Discovery task 4","status":"Scan completed (Partial SUCCESSFUL)"},{"taskId":5315,"name":"Discovery task 5","status":"Scan completed (Processing Result)"},{"taskId":5316,"name":"Discovery task 6","status":null},{"taskId":5317,"name":"Discovery task 7","status":"Scan in process"},{"taskId":5318,"name":"Discovery task 8","status":"Scan FAILED"},{"taskId":5319,"name":"Discovery task 9","status":"Scan CANCELED by user"}]

#### Start network scan task

Enables administrators to start a network(s) scan for a specific task

`V2` - Deprecated

##### Path parameters

Table 1. /api/discovery/v2/net_task/{taskId}/start
Parameter | Description
--- | ---
`taskId` | Task ID

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v2/net_task/22278/start' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer3737' \
        -H 'password: Password123!' \
        -H 'customerUri: cst3737'

##### Example response

    HTTP/1.1 200 OK

`V3`

##### Path parameters

Table 1. /api/discovery/v3/net_task/{taskId}/start
Parameter | Description
--- | ---
`taskId` | Task ID

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v3/net_task/5714/start' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer3351' \
        -H 'password: Password123!' \
        -H 'customerUri: cst3351'

##### Example response

    HTTP/1.1 200 OK

#### Delete network scan task

Enables administrators to delete a specific network scanning task.

`V2` - Deprecated

##### Path parameters

Table 1. /api/discovery/v2/net_task/{taskId}
Parameter | Description
--- | ---
`taskId` | Task ID

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v2/net_task/22076' -i -X DELETE \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer3731' \
        -H 'password: Password123!' \
        -H 'customerUri: cst3731'

##### Example response

    HTTP/1.1 204 No Content

`V3`

##### Path parameters

Table 1. /api/discovery/v3/net_task/{taskId}
Parameter | Description
--- | ---
`taskId` | Task ID

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v3/net_task/5512' -i -X DELETE \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer3345' \
        -H 'password: Password123!' \
        -H 'customerUri: cst3345'

##### Example response

    HTTP/1.1 204 No Content

### MS AD Discovery Tasks

#### Add MS AD scan task

Enables administrators to create a scan task in search of SSL certificates.

`V2` - Deprecated

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Task name | [Must not be empty, Size must be between 1 and 256 inclusive]
agent | String | Agent name | []
certBucketId | String | Id of the bucket to which this task will be applied | [Must not be null]
frequency | String | Task frequency | [Must not be empty]
timeZone | String | Time zone | [Must not be empty]
time | Object | Time | [Must not be null]
time.hours | Number | Hours | []
time.minutes | Number | Minutes | []
month | Number | Month | []
dayOfMonth | Number | Day of month | []
dayOfWeek | Number | Day of week | []
depth | Number | Max Depth of the Scan | []
domainDefinition | String | Domains to Scan | []

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v2/ad_task' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer3740' \
        -H 'password: Password123!' \
        -H 'customerUri: cst3740' \
        -d '{"depth":5,"agent":"e6f738dd-e9ef-46d7-903f-bba4e589f7e6","domainDefinition":"sectigo.com","name":"QKWXRHHDJIAEPNPRHRTWLBNLTTOWFVCD","certBucketId":"0cdfab98-4567-4b73-aefb-d71aac8db7cf","frequency":"Daily","timeZone":"UTC+00:00 - GMT, UCT, UTC, WET, EGST","time":{"hours":0,"minutes":0},"month":0,"dayOfMonth":0,"dayOfWeek":0}'

##### Response fields

Path | Type | Description
--- | --- | ---
`taskId` | `Number` | Task ID

##### Example response

    HTTP/1.1 201 Created
    Content-Type: application/json
    Content-Length: 22

    {"taskId":-1645617531}

`V3` - Deprecated

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Task name | [Must not be empty, Size must be between 1 and 256 inclusive]
agent | String | Agent name | [Must not be empty]
certBucketId | String | Id of the bucket to which this task will be applied | [Must not be null]
frequency | String | Task frequency | [Must not be empty]
timeZone | String | Time zone | [Must not be empty]
time | Object | Time | [Must not be null]
time.hours | Number | Hours | []
time.minutes | Number | Minutes | []
month | Number | Month | [Must be at most 11]
dayOfMonth | Number | Day of month | [Must be at most 30]
dayOfWeek | Number | Day of week | [Must be at most 6]
depth | Number | Max Depth of the Scan | [Must be at most 99, Must not be null]
domainDefinition | String | Domains to Scan | [Maximum length is 255 characters or can be empty]

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v3/ad_task' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer4200' \
        -H 'password: Password123!' \
        -H 'customerUri: cst4200' \
        -d '{"depth":5,"agent":"746abec5-8b84-46e5-87ec-4e24e6b8cce6","domainDefinition":"sectigo.com","name":"GYJFIRUNOOOQGZFTZYSHBFHVBVDXDGDM","certBucketId":"5d00c732-50f9-4fe7-a076-3af92f785012","frequency":"Daily","timeZone":"UTC+00:00 - GMT, UCT, UTC, WET, EGST","time":{"hours":0,"minutes":0},"month":0,"dayOfMonth":0,"dayOfWeek":0}'

##### Response headers

Name | Description
--- | ---
`Location` | URL location of created task

##### Example response

    HTTP/1.1 201 Created
    Location: https://cert-manager.com/api/discovery/v3/ad_task/1819196584

`V4`

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Task name | [Must not be empty, Size must be between 1 and 256 inclusive]
agent | String | Agent name | [Must not be empty]
certBucketId | String | Id of the bucket to which this task will be applied | [Must not be null]
frequency | String | Task frequency. Possible values are [Manual, Daily, Weekly, Monthly, Quarterly, SemiAnnually, Annually, Once] | [Must not be empty]
timeZone | String | Time zone | [Must not be empty]
time | Object | Time | [Must not be null]
time.hours | Number | Hours | []
time.minutes | Number | Minutes | []
month | Number | Month. Possible values is 1 for January, 2 for February and etc. | [Must be at least 1, Must be at most 12]
dayOfMonth | Number | Day of month. Possible values is 1 for 1st day of month, 2 for 2nd day of month and etc. | [Must be at least 1, Must be at most 31]
dayOfWeek | Number | Day of week. Possible values is 7 for Sunday, 1 for Monday, 2 for Tuesday and etc. | [Must be at least 1, Must be at most 7]
depth | Number | Max Depth of the Scan | [Must be at most 99, Must not be null]
domainDefinition | String | Domains to Scan | [Maximum length is 255 characters or can be empty]
year | Number | Year | []

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v4/ad_task' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer3518' \
        -H 'password: Password123!' \
        -H 'customerUri: cst3518' \
        -d '{"depth":5,"agent":"721aff5b-ef85-4a84-b1d4-d28d813aa118","domainDefinition":"sectigo.com","name":"XXSUMBPKMYOGYMHOLRTCPLXGWSICPSEI","certBucketId":"26aa4db8-f001-4c91-a1eb-1b9a924258e8","frequency":"Daily","timeZone":"UTC+00:00 - GMT, UCT, UTC, WET, EGST","time":{"hours":0,"minutes":0},"month":12,"dayOfMonth":31,"dayOfWeek":7,"year":2049}'

##### Response headers

Name | Description
--- | ---
`Location` | URL location of created task

##### Example response

    HTTP/1.1 201 Created
    Location: https://cert-manager.com/api/discovery/v4/ad_task/10360

#### Update MS AD scan task

Enables administrators to edit a ms ad scan task.

`V2` - Deprecated

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
taskId | Number | Task ID | [Must be at least 1]
name | String | Task name | [Must not be empty, Size must be between 1 and 256 inclusive]
agent | String | Agent name | [Must not be empty]
certBucketId | String | Id of the bucket to which this task will be applied | [Must not be null]
frequency | String | Task frequency | [Must not be empty]
timeZone | String | Time zone | [Must not be empty]
time | Object | Time | [Must not be null]
time.hours | Number | Hours | []
time.minutes | Number | Minutes | []
month | Number | Month | [Must be at most 11]
dayOfMonth | Number | Day of month | [Must be at most 30]
dayOfWeek | Number | Day of week | [Must be at most 6]
depth | Number | Max Depth of the Scan | [Must be at most 99, Must not be null]
domainDefinition | String | Domains to Scan | [Maximum length is 255 characters or can be empty]

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v2/ad_task' -i -X PUT \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer3794' \
        -H 'password: Password123!' \
        -H 'customerUri: cst3794' \
        -d '{"taskId":25712,"depth":2,"agent":"ef5484ea-4043-4297-a06c-22a4d8bd0701","domainDefinition":"sectigo.com","name":"SHWXDUYGHCQXRMWLVFURNHFOBDBPOWMP","certBucketId":"c0291c5d-0eb6-4ede-b3fc-48cffbf1889c","frequency":"Monthly","timeZone":"UTC+00:00 - GMT, UCT, UTC, WET, EGST","time":{"hours":0,"minutes":0},"month":0,"dayOfMonth":0,"dayOfWeek":0}'

##### Example response

    HTTP/1.1 200 OK

`V3` - Deprecated

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Task name | [Must not be empty, Size must be between 1 and 256 inclusive]
agent | String | Agent name | [Must not be empty]
certBucketId | String | Id of the bucket to which this task will be applied | [Must not be null]
frequency | String | Task frequency | [Must not be empty]
timeZone | String | Time zone | [Must not be empty]
time | Object | Time | [Must not be null]
time.hours | Number | Hours | []
time.minutes | Number | Minutes | []
month | Number | Month | [Must be at most 11]
dayOfMonth | Number | Day of month | [Must be at most 30]
dayOfWeek | Number | Day of week | [Must be at most 6]
depth | Number | Max Depth of the Scan | [Must be at most 99, Must not be null]
domainDefinition | String | Domains to Scan | [Maximum length is 255 characters or can be empty]

##### Path parameters

Table 1. /api/discovery/v3/ad_task/{id}
Parameter | Description
--- | ---
`id` | ID of task whose details are being updated

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v3/ad_task/37264' -i -X PUT \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer4203' \
        -H 'password: Password123!' \
        -H 'customerUri: cst4203' \
        -d '{"depth":2,"agent":"795f6146-eebe-490a-855a-21d0be5401f6","domainDefinition":"sectigo.com","name":"VJNUROJTCAFACSFREVDGWUSKIWRJSZFH","certBucketId":"8af2b615-c7db-49ce-b999-97b02a3e6d47","frequency":"Monthly","timeZone":"UTC+00:00 - GMT, UCT, UTC, WET, EGST","time":{"hours":0,"minutes":0},"month":0,"dayOfMonth":0,"dayOfWeek":0}'

##### Example response

    HTTP/1.1 200 OK

`V4`

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Task name | [Must not be empty, Size must be between 1 and 256 inclusive]
agent | String | Agent name | [Must not be empty]
certBucketId | String | Id of the bucket to which this task will be applied | [Must not be null]
frequency | String | Task frequency. Possible values are [Manual, Daily, Weekly, Monthly, Quarterly, SemiAnnually, Annually, Once] | [Must not be empty]
timeZone | String | Time zone | [Must not be empty]
time | Object | Time | [Must not be null]
time.hours | Number | Hours | []
time.minutes | Number | Minutes | []
month | Number | Month. Possible values is 1 for January, 2 for February and etc. | [Must be at least 1, Must be at most 12]
dayOfMonth | Number | Day of month. Possible values is 1 for 1st day of month, 2 for 2nd day of month and etc. | [Must be at least 1, Must be at most 31]
dayOfWeek | Number | Day of week. Possible values is 7 for Sunday, 1 for Monday, 2 for Tuesday and etc. | [Must be at least 1, Must be at most 7]
depth | Number | Max Depth of the Scan | [Must be at most 99, Must not be null]
domainDefinition | String | Domains to Scan | [Maximum length is 255 characters or can be empty]
year | Number | Year | []

##### Path parameters

Table 1. /api/discovery/v4/ad_task/{id}
Parameter | Description
--- | ---
`id` | ID of task whose details are being updated

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v4/ad_task/12784' -i -X PUT \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer3557' \
        -H 'password: Password123!' \
        -H 'customerUri: cst3557' \
        -d '{"depth":5,"agent":"2a5922dd-153f-42a5-848f-c448b88eadfb","domainDefinition":"sectigo.com","name":"XHWCVWDKWOEWQJMJKJCCKYVBITCCPQZY","certBucketId":"daf285d9-e117-49f1-a0b1-09ed8ab905d1","frequency":"Daily","timeZone":"UTC+00:00 - GMT, UCT, UTC, WET, EGST","time":{"hours":0,"minutes":0},"month":12,"dayOfMonth":31,"dayOfWeek":7,"year":2049}'

##### Example response

    HTTP/1.1 200 OK

#### Get MS AD scan task

Enables the administrator to get the parameters of a particular task which he/she is authorized to view and manage.

`V2` - Deprecated

##### Path parameters

Table 1. /api/discovery/v2/ad_task/{taskId}
Parameter | Description
--- | ---
`taskId` | Task ID

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v2/ad_task/25106' -i -X GET \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer3782' \
        -H 'password: Password123!' \
        -H 'customerUri: cst3782'

##### Response fields

Path | Type | Description
--- | --- | ---
`name` | `String` | Task name
`agent` | `String` | Agent name
`status` | `String` | Task status. Values: [IN_PROCESS, FAILED, CANCELED, SUCCESSFUL, PARTIAL_SUCCESSFUL, PROCESSING_RESULT, null]
`frequency` | `String` | Task frequency
`timeZone` | `String` | Time zone
`time` | `Object` | Time
`time.hours` | `Number` | Hours
`time.minutes` | `Number` | Minutes
`month` | `Number` | Month
`dayOfMonth` | `Number` | Day of month
`dayOfWeek` | `Number` | Day of week
`depth` | `Number` | Max Depth of the Scan
`domainDefinition` | `String` | Domains to Scan

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 199

    {"name":"Discovery task 0","agent":"","frequency":"Daily","timeZone":"UTC+00:00 - GMT, UCT, UTC, WET, EGST","time":{"hours":9,"minutes":13},"status":"Scan in process","depth":0,"domainDefinition":""}

`V3` - Deprecated

##### Path parameters

Table 1. /api/discovery/v3/ad_task/{taskId}
Parameter | Description
--- | ---
`taskId` | Task ID

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v3/ad_task/33830' -i -X GET \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer4116' \
        -H 'password: Password123!' \
        -H 'customerUri: cst4116'

##### Response fields

Path | Type | Description
--- | --- | ---
`name` | `String` | Task name
`agent` | `String` | Agent name
`status` | `String` | Task status. Values: [IN_PROCESS, FAILED, CANCELED, SUCCESSFUL, PARTIAL_SUCCESSFUL, PROCESSING_RESULT, null]
`frequency` | `String` | Task frequency
`timeZone` | `String` | Time zone
`time` | `Object` | Time
`time.hours` | `Number` | Hours
`time.minutes` | `Number` | Minutes
`month` | `Number` | Month
`dayOfMonth` | `Number` | Day of month
`dayOfWeek` | `Number` | Day of week
`depth` | `Number` | Max Depth of the Scan
`domainDefinition` | `String` | Domains to Scan

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 199

    {"name":"Discovery task 0","agent":"","frequency":"Daily","timeZone":"UTC+00:00 - GMT, UCT, UTC, WET, EGST","time":{"hours":9,"minutes":14},"status":"Scan in process","depth":0,"domainDefinition":""}

`V4`

##### Path parameters

Table 1. /api/discovery/v4/ad_task/{taskId}
Parameter | Description
--- | ---
`taskId` | Task ID

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v4/ad_task/12582' -i -X GET \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer3554' \
        -H 'password: Password123!' \
        -H 'customerUri: cst3554'

##### Response fields

Path | Type | Description
--- | --- | ---
`name` | `String` | Task name
`agent` | `String` | Agent name
`status` | `String` | Task status. Values: [IN_PROCESS, FAILED, CANCELED, SUCCESSFUL, PARTIAL_SUCCESSFUL, PROCESSING_RESULT, null]
`frequency` | `String` | Task frequency. Possible values are [Manual, Daily, Weekly, Monthly, Quarterly, SemiAnnually, Annually, Once]
`timeZone` | `String` | Time zone
`time` | `Object` | Time
`time.hours` | `Number` | Hours
`time.minutes` | `Number` | Minutes
`month` | `Number` | Month. Possible values is 1 for January, 2 for February and etc.
`dayOfMonth` | `Number` | Day of month. Possible values is 1 for 1st day of month, 2 for 2nd day of month and etc.
`dayOfWeek` | `Number` | Day of week. Possible values is 7 for Sunday, 1 for Monday, 2 for Tuesday and etc.
`depth` | `Number` | Max Depth of the Scan
`domainDefinition` | `String` | Domains to Scan
`year` | `Number` | Year

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 199

    {"name":"Discovery task 0","agent":"","frequency":"Daily","timeZone":"UTC+00:00 - GMT, UCT, UTC, WET, EGST","time":{"hours":9,"minutes":13},"status":"Scan in process","depth":0,"domainDefinition":""}

#### Get MS AD scan task list

Enables the administrator to get the list of existing tasks of scanning which he/she is authorized to view and manage.

`V2` - Deprecated

##### Query parameters

Parameter | Description
--- | ---
`size` | Number of returned entries
`position` | Position shift
`name` | Task name
`status` | Task status. Values: [IN_PROCESS, FAILED, CANCELED, SUCCESSFUL, PARTIAL_SUCCESSFUL, PROCESSING_RESULT, null]

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v2/ad_task?size=10&position=0&name=Discovery+task+1&status=IN_PROCESS' -i -X GET \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer3899' \
        -H 'password: Password123!' \
        -H 'customerUri: cst3899'

##### Response headers

Name | Description
--- | ---
`X-Total-Count` | Contains total number of network discovery tasks available according to the filtering applied

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | List of Scan Tasks
`[].taskId` | `Number` | Scan Task ID
`[].name` | `String` | Name of Scan Task
`[].status` | `String` | Scan Task Status

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 10
    Content-Type: application/json
    Content-Length: 743

    [{"taskId":30762,"name":"Discovery task 0","status":"Scan in process"},{"taskId":30763,"name":"Discovery task 1","status":"Scan FAILED"},{"taskId":30764,"name":"Discovery task 2","status":"Scan CANCELED by user"},{"taskId":30765,"name":"Discovery task 3","status":"Scan completed (Successful)"},{"taskId":30766,"name":"Discovery task 4","status":"Scan completed (Partial SUCCESSFUL)"},{"taskId":30767,"name":"Discovery task 5","status":"Scan completed (Processing Result)"},{"taskId":30768,"name":"Discovery task 6","status":null},{"taskId":30769,"name":"Discovery task 7","status":"Scan in process"},{"taskId":30770,"name":"Discovery task 8","status":"Scan FAILED"},{"taskId":30771,"name":"Discovery task 9","status":"Scan CANCELED by user"}]

`V3`

##### Query parameters

Parameter | Description
--- | ---
`size` | Number of returned entries
`position` | Position shift
`name` | Task name
`status` | Task status. Values: [IN_PROCESS, FAILED, CANCELED, SUCCESSFUL, PARTIAL_SUCCESSFUL, PROCESSING_RESULT, null]

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v3/ad_task?size=10&position=0&name=Discovery+task+1&status=IN_PROCESS' -i -X GET \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer4188' \
        -H 'password: Password123!' \
        -H 'customerUri: cst4188'

##### Response headers

Name | Description
--- | ---
`X-Total-Count` | Contains total number of network discovery tasks available according to the filtering applied

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | List of Scan Tasks
`[].taskId` | `Number` | Scan Task ID
`[].name` | `String` | Name of Scan Task
`[].status` | `String` | Scan Task Status

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 10
    Content-Type: application/json
    Content-Length: 743

    [{"taskId":36456,"name":"Discovery task 0","status":"Scan in process"},{"taskId":36457,"name":"Discovery task 1","status":"Scan FAILED"},{"taskId":36458,"name":"Discovery task 2","status":"Scan CANCELED by user"},{"taskId":36459,"name":"Discovery task 3","status":"Scan completed (Successful)"},{"taskId":36460,"name":"Discovery task 4","status":"Scan completed (Partial SUCCESSFUL)"},{"taskId":36461,"name":"Discovery task 5","status":"Scan completed (Processing Result)"},{"taskId":36462,"name":"Discovery task 6","status":null},{"taskId":36463,"name":"Discovery task 7","status":"Scan in process"},{"taskId":36464,"name":"Discovery task 8","status":"Scan FAILED"},{"taskId":36465,"name":"Discovery task 9","status":"Scan CANCELED by user"}]

#### Start MS AD scan task

Enables administrators to start a ms ad scan for a specific task

`V2` - Deprecated

##### Path parameters

Table 1. /api/discovery/v2/ad_task/{taskId}/start
Parameter | Description
--- | ---
`taskId` | Task ID

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v2/ad_task/31166/start' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer3908' \
        -H 'password: Password123!' \
        -H 'customerUri: cst3908'

##### Example response

    HTTP/1.1 200 OK

`V3`

##### Path parameters

Table 1. /api/discovery/v3/ad_task/{taskId}/start
Parameter | Description
--- | ---
`taskId` | Task ID

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v3/ad_task/36860/start' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer4197' \
        -H 'password: Password123!' \
        -H 'customerUri: cst4197'

##### Example response

    HTTP/1.1 200 OK

#### Delete MS AD scan task

`V2` - Deprecated

Enables administrators to delete a specific ms ad scanning task.

##### Path parameters

Table 1. /api/discovery/v2/ad_task/{taskId}
Parameter | Description
--- | ---
`taskId` | Task ID

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v2/ad_task/30964' -i -X DELETE \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer3902' \
        -H 'password: Password123!' \
        -H 'customerUri: cst3902'

##### Example response

    HTTP/1.1 204 No Content

`V3`

##### Path parameters

Table 1. /api/discovery/v3/ad_task/{taskId}
Parameter | Description
--- | ---
`taskId` | Task ID

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v3/ad_task/36658' -i -X DELETE \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer4191' \
        -H 'password: Password123!' \
        -H 'customerUri: cst4191'

##### Example response

    HTTP/1.1 204 No Content

### Azure Key Vault Discovery Tasks

#### Add Azure Key Vault scan task

Enables administrators to create a scan task in search of SSL certificates.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Task name | [Must not be empty, Size must be between 1 and 256 inclusive]
certBucketId | String | Id of the bucket to which this task will be applied | [Must not be null]
frequency | String | Task frequency. Possible values are [Manual, Daily, Weekly, Monthly, Quarterly, SemiAnnually, Annually, Once] | [Must not be empty]
timeZone | String | Time zone | [Must not be empty]
time | Object | Time | [Must not be null]
time.hours | Number | Hours | []
time.minutes | Number | Minutes | []
month | Number | Month. Possible values is 1 for January, 2 for February and etc. | [Must be at least 1, Must be at most 12]
year | Number | Year | []
dayOfMonth | Number | Day of month. Possible values is 1 for 1st day of month, 2 for 2nd day of month and etc. | [Must be at least 1, Must be at most 31]
dayOfWeek | Number | Day of week. Possible values is 7 for Sunday, 1 for Monday, 2 for Tuesday and etc. | [Must be at least 1, Must be at most 7]
azureAccountId | Number | Azure account id | [Must be positive, Must not be null]
resourceGroup | String | Azure resource group name | [Must not be empty]
keyVault | String | Azure key vault name | [Must not be empty]

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v1/azure_task' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: nick-3912' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{"azureAccountId":51,"resourceGroup":"resourceGroup","keyVault":"keyVault","name":"AQXDQBODJZTNRDMNDBMOYYIVRVWBVHJW","certBucketId":"a6496c3f-9af0-4c9e-9265-19e0db14c2ad","frequency":"Daily","timeZone":"UTC+00:00 - GMT, UCT, UTC, WET, EGST","time":{"hours":0,"minutes":0},"month":1,"dayOfMonth":1,"dayOfWeek":3,"year":3044}'

##### Response headers

Name | Description
--- | ---
`Location` | URL location of created task

##### Example response

    HTTP/1.1 201 Created
    Location: https://cert-manager.com/api/discovery/v1/azure_task/31368

#### Update Azure Key Vault scan task

Enables administrators to edit an Azure Key Vault scan task.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Task name | [Must not be empty, Size must be between 1 and 256 inclusive]
certBucketId | String | Id of the bucket to which this task will be applied | [Must not be null]
frequency | String | Task frequency. Possible values are [Manual, Daily, Weekly, Monthly, Quarterly, SemiAnnually, Annually, Once] | [Must not be empty]
timeZone | String | Time zone | [Must not be empty]
time | Object | Time | [Must not be null]
time.hours | Number | Hours | []
time.minutes | Number | Minutes | []
month | Number | Month. Possible values is 1 for January, 2 for February and etc. | [Must be at least 1, Must be at most 12]
dayOfMonth | Number | Day of month. Possible values is 1 for 1st day of month, 2 for 2nd day of month and etc. | [Must be at least 1, Must be at most 31]
dayOfWeek | Number | Day of week. Possible values is 7 for Sunday, 1 for Monday, 2 for Tuesday and etc. | [Must be at least 1, Must be at most 7]
year | Number | Year | []
azureAccountId | Number | Azure account id | []
resourceGroup | String | Azure resource group name | []
keyVault | String | Azure key vault name | []

##### Path parameters

Table 1. /api/discovery/v1/azure_task/{id}
Parameter | Description
--- | ---
`id` | ID of task whose details are being updated

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v1/azure_task/31370' -i -X PUT \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: nick-3981' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{"azureAccountId":74,"resourceGroup":"resourceGroup","keyVault":"keyVault","name":"BSBULLMWTHWSLDIYGIDTIDEHAEZFMVFB","certBucketId":"76299aa7-d271-4e4f-86d0-4c7c9f9518d3","frequency":"Daily","timeZone":"UTC+00:00 - GMT, UCT, UTC, WET, EGST","time":{"hours":0,"minutes":0},"month":1,"dayOfMonth":1,"dayOfWeek":3,"year":3044}'

##### Example response

    HTTP/1.1 200 OK

#### Get Azure Key Vault scan task

Enables the administrator to get the parameters of a particular task which he/she is authorized to view and manage.

##### Path parameters

Table 1. /api/discovery/v1/azure_task/{taskId}
Parameter | Description
--- | ---
`taskId` | Task ID

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v1/azure_task/31369' -i -X GET \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: nick-3969' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Response fields

Path | Type | Description
--- | --- | ---
`name` | `String` | Task name
`status` | `String` | Task status. Values: [IN_PROCESS, FAILED, CANCELED, SUCCESSFUL, PARTIAL_SUCCESSFUL, PROCESSING_RESULT, null]
`frequency` | `String` | Task frequency. Possible values are [Manual, Daily, Weekly, Monthly, Quarterly, SemiAnnually, Annually, Once]
`timeZone` | `String` | Time zone
`time` | `Object` | Time
`time.hours` | `Number` | Hours
`time.minutes` | `Number` | Minutes
`month` | `Number` | Month. Possible values is 1 for January, 2 for February and etc.
`year` | `Number` | Year
`dayOfMonth` | `Number` | Day of month. Possible values is 1 for 1st day of month, 2 for 2nd day of month and etc.
`dayOfWeek` | `Number` | Day of week. Possible values is 7 for Sunday, 1 for Monday, 2 for Tuesday and etc.
`azureAccountId` | `Number` | Azure account id
`resourceGroup` | `String` | Azure resource group name
`keyVault` | `String` | Azure key vault name

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 230

    {"name":"Discovery task 0","frequency":"Daily","timeZone":"UTC+00:00 - GMT, UCT, UTC, WET, EGST","time":{"hours":9,"minutes":14},"status":"Scan in process","azureAccountId":70,"resourceGroup":"resourceGroup","keyVault":"keyVault"}

#### Get Azure Key Vault scan task list

Enables the administrator to get the list of existing tasks of scanning which he/she is authorized to view and manage.

##### Query parameters

Parameter | Description
--- | ---
`size` | Number of returned entries
`position` | Position shift
`name` | Task name
`status` | Task status. Values: [IN_PROCESS, FAILED, CANCELED, SUCCESSFUL, PARTIAL_SUCCESSFUL, PROCESSING_RESULT, null]

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v1/azure_task?size=10&position=0' -i -X GET \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: nick-4050' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Response headers

Name | Description
--- | ---
`X-Total-Count` | Contains total number of network discovery tasks available according to the filtering applied

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | List of Scan Tasks
`[].taskId` | `Number` | Scan Task ID
`[].name` | `String` | Name of Scan Task
`[].status` | `String` | Scan Task Status

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 10
    Content-Type: application/json
    Content-Length: 743

    [{"taskId":31399,"name":"Discovery task 9","status":"Scan CANCELED by user"},{"taskId":31398,"name":"Discovery task 8","status":"Scan FAILED"},{"taskId":31397,"name":"Discovery task 7","status":"Scan in process"},{"taskId":31396,"name":"Discovery task 6","status":null},{"taskId":31395,"name":"Discovery task 5","status":"Scan completed (Processing Result)"},{"taskId":31394,"name":"Discovery task 4","status":"Scan completed (Partial SUCCESSFUL)"},{"taskId":31393,"name":"Discovery task 3","status":"Scan completed (Successful)"},{"taskId":31392,"name":"Discovery task 2","status":"Scan CANCELED by user"},{"taskId":31391,"name":"Discovery task 1","status":"Scan FAILED"},{"taskId":31390,"name":"Discovery task 0","status":"Scan in process"}]

#### Start Azure Key Vault scan task

Enables administrators to start an Azure Key Vault scan for a specific task

##### Path parameters

Table 1. /api/discovery/v1/azure_task/{taskId}/start
Parameter | Description
--- | ---
`taskId` | Task ID

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v1/azure_task/31402/start' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: nick-4062' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Example response

    HTTP/1.1 200 OK

#### Delete Azure Key Vault scan task

##### Path parameters

Table 1. /api/discovery/v1/azure_task/{taskId}
Parameter | Description
--- | ---
`taskId` | Task ID

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v1/azure_task/31401' -i -X DELETE \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: nick-4056' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Example response

    HTTP/1.1 204 No Content

### Discovery Assignment Rules

#### Discovery Assignment Rule Filters

##### Filter Structure

Each filter object in the `filters` array contains the following fields:

- `filters[].filterType`: Specifies the type of filter as a string.

- `filters[].matchType`: Defines the matching criteria for the filter.

- `filters[].value`: Represents the value to be matched against, based on the `matchType`.

##### Filter Types and Rules

The behavior of the filter depends on the `filterType` specified:

- If `filters[].filterType` is any value from the list: `COMMON_NAME`, `ORGANIZATION`, `ORGANIZATION_UNIT`, `CITY`, `STATE`, `COUNTRY`, `SUBJECT_ALT_NAME`, `ISSUER`, `IP`, `PORT`, `DOMAIN_COMPONENT`, `TEMPLATE_NAME`, `KU`, `EKU`, `HOSTNAME` then `filters[].matchType` must correspond to a valid value from the list:

  - `MATCHES`: Checks if the value matches exactly.

  - `STARTS_WITH`: Checks if the value starts with a given substring.

  - `ENDS_WITH`: Checks if the value ends with a given substring.

  - `CONTAINS`: Checks if the value contains a given substring.

  - `MATCH_REGEX`: Checks if the value matches a given regular expression.

`filters[].value`: Can be correct string representing the value that the filter should match according to the specified `matchType`.

- If `filters[].filterType` is `EXPIRATION`:

  - `filters[].matchType` must be `GREATER_THAN`, which is the only allowed value in this context and corresponds to `filters[].value` which represents an integer value with specific meanings:

  - `0`: Used to filter for non-expired SSL certificates only.

  - `1` to `365`: Used to filter for non-expired certificates and include certificates that have expired no more than the specified number of days ago.

##### Filter Examples

1. Common filtering:

   - `filters[].filterType`: `COMMON_NAME`

   - `filters[].matchType`: `MATCHES`

   - `filters[].value`: `example.com`

This filter would match any records where the `COMMON_NAME` field matches the substring `example.com`.

1. Filtering with Expiration:

   - `filters[].filterType`: `EXPIRATION`

   - `filters[].matchType`: `GREATER_THAN`

   - `filters[].value`: `30`

This filter would include certificates that are still valid or have expired no more than 30 days ago.

Make sure to select the appropriate `filterType`, `matchType`, and `value` based on these rules to ensure the desired filtering behavior for assignment rules.

#### Create discovery assignment rule

Assignment Rules are associated with discovery tasks to assign 'Unmanaged' certificates (those not issued by SCM) to a particular Organization or Department

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Assignment rule name | [Must not be null, Size must be between 1 and 128 inclusive]
orgId | Number | Organization ID | [Must be at least 1, Must not be null]
certType | String | Certificate type. Default value is SSL for backward compatibility. Values: [SSL, SMIME, CodeSign, Device] | []
filters[] | Array | Array of rule filters | [Must not be empty]
filters[].filterType | String | Rule filter type | []
filters[].matchType | String | Rule match type | []
filters[].value | String | Rule value | []

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v1/assignmentrule' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer4215' \
        -H 'password: Password123!' \
        -H 'customerUri: cst4215' \
        -d '{"name":"WRFEHFFPZCGPVDIQYSSMNKJSFFCZTGUB","orgId":1854,"filters":[{"filterType":"ORGANIZATION","matchType":"MATCHES","value":"org4Test"}],"certType":"SSL"}'

##### Response headers

Name | Description
--- | ---
`Location` | Url location of created assignment rule

##### Example response

    HTTP/1.1 201 Created
    Location: https://cert-manager.com/api/discovery/v1/assignmentrule/271

#### Update discovery assignment rule

Enables the administrator to edit the existing assignment rule.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
ruleId | Number | Assignment rule ID | [Must be at least 1]
name | String | Assignment rule name | [Must not be null, Size must be between 1 and 128 inclusive]
certType | String | Certificate type. Default value is SSL for backward compatibility. Values: [SSL, SMIME, CodeSign, Device] | []
orgId | Number | Organization ID | [Must be at least 1, Must not be null]
filters[] | Array | Array of rule filters | [Must not be empty]
filters[].filterType | String | Rule filter type | []
filters[].matchType | String | Rule match type | []
filters[].value | String | Rule value | []

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v1/assignmentrule' -i -X PUT \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer9961' \
        -H 'password: Password123!' \
        -H 'customerUri: cst9961' \
        -d '{"ruleId":5726,"name":"ESTMBSFXDTMMPDYFRMVMITYMZJBKQEZX","orgId":1884,"filters":[{"filterType":"ORGANIZATION","matchType":"STARTS_WITH","value":"org4Test"}],"certType":"SSL"}'

##### Example response

    HTTP/1.1 204 No Content

#### Find discovery assignment rule by ID

Enables the administrator to find the assignment rule by its ID.

##### Path parameters

Table 1. /api/discovery/v1/assignmentrule/{ruleId}
Parameter | Description
--- | ---
`ruleId` | Assignment rule ID

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v1/assignmentrule/5120' -i -X GET \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer9343' \
        -H 'password: Password123!' \
        -H 'customerUri: cst9343'

##### Response fields

Path | Type | Description
--- | --- | ---
`name` | `String` | Assignment rule name
`orgId` | `Number` | Assignment rule organization ID
`certType` | `String` | Assignment rule certificate type
`filters[]` | `Array` | Array of rule filters
`filters[].filterType` | `String` | Rule filter type
`filters[].matchType` | `String` | Rule match type
`filters[].value` | `String` | Rule value

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 118

    {"name":"Assignment rule 9346 [organization: org4Test, customer ID: 1161]","orgId":1880,"filters":[],"certType":"SSL"}

#### Get discovery assignment rules count

Enables administrators to get the number of existing assignment rules for the organization or department delegated to them.

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v1/assignmentrule/count' -i -X GET \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer8725' \
        -H 'password: Password123!' \
        -H 'customerUri: cst8725'

##### Response fields

Path | Type | Description
--- | --- | ---
`count` | `Number` | Assignment rules count

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 13

    {"count":202}

#### Get discovery assignment rules ID list

Enables Admins to get the list of existing assignment rules IDs for the organization or department delegated to them.

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v1/assignmentrule/?size=10&position=0' -i -X GET \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer16756' \
        -H 'password: Password123!' \
        -H 'customerUri: cst16756'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | Array of assignment rule IDs

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 61

    [12392,12393,12394,12395,12396,12397,12398,12399,12400,12401]

#### Delete discovery assignment rule

Enables the administrator to delete a particular assignment rule that is applicable to the organization or department delegated to them.

##### Path parameters

Table 1. /api/discovery/v1/assignmentrule/{ruleId}
Parameter | Description
--- | ---
`ruleId` | Assignment rule ID

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v1/assignmentrule/12594' -i -X DELETE \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer16961' \
        -H 'password: Password123!' \
        -H 'customerUri: cst16961' \
        -d '{"ruleId":0,"name":"PHMASTGXYUECSINCSNMIEEWHGDTDFRAL","orgId":1906,"filters":[{"filterType":"ORGANIZATION","matchType":"STARTS_WITH","value":"org4Test"}],"certType":"SSL"}'

##### Example response

    HTTP/1.1 204 No Content

### Discovery Certificate Buckets

#### Create discovery certificate bucket

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Cert Bucket name | [Must not be null, Size must be between 1 and 128 inclusive]
assignmentRules | Array | Assignment rule IDs | []
orgDelegations | Array | Delegated organization IDs | []
authenticationEnabled | Boolean | Is REST Authentication enabled | []

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v1/bucket' -i -X POST \
        -H 'Content-Type: application/json' \
        -H 'login: admin_customer3381' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{"name": "Cert Bucket Example", "assignmentRules": [62], "orgDelegations":[1517] , "authenticationEnabled": true}'

##### Response headers

Name | Description
--- | ---
`Location` | Url location of created cert bucket

##### Example response

    HTTP/1.1 201 Created
    Location: https://cert-manager.com/api/discovery/v1/bucket/4afc6d05-1206-4d05-b28b-3842da11199f
    Content-Type: application/json
    Content-Length: 105

    {"clientId":"66bd6a7e-b80d-42e1-9afb-897cea95741b","clientSecret":"96016664-d59a-4dcf-b6e8-8e7ca1997e3c"}

#### Update discovery certificate bucket

##### Path parameters

Table 1. /api/discovery/v1/bucket/{bucketId}
Parameter | Description
--- | ---
`bucketId` | Cert Bucket ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Cert Bucket name | [Must not be null, Size must be between 1 and 128 inclusive]
assignmentRules | Array | Assignment rule IDs | []
authenticationEnabled | Boolean | Is REST Authentication enabled | []

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v1/bucket/a609da73-f632-4290-8373-711edf37384f' -i -X PUT \
        -H 'Content-Type: application/json' \
        -H 'login: admin_customer3413' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{"name": "Cert Bucket Example", "assignmentRules": [66],  "authenticationEnabled": true}'

##### Response fields

Path | Type | Description
--- | --- | ---
`id` | `String` | Cert Bucket ID
`name` | `String` | Cert Bucket name
`assignmentRules` | `Array` | Assignment rule IDs
`orgDelegations` | `Array` | Delegated organization IDs
`authenticationEnabled` | `Boolean` | Is REST Authentication enabled
`clientId` | `String` | REST Authentication Client id. It will be shown all the time if authentication on a bucket is enabled, and will not be shown if authentication is disabled.
`clientSecret` | `String` | REST Authentication Client secret. It will be shown only once if you decide to enable authentication on the bucket, if it was disabled before.

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 254

    {"clientId":"89cd2a34-fde4-46db-9ba4-0f984ce6dd37","clientSecret":"d3f0ec26-6c26-4517-b791-896cc3aed8ec","id":"a609da73-f632-4290-8373-711edf37384f","name":"Cert Bucket Example","authenticationEnabled":true,"assignmentRules":[66],"orgDelegations":[1533]}

#### Reset discovery certificate buckets client secret

##### Path parameters

Table 1. /api/discovery/v1/bucket/{bucketId}/reset-client-secret
Parameter | Description
--- | ---
`bucketId` | Cert Bucket ID

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v1/bucket/943eb30b-e4a9-496b-a8bc-bd2dda147839/reset-client-secret' -i -X PUT \
        -H 'login: admin_customer3409' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Response fields

Path | Type | Description
--- | --- | ---
`clientId` | `String` | REST Authentication Client id.
`clientSecret` | `String` | REST Authentication Client secret.

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 105

    {"clientId":"f1be6bbe-0d83-4e84-8cc6-3d9418084f27","clientSecret":"49e93901-6086-4b16-a1b7-eedfccd02bc0"}

#### Delegate organizations to existing discovery certificate bucket

##### Path parameters

Table 1. /api/discovery/v1/bucket/{bucketId}/delegations
Parameter | Description
--- | ---
`bucketId` | Cert Bucket ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
delegationMode | String | Allowed values: [GLOBAL_FOR_CUSTOMER, CUSTOMIZED] | [Must not be null]
orgDelegations | Array | Delegated organization IDs. Should be absent for GLOBAL_FOR_CUSTOMER delegation mode | []

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v1/bucket/eba2ba43-3379-40b6-a486-beae4437b84a/delegations' -i -X PUT \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer3387' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{"delegationMode": "CUSTOMIZED", "orgDelegations": [1520]}'

##### Response fields

Path | Type | Description
--- | --- | ---
`id` | `String` | Cert Bucket ID
`name` | `String` | Cert Bucket name
`assignmentRules` | `Array` | Assignment rule IDs
`orgDelegations` | `Array` | Delegated organization IDs
`authenticationEnabled` | `Boolean` | Is REST Authentication enabled
`clientId` | `String` | REST Authentication Client id

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 190

    {"clientId":"49094919-1898-4311-b245-9f46d7d5402f","id":"eba2ba43-3379-40b6-a486-beae4437b84a","name":"test bucket","authenticationEnabled":true,"assignmentRules":[],"orgDelegations":[1520]}

#### Find discovery certificate bucket by ID

##### Path parameters

Table 1. /api/discovery/v1/bucket/{id}
Parameter | Description
--- | ---
`id` | Cert Bucket ID

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v1/bucket/ba5efdf3-777a-4a6c-a395-c8c7a38f1bcc' -i -X GET \
        -H 'login: admin_customer3397' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Response fields

Path | Type | Description
--- | --- | ---
`id` | `String` | Cert Bucket ID
`name` | `String` | Cert Bucket name
`assignmentRules` | `Array` | Assignment rule IDs
`orgDelegations` | `Array` | Delegated organization IDs
`authenticationEnabled` | `Boolean` | Is REST Authentication enabled
`clientId` | `String` | REST Authentication Client id. It will be shown all the time if authentication on a bucket is enabled, and will not be shown if authentication is disabled.

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 200

    {"clientId":"e0a31298-2c5c-4fc1-b205-0c371590f740","id":"ba5efdf3-777a-4a6c-a395-c8c7a38f1bcc","name":"Example Cert Bucket","authenticationEnabled":true,"assignmentRules":[64],"orgDelegations":[1525]}

#### List discovery certificate buckets

##### Query parameters

Parameter | Description
--- | ---
`name` | Cert Bucket name
`orgId` | Organization ID
`delegationMode` | Delegation mode. Possible values: 'GLOBAL_FOR_CUSTOMER' and’CUSTOMIZED'
`position` | the first position (entry) to return from the results of the query
`size` | Count of entries

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v1/bucket?name=test&orgId=1527&delegationMode=CUSTOMIZED&position=0&size=10' -i -X GET \
        -H 'login: admin_customer3401' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | Certificate buckets list
`[].id` | `String` | ID
`[].name` | `String` | Name

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 1
    Content-Type: application/json
    Content-Length: 68

    [{"id":"ada63b63-6629-4900-a443-b48b1350b2a0","name":"test bucket"}]

#### Delete discovery certificate bucket

##### Path parameters

Table 1. /api/discovery/v1/bucket/{id}
Parameter | Description
--- | ---
`id` | Cert Bucket ID

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v1/bucket/8404460c-fa57-43bb-8023-729a7d308515' -i -X DELETE \
        -H 'login: admin_customer3390' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Example response

    HTTP/1.1 204 No Content

#### Certificates in discovery certificate bucket

##### Path parameters

Table 1. /api/discovery/v1/bucket/{id}/certificates
Parameter | Description
--- | ---
`id` | Cert Bucket ID

##### Query parameters

Parameter | Description
--- | ---
`position` | the first position (entry) to return from the results of the query
`size` | Count of entries

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v1/bucket/6c657236-bdc6-4da8-9694-0e708e4302d2/certificates?position=0&size=0' -i -X GET \
        -H 'login: admin_customer3393' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Response fields

Path | Type | Description
--- | --- | ---
`total` | `Number` | Total count of founded certificates
`data.[]` | `Array` | List of Certificates
`data.[0].hash` | `String` | Certificate hash
`data.[0].details` | `Object` | Certificate details
`data.[0].details.cn` | `String` | Certificate common name
`data.[0].details.validFrom` | `String` | Certificate issue date
`data.[0].details.validTo` | `String` | Certificate expiry date
`data.[0].details.subject` | `Object` | Certificate subject
`data.[0].details.san` | `Array` | Certificate subject alternative names
`data.[0].details.keyAlgorithm` | `String` | Certificate key algorithm
`data.[0].details.keySize` | `Number` | Certificate key size
`data.[0].details.signatureAlgorithm` | `String` | Certificate signature algorithm
`data.[0].details.sn` | `String` | Certificate serial number
`data.[0].details.md5Hash` | `String` | Certificate md5 hash
`data.[0].details.sha1Hash` | `String` | Certificate sha1 hash
`data.[0].details.ku` | `Array` | Certificate key usage
`data.[0].details.eku` | `Array` | Certificate extended key usage
`data.[0].details.issuer` | `Object` | Certificate issuer
`data.[0].details.precert` | `Boolean` | Precert certificate indicator

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 494

    {"total":1,"data":[{"hash":"11a736dd5d67af1ed5b6a14fbf92ca8fe97df841","details":{"cn":"*.ssl.hwcdn.net","validFrom":"2025-08-15T09:12:40Z","validTo":"2025-08-15T09:12:40Z","issuer":{},"subject":{},"san":[],"keyAlgorithm":"RSA","keySize":2048,"signatureAlgorithm":"SHA256withRSA","sn":"32616335373265322D343361362D336331332D396537632D643330306338303130643332","md5Hash":"0e6d4f8af5d5a163676d0780b3b4b54e","sha1Hash":"11a736dd5d67af1ed5b6a14fbf92ca8fe97df841","ku":[],"eku":[],"precert":false}}]}

#### Run rules against discovery certificate bucket

##### Path parameters

Table 1. /api/discovery/v1/bucket/{id}/runrules
Parameter | Description
--- | ---
`id` | Cert Bucket ID

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v1/bucket/92cc880d-7895-4002-9fbe-a0e9f25ddb60/runrules' -i -X POST \
        -H 'login: admin_customer3373' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Example response

    HTTP/1.1 200 OK

#### Assign certificates in discovery certificate bucket

##### Path parameters

Table 1. /api/discovery/v1/bucket/{id}/assign
Parameter | Description
--- | ---
`id` | Cert Bucket ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
hashes | Array | List of certificate hashes | [Must not be empty]
certType | String | Certificate type. Values: [SSL, SMIME, CodeSign, Device] | [Must not be null]
organizationId | Number | Organization ID | [Must not be null]

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v1/bucket/9880279b-020c-4c3c-9b73-542aa2068e52/assign' -i -X POST \
        -H 'Content-Type: application/json' \
        -H 'login: admin_customer3377' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{"hashes":["hash"],"certType":"SSL","organizationId":12}'

##### Example response

    HTTP/1.1 200 OK

### Discovery Operations

#### Get discovery operations list

##### Path parameters

Table 1. /api/discovery/v1/{taskType}/{taskId}/operation
Parameter | Description
--- | ---
`taskType` | Discovery task type. Allowed values: [ad_task, net_task, azure_task]
`taskId` | Discovery task ID

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v1/net_task/31404/operation' -i -X GET \
        -H 'Accept: application/json' \
        -H 'login: nick-4070' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Response fields

Path | Type | Description
--- | --- | ---
`total` | `Number` | Operations count. Deprecated, X-Total-Count header should be used instead
`data` | `Array` | List of operations
`data[].id` | `String` | Operation ID
`data[].status` | `String` | Operation status
`data[].created` | `String` | Operation create date (start scan)
`data[].modified` | `String` | Operation last modification date
`data[].bucketId` | `String` | ID of the respective certificate bucket
`data[].error` | `String` | Error description and details

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 0
    Content-Type: application/json
    Content-Length: 684

    {"total":4,"data":[{"id":"2c9780878596231201859c0992dc0004","status":"failed","created":"2023-01-10T14:15:51.260Z","modified":"2023-01-10T14:15:51.358Z","bucketId":"123","error":"Internal error"},{"id":"2c9780878596231201859d39f42d0005","status":"failed","created":"2023-01-10T19:48:19.117Z","modified":"2023-01-10T19:48:19.216Z","bucketId":"123","error":"Internal error"},{"id":"2c978087859623120185a07545370006","status":"completed","created":"2023-01-11T10:51:58.135Z","modified":"2023-01-11T10:51:58.232Z","bucketId":"123"},{"id":"2c978087859623120185a0861ad20007","status":"completed","created":"2023-01-11T11:10:21.394Z","modified":"2023-01-11T11:10:21.491Z","bucketId":"123"}]}

#### Stop discovery operation

##### Path parameters

Table 1. /api/discovery/v1/{taskType}/{taskId}/operation/{operationId}/stop
Parameter | Description
--- | ---
`taskType` | Discovery task type. Allowed values: [ad_task, net_task, azure_task]
`taskId` | Discovery task ID
`operationId` | Operation ID

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v1/net_task/31405/operation/2c978087859623120185a07545370106/stop' -i -X POST \
        -H 'login: nick-4075' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Example response

    HTTP/1.1 200 OK

#### Get result of discovery operation

##### Path parameters

Table 1. /api/discovery/v1/{type}/{taskId}/operation/{opId}/result
Parameter | Description
--- | ---
`type` | Discovery task type. Allowed values: [ad_task, net_task, azure_task]
`taskId` | Discovery task ID
`opId` | Operation ID

##### Query parameters

Parameter | Description
--- | ---
`position` | the first position (entry) to return from the results of the query
`size` | Count of entries

##### Example request

    $ curl 'https://cert-manager.com/api/discovery/v1/net_task/31403/operation/2c9b8087864fefb701865a26f77b0001/result' -i -X GET \
        -H 'Accept: application/json' \
        -H 'login: nick-4065' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Response fields

Path | Type | Description
--- | --- | ---
`total` | `Number` | Total count of founded certificates. Deprecated, X-Total-Count header should be used instead
`data.[]` | `Array` | Array of founded certificates
`data.[0].operation` | `Object` | Operation details
`data.[0].operation.id` | `String` | Operation ID
`data.[0].operation.created` | `String` | Operation create date
`data.[0].status` | `Object` | Certificate status
`data.[0].status.tlsVersion` | `Number` | Certificate status: tls version
`data.[0].status.handshakeMs` | `Number` | Certificate status: handshake MS
`data.[0].status.cipherSuite` | `String` | Certificate status: ciper suite
`data.[0].status.nameLookupMs` | `Number` | Certificate status: name lookup
`data.[0].created` | `String` | Certificate create date
`data.[0].certificate` | `Object` | Certificate data
`data.[0].certificate.hash` | `String` | Certificate hash
`data.[0].certificate.metadata.managedId` | `String` | Certificate managed id
`data.[0].certificate.metadata.hidden` | `Boolean` | Is certificate hidden
`data.[0].certificate.metadata.discoveryTime` | `String` | Date when certificate was discovered
`data.[0].certificate.details` | `Object` | Certificate details
`data.[0].certificate.details.cn` | `String` | Certificate common name
`data.[0].certificate.details.validFrom` | `String` | Certificate issue date
`data.[0].certificate.details.validTo` | `String` | Certificate expiry date
`data.[0].certificate.details.subject` | `Object` | Certificate subject
`data.[0].certificate.details.san` | `Array` | Certificate subject alternative names
`data.[0].certificate.details.keyAlgorithm` | `String` | Certificate key algorithm
`data.[0].certificate.details.keySize` | `Number` | Certificate key size
`data.[0].certificate.details.signatureAlgorithm` | `String` | Certificate signature algorithm
`data.[0].certificate.details.sn` | `String` | Certificate serial number
`data.[0].certificate.details.md5Hash` | `String` | Certificate md5 hash
`data.[0].certificate.details.sha1Hash` | `String` | Certificate sha1 hash
`data.[0].certificate.details.issuer` | `Object` | Certificate issuer
`data.[0].certificate.details.ku` | `Array` | Certificate key usage
`data.[0].certificate.details.eku` | `Array` | Certificate key usage
`data.[0].certificate.details.precert` | `Boolean` | Precert certificate
`data.[0].location` | `Object` | Certificate location
`data.[0].location.type` | `String` | Certificate location type
`data.[0].location.details` | `Object` | Certificate location details

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 1
    Content-Type: application/json
    Content-Length: 1282

    {"total":1,"data":[{"certificate":{"hash":"09a736dd5d67af1ed5b6a14fbf92ca8fe97df839","metadata":{"managedId":"ssl:130","hidden":false,"discoveryTime":"2024-06-20T11:27:13.657Z"},"details":{"cn":"*.ssl.hwcdn.net","validFrom":"2022-12-30T00:00:00Z","validTo":"2024-01-19T23:59:59Z","issuer":{},"subject":{},"san":[],"keyAlgorithm":"RSA","keySize":2048,"signatureAlgorithm":"SHA256withRSA","sn":"2AC572E243A63C139E7CD300C8010D32","md5Hash":"0e6d4f8af5d5a163676d0780b3b4b54e","sha1Hash":"09a736dd5d67af1ed5b6a14fbf92ca8fe97df839","ku":[],"eku":[],"precert":false}},"location":{"type":"NETWORK_HOST","details":{"ip":"151.139.128.14","port":443,"address":"sectigo.com","name":null,"dn":null,"upn":null,"objectType":null,"requestId":null,"haGroupId":null,"template":null,"dateCreated":null,"type":null,"requesterEmail":null,"backend":null,"host":null,"requesterName":null,"site":null,"hostName":null,"id":null,"exportable":null,"reusable":null,"uri":null,"arn":null,"exported":null,"inUse":null,"inUseBy":null,"scope":null,"labels":null}},"status":{"tlsVersion":1,"cipherSuite":"123","handshakeMs":2,"nameLookupMs":3,"status":null,"additionalEmails":null},"operation":{"id":"2c9b8087864fefb701865a26f77b0001","created":"2023-02-16T12:15:48.604401Z"},"created":"2023-01-26T05:42:45.212Z"}]}

## Notifications

### View notifications

#### List notifications

##### Query parameters

Parameter | Description
--- | ---
`position` | the first position (entry) to return from the results of the query
`size` | Count of entries
`id` | Notification ID
`description` | Notification description
`orgId` | Notification organization ID
`selectedOrgType` | Selected organization type. Values: [ANY, ANYDEPT, SELECTED]

`type`

Notification type. Values: [ClientCertExpiration, ClientCertRevoked, SSLApproved, SSLAwaitingApproval, SSLDeclined, SSLExpiration, SSLIssuanceFailed, SSLRevoked, DiscoveryScanSummary, SSLSAApprovedToRA, AdminCreation, DomainAwaitingApproval, DomainApproved, SSLEnrolled, CSCertInvitation, CSCertIssued, CSCertDownloaded, CSCertRevoked, CSCertExpiration, CSCertRequested, EmailValidation, EmailInvitation, DCVExpiration, DCVValidated, DCVNeeded, ExSSLCertificateInstalled, ExSSLInstallationFailed, IdPLoginEmailInvitation, CsRequestDeclined, CsRequestSigned, DeveloperCreated, DeveloperResetPassword, DeveloperNewEmail, CsRequestCreated, CsCsfRevoke, DeviceExpiration, DeviceRevoked, DeviceAwaitingApproval, ArFailed, ManualInstallReady, DeviceEnrolled, DeviceApproved, DeviceDeclined, AdminChangePasswordByApi, SSLBulkAwaitingApproval, SSLBulkEnrollCompleted, SSLEnrolledDl, SMIMEEnrolledDl, DeviceEnrolledDl, CsEnrolledDl, MsAgentChangeStatus, NetworkAgentDisconnected, WebFormLogin, WebFormInvitation, DomainAwaitingApprovalMrao, ReportGenerated, DcvAutoRenewFailed, SasLoginEmailInvitation, DnsConnectorDisconnected, CAConnectorDisconnected, PrivateCaExpiration, SubscriptionChange, CertificateUsageThreshold, CertificateUsageExceedsInventory]

`certTypeId` | Notification profile ID

##### Example request

    $ curl 'https://cert-manager.com/api/notification/v1?id=60&description=ssl-revoke&orgId=2783&selectedOrgType=ANYDEPT&type=SSLRevoked&certTypeId=1935' -i -X GET \
        -H 'login: admin_customer20431' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | List of notifications.
`[].id` | `Number` | Notification ID
`[].description` | `String` | Notification description
`[].type` | `String` | Notification type
`[].created` | `String` | Created date
`[].createdBy` | `String` | Name of the administrator who created the notification.
`[].modified` | `String` | Modified date
`[].modifiedBy` | `String` | Name of the administrator who last modified the notification.
`[].orgData` | `Object` | Data for organization configuration
`[].orgData.selectedOrgType` | `String` | Type of organization selection.
`[].orgData.orgDelegations` | `Array` | Selected organizations ID
`[].recipientData` | `Object` | Data for recipients configuration
`[].recipientData.notifyRoles` | `Array` | Notify roles.
`[].recipientData.recipients.[]` | `Array` | Recipients to notify
`[].recipientData.recipients.[].type` | `String` | Type of recipient
`[].recipientData.recipients.[].value` | `String` | Value of recipient
`[].additionalData` | `Object` | Additional data for notification configuration
`[].additionalData.days` | `Number` | Number of remaining days
`[].additionalData.certTypeId` | `Number` | Profile id that this notification belongs to
`[].additionalData.freq` | `String` | Notification frequency
`[].additionalData.revokedByAdmin` | `Boolean` | For certificates, revoked by admin
`[].additionalData.revokedByUser` | `Boolean` | For certificates, revoked by user
`[].type` | `String` | Notification type
`[].id` | `Number` | Notification ID
`[].description` | `String` | Notification description
`[].active` | `Boolean` | For certificates, revoked by user

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 1
    Content-Type: application/json
    Content-Length: 531

    [{"description":"ssl-revoke","active":true,"orgData":{"selectedOrgType":"ANYDEPT","orgDelegations":[2783]},"recipientData":{"notifyRoles":["MRAO","APPROVER"],"recipients":[{"type":"EMAIL","value":"test@sectigo.com"}]},"additionalData":{"days":0,"certTypeId":1935,"freq":"ONCE","revokedByAdmin":true,"revokedByUser":false},"type":"SSLRevoked","id":60,"created":"2025-08-15T09:20:33.828Z","createdBy":"client-admin-20432 client-admin-20432","modified":"2025-08-15T09:20:33.828Z","modifiedBy":"client-admin-20432 client-admin-20432"}]

#### Available notification types

Get the notification types that are available for the current administrator.

##### Example request

    $ curl 'https://cert-manager.com/api/notification/v1/types' -i -X GET \
        -H 'login: admin_customer20428' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | Notification types

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 531

    ["ClientCertExpiration","ClientCertRevoked","SMIMEEnrolledDl","CSCertDownloaded","CSCertRevoked","CSCertExpiration","CSCertRequested","CsEnrolledDl","SSLApproved","SSLAwaitingApproval","SSLDeclined","SSLExpiration","SSLIssuanceFailed","SSLRevoked","DiscoveryScanSummary","ExSSLCertificateInstalled","ExSSLInstallationFailed","ArFailed","ManualInstallReady","SSLEnrolledDl","AdminCreation","DomainAwaitingApproval","DomainAwaitingApprovalMrao","DomainApproved","MsAgentChangeStatus","NetworkAgentDisconnected","PrivateCaExpiration"]

### Manage notifications

#### Create notification

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
description | String | Notification description | [Size must be between 3 and 256 inclusive]
type | String | Notification type | [Must not be null]
orgData | Object | Delegated organization details | []
orgData.selectedOrgType | String | Organization selection type. Values: [ANY, ANYDEPT, SELECTED] | []
orgData.orgDelegations | Array | Selected organization ID’s | []
recipientData | Object | Notification recipient details | [Must not be null]
recipientData.notifyRoles | Array | Notify roles list | []
recipientData.recipients | Array | Notification recipients | []
recipientData.recipients.[].type | String | Notification recipient type | [Must not be null]
recipientData.recipients.[].value | String | Notification recipient value | []
additionalData | Object | Notification additional details | []
additionalData.revokedByAdmin | Boolean | For certificates, revoked by admin | []
additionalData.revokedByUser | Boolean | For certificates, revoked by user | []
additionalData.certTypeId | Number | Profile id that this notification belongs to | []
additionalData.days | Number | Number of remaining days | []
additionalData.freq | String | Notification frequency. Values: [ONCE, DAILY] | []
active | Boolean | Status indicating whether the notification is active or not. Default value is true | []

##### Example request

    $ curl 'https://cert-manager.com/api/notification/v1' -i -X POST \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer20416' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{"description":"ssl-revoke","active":true,"orgData":{"selectedOrgType":"SELECTED","orgDelegations":[2773]},"recipientData":{"notifyRoles":["REQUESTER","SSL_RAO","MRAO"],"recipients":[{"type":"EMAIL","value":"aaa@sectigo.com"}]},"additionalData":{"days":0,"certTypeId":1930,"freq":"ONCE","revokedByAdmin":false,"revokedByUser":true},"type":"SSLRevoked"}'

##### Response headers

Name | Description
--- | ---
`Location` | Url location of created notification

##### Example response

    HTTP/1.1 201 Created
    Location: https://cert-manager.com/api/notification/v1/57

#### Update notification

##### Path parameters

Table 1. /api/notification/v1/{id}
Parameter | Description
--- | ---
`id` | Notification ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
description | String | Notification description | [Size must be between 3 and 256 inclusive]
orgData | Object | Delegated organization details | []
orgData.selectedOrgType | String | Organization selection type. Values: [ANY, ANYDEPT, SELECTED] | []
orgData.orgDelegations | Array | Selected organization ID’s | []
recipientData | Object | Notification recipient details | [Must not be null]
recipientData.notifyRoles | Array | Notify roles list | []
recipientData.recipients | Array | Notification recipients | []
recipientData.recipients.[].type | String | Notification recipient type | [Must not be null]
recipientData.recipients.[].value | String | Notification recipient value | []
additionalData | Object | Notification additional details | []
additionalData.revokedByAdmin | Boolean | For certificates, revoked by admin | []
additionalData.revokedByUser | Boolean | For certificates, revoked by user | []
additionalData.certTypeId | Number | Profile id that this notification belongs to | []
additionalData.days | Number | Number of remaining days | []
additionalData.freq | String | Notification frequency. Values: [ONCE, DAILY] | []
active | Boolean | Status indicating whether the notification is active or not. Default value is true | []

##### Example request

    $ curl 'https://cert-manager.com/api/notification/v1/62' -i -X PUT \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer20434' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{"description":"ssl-revoke","active":true,"orgData":{"selectedOrgType":"SELECTED","orgDelegations":[2785]},"recipientData":{"notifyRoles":["REQUESTER","SSL_RAO","MRAO"],"recipients":[{"type":"EMAIL","value":"aaa@sectigo.com"}]},"additionalData":{"days":0,"certTypeId":1936,"freq":"ONCE","revokedByAdmin":false,"revokedByUser":true}}'

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 502

    {"description":"ssl-revoke","active":true,"orgData":{"selectedOrgType":"SELECTED","orgDelegations":[2785]},"recipientData":{"notifyRoles":["MRAO","REQUESTER","SSL_RAO"],"recipients":[{"type":"EMAIL","value":"aaa@sectigo.com"}]},"additionalData":{"days":0,"certTypeId":1936,"freq":"ONCE","revokedByAdmin":false,"revokedByUser":true},"type":"SSLRevoked","id":62,"created":"2025-08-15T09:20:34.039Z","createdBy":"client-admin-20435 client-admin-20435","modifiedBy":"client-admin-20435 client-admin-20435"}

##### Response fields

Path | Type | Description
--- | --- | ---
`id` | `Number` | Notification ID
`description` | `String` | Notification description
`type` | `String` | Notification type
`created` | `String` | Created date
`createdBy` | `String` | Name of the administrator who created the notification.
`modified` | `String` | Modified date
`modifiedBy` | `String` | Name of the administrator who last modified the notification.
`orgData` | `Object` | Data for organization configuration
`orgData.selectedOrgType` | `String` | Type of organization selection.
`orgData.orgDelegations` | `Array` | Selected organizations ID
`recipientData` | `Object` | Data for recipients configuration
`recipientData.notifyRoles` | `Array` | Notify roles.
`recipientData.recipients.[]` | `Array` | Recipients to notify
`recipientData.recipients.[].type` | `String` | Type of recipient
`recipientData.recipients.[].value` | `String` | Value of recipient
`additionalData` | `Object` | Additional data for notification configuration
`additionalData.days` | `Number` | Number of remaining days
`additionalData.freq` | `String` | Notification frequency.
`active` | `Boolean` | Status indicating whether the notification is active or not
`additionalData.certTypeId` | `Number` | Profile id that this notification belongs to
`additionalData.freq` | `String` | Notification frequency
`additionalData.revokedByAdmin` | `Boolean` | For certificates, revoked by admin
`additionalData.revokedByUser` | `Boolean` | For certificates, revoked by user

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 502

    {"description":"ssl-revoke","active":true,"orgData":{"selectedOrgType":"SELECTED","orgDelegations":[2785]},"recipientData":{"notifyRoles":["MRAO","REQUESTER","SSL_RAO"],"recipients":[{"type":"EMAIL","value":"aaa@sectigo.com"}]},"additionalData":{"days":0,"certTypeId":1936,"freq":"ONCE","revokedByAdmin":false,"revokedByUser":true},"type":"SSLRevoked","id":62,"created":"2025-08-15T09:20:34.039Z","createdBy":"client-admin-20435 client-admin-20435","modifiedBy":"client-admin-20435 client-admin-20435"}

#### Delete notification

##### Path parameters

Table 1. /api/notification/v1/{id}
Parameter | Description
--- | ---
`id` | Notification ID

##### Example request

    $ curl 'https://cert-manager.com/api/notification/v1/58' -i -X DELETE \
        -H 'login: admin_customer20422' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Example response

    HTTP/1.1 200 OK

## Administrators

### View administrators

#### List administrators

List administrators according to the specified filter. Note: "IdP Template" administrators are not supported by current method and are filtered out. In order to receive a list of IdP templates, please use "List IdP Templates" method from "Template Administrators" section.

##### Query parameters

Parameter | Description
--- | ---
`size` | Number of returned entries
`position` | the first position (entry) to return from the results of the query
`type` | Admin type filter. Allowed values: STANDARD, IDP, SAS, API, DYNAMIC_IDP_TEMPLATE
`login` | Filter by login
`email` | Filter by E-mail
`activeState` | Filter by Active State Allowed values: ACTIVE, SUSPENDED
`orgId` | Filter by Organization ID
`templateId` | Filter by assigned IdP template ID
`identityProviderId` | Filter by Identity Provider ID
`role` | Filter by role. Allowed values: MRAO, RAO_SSL, RAO_SMIME, RAO_CS, RAO_DEVICE, DRAO_SSL, DRAO_SMIME, DRAO_CS, DRAO_DEVICE

##### Example request

    $ curl 'https://cert-manager.com/api/admin/v1?size=10&position=0' -i -X GET \
        -H 'login: admin_customer2114' \
        -H 'password: Password123!' \
        -H 'customerUri: cst2114'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | Array of requested admins
`[].id` | `Number` | Admin ID
`[].type` | `String` | Admin type
`[].login` | `String` | Admin login
`[].email` | `String` | Admin E-mail
`[].forename` | `String` | Admin forename
`[].surname` | `String` | Admin surname

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 3
    Content-Type: application/json
    Content-Length: 478

    [{"id":943,"type":"STANDARD","login":"testadmin_customer2114","forename":"client-admin-2119","surname":"client-admin-2119","email":"TestAdmin_Customer2114@aa.com"},{"id":942,"type":"STANDARD","login":"admindrao_customer2114","forename":"client-admin-2117","surname":"client-admin-2117","email":"2118aa@nobody.sectigo.com"},{"id":941,"type":"STANDARD","login":"admin_customer2114","forename":"client-admin-2115","surname":"client-admin-2115","email":"Admin_Customer2114@aa.com"}]

#### Get administrator details

Get detailed information about administrator.

#### Get standard administrator details

##### Path parameters

Table 1. /api/admin/v1/{id}
Parameter | Description
--- | ---
`id` | ID of admin whose details are being requested

##### Example request

    $ curl 'https://cert-manager.com/api/admin/v1/896' -i -X GET \
        -H 'login: admin_customer2006' \
        -H 'password: Password123!' \
        -H 'customerUri: cst2006' \
        -H 'Accept: application/json'

##### Response fields

Path | Type | Description
--- | --- | ---
`id` | `Number` | Admin identifier
`type` | `String` | Admin account type
`forename` | `String` | Forename
`surname` | `String` | Surname
`email` | `String` | Email
`clientAdminCreator` | `Number` | Identifier of creator Admin
`login` | `String` | Login
`reseted` | `String` | Password reset date (if password has been reset).
`lastPasswordChange` | `String` | Last password change date
`passwordState` | `String` | Admin’s password state. Possible values: 'ALIVE', 'EXPIRED' and 'NEVER_EXPIRE'
`passwordExpiryDate` | `String` | Password expiration date
`authCert` | `String` | Authentication Certificate Serial Number
`identityProviderId` | `Number` | Identifier of assigned Identity Provider
`idp` | `String` | Name of assigned Identity Provider
`idpPersonId` | `String` | Person Identifier (EPPN) in scope of Identity Provider
`created` | `String` | Admin creation date
`modified` | `String` | Admin last modification date
`deleted` | `String` | For deleted admins - the date when admin was deleted
`title` | `String` | Title or position
`relationship` | `String` | Administrator’s relationship to the company
`phone` | `String` | Telephone number
`city` | `String` | City / locality name
`state` | `String` | State or province name
`country` | `String` | Country
`zip` | `String` | Postal code
`locale` | `String` | Admin’s locale
`status` | `String` | Admin status. Deprecated. Value is always 'ACTIVE' for backward compatibility
`activeState` | `String` | Deprecated, see 'activeStatus' instead.
`activeStatus` | `String` | Active Status, possible values: ACTIVE and SUSPENDED
`credentials[]` | `Array` | Array of admin’s roles
`credentials[].role` | `String` | Admin’s role
`credentials[].orgId` | `Number` | Organization / Department ID
`privileges` | `Array` | Array of admin’s privileges
`failedAttempts` | `Number` | Number of failed attempts to log in
`failedDate` | `String` | Date of last failed attempt to log in

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 566

    {"id":896,"type":"STANDARD","status":"Active","forename":"client-admin-2013","surname":"client-admin-2013","login":"drao","email":"2014aa@nobody.sectigo.com","phone":"+123456789","created":"2025-08-15","modified":"2025-08-15","lastPasswordChange":"2025-08-15","credentials":[{"role":"DRAO_SSL","orgId":1131}],"passwordState":"ALIVE","passwordExpiryDate":"2025-11-15","authCert":"123456789AB","activeState":"Active","privileges":["allowManageDomains"],"failedAttempts":0,"identityProviderId":77,"idp":"Test Idp","idpPersonId":"admin.epp@test","activeStatus":"ACTIVE"}

#### Get API administrator details

##### Path parameters

Table 1. /api/admin/v1/{id}
Parameter | Description
--- | ---
`id` | ID of admin whose details are being requested

##### Example request

    $ curl 'https://cert-manager.com/api/admin/v1/902' -i -X GET \
        -H 'login: admin_customer2019' \
        -H 'password: Password123!' \
        -H 'customerUri: cst2019' \
        -H 'Accept: application/json'

##### Response fields

Path | Type | Description
--- | --- | ---
`id` | `Number` | Admin identifier
`type` | `String` | Admin account type
`forename` | `String` | Forename
`surname` | `String` | Surname
`email` | `String` | Email
`clientAdminCreator` | `Number` | Identifier of creator Admin
`login` | `String` | Login
`reseted` | `String` | Password reset date (if password has been reset).
`lastPasswordChange` | `String` | Last password change date
`passwordState` | `String` | Admin’s password state. Possible values: 'ALIVE', 'EXPIRED' and 'NEVER_EXPIRE'
`passwordExpiryDate` | `String` | Password expiration date
`authCert` | `String` | Authentication Certificate Serial Number
`created` | `String` | Admin creation date
`modified` | `String` | Admin last modification date
`deleted` | `String` | For deleted admins - the date when admin was deleted
`title` | `String` | Title or position
`relationship` | `String` | Administrator’s relationship to the company
`phone` | `String` | Telephone number
`city` | `String` | City / locality name
`state` | `String` | State or province name
`country` | `String` | Country
`zip` | `String` | Postal code
`locale` | `String` | Admin’s locale
`status` | `String` | Admin status. Deprecated. Value is always 'ACTIVE' for backward compatibility
`activeState` | `String` | Deprecated, see 'activeStatus' instead.
`activeStatus` | `String` | Active Status, possible values: ACTIVE and SUSPENDED
`credentials[]` | `Array` | Array of admin’s roles
`credentials[].role` | `String` | Admin’s role
`credentials[].orgId` | `Number` | Organization / Department ID
`privileges` | `Array` | Array of admin’s privileges
`failedAttempts` | `Number` | Number of failed attempts to log in
`failedDate` | `String` | Date of last failed attempt to log in

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 489

    {"id":902,"type":"API","status":"Active","forename":"client-admin-2026","surname":"client-admin-2026","login":"drao","email":"2027aa@nobody.sectigo.com","phone":"+123456789","created":"2025-08-15","modified":"2025-08-15","lastPasswordChange":"2025-08-15","credentials":[{"role":"DRAO_SSL","orgId":1134}],"passwordState":"ALIVE","passwordExpiryDate":"2025-11-15","authCert":"123456789AB","activeState":"Active","privileges":["allowManageDomains"],"failedAttempts":0,"activeStatus":"ACTIVE"}

#### Get IDP administrator details

##### Path parameters

Table 1. /api/admin/v1/{id}
Parameter | Description
--- | ---
`id` | ID of admin whose details are being requested

##### Example request

    $ curl 'https://cert-manager.com/api/admin/v1/908' -i -X GET \
        -H 'login: admin_customer2032' \
        -H 'password: Password123!' \
        -H 'customerUri: cst2032' \
        -H 'Accept: application/json'

##### Response fields

Path | Type | Description
--- | --- | ---
`id` | `Number` | Admin identifier
`type` | `String` | Admin account type
`forename` | `String` | Forename
`surname` | `String` | Surname
`email` | `String` | Email
`clientAdminCreator` | `Number` | Identifier of creator Admin
`identityProviderId` | `Number` | Identifier of assigned Identity Provider
`idp` | `String` | Name of assigned Identity Provider
`idpPersonId` | `String` | Person Identifier (EPPN) in scope of Identity Provider
`idpLoginInvited` | `String` | The date when login invitation was sent to the admin’s email.
`templateId` | `Number` | For IdP admins created automatically by IdP template - identifier of the parent Idp template.
`created` | `String` | Admin creation date
`modified` | `String` | Admin last modification date
`deleted` | `String` | For deleted admins - the date when admin was deleted
`title` | `String` | Title or position
`relationship` | `String` | Administrator’s relationship to the company
`phone` | `String` | Telephone number
`city` | `String` | City / locality name
`state` | `String` | State or province name
`country` | `String` | Country
`zip` | `String` | Postal code
`locale` | `String` | Admin’s locale
`status` | `String` | Admin status. Deprecated. Value is always 'ACTIVE' for backward compatibility
`activeState` | `String` | Deprecated, see 'activeStatus' instead.
`activeStatus` | `String` | Active Status, possible values: ACTIVE and SUSPENDED
`credentials[]` | `Array` | Array of admin’s roles
`credentials[].role` | `String` | Admin’s role
`credentials[].orgId` | `Number` | Organization / Department ID
`privileges` | `Array` | Array of admin’s privileges
`failedAttempts` | `Number` | Number of failed attempts to log in
`failedDate` | `String` | Date of last failed attempt to log in

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 441

    {"id":908,"type":"IDP","status":"Active","forename":"client-admin-2039","surname":"client-admin-2039","email":"2040aa@nobody.sectigo.com","phone":"+123456789","created":"2025-08-15","modified":"2025-08-15","credentials":[{"role":"DRAO_SSL","orgId":1137}],"activeState":"Active","privileges":["allowManageDomains"],"failedAttempts":0,"identityProviderId":79,"idp":"Test Idp","idpPersonId":"eppn-2039@nobody.ccmqa.com","activeStatus":"ACTIVE"}

#### Get SAS administrator details

##### Path parameters

Table 1. /api/admin/v1/{id}
Parameter | Description
--- | ---
`id` | ID of admin whose details are being requested

##### Example request

    $ curl 'https://cert-manager.com/api/admin/v1/912' -i -X GET \
        -H 'login: admin_customer2041' \
        -H 'password: Password123!' \
        -H 'customerUri: cst2041' \
        -H 'Accept: application/json'

##### Response fields

Path | Type | Description
--- | --- | ---
`id` | `Number` | Admin identifier
`type` | `String` | Admin account type
`forename` | `String` | Forename
`surname` | `String` | Surname
`email` | `String` | Email
`clientAdminCreator` | `Number` | Identifier of creator Admin
`created` | `String` | Admin creation date
`modified` | `String` | Admin last modification date
`deleted` | `String` | For deleted admins - the date when admin was deleted
`title` | `String` | Title or position
`relationship` | `String` | Administrator’s relationship to the company
`phone` | `String` | Telephone number
`city` | `String` | City / locality name
`state` | `String` | State or province name
`country` | `String` | Country
`zip` | `String` | Postal code
`locale` | `String` | Admin’s locale
`status` | `String` | Admin status. Deprecated. Value is always 'ACTIVE' for backward compatibility
`activeState` | `String` | Deprecated, see 'activeStatus' instead.
`activeStatus` | `String` | Active Status, possible values: ACTIVE and SUSPENDED
`credentials[]` | `Array` | Array of admin’s roles
`credentials[].role` | `String` | Admin’s role
`credentials[].orgId` | `Number` | Organization / Department ID
`privileges` | `Array` | Array of admin’s privileges
`failedAttempts` | `Number` | Number of failed attempts to log in
`failedDate` | `String` | Date of last failed attempt to log in

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 357

    {"id":912,"type":"SAS","status":"Active","forename":"client-admin-2048","surname":"client-admin-2048","email":"2049aa@nobody.sectigo.com","phone":"+123456789","created":"2025-08-15","modified":"2025-08-15","credentials":[{"role":"DRAO_SSL","orgId":1139}],"activeState":"Active","privileges":["allowManageDomains"],"failedAttempts":0,"activeStatus":"ACTIVE"}

#### Get available roles

Get roles the administrator can assign to other administrators who they may update.

##### Query parameters

Parameter | Description
--- | ---
`isForEdit` | Optional flag indicating that roles are intended for edit another admin.

##### Example request

    $ curl 'https://cert-manager.com/api/admin/v1/roles?isForEdit=false' -i -X GET \
        -H 'login: admin_customer2107' \
        -H 'password: Password123!' \
        -H 'customerUri: cst2107' \
        -H 'Accept: application/json'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | Admin roles. Possible values: 'MRAO', 'RAO_SSL', 'RAO_SMIME', 'RAO_DEVICE', 'RAO_CS', 'DRAO_SSL', 'DRAO_SMIME', 'DRAO_DEVICE', and 'DRAO_CS'

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 100

    ["MRAO","RAO_SSL","RAO_SMIME","RAO_CS","RAO_DEVICE","DRAO_SSL","DRAO_SMIME","DRAO_CS","DRAO_DEVICE"]

#### Get available privileges

Get privileges the administrator can assign to other administrators who they may update.

##### Query parameters

Parameter | Description
--- | ---
`role` | Admin’s role. Multiple roles can be provided.

##### Example request

    $ curl 'https://cert-manager.com/api/admin/v1/privileges?role=RAO_SSL&role=RAO_SMIME' -i -X GET \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer2068' \
        -H 'password: Password123!' \
        -H 'customerUri: cst2068' \
        -H 'Accept: application/json'

##### Response fields

Path | Type | Description
--- | --- | ---

`[].name`

`String`

Admin privileges. Possible names: 'allowCreate' - Add peer administrator; 'allowEdit' - Edit peer administrator; 'allowDelete' - Delete peer administrator; 'allowDCV' - Manage domain validations; 'autoApproveCertificates' - Automatically approve certificate requests; 'allowMsAdDiscovery' - MS agent management; 'allowKeyVault' - Download keys from Sectigo Key Vault; 'approveDomainDelegation' - Approve domain delegation; 'allowManageDomains' - Manage domains; 'sslRequest' - Request SSL certificates; 'sslRenew' - Renew SSL certificates; 'sslReplace' - Replace SSL certificates; 'sslRevoke' - Revoke SSL certificates; 'sslApprove' - Manage SSL certificate requests; 'sslManage' - Manage SSL certificates; 'clientCertRequest' - Request client certificates; 'clientCertRevoke' - Revoke client certificates; 'clientCertManage' - Manage client certificates; 'csRequest' - Request code signing certificates; 'csRevoke' - Revoke code signing certificates; 'csManage' - Manage code signing certificates; 'deviceRequest' - Request device certificates; 'deviceRenew' - Renew device certificates; 'deviceReplace' - Replace device certificates; 'deviceRevoke' - Revoke device certificates; 'deviceApprove' - Manage device certificate requests; 'deviceManage' - Manage device certificates; 'editOrganizationAndDepartment' - Edit organizations & departments; 'addOrganizationAndDepartments' - Add organizations & departments; 'addDepartments' - Add departments; 'editDepartments' - Edit departments; 'orgValidationManager' - Manage organization validations; 'viewUsage' - View usage; 'viewSubscriptions' - View subscriptions; 'manageSubscriptions' - Manage subscriptions; 'allowSslAutoApprove' - Deprecated (falls back to 'autoApproveCertificates'). Please, use 'autoApproveCertificates' privilege instead.; 'wsApiUseOnly' - Deprecated (replaced with new admin type - 'API').

`[].description` | `String` | Description for privilege.

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 1330

    [{"name":"addDepartments","description":"Add departments"},{"name":"allowCreate","description":"Add peer administrator"},{"name":"allowDelete","description":"Delete peer administrator"},{"name":"allowEdit","description":"Edit peer administrator"},{"name":"allowManageDomains","description":"Manage domains"},{"name":"approveDomainDelegation","description":"Approve domain delegation"},{"name":"autoApproveCertificates","description":"Automatically approve certificate requests"},{"name":"clientCertManage","description":"Manage client certificates"},{"name":"clientCertRequest","description":"Request client certificates"},{"name":"clientCertRevoke","description":"Revoke client certificates"},{"name":"editDepartments","description":"Edit departments"},{"name":"manageSubscriptions","description":"Manage subscriptions"},{"name":"orgValidationManager","description":"Manage organization validations"},{"name":"sslApprove","description":"Manage SSL certificate requests"},{"name":"sslRenew","description":"Renew SSL certificates"},{"name":"sslReplace","description":"Replace SSL certificates"},{"name":"sslRequest","description":"Request SSL certificates"},{"name":"sslRevoke","description":"Revoke SSL certificates"},{"name":"viewSubscriptions","description":"View subscriptions"},{"name":"viewUsage","description":"View usage"}]

#### Get list of Identity Providers

Get list of available Identity Providers that can be assigned to Standard, IdP administrators and IdP templates.

##### Example request

    $ curl 'https://cert-manager.com/api/admin/v1/idp' -i -X GET \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer2121' \
        -H 'password: Password123!' \
        -H 'customerUri: cst2121' \
        -H 'Accept: application/json'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | Array of customer’s IdP
`[].id` | `Number` | IdP ID
`[].name` | `String` | IdP name

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 29

    [{"id":90,"name":"Test Idp"}]

### Manage Administrators

Supported administrator types:

Type | Description
--- | ---
`STANDARD` | Admin with the ability to log in with username/password, authentication certificate, and/or IdP. Standard can be used with APIs if the password or authentication certificate is set.
`API` | Admin with the ability to use API only with username/password or authentication certificate.
`IDP` | Admin with the ability to log in to the UI only via IdP. They cannot use an API.
`SAS` | Admin created externally in Sectigo Authentication Service.

#### Create administrator

Create administrator account. This method supports different admin types (see "Supported administrator types").

#### Create standard administrator

Create Standard administrator account. Note: This administrator type will be used by default if type is not specified in request.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
type | String | Administrator type. 'STANDARD' | []
login | String | Administrator login (mandatory) | [Must match the regular expression `^([a-zA-Z0-9\!\@\_\.\-\+\'])*$`, Size must be between 3 and 128 inclusive]
password | String | Password (mandatory) | [Maximum length is 64 characters or can be empty]
certificateSerialNumber | String | Authentication Certificate Serial Number | [Must match the regular expression `(0x)?[0-9a-fA-F:]+`]
forename | String | Forename (mandatory) | [Must match the regular expression `((?!.[>|<|!|@|#|\$|\%|\|\|\(|\)|~|\?|/|\|\&|\_|\+|=|\"|:|;|,|\{|\}|\[|\]|||`].).)$`, Maximum length is 64 characters or can be empty]
surname | String | Surname (mandatory) | [Must match the regular expression `((?!.[>|<|!|@|#|\$|\%|\|\|\(|\)|~|\?|/|\|\&|\_|\+|=|\"|:|;|,|\{|\}|\[|\]|||`].).)$`, Maximum length is 64 characters or can be empty]
identityProviderId | Number | Identifier of Identity Provider. Please use the "Get list of identity providers" API to get available IdPs. Can be specified if authentication via IdP is required. | [Must be at least 1]
idpPersonId | String | Person Identifier for given Identity Provider (EPPN). Mandatory in case 'identityProviderId' is specified. | [Maximum length is 256 characters or can be empty]
email | String | Email address (mandatory) | [Must be a well-formed email address, Must not be null, Maximum length is 128 characters or can be empty]
title | String | Title or Position | [Maximum length is 64 characters or can be empty]
telephone | String | Telephone Number | [Must match the regular expression `[#|0-9|\(|\)|\-|\+| x]*`, Maximum length is 32 characters or can be empty]
street | String | Street Address | [Maximum length is 128 characters or can be empty]
locality | String | Locality name | [Maximum length is 128 characters or can be empty]
state | String | State name | [Maximum length is 128 characters or can be empty]
postalCode | String | Postal Code | [Must match the regular expression `^[a-zA-Z0-9\s-]{0,10}$`, Maximum length is 40 characters or can be empty]
country | String | Country | [Maximum length is 2 characters or can be empty]
relationship | String | Administrator’s relationship to the company | [Maximum length is 256 characters or can be empty]
privileges | Array | Privileges to assign. In order to get list of available privileges, please use the "Get available privileges" API. | []
credentials.[] | Array | Credentials to assign. In order to get list of available roles, please use the "Get available roles" API. | [Must not be empty]
credentials.[].role | String | Role | []
credentials.[].orgId | Number | Organization / department ID | []
activeStatus | String | Allowed values: ACTIVE, SUSPENDED | []

##### Example request

    $ curl 'https://cert-manager.com/api/admin/v1/' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer1854' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1854' \
        -H 'Accept: application/json' \
        -d '{"type":"STANDARD","login":"admin","email":"standard@test.test","forename":"Admin","surname":"Admin","certificateSerialNumber":"123456789AB","password":"Password#1234","privileges":["allowCreate","allowDelete","allowEdit"],"credentials":[{"role":"RAO_SSL","orgId":1088}],"identityProviderId":56,"idpPersonId":"eppn@test","activeStatus":"ACTIVE"}'

##### Response headers

Name | Description
--- | ---
`Location` | URL location of created admin

##### Example response

    HTTP/1.1 201 Created
    Location: https://cert-manager.com/api/admin/v1/824

#### Create API administrator

Create API administrator account.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
type | String | Administrator type. 'API' | []
login | String | Administrator login (mandatory) | [Must match the regular expression `^([a-zA-Z0-9\!\@\_\.\-\+\'])*$`, Size must be between 3 and 128 inclusive]
password | String | Password (mandatory) | [Maximum length is 64 characters or can be empty]
certificateSerialNumber | String | Authentication Certificate Serial Number | [Must match the regular expression `(0x)?[0-9a-fA-F:]+`]
forename | String | Forename (mandatory) | [Must match the regular expression `((?!.[>|<|!|@|#|\$|\%|\|\|\(|\)|~|\?|/|\|\&|\_|\+|=|\"|:|;|,|\{|\}|\[|\]|||`].).)$`, Maximum length is 64 characters or can be empty]
surname | String | Surname (mandatory) | [Must match the regular expression `((?!.[>|<|!|@|#|\$|\%|\|\|\(|\)|~|\?|/|\|\&|\_|\+|=|\"|:|;|,|\{|\}|\[|\]|||`].).)$`, Maximum length is 64 characters or can be empty]
email | String | Email address (mandatory) | [Must be a well-formed email address, Must not be null, Maximum length is 128 characters or can be empty]
title | String | Title or Position | [Maximum length is 64 characters or can be empty]
telephone | String | Telephone Number | [Must match the regular expression `[#|0-9|\(|\)|\-|\+| x]*`, Maximum length is 32 characters or can be empty]
street | String | Street Address | [Maximum length is 128 characters or can be empty]
locality | String | Locality name | [Maximum length is 128 characters or can be empty]
state | String | State name | [Maximum length is 128 characters or can be empty]
postalCode | String | Postal Code | [Must match the regular expression `^[a-zA-Z0-9\s-]{0,10}$`, Maximum length is 40 characters or can be empty]
country | String | Country | [Maximum length is 2 characters or can be empty]
relationship | String | Administrator’s relationship to the company | [Maximum length is 256 characters or can be empty]
privileges | Array | Privileges to assign. In order to get list of available privileges, please use the "Get available privileges" API. | []
credentials.[] | Array | Credentials to assign. In order to get list of available roles, please use the "Get available roles" API. | [Must not be empty]
credentials.[].role | String | Role | []
credentials.[].orgId | Number | Organization / department ID | []
activeStatus | String | Allowed values: ACTIVE, SUSPENDED | []

##### Example request

    $ curl 'https://cert-manager.com/api/admin/v1/' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer1865' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1865' \
        -H 'Accept: application/json' \
        -d '{"type":"API","login":"admin","email":"api@test.test","forename":"Admin","surname":"Admin","certificateSerialNumber":"123456789AB","password":"Password#1234","privileges":["allowCreate","allowDelete","allowEdit"],"credentials":[{"role":"RAO_SSL","orgId":1091}],"activeStatus":"ACTIVE"}'

##### Response headers

Name | Description
--- | ---
`Location` | URL location of created admin

##### Example response

    HTTP/1.1 201 Created
    Location: https://cert-manager.com/api/admin/v1/830

#### Create IDP administrator

Create IdP administrator account that is not linked to an IdP Template. After admin is created, login invitation email is sent automatically to the specified admin’s email.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
type | String | Administrator type. 'IDP' | []
forename | String | Forename | [Must match the regular expression `((?!.[>|<|!|@|#|\$|\%|\|\|\(|\)|~|\?|/|\|\&|\_|\+|=|\"|:|;|,|\{|\}|\[|\]|||`].).)$`, Maximum length is 64 characters or can be empty]
surname | String | Surname | [Must match the regular expression `((?!.[>|<|!|@|#|\$|\%|\|\|\(|\)|~|\?|/|\|\&|\_|\+|=|\"|:|;|,|\{|\}|\[|\]|||`].).)$`, Maximum length is 64 characters or can be empty]
email | String | Email address (mandatory) | [Must be a well-formed email address, Must not be null, Maximum length is 128 characters or can be empty]
title | String | Title or Position | [Maximum length is 64 characters or can be empty]
telephone | String | Telephone Number | [Must match the regular expression `[#|0-9|\(|\)|\-|\+| x]*`, Maximum length is 32 characters or can be empty]
street | String | Street Address | [Maximum length is 128 characters or can be empty]
locality | String | Locality name | [Maximum length is 128 characters or can be empty]
state | String | State name | [Maximum length is 128 characters or can be empty]
postalCode | String | Postal Code | [Must match the regular expression `^[a-zA-Z0-9\s-]{0,10}$`, Maximum length is 40 characters or can be empty]
country | String | Country | [Maximum length is 2 characters or can be empty]
relationship | String | Administrator’s relationship to the company | [Maximum length is 256 characters or can be empty]
privileges | Array | Privileges to assign. In order to get list of available privileges, please use the "Get available privileges" API. | []
credentials.[] | Array | Credentials to assign. In order to get list of available roles, please use the "Get available roles" API. | [Must not be empty]
credentials.[].role | String | Role | []
credentials.[].orgId | Number | Organization / department ID | []
activeStatus | String | Allowed values: ACTIVE, SUSPENDED | []

##### Example request

    $ curl 'https://cert-manager.com/api/admin/v1/' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer1876' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1876' \
        -H 'Accept: application/json' \
        -d '{"type":"IDP","email":"idp@test.test","forename":"Admin","surname":"Admin","privileges":["allowCreate","allowDelete","allowEdit"],"credentials":[{"role":"RAO_SSL","orgId":1094}],"activeStatus":"ACTIVE"}'

##### Response headers

Name | Description
--- | ---
`Location` | URL location of created admin

##### Example response

    HTTP/1.1 201 Created
    Location: https://cert-manager.com/api/admin/v1/834

#### Create SAS administrator

Create Sectigo Authentication Service administrator account.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
type | String | Administrator type. 'SAS' | []
forename | String | Forename | [Must match the regular expression `((?!.[>|<|!|@|#|\$|\%|\|\|\(|\)|~|\?|/|\|\&|\_|\+|=|\"|:|;|,|\{|\}|\[|\]|||`].).)$`, Maximum length is 64 characters or can be empty]
surname | String | Surname | [Must match the regular expression `((?!.[>|<|!|@|#|\$|\%|\|\|\(|\)|~|\?|/|\|\&|\_|\+|=|\"|:|;|,|\{|\}|\[|\]|||`].).)$`, Maximum length is 64 characters or can be empty]
email | String | Email address (mandatory) | [Must be a well-formed email address, Must not be null, Maximum length is 128 characters or can be empty]
title | String | Title or Position | [Maximum length is 64 characters or can be empty]
telephone | String | Telephone Number | [Must match the regular expression `[#|0-9|\(|\)|\-|\+| x]*`, Maximum length is 32 characters or can be empty]
street | String | Street Address | [Maximum length is 128 characters or can be empty]
locality | String | Locality name | [Maximum length is 128 characters or can be empty]
state | String | State name | [Maximum length is 128 characters or can be empty]
postalCode | String | Postal Code | [Must match the regular expression `^[a-zA-Z0-9\s-]{0,10}$`, Maximum length is 40 characters or can be empty]
country | String | Country | [Maximum length is 2 characters or can be empty]
relationship | String | Administrator’s relationship to the company | [Maximum length is 256 characters or can be empty]
privileges | Array | Privileges to assign. In order to get list of available privileges, please use the "Get available privileges" API. | []
credentials.[] | Array | Credentials to assign. In order to get list of available roles, please use the "Get available roles" API. | [Must not be empty]
credentials.[].role | String | Role | []
credentials.[].orgId | Number | Organization / department ID | []
activeStatus | String | Allowed values: ACTIVE, SUSPENDED | []

##### Example request

    $ curl 'https://cert-manager.com/api/admin/v1/' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer1883' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1883' \
        -H 'Accept: application/json' \
        -d '{"type":"SAS","email":"sas@test.test","forename":"Admin","surname":"Admin","privileges":["allowCreate","allowDelete","allowEdit"],"credentials":[{"role":"RAO_SSL","orgId":1096}],"activeStatus":"ACTIVE"}'

##### Response headers

Name | Description
--- | ---
`Location` | URL location of created admin

##### Example response

    HTTP/1.1 201 Created
    Location: https://cert-manager.com/api/admin/v1/838

#### Update administrator

Update administrator account. Fields that are not changed can be omitted. This method also allows you to change admin type, available transitions are:

Current Type | Allowed Types
--- | ---
`STANDARD` | `API, IDP, SAS`
`API` | `STANDARD`
`IDP` | `STANDARD, SAS`
`SAS` | `STANDARD`

Note: Changing of admin type may require additional fields to be specified.

#### Update standard administrator

Update Standard administrator account.

##### Path parameters

Table 1. /api/admin/v1/{id}
Parameter | Description
--- | ---
`id` | ID of admin being updated

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
type | String | Administrator type. 'STANDARD' | []
login | String | Administrator login | [Must be null or not blank, Must match the regular expression `^([a-zA-Z0-9\!\@\_\.\-\+\'])*$`, Size must be between 3 and 128 inclusive]
password | String | Password (mandatory) | [Maximum length is 64 characters or can be empty]
certificateSerialNumber | String | Authentication Certificate Serial Number | [Must match the regular expression `(0x)?[0-9a-fA-F:]+`]
forename | String | Forename | [Must be null or not blank, Must match the regular expression `((?!.[>|<|!|@|#|\$|\%|\|\|\(|\)|~|\?|/|\|\&|\_|\+|=|\"|:|;|,|\{|\}|\[|\]|||`].).)$`, Maximum length is 64 characters or can be empty]
surname | String | Surname | [Must be null or not blank, Must match the regular expression `((?!.[>|<|!|@|#|\$|\%|\|\|\(|\)|~|\?|/|\|\&|\_|\+|=|\"|:|;|,|\{|\}|\[|\]|||`].).)$`, Maximum length is 64 characters or can be empty]
identityProviderId | Number | Identifier of Identity Provider. Please use the "Get list of identity providers" API to get available IdPs. Can be specified if authentication via IdP is required. | [Must be at least 1]
idpPersonId | String | Person Identifier for given Identity Provider (EPPN). Mandatory in case 'identityProviderId' is specified. | [Maximum length is 256 characters or can be empty]
email | String | Email address | [Must be a well-formed email address, Must be null or not blank, Maximum length is 128 characters or can be empty]
title | String | Title or Position | [Maximum length is 64 characters or can be empty]
telephone | String | Telephone Number | [Must match the regular expression `[#|0-9|\(|\)|\-|\+| x]*`, Maximum length is 32 characters or can be empty]
street | String | Street Address | [Maximum length is 128 characters or can be empty]
locality | String | Locality name | [Maximum length is 128 characters or can be empty]
state | String | State name | [Maximum length is 128 characters or can be empty]
postalCode | String | Postal Code | [Must match the regular expression `^[a-zA-Z0-9\s-]{0,10}$`, Maximum length is 40 characters or can be empty]
country | String | Country | [Maximum length is 2 characters or can be empty]
relationship | String | Administrator’s relationship to the company | [Maximum length is 256 characters or can be empty]
privileges | Array | Privileges to assign. In order to get list of available privileges, please use the "Get available privileges" API. | []
credentials.[] | Array | Credentials to assign. In order to get list of available roles, please use the "Get available roles" API. | [Must be null or not empty]
credentials.[].role | String | Role | []
credentials.[].orgId | Number | Organization / department ID | []
activeStatus | String | Allowed values: ACTIVE, SUSPENDED | []

##### Example request

    $ curl 'https://cert-manager.com/api/admin/v1/959' -i -X PUT \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer2147' \
        -H 'password: Password123!' \
        -H 'customerUri: cst2147' \
        -H 'Accept: application/json' \
        -d '{"type":"STANDARD","login":"rao","email":"2155aa@nobody.sectigo.com","forename":"RAO SSL","surname":"Admin","telephone":"+1 (888) 266-6361","certificateSerialNumber":"123456789AB","password":"Password#1234","privileges":["allowCreate","allowEdit","allowDelete"],"credentials":[{"role":"RAO_SSL","orgId":1168}],"identityProviderId":94,"idpPersonId":"new.eppn@test","activeStatus":"SUSPENDED"}'

##### Example response

    HTTP/1.1 200 OK

#### Update API administrator

Update API administrator account.

##### Path parameters

Table 1. /api/admin/v1/{id}
Parameter | Description
--- | ---
`id` | ID of admin being updated

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
type | String | Administrator type. 'API' | []
login | String | Administrator login | [Must be null or not blank, Must match the regular expression `^([a-zA-Z0-9\!\@\_\.\-\+\'])*$`, Size must be between 3 and 128 inclusive]
password | String | Password | [Maximum length is 64 characters or can be empty]
certificateSerialNumber | String | Authentication Certificate Serial Number | [Must match the regular expression `(0x)?[0-9a-fA-F:]+`]
forename | String | Forename | [Must be null or not blank, Must match the regular expression `((?!.[>|<|!|@|#|\$|\%|\|\|\(|\)|~|\?|/|\|\&|\_|\+|=|\"|:|;|,|\{|\}|\[|\]|||`].).)$`, Maximum length is 64 characters or can be empty]
surname | String | Surname | [Must be null or not blank, Must match the regular expression `((?!.[>|<|!|@|#|\$|\%|\|\|\(|\)|~|\?|/|\|\&|\_|\+|=|\"|:|;|,|\{|\}|\[|\]|||`].).)$`, Maximum length is 64 characters or can be empty]
email | String | Email address | [Must be a well-formed email address, Must be null or not blank, Maximum length is 128 characters or can be empty]
title | String | Title or Position | [Maximum length is 64 characters or can be empty]
telephone | String | Telephone Number | [Must match the regular expression `[#|0-9|\(|\)|\-|\+| x]*`, Maximum length is 32 characters or can be empty]
street | String | Street Address | [Maximum length is 128 characters or can be empty]
locality | String | Locality name | [Maximum length is 128 characters or can be empty]
state | String | State name | [Maximum length is 128 characters or can be empty]
postalCode | String | Postal Code | [Must match the regular expression `^[a-zA-Z0-9\s-]{0,10}$`, Maximum length is 40 characters or can be empty]
country | String | Country | [Maximum length is 2 characters or can be empty]
relationship | String | Administrator’s relationship to the company | [Maximum length is 256 characters or can be empty]
privileges | Array | Privileges to assign. In order to get list of available privileges, please use the "Get available privileges" API. | []
credentials.[] | Array | Credentials to assign. In order to get list of available roles, please use the "Get available roles" API. | [Must be null or not empty]
credentials.[].role | String | Role | []
credentials.[].orgId | Number | Organization / department ID | []
activeStatus | String | Allowed values: ACTIVE, SUSPENDED | []

##### Example request

    $ curl 'https://cert-manager.com/api/admin/v1/965' -i -X PUT \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer2160' \
        -H 'password: Password123!' \
        -H 'customerUri: cst2160' \
        -H 'Accept: application/json' \
        -d '{"type":"API","login":"rao","email":"2168aa@nobody.sectigo.com","forename":"RAO SSL","surname":"Admin","telephone":"+1 (888) 266-6361","certificateSerialNumber":"123456789AB","password":"Password#1234","privileges":["allowCreate","allowEdit","allowDelete"],"credentials":[{"role":"RAO_SSL","orgId":1171}],"activeStatus":"SUSPENDED"}'

##### Example response

    HTTP/1.1 200 OK

#### Update IDP administrator

Update IdP administrator account.

Note: If IdP administrator has IdP template assigned, then modification is limited to the personal fields only; privileges, credentials and Identity Provider are managed by the parent IdP template.

##### Path parameters

Table 1. /api/admin/v1/{id}
Parameter | Description
--- | ---
`id` | ID of admin being updated

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
type | String | Administrator type. 'IDP' | []
forename | String | Forename | [Must be null or not blank, Must match the regular expression `((?!.[>|<|!|@|#|\$|\%|\|\|\(|\)|~|\?|/|\|\&|\_|\+|=|\"|:|;|,|\{|\}|\[|\]|||`].).)$`, Maximum length is 64 characters or can be empty]
surname | String | Surname | [Must be null or not blank, Must match the regular expression `((?!.[>|<|!|@|#|\$|\%|\|\|\(|\)|~|\?|/|\|\&|\_|\+|=|\"|:|;|,|\{|\}|\[|\]|||`].).)$`, Maximum length is 64 characters or can be empty]
identityProviderId | Number | Identifier of Identity Provider. Please use the "Get list of identity providers" API to get available IdPs. Can be used to change assigned Identity Provider for activated IdP administrators. | [Must be at least 1]
idpPersonId | String | Person Identifier for given Identity Provider (EPPN). Mandatory in case 'identityProviderId' is specified. | [Maximum length is 256 characters or can be empty]
email | String | Email address | [Must be a well-formed email address, Must be null or not blank, Maximum length is 128 characters or can be empty]
title | String | Title or Position | [Maximum length is 64 characters or can be empty]
telephone | String | Telephone Number | [Must match the regular expression `[#|0-9|\(|\)|\-|\+| x]*`, Maximum length is 32 characters or can be empty]
street | String | Street Address | [Maximum length is 128 characters or can be empty]
locality | String | Locality name | [Maximum length is 128 characters or can be empty]
state | String | State name | [Maximum length is 128 characters or can be empty]
postalCode | String | Postal Code | [Must match the regular expression `^[a-zA-Z0-9\s-]{0,10}$`, Maximum length is 40 characters or can be empty]
country | String | Country | [Maximum length is 2 characters or can be empty]
relationship | String | Administrator’s relationship to the company | [Maximum length is 256 characters or can be empty]
privileges | Array | Privileges to assign. In order to get list of available privileges, please use the "Get available privileges" API. | []
credentials.[] | Array | Credentials to assign. In order to get list of available roles, please use the "Get available roles" API. | [Must be null or not empty]
credentials.[].role | String | Role | []
credentials.[].orgId | Number | Organization / department ID | []
activeStatus | String | Allowed values: ACTIVE, SUSPENDED | []

##### Example request

    $ curl 'https://cert-manager.com/api/admin/v1/971' -i -X PUT \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer2173' \
        -H 'password: Password123!' \
        -H 'customerUri: cst2173' \
        -H 'Accept: application/json' \
        -d '{"type":"IDP","email":"2181aa@nobody.sectigo.com","forename":"RAO SSL","surname":"Admin","telephone":"+1 (888) 266-6361","privileges":["allowCreate","allowEdit","allowDelete"],"credentials":[{"role":"RAO_SSL","orgId":1174}],"activeStatus":"SUSPENDED"}'

##### Example response

    HTTP/1.1 200 OK

#### Update SAS administrator

Update Sectigo Authentication Service administrator account.

##### Path parameters

Table 1. /api/admin/v1/{id}
Parameter | Description
--- | ---
`id` | ID of admin being updated

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
type | String | Administrator type. 'SAS' | []
forename | String | Forename | [Must be null or not blank, Must match the regular expression `((?!.[>|<|!|@|#|\$|\%|\|\|\(|\)|~|\?|/|\|\&|\_|\+|=|\"|:|;|,|\{|\}|\[|\]|||`].).)$`, Maximum length is 64 characters or can be empty]
surname | String | Surname | [Must be null or not blank, Must match the regular expression `((?!.[>|<|!|@|#|\$|\%|\|\|\(|\)|~|\?|/|\|\&|\_|\+|=|\"|:|;|,|\{|\}|\[|\]|||`].).)$`, Maximum length is 64 characters or can be empty]
email | String | Email address | [Must be a well-formed email address, Must be null or not blank, Maximum length is 128 characters or can be empty]
title | String | Title or Position | [Maximum length is 64 characters or can be empty]
telephone | String | Telephone Number | [Must match the regular expression `[#|0-9|\(|\)|\-|\+| x]*`, Maximum length is 32 characters or can be empty]
street | String | Street Address | [Maximum length is 128 characters or can be empty]
locality | String | Locality name | [Maximum length is 128 characters or can be empty]
state | String | State name | [Maximum length is 128 characters or can be empty]
postalCode | String | Postal Code | [Must match the regular expression `^[a-zA-Z0-9\s-]{0,10}$`, Maximum length is 40 characters or can be empty]
country | String | Country | [Maximum length is 2 characters or can be empty]
relationship | String | Administrator’s relationship to the company | [Maximum length is 256 characters or can be empty]
privileges | Array | Privileges to assign. In order to get list of available privileges, please use the "Get available privileges" API. | []
credentials.[] | Array | Credentials to assign. In order to get list of available roles, please use the "Get available roles" API. | [Must be null or not empty]
credentials.[].role | String | Role | []
credentials.[].orgId | Number | Organization / department ID | []
activeStatus | String | Allowed values: ACTIVE, SUSPENDED | []

##### Example request

    $ curl 'https://cert-manager.com/api/admin/v1/975' -i -X PUT \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer2182' \
        -H 'password: Password123!' \
        -H 'customerUri: cst2182' \
        -H 'Accept: application/json' \
        -d '{"type":"SAS","email":"2190aa@nobody.sectigo.com","forename":"RAO SSL","surname":"Admin","telephone":"+1 (888) 266-6361","privileges":["allowCreate","allowEdit","allowDelete"],"credentials":[{"role":"RAO_SSL","orgId":1176}],"activeStatus":"SUSPENDED"}'

##### Example response

    HTTP/1.1 200 OK

#### Unlink IdP administrator from template

This method removes the link to IdP template for IdP administrator, thus admin will no longer be managed by it.

##### Path parameters

Table 1. /api/admin/v1/{id}/unlink
Parameter | Description
--- | ---
`id` | ID of IdP admin to unlink from IdP template.

##### Example request

    $ curl 'https://cert-manager.com/api/admin/v1/954/unlink' -i -X PUT \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer2137' \
        -H 'password: Password123!' \
        -H 'customerUri: cst2137' \
        -H 'Accept: application/json'

##### Example response

    HTTP/1.1 204 No Content

#### Delete administrator

Delete administrator account.

##### Path parameters

Table 1. /api/admin/v1/{id}
Parameter | Description
--- | ---
`id` | ID of admin being deleted

##### Query parameters

Parameter | Description
--- | ---

`replacingRequesterId`

Optional, specifies ID of the client administrator to be assigned as certificate requester instead of the one being deleted. If omitted, currently assigned requester is retained. The replacing requester should have type other than IdP Template and have Id that differs from Id of the client administrator being deleted. Use respective list API method with necessary filtering options to get suitable client administrators.

##### Example request

    $ curl 'https://cert-manager.com/api/admin/v1/886?replacingRequesterId=885' -i -X DELETE \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer1983' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1983'

##### Example response

    HTTP/1.1 204 No Content

#### Get password state

State of administrator password. Available for Standard and API administrators.

##### Example request

    $ curl 'https://cert-manager.com/api/admin/v1/password' -i -X GET \
        -H 'login: admin_customer2061' \
        -H 'password: Password123!' \
        -H 'customerUri: cst2061' \
        -H 'Accept: application/json'

##### Response fields

Path | Type | Description
--- | --- | ---
`state` | `String` | Admin password state. Possible values: 'ALIVE', 'EXPIRED' and 'NEVER_EXPIRE'
`expirationDate` | `String` | Password expiration date.

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 47

    {"expirationDate":"2025-11-15","state":"ALIVE"}

#### Change password

Change of administrator password. Available for Standard and API administrators.

##### Success case

###### Example request

    $ curl 'https://cert-manager.com/api/admin/v1/changepassword' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer1840' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1840' \
        -H 'Accept: application/json' \
        -d '{"newPassword":"newPass122345"}'

###### Example response

    HTTP/1.1 204 No Content

##### Failed case

###### Example request

    $ curl 'https://cert-manager.com/api/admin/v1/changepassword' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer1847' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1847' \
        -H 'Accept: application/json' \
        -d '{"newPassword":"new"}'

###### Response fields

Path | Type | Description
--- | --- | ---
`code` | `Number` | Code of error if error has occurred
`description` | `String` | Error message

###### Example response

    HTTP/1.1 400 Bad Request
    Content-Type: application/json
    Content-Length: 209

    {"code":-7306,"description":"Password policy violated: Password must contain 1 or more uppercase characters. Password must contain 1 or more digit characters. Password must be 8 or more characters in length."}

## Template Administrators

Supported administrator types:

Type | Description
--- | ---
`IDP_TEMPLATE` | IdP admins are created automatically from a template. The IdP attribute mapping controls which template an admin will be linked to.

### View IdP templates

#### List IdP templates

##### Query parameters

Parameter | Description
--- | ---
`size` | Number of returned entries
`position` | the first position (entry) to return from the results of the query
`name` | Filter by name
`orgId` | Filter by organization ID
`identityProviderId` | Filter by Identity Provider ID

##### Example request

    $ curl 'https://cert-manager.com/api/admin-template/v1?size=10&position=0' -i -X GET \
        -H 'login: admin_customer2397' \
        -H 'password: Password123!' \
        -H 'customerUri: cst2397'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | Array of requested client admins
`[].id` | `Number` | IdP template admin ID
`[].name` | `String` | IdP template name
`[].identityProviderId` | `Number` | ID of assigned Identity Provider.

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 2
    Content-Type: application/json
    Content-Length: 129

    [{"id":1077,"name":"client-admin-2403","identityProviderId":126},{"id":1076,"name":"client-admin-2402","identityProviderId":126}]

#### Get IdP template details

Get detailed information about IdP template.

### Manage IdP templates

#### Create IdP template

Create IdP Template.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Template name. | [Must match the regular expression `((?!.[>|<|!|@|#|\$|\%|\|\|\(|\)|~|\?|/|\|\&|\_|\+|=|\"|:|;|,|\{|\}|\[|\]|||`].).)$`, Must not be blank, Maximum length is 64 characters or can be empty]
privileges | Array | Privileges that will be assigned to the admin, automatically created by this template. In order to get available privileges, please use "Get available privileges" method from the "Administrators" API. | []
credentials.[] | Array | Credentials that will be assigned to the admin, automatically created by this template. In order to get available roles, please use "Get available roles" method from the "Administrators" API. | [Must not be empty]
credentials.[].role | String | Role | []
credentials.[].orgId | Number | Organization ID | []
identityProviderId | Number | Identity Provider ID that IdP Template can be used with. | [Must be at least 1]
idpMappingRules | Array | Mapping rules that should be applied in order to check whether user’s IdP attributes match the template.Should always include "groups" attribute. | [Must not be empty]
idpMappingRules.[].attribute | String | IdP attribute name. | []
idpMappingRules.[].matchType | String | Matching type. Available options: MATCHES (default), CONTAINS. | []
idpMappingRules.[].values | Array | Allowed values that IdP attribute value should match in whole or in part, depending of specified "matchType". Note: in case of collection attribute, rule is applied on its items - if at least one meets the rule, it will be considered as matched. | []

##### Example request

    $ curl 'https://cert-manager.com/api/admin-template/v1/' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer2281' \
        -H 'password: Password123!' \
        -H 'customerUri: cst2281' \
        -H 'Accept: application/json' \
        -d '{"name":"RAO SSL IdP Template","privileges":["editOrganizationAndDepartment","autoApproveCertificates"],"credentials":[{"role":"RAO_SSL","orgId":1201}],"identityProviderId":109,"idpMappingRules":[{"attribute":"groups","matchType":"MATCHES","values":["RAO SSL"]}]}'

##### Response headers

Name | Description
--- | ---
`Location` | URL location of created IdP Template admin.

##### Example response

    HTTP/1.1 201 Created
    Location: https://cert-manager.com/api/admin-template/v1/1019

#### Update IdP template

Update IdP Template. Fields that are not changed can be omitted in request. Please note that requested changes (except name) are automatically applied to all IdP admins assigned to this template. In order to get a list of administrators that are currently assigned to this template, please use "List administrators" method from the "Administrators" API with filter by "templateId" parameter.

##### Path parameters

Table 1. /api/admin-template/v1/{id}
Parameter | Description
--- | ---
`id` | ID of IdP admin template being updated

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Template name. | [Must be null or not blank, Must match the regular expression `((?!.[>|<|!|@|#|\$|\%|\|\|\(|\)|~|\?|/|\|\&|\_|\+|=|\"|:|;|,|\{|\}|\[|\]|||`].).)$`, Maximum length is 64 characters or can be empty]
privileges | Array | Privileges that will be assigned to the admin, automatically created by this template. In order to get available privileges, please use "Get available privileges" method from the "Administrators" API. | []
credentials.[] | Array | Credentials that will be assigned to the admin, automatically created by this template. In order to get available roles, please use "Get available roles" method from the "Administrators" API. | [Must be null or not empty]
credentials.[].role | String | Role | []
credentials.[].orgId | Number | Organization ID | []
identityProviderId | Number | Identity Provider ID that IdP Template can be used with. | [Must be at least 1]
idpMappingRules | Array | Mapping rules that should be applied in order to check whether user’s IdP attributes match the template.Should always include "groups" attribute. | [Must be null or not empty]
idpMappingRules.[].attribute | String | IdP attribute name. | []
idpMappingRules.[].matchType | String | Matching type. Available options: MATCHES (default), CONTAINS. | []
idpMappingRules.[].values | Array | Allowed values that IdP attribute value should match in whole or in part, depending of specified "matchType". Note: in case of collection attribute, rule is applied on its items - if at least one meets the rule, it will be considered as matched. | []

##### Example request

    $ curl 'https://cert-manager.com/api/admin-template/v1/1080' -i -X PUT \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer2404' \
        -H 'password: Password123!' \
        -H 'customerUri: cst2404' \
        -H 'Accept: application/json' \
        -d '{"name":"Updated client-admin-2409","privileges":["allowCreate","allowEdit","allowDelete"],"credentials":[{"role":"RAO_SSL","orgId":1220}],"identityProviderId":127,"idpMappingRules":[{"attribute":"groups","matchType":"MATCHES","values":["RAO SSL"]}]}'

##### Example response

    HTTP/1.1 200 OK

#### Delete IdP template

Delete IdP template. By default, all related administrators will be deleted automatically with the template. It is also possible to unlink all related administrators from this template. In order to get a list of administrators that are currently assigned to this template, please use "List administrators" method from the "Administrators" API with filter by "templateId" parameter.

##### Path parameters

Table 1. /api/admin-template/v1/{id}
Parameter | Description
--- | ---
`id` | ID of IdP template being deleted

##### Query parameters

Parameter | Description
--- | ---

`relatedAdminsAction`

Option that specify required action for the related IdP admins that were created based on this template and still assigned to it. Allowed values: delete, unlink. Default value is 'unlink', which means that assigned admins will be unlinked from this template and will no longer be managed by it. When 'delete' action is specified, then related admins will be deleted together with this template.

`replacingRequesterId`

Optional, specifies ID of the client administrator to be assigned as certificate requester instead of those being deleted. If omitted, currently assigned requesters are retained. Has no effect if 'unlink' or no value is passed to 'relatedAdminsAction' request parameter. The replacing requester should have type other than IdP Template and have no parent template or have parent template whose Id differs from Id of the template being deleted. Use respective list API method with necessary filtering options to get suitable client administrators.

##### Example request

    $ curl 'https://cert-manager.com/api/admin-template/v1/1054?relatedAdminsAction=DELETE&replacingRequesterId=1053' -i -X DELETE \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer2349' \
        -H 'password: Password123!' \
        -H 'customerUri: cst2349'

##### Example response

    HTTP/1.1 204 No Content

## Persons

### View persons

#### List persons

##### Query parameters

Parameter | Description
--- | ---
`position` | the first position (entry) to return from the results of the query
`size` | Count of entries
`name` | Person name (url encoded)
`organizationId` | Organization ID
`email` | Person email
`commonName` | Person commonName
`phone` | Person phone
`secondaryEmail` | Person Secondary Email

##### Example request

    $ curl 'https://cert-manager.com/api/person/v1?position=0&size=10&name=Tester&organizationId=3218&email=21583_.email%40domain.com&commonName=Tester&secondaryEmail=alt1.email%40domain.com&phone=3456789' -i -X GET \
        -H 'login: admin_customer21580' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | List of persons
`[].id` | `Number` | Person ID
`[].organizationId` | `Number` | Organization ID
`[].email` | `String` | Person e-mail
`[].firstName` | `String` | Person firstname
`[].lastName` | `String` | Person lastname
`[].middleName` | `String` | Person middlename
`[].validationType` | `String` | Person validation type
`[].phone` | `String` | Person Phone
`[].commonName` | `String` | Person CommonName
`[].secondaryEmails` | `Array` | Person Secondary Emails
`[].eppn` | `String` | Person EPPN
`[].upn` | `String` | Person UPN
`[].created` | `String` | Created date
`[].createdBy` | `String` | Name of the administrator who added the person
`[].modified` | `String` | Modified date
`[].modifiedBy` | `String` | Name of the administrator who last modified the person

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 1
    Content-Type: application/json
    Content-Length: 351

    [{"id":165,"firstName":"Tester","middleName":"","lastName":"","email":"21583_.email@domain.com","organizationId":3218,"validationType":"STANDARD","phone":"123456789","secondaryEmails":["alt1.email@domain.com","alt2.email@domain.com"],"commonName":"Tester","eppn":"","upn":"","created":"2025-08-15T09:22:52.924Z","modified":"2025-08-15T09:22:52.935Z"}]

##### Response headers

Name | Description
--- | ---
`X-Total-Count` | Contains total number of persons available according to the filtering applied

#### Find person by email

Will return ID for a person with given email.

##### Path parameters

Table 1. /api/person/v1/id/byEmail/{email}
Parameter | Description
--- | ---
`email` | Person e-mail. Must be formatted as valid e-mail string. Also might need to be properly encoded as required by URL syntax standard. For example, the '@' character should be replaced with the %40 code, '.' - with %2E and so on.

##### Example request

    $ curl 'https://cert-manager.com/api/person/v1/id/byEmail/21562_.email@domain.com' -i -X GET \
        -H 'login: admin_customer21559' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -H 'Accept: application/json'

##### Response fields

Path | Type | Description
--- | --- | ---
`personId` | `Number` | Person ID

##### Example response

    HTTP/1.1 200 OK
    Content-Disposition: inline;filename=f.txt
    Content-Type: application/json
    Content-Length: 16

    {"personId":162}

#### Get person details

##### Path parameters

Table 1. /api/person/v1/{id}
Parameter | Description
--- | ---
`id` | Person ID

##### Example request

    $ curl 'https://cert-manager.com/api/person/v1/161' -i -X GET \
        -H 'login: admin_customer21552' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -H 'Accept: application/json;charset=UTF-8'

##### Response fields

Path | Type | Description
--- | --- | ---
`id` | `Number` | Person ID
`organizationId` | `Number` | Organization ID
`email` | `String` | Person e-mail
`firstName` | `String` | Person firstname
`lastName` | `String` | Person lastname
`middleName` | `String` | Person middlename
`validationType` | `String` | Person validation type. Values: [STANDARD, HIGH]
`phone` | `String` | Person Phone
`commonName` | `String` | Person CommonName
`secondaryEmails` | `Array` | Person Secondary Emails
`eppn` | `String` | Person EPPN
`upn` | `String` | Person UPN
`created` | `String` | Created date
`createdBy` | `String` | Name of the administrator who added the person
`modified` | `String` | Modified date
`modifiedBy` | `String` | Name of the administrator who last modified the person

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json;charset=UTF-8
    Content-Length: 349

    {"id":161,"firstName":"Tester","middleName":"","lastName":"","email":"21555_.email@domain.com","organizationId":3210,"validationType":"STANDARD","phone":"123456789","secondaryEmails":["alt1.email@domain.com","alt2.email@domain.com"],"commonName":"Tester","eppn":"","upn":"","created":"2025-08-15T09:22:50.958Z","modified":"2025-08-15T09:22:50.974Z"}

### Manage persons

#### Create person

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
firstName | String | Person’s first name | [Must not be blank, Maximum length is 64 characters or can be empty]
middleName | String | Person’s middle name | [Maximum length is 64 characters or can be empty]
lastName | String | Person’s last name | [Must not be blank, Maximum length is 64 characters or can be empty]
email | String | Person’s email | [Must be a well-formed email address, Must not be empty, Maximum length is 128 characters or can be empty]
validationType | String | Person’s validation type. Values: [STANDARD, HIGH] | [Must not be null]
organizationId | Number | Organization ID | [Must be at least 1, Must not be null]
phone | String | Person phone | [Must match the regular expression `[#|0-9|\(|\)|\-|\+| x]*`, Maximum length is 32 characters or can be empty]
commonName | String | Person commonName | [Maximum length is 64 characters or can be empty]
secondaryEmails | Array | Person Secondary Emails | []
eppn | String | Person EPPN | [Maximum length is 128 characters or can be empty]
upn | String | Person UPN | [Maximum length is 256 characters or can be empty]

##### Example request

    $ curl 'https://cert-manager.com/api/person/v1' -i -X POST \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer21489' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{"firstName":"First Name","middleName":"Middle Name","lastName":"Last Name","email":"test@email.com","organizationId":3192,"validationType":"STANDARD","phone":"1235","secondaryEmails":["alt1.email@domain.com","alt2.email@domain.com"],"commonName":"Tester123","eppn":"","upn":null}'

##### Response headers

Name | Description
--- | ---
`Location` | Url location of created person

##### Example response

    HTTP/1.1 201 Created
    Location: https://cert-manager.com/api/person/v1/151

#### Update person

##### Path parameters

Table 1. /api/person/v1/{id}
Parameter | Description
--- | ---
`id` | Person ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
firstName | String | Person’s first name | [Must be null or not blank, Maximum length is 64 characters or can be empty]
middleName | String | Person’s middle name | [Maximum length is 64 characters or can be empty]
lastName | String | Person’s last name | [Must be null or not blank, Maximum length is 64 characters or can be empty]
email | String | Person’s email | [Must be a well-formed email address, Must be null or not blank, Maximum length is 128 characters or can be empty]
validationType | String | Person’s validation type. Values: [STANDARD, HIGH] | []
organizationId | Number | Organization ID | [Must be at least 1]
phone | String | Person phone | [Must match the regular expression `[#|0-9|\(|\)|\-|\+| x]*`, Maximum length is 32 characters or can be empty]
commonName | String | Person commonName | [Must be null or not blank, Maximum length is 64 characters or can be empty]
secondaryEmails | Array | Person Secondary Emails | []
eppn | String | Person EPPN | [Maximum length is 128 characters or can be empty]
upn | String | Person UPN | [Maximum length is 256 characters or can be empty]

##### Example request

    $ curl 'https://cert-manager.com/api/person/v1/169' -i -X PUT \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer21608' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{"firstName":"First Name","middleName":"Middle Name","lastName":"Last Name","email":"test@email.com","organizationId":3226,"validationType":"STANDARD","phone":"1235","secondaryEmails":["alt1.email@domain.com","alt2.email@domain.com"],"commonName":"Tester123","eppn":"","upn":null}'

##### Example response

    HTTP/1.1 200 OK

#### Delete person

##### Path parameters

Table 1. /api/person/v1/{id}
Parameter | Description
--- | ---
`id` | Person ID being deleted

##### Example request

    $ curl 'https://cert-manager.com/api/person/v1/160' -i -X DELETE \
        -H 'login: admin_customer21545' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Example response

    HTTP/1.1 200 OK

#### Import private key

`V2`

##### Path parameters

Table 1. /api/person/v2/{personId}/import-key
Parameter | Description
--- | ---
`personId` | Person ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
p12 | String | Base64 encoded pkcs12 file | [Must not be empty]
password | String | Password to access pkcs12 file | Optional
customFields | Array | An array of custom fields if required | Optional

##### Example request

    $ curl 'https://cert-manager.com/api/person/v2/139/import-key' -i -X POST \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer21424' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{"p12":" ","password":"11","customFields":[]}'

##### Response fields

Path | Type | Description
--- | --- | ---
`entries[]` | `Array` | Key Store entry list
`entries[].alias` | `String` | Alias
`entries[].clientCertId` | `Number` | Client Certificate ID
`entries[].md5` | `String` | MD5 hash
`entries[].sha1` | `String` | SHA1 hash
`entries[].message` | `String` | Import operation status message. 'Imported successfully' - all is OK, 'Already exists' - key present in Key Vault, otherwise - error message

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 185

    {"entries":[{"alias":"admin@ccmqa.com","clientCertId":141,"md5":"5f646a050e14d92b60c376128a79e691","sha1":"e99ed5c3bff4fd1dda576ee1dd2cd962e521d6e5","message":"Imported successfully"}]}

`V1` - Deprecated

##### Path parameters

Table 1. /api/person/v1/{personId}/import-key
Parameter | Description
--- | ---
`personId` | Person ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
p12 | String | Base64 encoded pkcs12 file | [Must not be empty]
password | String | Password to access pkcs12 file | Optional
customFields | Array | An array of custom fields if required | Optional

##### Example request

    $ curl 'https://cert-manager.com/api/person/v1/163/import-key' -i -X POST \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer21566' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{"p12":" ","password":"11","customFields":[]}'

##### Response fields

Path | Type | Description
--- | --- | ---
`id` | `Number` | ID of created certificate based on imported payload

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 10

    {"id":142}

#### Send enrollment invitation

`V2`

##### Path parameters

Table 1. /api/person/v2/{id}/invitation/send
Parameter | Description
--- | ---
`id` | Person ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
accountId | Number | Client Certificate Web Form Account ID |

##### Example request

    $ curl 'https://cert-manager.com/api/person/v2/141/invitation/send' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer21438' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -H 'Accept: application/json' \
        -d '{"accountId":12}'

##### Example response

    HTTP/1.1 202 Accepted

`V1` - Deprecated

##### Path parameters

Table 1. /api/person/v1/{id}/invitation/send
Parameter | Description
--- | ---
`id` | Person ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
term | Number | Term for certificate in days |
keyType | String | Allowed Key Type |
profileId | Number | Profile ID |

##### Example request

    $ curl 'https://cert-manager.com/api/person/v1/168/invitation/send' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer21601' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -H 'Accept: application/json' \
        -d '{"profileId":2342,"term":365,"keyType":"RSA - 2048"}'

##### Example response

    HTTP/1.1 202 Accepted

#### List enrollment endpoints

##### Path parameters

Table 1. /api/person/v2/{id}/invitation/endpoint
Parameter | Description
--- | ---
`id` | Person ID

##### Example request

    $ curl 'https://cert-manager.com/api/person/v2/138/invitation/endpoint' -i -X GET \
        -H 'login: admin_customer21417' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | Array of Enrollment Form Endpoints
`[].id` | `Number` | Endpoint ID
`[].name` | `String` | Endpoint name
`[].url` | `String` | Endpoint url

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 117

    [{"id":1502,"name":"test SMIME_WEB_FORM21423","url":"https://cert-manager.com/customer/test/smime/${URI_EXTENSION}"}]

#### List enrollment endpoint accounts

##### Path parameters

Table 1. /api/person/v2/{id}/invitation/endpoint/{endpointId}/account
Parameter | Description
--- | ---
`id` | Person ID
`endpointId` | Client Certificate Enrollment Form Endpoint ID

##### Example request

    $ curl 'https://cert-manager.com/api/person/v2/137/invitation/endpoint/1500/account' -i -X GET \
        -H 'login: admin_customer21410' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | Array of Enrollment Form Endpoint Accounts
`[].id` | `Number` | Account ID
`[].name` | `String` | Account name
`[].profiles[]` | `Array` | Array of profiles names

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 129

    [{"id":8,"name":"Client Cert Enrollment Form Account","profiles":["Client cert SASP -666981075","Client cert SASP -1254026162"]}]

## Domains

### View domains

#### List domains

##### Query parameters

Parameter | Description
--- | ---
`size` | Number of returned entries
`position` | the first position (entry) to return from the results of the query
`name` | Filter by name
`state` | Filter by state, possible values [active, inactive]
`status` | Filter by status, possible values [requested, approved]
`orgId` | Filter by organization ID

##### Example request

    $ curl 'https://cert-manager.com/api/domain/v1?size=10&position=0' -i -X GET \
        -H 'login: admin_customer1440' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | Array of requested domains
`[].id` | `Number` | Domain ID
`[].name` | `String` | Domain

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 4
    Content-Type: application/json
    Content-Length: 133

    [{"id":104,"name":"example0.com"},{"id":105,"name":"example1.com"},{"id":106,"name":"example2.com"},{"id":107,"name":"example3.com"}]

#### Count domains

Deprecated

##### Query parameters

Parameter | Description
--- | ---
`size` | Number of returned entries
`position` | the first position (entry) to return from the results of the query
`name` | Filter by name
`state` | Filter by state, possible values [active, inactive]
`status` | Filter by status, possible values [requested, approved]
`orgId` | Filter by organization ID

##### Example request

    $ curl 'https://cert-manager.com/api/domain/v1/count?size=10&position=0' -i -X GET \
        -H 'login: admin_customer1396' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Response fields

Path | Type | Description
--- | --- | ---
`count` | `Number` | Count for domains

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 11

    {"count":4}

#### Get domain details

##### Path parameters

Table 1. /api/domain/v1/{id}
Parameter | Description
--- | ---
`id` | Domain ID

##### Example request

    $ curl 'https://cert-manager.com/api/domain/v1/113' -i -X GET \
        -H 'login: admin_customer1458' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Response fields

Path | Type | Description
--- | --- | ---
`id` | `Number` | Domain ID
`name` | `String` | Domain name
`delegationStatus` | `String` | Domain delegation status. Available values are: [ACTIVE, REQUESTED]
`state` | `String` | Domain state. Available values are: [SUSPENDED, ACTIVE]
`validationStatus` | `String` | Domain validation status. This field is shown only if DCV is enabled for customer. Available values are: [Not validated, Validated, Expired]
`validationMethod` | `String` | Domain validation method. This field is shown only if DCV is enabled for customer. Available values are: [HTTP_CSR_HASH, CNAME_CSR_HASH, EMAIL, HTTPS_CSR_HASH, DNSTXT_RANDOM_VALUE]
`dcvValidation` | `String` | DCV validation date. This field is shown only if DCV is enabled for customer. Format: yyyy-MM-dd
`dcvExpiration` | `String` | DCV expiration date. This field is shown only if DCV is enabled for customer. Format: yyyy-MM-dd
`ctLogMonitoring.enabled` | `Boolean` | CT Log monitoring feature enable/disable
`ctLogMonitoring.includeSubdomains` | `Boolean` | Include subdomains
`ctLogMonitoring.bucketId` | `String` | Certificate Bucket ID for monitored certificates
`ctLogMonitoring.enabled` | `Boolean` | CT Log monitoring feature enable/disable
`ctLogMonitoring.includeSubdomains` | `Boolean` | Include subdomains
`ctLogMonitoring.bucketId` | `String` | Certificate Bucket ID for monitored certificates
`delegations[]` | `Array` | List of domain delegations, filtered by client admin credentials.
`delegations[].orgId` | `Number` | Organization id
`delegations[].certTypes` | `Array` | Certificate types. Available values are: [SSL, SMIME, CodeSign]
`delegations[].domainCertificateRequestPrivileges` | `Array` | Domain certificate request privileges. Available values are: [DOMAIN, SUBDOMAIN, WILDCARD_1ST_LEVEL, WILDCARD_2ND_LEVEL]
`delegations[].status` | `String` | Delegation status. Available values are: [ACTIVE, REQUESTED]

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 416

    {"id":113,"name":"ccmqa.com","delegationStatus":"ACTIVE","state":"ACTIVE","validationStatus":"VALIDATED","validationMethod":"EMAIL","dcvValidation":"2025-08-15","dcvExpiration":"2026-08-15","delegations":[{"orgId":849,"certTypes":["SSL"],"domainCertificateRequestPrivileges":["DOMAIN"],"status":"ACTIVE"}],"ctLogMonitoring":{"bucketId":"713d5d33-4c21-494a-9ab2-2675fe7aba4e","enabled":true,"includeSubdomains":true}}

### Manage domains

#### Create domain

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Domain name | [Must not be null, Size must be between 4 and 255 inclusive]
description | String | Domain description (optional) | [Maximum length is 255 characters or can be empty]
active | Boolean | Required domain state | Set 'false' if you want to create domain in suspended state
ctLogMonitoring.enabled | Boolean | CT Log monitoring feature enable/disable | Set 'false' if you want to disable CT Log monitoring.
ctLogMonitoring.includeSubdomains | Boolean | Include subdomains | []
ctLogMonitoring.bucketId | String | Certificate Bucket ID for monitored certificates. Required if CT Log monitoring is going to be enabled. | []
delegations[] | Array | Domain delegations list | [Must not be null, Size must be between 1 and 2147483647 inclusive]
delegations[].orgId | Number | Organization ID |
delegations[].certTypes | Array | Domain delegation certificate types | Allowed values: [SSL, SMIME, CodeSign]
delegations[].domainCertificateRequestPrivileges | Array | Domain delegation domain certificate request privileges | Allowed values: [DOMAIN, SUBDOMAIN, WILDCARD_1ST_LEVEL, WILDCARD_2ND_LEVEL]

##### Example request

    $ curl 'https://cert-manager.com/api/domain/v1' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer1423' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{"name":"testdomain.com","description":"Domain created via REST API","active":true,"ctLogMonitoring":{"bucketId":"fdf23c27-59da-45b0-8b56-64b0f0841ea8","enabled":true,"includeSubdomains":true},"delegations":[{"orgId":826,"certTypes":["SSL"],"domainCertificateRequestPrivileges":["DOMAIN","SUBDOMAIN"]}]}'

##### Response headers

Name | Description
--- | ---
`Location` | Url location of created domain

##### Example response

    HTTP/1.1 201 Created
    Location: https://cert-manager.com/api/domain/v1/100

#### Update/Enable/Disable Ct Log Monitoring for Domain

##### Path parameters

Table 1. /api/domain/v1/{id}/monitoring
Parameter | Description
--- | ---
`id` | Domain ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
enabled | Boolean | CT Log monitoring feature enable/disable | Set 'false' if you want to disable CT Log monitoring
includeSubdomains | Boolean | Include subdomains | []
bucketId | String | Certificate Bucket ID for monitored certificates. Required if CT Log monitoring is going to be enabled. | []

##### Example request

    $ curl 'https://cert-manager.com/api/domain/v1/108/monitoring' -i -X PUT \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer1443' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{
      "enabled": true,
      "includeSubdomains": true,
      "bucketId": "50ad58f2-2c6e-46b0-b201-f4c05830322f"
    }
    '

##### Example response

    HTTP/1.1 200 OK

#### Delete domain

| Master Registration Authority Officers (MRAO) can delete any domain. Registration Authority Officers (RAO) and Department Registration Authority Officers (DRAO) can only delete domains if they have permission to manage all organizations that the domain has been assigned to.

##### Path parameters

Table 1. /api/domain/v1/{id}
Parameter | Description
--- | ---
`id` | Domain ID

##### Example request

    $ curl 'https://cert-manager.com/api/domain/v1/102' -i -X DELETE \
        -H 'login: admin_customer1431' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Example response

    HTTP/1.1 204 No Content

#### Activate domain

##### Path parameters

Table 1. /api/domain/v1/{id}/activate
Parameter | Description
--- | ---
`id` | Domain ID

##### Example request

    $ curl 'https://cert-manager.com/api/domain/v1/87/activate' -i -X PUT \
        -H 'login: admin_customer1372' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Example response

    HTTP/1.1 200 OK

#### Suspend domain

##### Path parameters

Table 1. /api/domain/v1/{id}/suspend
Parameter | Description
--- | ---
`id` | Domain ID

##### Example request

    $ curl 'https://cert-manager.com/api/domain/v1/118/suspend' -i -X PUT \
        -H 'login: admin_customer1482' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Example response

    HTTP/1.1 200 OK

#### Delegate domain

##### Path parameters

Table 1. /api/domain/v1/{id}/delegation
Parameter | Description
--- | ---
`id` | Domain ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
orgId | Number | Organization ID | [Must be at least 1, Must not be null]
certTypes | Array | Certificate types | Allowed values: [SSL, SMIME, CodeSign]
domainCertificateRequestPrivileges | Array | Domain certificate request privileges | Allowed values: [DOMAIN, SUBDOMAIN, WILDCARD_1ST_LEVEL, WILDCARD_2ND_LEVEL]

##### Example request

    $ curl 'https://cert-manager.com/api/domain/v1/88/delegation' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer1375' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{"orgId":793,"certTypes":["SSL"],"domainCertificateRequestPrivileges":["DOMAIN","SUBDOMAIN"]}'

##### Example response

    HTTP/1.1 200 OK

#### Delegate domains

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
orgId | Number | Organization ID | [Must be at least 1, Must not be null]
certTypes | Array | Certificate types | Allowed values: [SSL, SMIME, CodeSign]
domainIds | Array | Domain IDs | [Must not be null, Size must be between 1 and 1000 inclusive]
domainCertificateRequestPrivileges | Array | Domain certificate request privileges | [Size must be between 1 and 2147483647 inclusive]

##### Example request

    $ curl 'https://cert-manager.com/api/domain/v1/delegation' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer1384' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{"domainIds":[90,91],"orgId":800,"certTypes":["SSL","SMIME"],"domainCertificateRequestPrivileges":["DOMAIN","SUBDOMAIN"]}'

##### Example response

    HTTP/1.1 200 OK

#### Remove domain delegation

##### Path parameters

Table 1. /api/domain/v1/{id}/delegation
Parameter | Description
--- | ---
`id` | Domain ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
orgId | Number | Organization ID | [Must be at least 1, Must not be null]
certTypes | Array | Certificate types | Allowed values: [SSL, SMIME, CodeSign]
domainCertificateRequestPrivileges | Array | Domain certificate request privileges | Allowed values: [DOMAIN, SUBDOMAIN, WILDCARD_1ST_LEVEL, WILDCARD_2ND_LEVEL]

##### Example request

    $ curl 'https://cert-manager.com/api/domain/v1/116/delegation' -i -X DELETE \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer1473' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{"orgId":860,"certTypes":["SSL"],"domainCertificateRequestPrivileges":["DOMAIN","SUBDOMAIN"]}'

##### Example response

    HTTP/1.1 200 OK

#### Approve delegation

##### Path parameters

Table 1. /api/domain/v1/{id}/delegation/approve
Parameter | Description
--- | ---
`id` | Domain ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
orgId | Number | Organization ID | [Must be at least 1, Must not be null]

##### Example request

    $ curl 'https://cert-manager.com/api/domain/v1/92/delegation/approve' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer1387' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{"orgId":802}'

##### Example response

    HTTP/1.1 200 OK

#### Reject delegation

##### Path parameters

Table 1. /api/domain/v1/{id}/delegation/reject
Parameter | Description
--- | ---
`id` | Domain ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
orgId | Number | Organization ID | [Must be at least 1, Must not be null]

##### Example request

    $ curl 'https://cert-manager.com/api/domain/v1/114/delegation/reject' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer1464' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{"orgId":853}'

##### Example response

    HTTP/1.1 200 OK

## Organizations

| EV details and Organization Identifier are no longer supported by this API. EV details were moved to the EV SSL validation details. Organization Identifier was moved to the OV S/MIME validation details.

### View organizations

#### List organizations

##### Example request

    $ curl 'https://cert-manager.com/api/organization/v1' -i -X GET \
        -H 'login: admin_drao_customer21017' \
        -H 'password: Password123!' \
        -H 'customerUri: cst21017'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | Array of requested organizations
`[].name` | `String` | Organization name
`[].id` | `Number` | Organization ID
`[].departments[]` | `Array` | Departments array
`[].departments[].id` | `Number` | Department ID
`[].departments[].name` | `String` | Department name
`[].departments[].parentName` | `String` | Department’s parent organization name

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 238

    [ {
      "id" : 3018,
      "name" : "org4Test",
      "departments" : [ {
        "id" : 3019,
        "parentName" : "org4Test",
        "name" : "department4Test"
      }, {
        "id" : 3020,
        "parentName" : "org4Test",
        "name" : "department4Test"
      } ]
    } ]

#### List organizations by role

##### Path parameters

Table 1. /api/organization/v1/managedBy/{role}
Parameter | Description
--- | ---
`role` | Client admin’s requested role

##### Example request

    $ curl 'https://cert-manager.com/api/organization/v1/managedBy/DRAO_SSL' -i -X GET \
        -H 'login: admin_rao_customer21052' \
        -H 'password: Password123!' \
        -H 'customerUri: cst21052'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | Array of requested organizations
`[].id` | `Number` | Organization ID
`[].name` | `String` | Organization name
`[].parentName` | `String` | Department’s parent organization name

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 158

    [ {
      "id" : 3034,
      "name" : "department4Test",
      "parentName" : "org4Test"
    }, {
      "id" : 3035,
      "name" : "department4Test",
      "parentName" : "org4Test"
    } ]

#### List organizations by certificate type

Get organization list related to specific certificate type.

##### Path parameters

Table 1. /api/organization/v1/report-type/{type}
Parameter | Description
--- | ---
`type` | Certificate type: SSL, Client, Device, CodeSign.

##### Example request

    $ curl 'https://cert-manager.com/api/organization/v1/report-type/SSL' -i -X GET \
        -H 'login: admin_rao_customer21024' \
        -H 'password: Password123!' \
        -H 'customerUri: cst21024'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | Array of requested organizations
`[].id` | `Number` | Organization ID
`[].name` | `String` | Organization name
`[].departments[]` | `Array` | Departments
`[].departments[].id` | `Number` | Department ID
`[].departments[].name` | `String` | Department name
`[].departments[].parentName` | `String` | Department’s parent organization name

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 238

    [ {
      "id" : 3021,
      "name" : "org4Test",
      "departments" : [ {
        "id" : 3022,
        "parentName" : "org4Test",
        "name" : "department4Test"
      }, {
        "id" : 3023,
        "parentName" : "org4Test",
        "name" : "department4Test"
      } ]
    } ]

#### Get organization details

Get organization details.

##### Path parameters

Table 1. /api/organization/v1/{id}
Parameter | Description
--- | ---
`id` | ID of organization whose details are being requested

##### Example request

    $ curl 'https://cert-manager.com/api/organization/v1/3009' -i -X GET \
        -H 'login: admin_rao_customer20996' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20996'

##### Response fields

Path | Type | Description
--- | --- | ---
`name` | `String` | Organization name
`id` | `Number` | Organization ID
`schacHomeOrganization` | `String` | Organization SCHAC code. (Deprecated, please refer to 'alias' instead).
`alias` | `String` | Organization alias
`secondaryName` | `String` | Organization alternative name
`contactEmails` | `String` | Contact emails, separated by comma
`contactWebhook` | `String` | Contact webhook url
`contactSlack` | `String` | Contact Slack webhook url
`contactTeams` | `String` | Contact Teams webhook url
`address1` | `String` | Address details
`address2` | `String` | Address details
`address3` | `String` | Address details
`city` | `String` | City
`stateOrProvince` | `String` | State or province
`postalCode` | `String` | Postal code
`country` | `String` | Country
`validationStatus` | `String` | Validation status. Deprecated, please use 'Organization validations' API to view organization validations.
`secondaryValidationStatus` | `String` | Secondary validation status. Deprecated, please use 'Organization validations' API to view organization validations.
`sslCertsApiEnabled` | `Boolean` | Allow Web / REST API operations for SSL certificates of this organization / department.
`clientCertsApiEnabled` | `Boolean` | Allow Web / REST API operations for Client certificates of this organization / department.
`clientCertificate.allowKeyRecoveryByMasterAdmins` | `Boolean` | Allow key recovery by Master admins
`clientCertificate.allowKeyRecoveryByOrgAdmins` | `Boolean` | Allow key recovery by Org admins
`clientCertificate.allowKeyRecoveryByDepartmentAdmins` | `Boolean` | Allow key recovery by Department admins
`certTypes[]` | `Array` | Array of allowed certificate types
`departments[]` | `Array` | Departments array
`departments[].id` | `Number` | Department ID
`departments[].name` | `String` | Department name
`departments[].parentName` | `String` | Department’s parent organization name

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 787

    {
      "id" : 3009,
      "name" : "org4Test",
      "certTypes" : [ "SSL" ],
      "departments" : [ {
        "id" : 3010,
        "parentName" : "org4Test",
        "name" : "department4Test"
      }, {
        "id" : 3011,
        "parentName" : "org4Test",
        "name" : "department4Test"
      } ],
      "contactEmails" : "aa@scm.com,bb@scm.com",
      "contactWebhook" : "https://certmanager.com/webhook",
      "address1" : "Deribasovskaya 1",
      "address2" : "Street 2",
      "address3" : "Street 3",
      "city" : "Odesa",
      "stateOrProvince" : "Odeska oblast",
      "postalCode" : "65059",
      "country" : "UA",
      "clientCertificate" : {
        "allowKeyRecoveryByMasterAdmins" : true,
        "allowKeyRecoveryByOrgAdmins" : true,
        "allowKeyRecoveryByDepartmentAdmins" : true
      },
      "sslCertsApiEnabled" : true,
      "clientCertsApiEnabled" : true
    }

### Manage organizations

#### Create organization

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Organization name | [Must not be empty, Maximum length is 128 characters or can be empty]
alternativeName | String | Organization/Department alternative name | [Maximum length is 1024 characters or can be empty]
schacHomeOrganization | String | Organization SCHAC code. (Deprecated, please use 'alias' instead). | [Maximum length is 1024 characters or can be empty]
alias | String | Organization alias | [Maximum length is 1024 characters or can be empty]
contactEmails | String | Contact emails, separated by comma | [Must be a valid CSV list of emails, Maximum length is 512 characters or can be empty]
contactWebhook | String | Contact webhook url | [Maximum length is 2048 characters or can be empty]
contactSlack | String | Contact Slack webhook url | [Maximum length is 2048 characters or can be empty]
contactTeams | String | Contact Teams webhook url | [Maximum length is 2048 characters or can be empty]
address1 | String | Address 1 | [Must not be empty, Maximum length is 128 characters or can be empty]
address2 | String | Address 2 | [Maximum length is 128 characters or can be empty]
address3 | String | Address 3 | [Maximum length is 128 characters or can be empty]
city | String | City | [Maximum length is 32 characters or can be empty, Either 'city' or 'stateProvince' must not be blank at least]
stateProvince | String | State or Province | [Maximum length is 32 characters or can be empty, Either 'city' or 'stateProvince' must not be blank at least]
postalCode | String | Postal Code | [Maximum length is 10 characters or can be empty]
clientCertificate | Object | Client certificate details | [Must not be null]
clientCertificate.allowKeyRecoveryByMasterAdmins | Boolean | Allow key recovery by Master admins | []
clientCertificate.allowKeyRecoveryByOrgAdmins | Boolean | Allow key recovery by Org admins | []
clientCertificate.allowKeyRecoveryByDepartmentAdmins | Boolean | Allow key recovery by Department admins | []
country | String | Country | [Must not be empty, Size must be between 2 and 2 inclusive]
sslCertsApiEnabled | Boolean | Allow Web / REST API operations for SSL certificates of this organization. | []
clientCertsApiEnabled | Boolean | Allow Web / REST API operations for Client certificates of this organization. | []

##### Example request

    $ curl 'https://cert-manager.com/api/organization/v1' -i -X POST \
        -H 'Content-Type: application/json' \
        -H 'login: admin_customer20982' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20982' \
        -d '{
      "name" : "Organization",
      "address1" : "First street, 123",
      "address2" : "Block 2",
      "address3" : "Office 34",
      "city" : "Odesa",
      "stateProvince" : "Odeska oblast",
      "postalCode" : "65000",
      "country" : "UA",
      "clientCertificate" : {
        "allowKeyRecoveryByMasterAdmins" : true,
        "allowKeyRecoveryByOrgAdmins" : false,
        "allowKeyRecoveryByDepartmentAdmins" : false
      },
      "sslCertsApiEnabled" : true,
      "clientCertsApiEnabled" : true,
      "contactEmails" : "bb123@cc,aa456@cc",
      "contactWebhook" : "https://certmanager.com/webhook"
    }'

##### Response headers

Name | Description
--- | ---
`Location` | URL location of created organization.

##### Example response

    HTTP/1.1 201 Created
    Location: https://cert-manager.com/api/organization/v1/3003

#### Create department

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
parentOrgName | String | Parent organization name. | [Must not be empty, Maximum length is 128 characters or can be empty]
name | String | Department name | [Must not be empty, Maximum length is 128 characters or can be empty]
address1 | String | Address 1 | [Must not be empty, Maximum length is 128 characters or can be empty]
address2 | String | Address 2 | [Maximum length is 128 characters or can be empty]
address3 | String | Address 3 | [Maximum length is 128 characters or can be empty]
city | String | City | [Maximum length is 32 characters or can be empty, Either 'city' or 'stateProvince' must not be blank at least]
stateProvince | String | State or Province | [Maximum length is 32 characters or can be empty, Either 'city' or 'stateProvince' must not be blank at least]
postalCode | String | Postal Code | [Maximum length is 10 characters or can be empty]
clientCertificate | Object | Client certificate details | [Must not be null]
clientCertificate.allowKeyRecoveryByMasterAdmins | Boolean | Allow key recovery by Master admins | []
clientCertificate.allowKeyRecoveryByOrgAdmins | Boolean | Allow key recovery by Org admins | []
clientCertificate.allowKeyRecoveryByDepartmentAdmins | Boolean | Allow key recovery by Department admins | []
country | String | Country | [Must not be empty, Size must be between 2 and 2 inclusive]
sslCertsApiEnabled | Boolean | Allow Web / REST API operations for SSL certificates of this department. | []
clientCertsApiEnabled | Boolean | Allow Web / REST API operations for Client certificates of this department. | []

##### Example request

    $ curl 'https://cert-manager.com/api/organization/v1' -i -X POST \
        -H 'Content-Type: application/json' \
        -H 'login: admin_customer20828' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20828' \
        -d '{
      "parentOrgName" : "org4Test",
      "name" : "Department",
      "address1" : "First street, 123",
      "address2" : "Block 2",
      "address3" : "Office 34",
      "city" : "Odesa",
      "stateProvince" : "Odeska oblast",
      "postalCode" : "65000",
      "country" : "UA",
      "clientCertificate" : {
        "allowKeyRecoveryByMasterAdmins" : true,
        "allowKeyRecoveryByOrgAdmins" : false,
        "allowKeyRecoveryByDepartmentAdmins" : true
      },
      "sslCertsApiEnabled" : true,
      "clientCertsApiEnabled" : true
    }'

##### Response headers

Name | Description
--- | ---
`Location` | URL location of created department

##### Example response

    HTTP/1.1 201 Created
    Location: https://cert-manager.com/api/organization/v1/2928

#### Update organization or department

##### Path parameters

Table 1. /api/organization/v1/{id}
Parameter | Description
--- | ---
`id` | ID of organization whose details are being updated

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Organization/Department name | [Maximum length is 128 characters or can be empty]
alternativeName | String | Organization/Department alternative name | [Maximum length is 1024 characters or can be empty]
schacHomeOrganization | String | Organization SCHAC code. (Deprecated, please use 'alias' instead). | [Maximum length is 1024 characters or can be empty]
alias | String | Organization alias | [Maximum length is 1024 characters or can be empty]
contactEmails | String | Contact emails, separated by comma | [Must be a valid CSV list of emails, Maximum length is 512 characters or can be empty]
contactWebhook | String | Contact webhook url | [Maximum length is 2048 characters or can be empty]
contactSlack | String | Contact Slack webhook url | [Maximum length is 2048 characters or can be empty]
contactTeams | String | Contact Teams webhook url | [Maximum length is 2048 characters or can be empty]
address1 | String | Address 1 | [Maximum length is 128 characters or can be empty]
address2 | String | Address 2 | [Maximum length is 128 characters or can be empty]
address3 | String | Address 3 | [Maximum length is 128 characters or can be empty]
city | String | City | [Maximum length is 32 characters or can be empty]
stateProvince | String | State or Province | [Maximum length is 32 characters or can be empty]
postalCode | String | Postal Code | [Maximum length is 10 characters or can be empty]
country | String | Country | [Size must be between 2 and 2 inclusive]
sslCertsApiEnabled | Boolean | Allow Web / REST API operations for SSL certificates of this department. | []
clientCertsApiEnabled | Boolean | Allow Web / REST API operations for Client certificates of this department. | []

##### Example request

    $ curl 'https://cert-manager.com/api/organization/v1/3069' -i -X PUT \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer21129' \
        -H 'password: Password123!' \
        -H 'customerUri: cst21129' \
        -d '{
      "name" : "My org",
      "address1" : "First street, 123",
      "address2" : "Block 2",
      "address3" : "Office 34",
      "city" : "Odesa",
      "stateProvince" : "Odeska oblast",
      "postalCode" : "65000",
      "country" : "UA",
      "alternativeName" : "My organization",
      "contactEmails" : "aa22@cc.com,bb33@cc.com",
      "sslCertsApiEnabled" : true,
      "clientCertsApiEnabled" : true
    }'

##### Response fields

Path | Type | Description
--- | --- | ---
`name` | `String` | Organization name
`secondaryName` | `String` | Organization secondary name
`schacHomeOrganization` | `String` | Organization SCHAC code. (Deprecated, please use 'alias' instead).
`alias` | `String` | Organization alias
`contactEmails` | `String` | Contact emails, separated by comma
`contactWebhook` | `String` | Contact webhook url
`contactSlack` | `String` | Contact Slack webhook url
`contactTeams` | `String` | Contact Teams webhook url
`id` | `Number` | Organization ID
`address1` | `String` | Address details
`address2` | `String` | Address details
`address3` | `String` | Address details
`city` | `String` | City
`stateOrProvince` | `String` | State or province
`postalCode` | `String` | Postal code
`country` | `String` | Country
`validationStatus` | `String` | Validation status. Deprecated, please use 'Organization validations' API to view organization validations.
`secondaryValidationStatus` | `String` | Secondary validation status. Deprecated, please use 'Organization validations' API to view organization validations.
`sslCertsApiEnabled` | `Boolean` | Allow Web / REST API operations for SSL certificates of this organization / department.
`clientCertsApiEnabled` | `Boolean` | Allow Web / REST API operations for Client certificates of this organization / department.
`clientCertificate.allowKeyRecoveryByMasterAdmins` | `Boolean` | Allow key recovery by Master admins
`clientCertificate.allowKeyRecoveryByOrgAdmins` | `Boolean` | Allow key recovery by Org admins
`clientCertificate.allowKeyRecoveryByDepartmentAdmins` | `Boolean` | Allow key recovery by Department admins
`certTypes[]` | `Array` | Array of allowed certificate types
`departments[]` | `Array` | Departments array
`departments[].id` | `Number` | Department ID
`departments[].name` | `String` | Department name
`departments[].parentName` | `String` | Department’s parent organization name

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 601

    {
      "id" : 3069,
      "name" : "My org",
      "certTypes" : [ "SMIME", "CodeSign", "SSL" ],
      "secondaryName" : "My organization",
      "contactEmails" : "aa22@cc.com,bb33@cc.com",
      "address1" : "First street, 123",
      "address2" : "Block 2",
      "address3" : "Office 34",
      "city" : "Odesa",
      "stateOrProvince" : "Odeska oblast",
      "postalCode" : "65000",
      "country" : "UA",
      "clientCertificate" : {
        "allowKeyRecoveryByMasterAdmins" : false,
        "allowKeyRecoveryByOrgAdmins" : false,
        "allowKeyRecoveryByDepartmentAdmins" : false
      },
      "sslCertsApiEnabled" : true,
      "clientCertsApiEnabled" : true
    }

#### Delete organization or department

##### Example request

    $ curl 'https://cert-manager.com/api/organization/v1/3004' -i -X DELETE \
        -H 'login: admin_customer20989' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20989'

##### Path parameters

Table 1. /api/organization/v1/{id}
Parameter | Description
--- | ---
`id` | Organization or department ID

##### Example response

    HTTP/1.1 204 No Content

### Organization validations

`V1` - Deprecated

#### List organization validations

##### Path parameters

Table 1. /api/organization/v2/{orgId}/validations
Parameter | Description
--- | ---
`orgId` | Organization ID

##### Example request

    $ curl 'https://cert-manager.com/api/organization/v2/2891/validations' -i -X GET \
        -H 'login: admin_customer20764' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | An array of available validations
`[].id` | `Number` | Entity ID
`[].validationLevel` | `String` | Validation level. Possible values: [OV_SSL, OV_SMIME, EV_SSL]
`[].status` | `String` | Validation status
`[].backgroundStatus` | `String` | Validation background status. Can be one of [PENDING, FAILED], successful background validation empties the field with 'status' field set to VALIDATED
`[].submitted` | `String` | Submitted date
`[].expires` | `String` | Expires date
`[].alternative` | `Boolean` | Is alternative
`[].backendId` | `Number` | Backend ID
`[].backendType` | `String` | Backend type

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 275

    [{"id":306,"validationLevel":"OV_SSL","status":"PENDING","alternative":false,"backendId":2135,"backendType":"SASP"},{"id":307,"validationLevel":"OV_SSL","status":"VALIDATED","expires":"2026-02-15T09:21:10.497Z","alternative":false,"backendId":2136,"backendType":"DIGI_CERT"}]

#### Get organization validation details

##### Path parameters

Table 1. /api/organization/v2/{orgId}/validations/{validationId}
Parameter | Description
--- | ---
`orgId` | Organization ID
`validationId` | Validation ID

##### Example request

    $ curl 'https://cert-manager.com/api/organization/v2/2889/validations/305' -i -X GET \
        -H 'login: admin_customer20761' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Response fields

Path | Type | Description
--- | --- | ---
`id` | `Number` | Entity ID
`validationLevel` | `String` | Validation level. Possible values: [OV_SSL, OV_SMIME, EV_SSL]
`status` | `String` | Validation status
`backgroundStatus` | `String` | Validation background status. Can be one of [PENDING, FAILED], successful background validation empties the field with 'status' field set to VALIDATED
`submitted` | `String` | Submitted date
`expires` | `String` | Expires date
`alternative` | `Boolean` | Is alternative
`backendId` | `Number` | CA Backend ID
`validator` | `Object` | Validator
`validator.id` | `Number` | Validator ID
`validator.name` | `String` | Validator name
`backendType` | `String` | CA Backend type
`settings` | `Object` | Validation settings. Tracking information for the CA backends. Possible settings: [EXTERNAL_ORG_NAME, EXTERNAL_ORG_ID, LEGACY_TRACKING_ID, LEGACY_BACKGROUND_TRACKING_ID, TRACKING_ID, BACKGROUND_TRACKING_ID, LAST_ERR_MSG_FROM_CA]
`organizationDetails` | `Object` | Validated organization details. Available only for Sectigo CA backends
`organizationDetails.generalDetails` | `Object` | General organization details
`organizationDetails.generalDetails.legalName` | `String` | Organization legal name
`organizationDetails.generalDetails.assumedName` | `String` | Organization’s assumed/DBA name (doing business as). Available only for EV validations.
`organizationDetails.generalDetails.address1` | `String` | Address line 1
`organizationDetails.generalDetails.address2` | `String` | Address line 2
`organizationDetails.generalDetails.address3` | `String` | Address line 3
`organizationDetails.generalDetails.city` | `String` | City
`organizationDetails.generalDetails.stateProvince` | `String` | State or province
`organizationDetails.generalDetails.postalCode` | `String` | Postal code
`organizationDetails.generalDetails.country` | `String` | Country code (ISO 3166-1 alpha-2)
`organizationDetails.organizationIdentifier` | `String` | Organization identifier. Available only for OV S/MIME validation
`organizationDetails.evDetails` | `Object` | EV details. Available only for EV validations.
`organizationDetails.evDetails.registrationAgency` | `Object` | Registration agency
`organizationDetails.evDetails.registrationAgency.dunAndBradstreetNumber` | `String` | DUN and Bradstreet Number
`organizationDetails.evDetails.registrationAgency.registrationNumber` | `String` | Company Registration Number
`organizationDetails.evDetails.registrationAgency.city` | `String` | Jurisdiction of city or town
`organizationDetails.evDetails.registrationAgency.state` | `String` | Jurisdiction of State
`organizationDetails.evDetails.registrationAgency.country` | `String` | Jurisdiction of Country. (ISO 3166-1 alpha-2 country code)
`organizationDetails.evDetails.registrationAgency.city` | `String` | City
`organizationDetails.evDetails.registrationAgency.dateOfIncorporation` | `String` | Date of incorporation
`organizationDetails.evDetails.registrationAgency.businessCategory` | `String` | Business category. Possible values: [PrivateOrganization, GovernmentEntity, BusinessEntity, NonCommercialEntity]
`organizationDetails.evDetails.contractSigner` | `Object` | Contract signer
`organizationDetails.evDetails.contractSigner.forename` | `String` | Forename
`organizationDetails.evDetails.contractSigner.surname` | `String` | Surname
`organizationDetails.evDetails.contractSigner.email` | `String` | Email
`organizationDetails.evDetails.contractSigner.phoneNumber` | `String` | Phone Number

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 823

    {"id":305,"validationLevel":"EV_SSL","status":"VALIDATED","expires":"2026-02-15T09:21:10.284Z","alternative":false,"backendId":2134,"backendType":"SASP","settings":{"TRACKING_ID":"706814613"},"organizationDetails":{"generalDetails":{"legalName":"New org4Test","assumedName":"Assumed Name","address1":"Addr 1","address2":"Street 2","address3":"Street 3","city":"Odesa","stateProvince":"Odeska oblast","postalCode":"65059","country":"UA"},"evDetails":{"registrationAgency":{"dunAndBradstreetNumber":"123456789","registrationNumber":"54564564","city":"Jurisdiction Locality","state":"Jurisdiction State","country":"CA","dateOfIncorporation":"2020-01-01","businessCategory":"PrivateOrganization"},"contractSigner":{"forename":"Signer Forename","surname":"Signer Surname","email":"signer@ccmqa.com","phoneNumber":"123456789"}}}}

#### Submit organization validation

##### Path parameters

Table 1. /api/organization/v2/{orgId}/validations/submit
Parameter | Description
--- | ---
`orgId` | Organization ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
organizationDetails | Object | Organization details | [Must not be null]
organizationDetails.generalDetails | Object | General organization details. Required for all validation levels. | [Must not be null]
organizationDetails.evDetails | Object | EV details. Required for EV validations | []

organizationDetails.organizationIdentifier

String

Organization identifier. Applicable only for OV S/MIME validations. Stands for the legal person identification based on one of the following identity type references allowed by ETSI 319 412-1 standard and Baseline Requirements: National Value Added Tax (VAT), National Trade Register (NTR), Global Legal Entity (LEI), International Organization (INT), Government Entity (GOV)

[Maximum length is 128 characters or can be empty]

organizationDetails.generalDetails.legalName | String | Organization legal name | [Must not be empty, Maximum length is 64 characters or can be empty]
organizationDetails.generalDetails.assumedName | String | Organization’s assumed/DBA name (doing business as). Applicable only for EV validations. | [Maximum length is 256 characters or can be empty]
organizationDetails.generalDetails.address1 | String | Address line 1 | [Maximum length is 128 characters or can be empty]
organizationDetails.generalDetails.address2 | String | Address line 2 | [Maximum length is 128 characters or can be empty]
organizationDetails.generalDetails.address3 | String | Address line 3 | [Maximum length is 128 characters or can be empty]
organizationDetails.generalDetails.city | String | City | [Maximum length is 32 characters or can be empty]
organizationDetails.generalDetails.stateProvince | String | State or province | [Maximum length is 32 characters or can be empty]
organizationDetails.generalDetails.postalCode | String | Postal code | [Maximum length is 10 characters or can be empty]
organizationDetails.generalDetails.country | String | Country code (ISO 3166-1 alpha-2) | [Must not be empty, Size must be between 2 and 2 inclusive]
organizationDetails.evDetails.registrationAgency | Object | Registration agency | []
organizationDetails.evDetails.contractSigner | Object | Contract signer | []
organizationDetails.evDetails.registrationAgency.dunAndBradstreetNumber | String | DUN and Bradstreet Number | [Maximum length is 20 characters or can be empty]
organizationDetails.evDetails.registrationAgency.registrationNumber | String | Company Registration Number | [Maximum length is 256 characters or can be empty]
organizationDetails.evDetails.registrationAgency.city | String | Jurisdiction of city or town | [Maximum length is 128 characters or can be empty]
organizationDetails.evDetails.registrationAgency.state | String | Jurisdiction of State | [Maximum length is 128 characters or can be empty]
organizationDetails.evDetails.registrationAgency.country | String | Jurisdiction of Country. (ISO 3166-1 alpha-2 country code) | [Must not be empty, Size must be between 2 and 2 inclusive]
organizationDetails.evDetails.registrationAgency.city | String | City | [Maximum length is 128 characters or can be empty]
organizationDetails.evDetails.registrationAgency.dateOfIncorporation | String | Date of incorporation. Format: yyyy-MM-dd. | [Must be in the past]
organizationDetails.evDetails.registrationAgency.businessCategory | String | Business category. Allowed values: [PrivateOrganization, GovernmentEntity, BusinessEntity, NonCommercialEntity] | []
organizationDetails.evDetails.contractSigner.forename | String | Forename | [Must not be empty, Maximum length is 64 characters or can be empty]
organizationDetails.evDetails.contractSigner.surname | String | Surname | [Must not be empty, Maximum length is 64 characters or can be empty]
organizationDetails.evDetails.contractSigner.email | String | Email | [Must not be empty, Maximum length is 255 characters or can be empty]
organizationDetails.evDetails.contractSigner.phoneNumber | String | Phone number | [Maximum length is 32 characters or can be empty]
alternative | Boolean | Validation set. Primary (alternative = false) or Secondary (alternative = true). Note: Secondary validation sets are available only for accounts with the corresponding feature enabled. | []
overwriteIfExists | Boolean | This flag is required to manage the processing when validation with such configuration already exists. By default, overwriting the existing validations is not allowed. | []
backendId | Number | CA Backend ID. In order to get a list of available CA backends, please use "CA Backends" API. | [Must not be null]
validationLevel | String | Validation level | [Must not be null, Allowed values: [OV_SSL, OV_SMIME, EV_SSL]]

##### Example request

    $ curl 'https://cert-manager.com/api/organization/v2/2901/validations/submit' -i -X POST \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer20779' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{
         "validationLevel": "EV_SSL",
         "alternative": false,
         "backendId": 2143,
         "overwriteIfExists": false,
         "organizationDetails": {
             "generalDetails": {
                 "legalName": "Organization legal name",
                 "assumedName": "Organization assumed name",
                 "address1": "Address line 1",
                 "address2": "Address line 2",
                 "address3": "Address line 3",
                 "city": "Odesa",
                 "stateProvince": "Odeska oblast",
                 "postalCode": "65000",
                 "country": "UA"
             },
             "evDetails": {
                 "registrationAgency": {
                     "dunAndBradstreetNumber": "87654321",
                     "registrationNumber": "12345678910",
                     "city": "Odesa",
                     "state": "Odeska oblast",
                     "country": "UA",
                     "dateOfIncorporation": "2025-03-12",
                     "businessCategory": "NonCommercialEntity"
                 },
                 "contractSigner": {
                     "forename": "Contract signer forename",
                     "surname": "Contract signer surname",
                     "email": "signer@email.com",
                     "phoneNumber": "+123456789"
                 }
             }
         }
     }
    '

##### Example response

    HTTP/1.1 201 Created
    Location: https://cert-manager.com/api/organization/v2/2901/validations/312

##### Response headers

Name | Description
--- | ---
`Location` | URL location of created validation

#### Re-submit organization validation

Resets and submit the validation with the details provided in the request.

##### Path parameters

Table 1. /api/organization/v2/{orgId}/validations/{validationId}/revalidate
Parameter | Description
--- | ---
`orgId` | Organization ID
`validationId` | Validation ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
organizationDetails | Object | Organization details. When not provided, re-validation will be started with the existing details. | []
organizationDetails.generalDetails | Object | General organization details. Required for all validation levels. | [Must not be null]

organizationDetails.organizationIdentifier

String

Organization identifier. Applicable only for OV S/MIME validations. Stands for the legal person identification based on one of the following identity type references allowed by ETSI 319 412-1 standard and Baseline Requirements: National Value Added Tax (VAT), National Trade Register (NTR), Global Legal Entity (LEI), International Organization (INT), Government Entity (GOV)

[Maximum length is 128 characters or can be empty]

organizationDetails.evDetails | Object | EV details. Required for EV validations | []
organizationDetails.generalDetails.legalName | String | Organization legal name | [Must not be empty, Maximum length is 64 characters or can be empty]
organizationDetails.generalDetails.assumedName | String | Organization’s assumed/DBA name (doing business as). Applicable only for EV validations. | [Maximum length is 256 characters or can be empty]
organizationDetails.generalDetails.address1 | String | Address line 1 | [Maximum length is 128 characters or can be empty]
organizationDetails.generalDetails.address2 | String | Address line 2 | [Maximum length is 128 characters or can be empty]
organizationDetails.generalDetails.address3 | String | Address line 3 | [Maximum length is 128 characters or can be empty]
organizationDetails.generalDetails.city | String | City | [Maximum length is 32 characters or can be empty]
organizationDetails.generalDetails.stateProvince | String | State or province | [Maximum length is 32 characters or can be empty]
organizationDetails.generalDetails.postalCode | String | Postal code | [Maximum length is 10 characters or can be empty]
organizationDetails.generalDetails.country | String | Country code (ISO 3166-1 alpha-2) | [Must not be empty, Size must be between 2 and 2 inclusive]
organizationDetails.evDetails.registrationAgency | Object | Registration agency | []
organizationDetails.evDetails.contractSigner | Object | Contract signer | []
organizationDetails.evDetails.registrationAgency.dunAndBradstreetNumber | String | DUN and Bradstreet Number | [Maximum length is 20 characters or can be empty]
organizationDetails.evDetails.registrationAgency.registrationNumber | String | Company Registration Number | [Maximum length is 256 characters or can be empty]
organizationDetails.evDetails.registrationAgency.city | String | Jurisdiction of city or town | [Maximum length is 128 characters or can be empty]
organizationDetails.evDetails.registrationAgency.state | String | Jurisdiction of State | [Maximum length is 128 characters or can be empty]
organizationDetails.evDetails.registrationAgency.country | String | Jurisdiction of Country. (ISO 3166-1 alpha-2 country code) | [Must not be empty, Size must be between 2 and 2 inclusive]
organizationDetails.evDetails.registrationAgency.city | String | City | [Maximum length is 128 characters or can be empty]
organizationDetails.evDetails.registrationAgency.dateOfIncorporation | String | Date of incorporation. Format: yyyy-MM-dd. | [Must be in the past]
organizationDetails.evDetails.registrationAgency.businessCategory | String | Business category. Allowed values: [PrivateOrganization, GovernmentEntity, BusinessEntity, NonCommercialEntity] | []
organizationDetails.evDetails.contractSigner.forename | String | Forename | [Must not be empty, Maximum length is 64 characters or can be empty]
organizationDetails.evDetails.contractSigner.surname | String | Surname | [Must not be empty, Maximum length is 64 characters or can be empty]
organizationDetails.evDetails.contractSigner.email | String | Email | [Must not be empty, Maximum length is 255 characters or can be empty]
organizationDetails.evDetails.contractSigner.phoneNumber | String | Phone number | [Maximum length is 32 characters or can be empty]

##### Example request

    $ curl 'https://cert-manager.com/api/organization/v2/2897/validations/310/revalidate' -i -X PUT \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer20773' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{
         "organizationDetails": {
             "generalDetails": {
                 "legalName": "Organization legal name",
                 "address1": "Address line 1",
                 "address2": "Address line 2",
                 "address3": "Address line 3",
                 "city": "Odesa",
                 "stateProvince": "Odeska oblast",
                 "postalCode": "65000",
                 "country": "UA"
             },
             "organizationIdentifier": "NTRBE-0876866142"
         }
     }
    '

##### Response fields

Path | Type | Description
--- | --- | ---
`id` | `Number` | Entity ID
`validationLevel` | `String` | Validation level. Possible values: [OV_SSL, OV_SMIME, EV_SSL]
`status` | `String` | Validation status
`backgroundStatus` | `String` | Validation background status. Can be one of [PENDING, FAILED], successful background validation empties the field with 'status' field set to VALIDATED
`submitted` | `String` | Submitted date
`expires` | `String` | Expires date
`alternative` | `Boolean` | Is alternative
`backendId` | `Number` | CA Backend ID
`validator` | `Object` | Validator
`validator.id` | `Number` | Validator ID
`validator.name` | `String` | Validator name
`backendType` | `String` | CA Backend type
`settings` | `Object` | Validation settings. Tracking information for the CA backends. Possible settings: [EXTERNAL_ORG_NAME, EXTERNAL_ORG_ID, LEGACY_TRACKING_ID, LEGACY_BACKGROUND_TRACKING_ID, TRACKING_ID, BACKGROUND_TRACKING_ID, LAST_ERR_MSG_FROM_CA]
`organizationDetails` | `Object` | Validated organization details. Available only for Sectigo CA backends
`organizationDetails.generalDetails` | `Object` | General organization details
`organizationDetails.generalDetails.legalName` | `String` | Organization legal name
`organizationDetails.generalDetails.assumedName` | `String` | Organization’s assumed/DBA name (doing business as). Available only for EV validations.
`organizationDetails.generalDetails.address1` | `String` | Address line 1
`organizationDetails.generalDetails.address2` | `String` | Address line 2
`organizationDetails.generalDetails.address3` | `String` | Address line 3
`organizationDetails.generalDetails.city` | `String` | City
`organizationDetails.generalDetails.stateProvince` | `String` | State or province
`organizationDetails.generalDetails.postalCode` | `String` | Postal code
`organizationDetails.generalDetails.country` | `String` | Country code (ISO 3166-1 alpha-2)
`organizationDetails.organizationIdentifier` | `String` | Organization identifier. Available only for OV S/MIME validation
`organizationDetails.evDetails` | `Object` | EV details. Available only for EV validations.
`organizationDetails.evDetails.registrationAgency` | `Object` | Registration agency
`organizationDetails.evDetails.registrationAgency.dunAndBradstreetNumber` | `String` | DUN and Bradstreet Number
`organizationDetails.evDetails.registrationAgency.registrationNumber` | `String` | Company Registration Number
`organizationDetails.evDetails.registrationAgency.city` | `String` | Jurisdiction of city or town
`organizationDetails.evDetails.registrationAgency.state` | `String` | Jurisdiction of State
`organizationDetails.evDetails.registrationAgency.country` | `String` | Jurisdiction of Country. (ISO 3166-1 alpha-2 country code)
`organizationDetails.evDetails.registrationAgency.city` | `String` | City
`organizationDetails.evDetails.registrationAgency.dateOfIncorporation` | `String` | Date of incorporation
`organizationDetails.evDetails.registrationAgency.businessCategory` | `String` | Business category. Possible values: [PrivateOrganization, GovernmentEntity, BusinessEntity, NonCommercialEntity]
`organizationDetails.evDetails.contractSigner` | `Object` | Contract signer
`organizationDetails.evDetails.contractSigner.forename` | `String` | Forename
`organizationDetails.evDetails.contractSigner.surname` | `String` | Surname
`organizationDetails.evDetails.contractSigner.email` | `String` | Email
`organizationDetails.evDetails.contractSigner.phoneNumber` | `String` | Phone Number

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 573

    {"id":310,"validationLevel":"OV_SMIME","status":"PENDING","expires":"2026-02-15T09:21:11.020Z","alternative":false,"backendId":2140,"backendType":"SASP","settings":{"TRACKING_ID":"12345678"},"validator":{"id":3206,"name":"client-admin-20774 client-admin-20774"},"organizationDetails":{"generalDetails":{"legalName":"Organization legal name","assumedName":null,"address1":"Address line 1","address2":"Address line 2","address3":"Address line 3","city":"Odesa","stateProvince":"Odeska oblast","postalCode":"65000","country":"UA"},"organizationIdentifier":"NTRBE-0876866142"}}

#### Change validator

Updates organization validation admin according to the provided request

##### Path parameters

Table 1. /api/organization/v2/{orgId}/validations/{validationId}/validator
Parameter | Description
--- | ---
`orgId` | Organization ID
`validationId` | Validation ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
adminId | Number | Validator admin ID | [Must not be null]

##### Example request

    $ curl 'https://cert-manager.com/api/organization/v2/2885/validations/303/validator' -i -X PUT \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer20753' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{
        "adminId": 3194
    }
    '

##### Example response

    HTTP/1.1 202 Accepted

#### Reset organization validation

Resets and removes organization validation.

##### Path parameters

Table 1. /api/organization/v2/{orgId}/validations/{validationId}
Parameter | Description
--- | ---
`orgId` | Organization ID
`validationId` | Validation ID

##### Example request

    $ curl 'https://cert-manager.com/api/organization/v2/2895/validations/309' -i -X DELETE \
        -H 'login: admin_customer20770' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Example response

    HTTP/1.1 204 No Content

#### Synchronize organization validation

Synchronizes the organization validation with the CA backend.

##### Path parameters

Table 1. /api/organization/v2/{orgId}/validations/{validationId}/sync
Parameter | Description
--- | ---
`orgId` | Organization ID
`validationId` | Validation ID

##### Example request

    $ curl 'https://cert-manager.com/api/organization/v2/2907/validations/314/sync' -i -X POST \
        -H 'login: admin_customer20788' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Response fields

Path | Type | Description
--- | --- | ---
`id` | `Number` | Entity ID
`validationLevel` | `String` | Validation level. Possible values: [OV_SSL, OV_SMIME, EV_SSL]
`status` | `String` | Validation status
`backgroundStatus` | `String` | Validation background status. Can be one of [PENDING, FAILED], successful background validation empties the field with 'status' field set to VALIDATED
`submitted` | `String` | Submitted date
`expires` | `String` | Expires date
`alternative` | `Boolean` | Is alternative
`backendId` | `Number` | CA Backend ID
`validator` | `Object` | Validator
`validator.id` | `Number` | Validator ID
`validator.name` | `String` | Validator name
`backendType` | `String` | CA Backend type
`settings` | `Object` | Validation settings. Tracking information for the CA backends. Possible settings: [EXTERNAL_ORG_NAME, EXTERNAL_ORG_ID, LEGACY_TRACKING_ID, LEGACY_BACKGROUND_TRACKING_ID, TRACKING_ID, BACKGROUND_TRACKING_ID, LAST_ERR_MSG_FROM_CA]
`organizationDetails` | `Object` | Validated organization details. Available only for Sectigo CA backends
`organizationDetails.generalDetails` | `Object` | General organization details
`organizationDetails.generalDetails.legalName` | `String` | Organization legal name
`organizationDetails.generalDetails.assumedName` | `String` | Organization’s assumed/DBA name (doing business as). Available only for EV validations.
`organizationDetails.generalDetails.address1` | `String` | Address line 1
`organizationDetails.generalDetails.address2` | `String` | Address line 2
`organizationDetails.generalDetails.address3` | `String` | Address line 3
`organizationDetails.generalDetails.city` | `String` | City
`organizationDetails.generalDetails.stateProvince` | `String` | State or province
`organizationDetails.generalDetails.postalCode` | `String` | Postal code
`organizationDetails.generalDetails.country` | `String` | Country code (ISO 3166-1 alpha-2)
`organizationDetails.organizationIdentifier` | `String` | Organization identifier. Available only for OV S/MIME validation
`organizationDetails.evDetails` | `Object` | EV details. Available only for EV validations.
`organizationDetails.evDetails.registrationAgency` | `Object` | Registration agency
`organizationDetails.evDetails.registrationAgency.dunAndBradstreetNumber` | `String` | DUN and Bradstreet Number
`organizationDetails.evDetails.registrationAgency.registrationNumber` | `String` | Company Registration Number
`organizationDetails.evDetails.registrationAgency.city` | `String` | Jurisdiction of city or town
`organizationDetails.evDetails.registrationAgency.state` | `String` | Jurisdiction of State
`organizationDetails.evDetails.registrationAgency.country` | `String` | Jurisdiction of Country. (ISO 3166-1 alpha-2 country code)
`organizationDetails.evDetails.registrationAgency.city` | `String` | City
`organizationDetails.evDetails.registrationAgency.dateOfIncorporation` | `String` | Date of incorporation
`organizationDetails.evDetails.registrationAgency.businessCategory` | `String` | Business category. Possible values: [PrivateOrganization, GovernmentEntity, BusinessEntity, NonCommercialEntity]
`organizationDetails.evDetails.contractSigner` | `Object` | Contract signer
`organizationDetails.evDetails.contractSigner.forename` | `String` | Forename
`organizationDetails.evDetails.contractSigner.surname` | `String` | Surname
`organizationDetails.evDetails.contractSigner.email` | `String` | Email
`organizationDetails.evDetails.contractSigner.phoneNumber` | `String` | Phone Number

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 400

    {"id":314,"validationLevel":"OV_SSL","status":"PENDING","alternative":false,"backendId":2146,"backendType":"SASP","settings":{"TRACKING_ID":"1688731626"},"organizationDetails":{"generalDetails":{"legalName":"New org4Test","assumedName":null,"address1":"Deribasovskaya 1","address2":"Street 2","address3":"Street 3","city":"Odesa","stateProvince":"Odeska oblast","postalCode":"65059","country":"UA"}}}

#### Create external validation assignment

Creates the assignment to the external organization’s validation

##### Path parameters

Table 1. /api/organization/v2/{orgId}/validations/assignment
Parameter | Description
--- | ---
`orgId` | Organization ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
alternative | Boolean | Validation set. Primary (alternative = false) or Secondary (alternative = true). Note: Secondary validation sets are available only for accounts with the corresponding feature enabled. | []
overwriteIfExists | Boolean | This flag is required to manage the processing when validation with such configuration already exists. By default, overwriting the existing validations is not allowed. | []
caBackendId | Number | External CA backend ID. Note: All CA backends except 'Sectigo' are considered external. | []
externalOrgId | String | External CA backend organization ID | []
externalOrgName | String | External CA backend organization name | []
validationLevel | String | Validation level | [Must not be null, Allowed values: [OV_SSL, OV_SMIME, EV_SSL]]

##### Example request

    $ curl 'https://cert-manager.com/api/organization/v2/2887/validations/assignment' -i -X POST \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer20758' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{
         "validationLevel": "OV_SSL",
         "externalOrgId": "809849576039",
         "externalOrgName": "External CA backend organization name",
         "alternative": false,
         "caBackendId": 2133,
         "overwriteIfExists": false
    }
    '

##### Example response

    HTTP/1.1 201 Created
    Location: https://cert-manager.com/api/organization/v2/2887/validations/304

##### Response headers

Name | Description
--- | ---
`Location` | URL location of created external assignment

#### Change external validation assignment

Updates the assigned external organization’s validation

##### Path parameters

Table 1. /api/organization/v2/{orgId}/validations/assignment/{validationId}
Parameter | Description
--- | ---
`orgId` | Organization ID
`validationId` | Validation ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
externalOrgId | String | External CA backend organization ID | []
externalOrgName | String | External CA backend organization name | []

##### Example request

    $ curl 'https://cert-manager.com/api/organization/v2/2893/validations/assignment/308' -i -X PUT \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer20767' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{
         "externalOrgId": "586703957093",
         "externalOrgName": "External CA backend organization name"
    }
    '

##### Example response

    HTTP/1.1 202 Accepted

## CA Backends

Access to this API is allowed only for MRAO role admins.

### List CA Backends

#### Example request

    $ curl 'https://cert-manager.com/api/ca-backend/v1' -i -X GET \
        -H 'login: nick-21161' \
        -H 'password: Password123!' \
        -H 'customerUri: ca_backends'

#### Response fields

Path | Type | Description
--- | --- | ---
`[].id` | `Number` | CA Backend ID
`[].name` | `String` | CA Backend name
`[].type` | `String` | CA Backend type. Possible values are: [SASP, PRIVATE_CA, MS_CA, DIGI_CERT, ENTRUST, AWS_PCA, GOOGLE]
`[].public` | `Boolean` | Flag indicating whether the CA Backend is public
`[].connectorBackendType` | `String` | Applicable only for the connector-based backends. The type of CA backend used in the connector command-line interface.

#### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 337

    [{"id":2203,"name":"Sectigo Public CA","type":"SASP","public":true},{"id":2204,"name":"Sectigo Private CA","type":"PRIVATE_CA","public":false},{"id":2205,"name":"Microsoft CA","type":"MS_CA","connectorBackendType":"msca","public":false},{"id":2206,"name":"DigiCert CA","type":"DIGI_CERT","connectorBackendType":"digicert","public":true}]

## Reports

### Common codes

#### Certificate status codes

These codes can be used as parameters.

Code | Status
0 | Any
1 | Requested
2 | Issued
3 | Revoked
4 | Expired
5 | Enrolled - Pending Download
6 | Not Enrolled
7 | Awaiting Approval (Deprecated, falls back to "Requested". "Requested" status should be used instead).
8 | Approved
9 | Applied
10 | Downloaded (Deprecated, Issued with "certificateDateAttribute" equal to "Date of Downloading" should be used instead)
11 | External (Deprecated, falls back to Issued. Issued with "certificateRequestSource" should be used instead)

#### Date attribute type codes

These codes can be used as parameters.

Code | Attribute Type
0 | Date of Enrollment
1 | Date of Downloading
2 | Date of Revocation
3 | Date of Expiration
4 | Date of Request
5 | Date of Issuance
6 | Date of Invitation

### Report APIs

#### Activity log report

Retrieves a log of SCM activities for a customer’s account, including actions on Certificates and actions of Agents.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
from | String | Filters the audit log records by 'created' date. Activity log includes the events that occurred from this date. | ISO format, YYYY-MM-DD. Must be earlier than 'to' date.
to | String | Filters the audit log records by 'created' date. Activity log includes the events that occurred not later than this date. | ISO format, YYYY-MM-DD. Must not be earlier than 'from' date.

##### Example request

    $ curl 'https://cert-manager.com/api/report/v1/activity?output_type=buffered' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer20344' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{"from":"2019-01-01T00:00:00.000Z","to":"2019-01-31T00:00:00.000Z"}'

##### Response fields

Path | Type | Description
--- | --- | ---
`statusCode` | `Number` | Report execution status code
`reports.[]` | `Array` | Array of reported activity log records with details
`reports.[].id` | `Number` | Activity log record ID
`reports.[].guid` | `String` | Activity log record GUID
`reports.[].accessMethod` | `String` | An access method used to perform the action
`reports.[].date` | `String` | Action timestamp
`reports.[].address` | `String` | Source IP address of the action request
`reports.[].description` | `String` | Activity log record description
`reports.[].action` | `Object` | Action info
`reports.[].action.id` | `Number` | Action ID
`reports.[].action.actionName` | `String` | Action name
`reports.[].org` | `Object` | Organization info
`reports.[].org.name` | `String` | An organization name which this action is associated with
`reports.[].org.address1` | `String` | Organization address line 1
`reports.[].org.address2` | `String` | Organization address line 2
`reports.[].org.address3` | `String` | Organization address line 3
`reports.[].person` | `Object` | Person info
`reports.[].person.name` | `String` | A person name which this action is associated with
`reports.[].person.email` | `String` | Person email
`reports.[].person.guid` | `String` | Person GUID
`reports.[].admin` | `Object` | Admin user info
`reports.[].admin.login` | `String` | An admin login which this action is associated with
`reports.[].admin.fullName` | `String` | Admin full name
`reports.[].admin.email` | `String` | Admin email
`reports.[].smime` | `Object` | Client certificate info
`reports.[].smime.subject` | `String` | Client certificate subject
`reports.[].smime.orderNumber` | `Number` | The obsolete parameter for the order identifier under which the client certificate request has been processed. backendCertId should be used instead
`reports.[].smime.backendCertId` | `String` | Client certificate ID in enrolling backend
`reports.[].ssl` | `Object` | SSL certificate info
`reports.[].ssl.commonName` | `String` | SSL certificate common name
`reports.[].ssl.orderNumber` | `Number` | The obsolete parameter for the order identifier under which the SSL certificate request has been processed. backendCertId should be used instead
`reports.[].ssl.backendCertId` | `String` | SSL certificate ID in enrolling backend
`reports.[].ssl.term` | `Number` | SSL certificate term (days)
`reports.[].ssl.type` | `String` | SSL certificate profile name
`reports.[].notif` | `Object` | Notification info
`reports.[].notif.description` | `String` | Notification description

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json;charset=UTF-8
    Content-Disposition: attachment; filename="rest_api_activity.json"
    Cache-Control: must-revalidate
    Pragma: public
    Content-Length: 339

    {"statusCode":0,"reports":[{"id":0,"guid":"f308bfa90e5845109adab1d11eaf5ded","action":{"id":0,"actionName":"ClientAdmin: login success"},"admin":{"login":"admin","fullName":"MRAO admin","email":"admin@somecompany.com"},"description":"Login success","accessMethod":"UI access","address":"37.214.176.150","date":"2025-08-15T09:20:13.480Z"}]}

#### SSL certificates report

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
organizationIds | Array | Unique identifiers of the organizations. The report contains SSL certificates associated with these organizations. | []
commonName | String | The report will contain only certs with Common Name pattern like this | [Must match the regular expression `^((?!.[><\\].).)*$`, Maximum length is 256 characters or can be empty]
externalRequester | String | The report will contain only certs with External Requester pattern like this (case sensitive) | [Maximum length is 512 characters or can be empty]
certificateStatus | Number | Status ID of SSL certificates that are included in the report. | The values applicable to this type of report are: [0(Any), 1(Requested), 2(Issued), 3(Revoked), 4(Expired)]. 11(External) - deprecated, see 'Certificate Status Codes' section for details.
certificateDateAttribute | Number | Unique identifier of the date type. | The values applicable to this type of report are: [2 (Revocation Date), 3 (Expiration Date), 4 (Request Date), 5 (Issuance Date)]
from | String | The report contains SSL certificates which date, defined by 'certificateDateAttribute' request field, is not earlier than this date. | ISO format, YYYY-MM-DD. Must be earlier than 'to' date.
to | String | The report contains SSL certificates which date, defined by 'certificateDateAttribute' request field, is not later than this date. | ISO format, YYYY-MM-DD. Must not be earlier than 'from' date.
certificateRequestSource | Number | The source a certificate has been requested from. | The values applicable to this type of report are: 0 (Enrollment Form) 1 (Client Admin) 2 (Web API) 3 (Discovery) 4 (Imported) 5 (SCEP) 7 (MS Agent) 9 (Bulk Request) 10 (ACME) 11 (EST) 12 (REST API)
serialNumberFormat | String | Special format of a Serial Number, if required. | If the value specified is 'HEXWithLeadingZeros', then report contains certificate serial numbers in HEX format without leading zeros stripped.
includeIpAddresses | Boolean | Include certificate IP locations. Significantly affects report generation time. |

##### Example request

    $ curl 'https://cert-manager.com/api/report/v1/ssl-certificates?output_type=buffered' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer20369' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{"from":"2019-01-01T00:00:00.000Z","to":"2019-01-31T00:00:00.000Z","organizationIds":[2756],"certificateStatus":1,"certificateDateAttribute":1,"certificateRequestSource":0,"serialNumberFormat":"","includeIpAddresses":false}'

##### Response fields

Path | Type | Description
--- | --- | ---
`statusCode` | `Number` | Report execution status code
`reports.[]` | `Array` | Array of reported SSL certificates with details
`reports.[].commonName` | `String` | Certificate common name
`reports.[].id` | `Number` | An ID using which this certificate can be renewed or revoked through Enrollment form
`reports.[].orgId` | `Number` | An organization ID which this certificate is associated with
`reports.[].organizationName` | `String` | An organization name which this certificate is associated with
`reports.[].city` | `String` | An organization city which this certificate is associated with
`reports.[].state` | `String` | An organization state which this certificate is associated with
`reports.[].country` | `String` | An organization country which this certificate is associated with
`reports.[].status` | `String` | The status of this certificate
`reports.[].orderNumber` | `Number` | The obsolete parameter for the order identifier under which the certificate request has been processed. backendCertId should be used instead
`reports.[].backendCertId` | `String` | Certificate ID in enrolling backend
`reports.[].serverType` | `String` | Deprecated
`reports.[].servers` | `Number` | Deprecated
`reports.[].typeId` | `Number` | Certificate Profile ID
`reports.[].type` | `String` | Certificate Profile name
`reports.[].term` | `Number` | Term (days)
`reports.[].issuer` | `String` | The subject of the issuing CA certificate
`reports.[].requester` | `String` | Requester
`reports.[].approver` | `String` | Approver
`reports.[].externalRequester` | `String` | External requester
`reports.[].comments` | `String` | Comments
`reports.[].requested` | `String` | Requested date
`reports.[].approved` | `String` | Approved date
`reports.[].declined` | `String` | Declined date
`reports.[].downloaded` | `String` | Downloaded date
`reports.[].expires` | `String` | Expiration date
`reports.[].revoked` | `String` | Revocation date
`reports.[].replaced` | `String` | Replaced date
`reports.[].ipAddresses` | `String` | IP addresses
`reports.[].publicKeyAlg` | `String` | Key algorithm (deprecated, see "publicKeyType")
`reports.[].publicKeySize` | `String` | Key size (deprecated, see "publicKeyType")
`reports.[].publicKeyType` | `String` | Key type. For example: RSA - 2048, EC - P-256.
`reports.[].subjAltNames` | `String` | Subject alternative names
`reports.[].serialNumber` | `String` | SSL Serial Number
`reports.[].requestedVia` | `String` | Requested Via. Possible values: 'Enrollment Form', 'Client Admin', 'Web API', 'Discovery', 'Imported', 'SCEP', 'CD Agent', 'MS Agent', 'MS CA', 'Bulk Request', 'ACME', 'EST', 'REST API'
`reports.[].sha1` | `String` | SHA1 Hash
`reports.[].md5` | `String` | MD5 Hash
`reports.[].customFields.[]` | `Array` | Custom fields
`reports.[].customFields.[].name` | `String` | Custom field name
`reports.[].customFields.[].value` | `String` | Custom field value

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json;charset=UTF-8
    Content-Disposition: attachment; filename="rest_api_ssl-certificates.json"
    Cache-Control: must-revalidate
    Pragma: public
    Content-Length: 659

    {"statusCode":0,"reports":[{"id":310,"type":"SSL SASP -1085798943","typeId":1929,"orgId":2756,"commonName":"ccmqa.com","subjAltNames":"www.test.net; www.plustest.net; www.istest.net","status":"Requested","requester":"20372_nobody@nobody.sectigo.com","organizationName":"org4Test","orderNumber":7344326,"backendCertId":"7344326","servers":1,"serverType":"OTHER","requestedVia":"Enrollment Form","term":365,"comments":"some comments","requested":"2025-08-15T09:20:21.643Z","downloaded":"2019-01-02T00:00:00.000Z","expires":"2026-08-15T09:20:21.619Z","issuer":"issuer","serialNumber":"","city":"Odesa","state":"Odeska oblast","country":"UA","sha1":"AAABBBCCC"}]}

#### Client certificates report

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
organizationIds | Array | Unique identifiers of the organizations. The report contains Client certificates associated with these organizations. | []

certificateStatus

Number

Status ID of Client certificates that are included in the report.

The values applicable to this type of report are: [0(Any), 2(Enrolled), 3(Revoked), 4(Expired), 5(Enrolled - Pending Download), 6(Not Enrolled)]. 2(Enrolled) - Former 'Enrolled - Downloaded'. Use with "certificateDateAttribute" equal to "Date of Downloading" to get old semantic. Person list (without client certificates) will be present in the report as well for values: [0(Any), 6(Not Enrolled)]

certificateDateAttribute | Number | Unique identifier of the date type. | The values applicable to this type of report are: [0(Enrolled Date), 1(Downloaded Date), 2(Revocation Date), 3(Expiration Date)]
from | String | The report contains Client certificates which date, defined by 'certificateDateAttribute' request field, is not earlier than this date. | ISO format, YYYY-MM-DD. Must be earlier than 'to' date.
to | String | The report contains Client certificates which date, defined by 'certificateDateAttribute' request field, is not later than this date. | ISO format, YYYY-MM-DD. Must not be earlier than 'from' date.

##### Example request

    $ curl 'https://cert-manager.com/api/report/v1/client-certificates?output_type=buffered' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer20347' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{"from":"2019-01-01T00:00:00.000Z","to":"2019-01-31T00:00:00.000Z","organizationIds":[2743],"certificateStatus":3,"certificateDateAttribute":1}'

##### Response fields

Path | Type | Description
--- | --- | ---
`statusCode` | `Number` | Report execution status code
`reports.[]` | `Array` | Array of reported client certificates with details
`reports.[].id` | `Number` | An ID using which this certificate can be renewed or revoked through Enrollment form
`reports.[].subject` | `String` | Certificate subject
`reports.[].email` | `String` | Certificate email
`reports.[].orderNumber` | `Number` | The obsolete parameter for the order identifier under which the certificate request has been processed. backendCertId should be used instead
`reports.[].backendCertId` | `String` | Certificate ID in enrolling backend
`reports.[].enrolled` | `String` | Enrolled date
`reports.[].downloaded` | `String` | Download date
`reports.[].expire` | `String` | Expiration date
`reports.[].enrollType` | `String` | Enrollment type. Possible values: 'Admin Enroll', 'Self Enroll', 'API Enroll', 'Auto Enroll', 'CSV Enroll', 'SCEP Enroll', 'IdP Enroll', 'MS Agent Enroll', 'Discovery', 'MS CA Enroll', 'Imported', 'EST Enroll', 'REST Enroll API'
`reports.[].organization` | `Object` | Organization info
`reports.[].organization.id` | `String` | Organization ID
`reports.[].organization.name` | `String` | An organization name which this certificate is associated with
`reports.[].person` | `Object` | Person info
`reports.[].person.name` | `String` | A person name which this certificate is associated with
`reports.[].person.email` | `String` | Person email
`reports.[].person.guid` | `String` | Person GUID
`reports.[].customFields.[]` | `Array` | Custom fields
`reports.[].customFields.[].name` | `String` | Custom field name
`reports.[].customFields.[].value` | `String` | Custom field value
`reports.[].comments` | `String` | Certificate comments

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json;charset=UTF-8
    Content-Disposition: attachment; filename="rest_api_client-certificates.json"
    Cache-Control: must-revalidate
    Pragma: public
    Content-Length: 483

    {"statusCode":0,"reports":[{"id":122,"person":{"name":"Tester","email":"20352_nobody@nobody.sectigo.com","guid":"3095c3e4-f146-3133-a5e6-be134eb2ebe2"},"organization":{"id":"2743","name":"org4Test"},"subject":"test@email","email":"20352_nobody@nobody.sectigo.com","orderNumber":1,"backendCertId":"1","enrolled":"2019-01-02T00:00:00.000Z","downloaded":"2019-01-02T00:00:00.000Z","expire":"2020-01-02T00:00:00.000Z","enrollType":"Self Enroll","comments":"Enrolled by urgent request"}]}

#### Device certificates report

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
organizationIds | Array | Unique identifiers of the organizations. The report contains Device certificates associated with these organizations. | []
certificateStatus | Number | Status ID of Device certificates that are included in the report. | The values applicable to this type of report are: [0 (Any), 1 (Requested), 8 (Approved), 9 (Applied), 2 (Issued), 3 (Revoked), 4 (Expired)]. Deprecated statuses: 10 (Downloaded), 7 (Awaiting Approval) - see 'Certificate Status Codes' section for details.
certificateDateAttribute | Number | Unique identifier of the date type. | The values applicable to this type of report are: [2(Revocation Date), 3(Expiration Date), 4(Request Date), 5(Issuance Date)]
from | String | The report contains Device certificates which date, defined by 'certificateDateAttribute' request field, is not earlier than this date. | ISO format, YYYY-MM-DD. Must be earlier than 'to' date.
to | String | The report contains Device certificates which date, defined by 'certificateDateAttribute' request field, is not later than this date. | ISO format, YYYY-MM-DD. Must not be earlier than 'from' date.
serialNumberFormat | String | Special format of a Serial Number, if required. | If the value specified is 'HEXWithLeadingZeros', then report contains certificate serial numbers in HEX format without leading zeros stripped.

##### Example request

    $ curl 'https://cert-manager.com/api/report/v1/device-certificates?output_type=buffered' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer20356' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{"from":"2025-08-14T09:20:20.741Z","to":"2025-08-16T09:20:20.741Z","certificateStatus":8,"certificateDateAttribute":4,"serialNumberFormat":""}'

##### Response fields

Path | Type | Description
--- | --- | ---
`statusCode` | `Number` | Report execution status code
`reports.[]` | `Array` | Array of reported device certificates with details
`reports.[].id` | `Number` | An ID using which this certificate can be renewed or revoked through Enrollment form
`reports.[].commonName` | `String` | Certificate common name
`reports.[].subject` | `String` | Certificate subject
`reports.[].approver` | `String` | Approver
`reports.[].city` | `String` | An organization city which this certificate is associated with
`reports.[].state` | `String` | An organization state which this certificate is associated with
`reports.[].country` | `String` | An organization country which this certificate is associated with
`reports.[].deviceCertStatus` | `String` | The status of this certificate
`reports.[].serialNumber` | `String` | Device certificate serial number
`reports.[].email` | `String` | Certificate email
`reports.[].orderNumber` | `Number` | The obsolete parameter for the order identifier under which the certificate request has been processed. backendCertId should be used instead
`reports.[].backendCertId` | `String` | Certificate ID in enrolling backend
`reports.[].enrolled` | `String` | Enrolled date
`reports.[].expire` | `String` | Expiration date
`reports.[].enrollType` | `String` | Enrollment type. Possible values: 'API', 'DISCOVERY', 'API_APPROVAL', 'SELF_ENROLLMENT', 'SCEP_ENROLL', 'MS_CA', 'MS_CA_ENROLL_ON_BEHALF', 'UI', 'EST_ENROLL', 'REST_ENROLL', 'IMPORTED'
`reports.[].keyAlgorithm` | `String` | Key algorithm (deprecated, see "keyType")
`reports.[].keySize` | `Number` | Key size (deprecated, see "keyType")
`reports.[].keyType` | `String` | Key type. For example: RSA - 2048, EC - P-256.
`reports.[].signatureAlgorithm` | `String` | Signature algorithm
`reports.[].certTypeName` | `String` | Certificate Profile name
`reports.[].keyUsage` | `String` | Key usage extensions define the purpose of the public key contained in a certificate
`reports.[].extendedKeyUsage` | `String` | Extended key usage further refines key usage extensions
`reports.[].caId` | `String` | Certificate authority ID
`reports.[].caName` | `String` | Certificate authority name
`reports.[].organization` | `Object` | Organization info
`reports.[].organization.id` | `String` | Organization ID
`reports.[].organization.name` | `String` | An organization name which this certificate is associated with
`reports.[].customFields.[]` | `Array` | Custom fields
`reports.[].customFields.[].name` | `String` | Custom field name
`reports.[].customFields.[].value` | `String` | Custom field value
`reports.[].comments` | `String` | Certificate comments

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json;charset=UTF-8
    Content-Disposition: attachment; filename="rest_api_device-certificates.json"
    Cache-Control: must-revalidate
    Pragma: public
    Content-Length: 649

    {"statusCode":0,"reports":[{"id":135,"commonName":"34356576543tnl54hgnu49u90g","organization":{"id":"2747","name":"org4Test"},"deviceCertStatus":"Approved","subject":"C=UA,ST=Odessa,L=Odessa,O=Test,OU=Test,CN=Test,E=test@test.test","email":"Someone@nobody.sectigo.com","city":"Odesa","state":"Odesa","country":"Ukraine","orderNumber":100500,"backendCertId":"100500","serialNumber":"","certTypeName":"Device cert SASP -1309623208","expire":"2026-08-15T09:20:20.709Z","enrollType":"API","keyAlgorithm":"RSA","keySize":2048,"keyType":"RSA - 2048","signatureAlgorithm":"","approver":"client-admin client-admin","comments":"Enrolled by urgent request"}]}

#### Domains report

##### Example request

    $ curl 'https://cert-manager.com/api/report/v1/domains' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer20362' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Response body

    {"statusCode":0,"reports":[{"id":404,"name":"scmqa.com","status":"Active","requested":"2025-08-15T09:20:21.198Z","dcvStatus":"Validated","stickyUntil":"2019-01-03T00:00:00.000Z"}]}

##### Response fields

Path | Type | Description
--- | --- | ---
`statusCode` | `Number` | Report execution status code
`reports.[]` | `Array` | Array of reported domain records with details
`reports.[].id` | `Number` | Domain id
`reports.[].name` | `String` | Domain name
`reports.[].status` | `String` | Domain state. Available values are: [Suspended, Active]
`reports.[].requested` | `String` | Domain requested date
`reports.[].stickyUntil` | `String` | DCV expiration date
`reports.[].dcvStatus` | `String` | Domain control validation status. Possible values: 'Not Initiated', 'Validated', 'Action Required', 'Expired'

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json;charset=UTF-8
    Content-Disposition: attachment; filename="rest_api_domains.json"
    Cache-Control: must-revalidate
    Pragma: public
    Content-Length: 180

    {"statusCode":0,"reports":[{"id":404,"name":"scmqa.com","status":"Active","requested":"2025-08-15T09:20:21.198Z","dcvStatus":"Validated","stickyUntil":"2019-01-03T00:00:00.000Z"}]}

## ACME

### Sectigo Public ACME

#### List Sectigo Public ACME servers

##### Query parameters

Parameter | Description
--- | ---
`position` | the first position (entry) to return from the results of the query
`size` | Count of entries
`name` | ACME server name
`url` | ACME server URL
`certValidationType` | ACME server validation type. Values: [DV, OV, EV]
`caId` | ACME server CA ID

##### Example request

    $ curl 'https://cert-manager.com/api/acme/v1/server?position=0&size=10&name=OV+ACME+Server&url=https%3A%2Facmeserverfortest-OV&certValidationType=OV&caId=40485' -i -X GET \
        -H 'login: nick-20110' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20109'

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | List of ACME servers
`[].name` | `String` | ACME server name
`[].certValidationType` | `String` | ACME server validation type. Values: [DV, OV, EV]
`[].url` | `String` | ACME server URL
`[].caId` | `Number` | ACME server CA ID
`[].singleProductId` | `Number` | ACME server single product ID
`[].multiProductId` | `Number` | ACME server multi product ID
`[].wcProductId` | `Number` | ACME server WC product ID

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 169

    [{"url":"https:/acmeserverfortest-OV","caId":40485,"name":"OV ACME Server","singleProductId":66362,"multiProductId":23234,"wcProductId":14608,"certValidationType":"OV"}]

#### List Sectigo Public ACME accounts

`V2`

##### Query parameters

Parameter | Description
--- | ---
`position` | the first position (entry) to return from the results of the query
`size` | Count of entries
`organizationId` | Organization ID. You can append '%2C-2' (e.g. organizationId=105%2C-2) URL-encoded suffix for none departments selection, only organization(e.g. with ID=105) itself.
`name` | ACME account name
`acmeServer` | ACME account server name
`certValidationType` | ACME account server validation type. Values: [DV, OV, EV]

##### Example request

    $ curl 'https://cert-manager.com/api/acme/v2/account?position=0&size=10&organizationId=2679&name=OV+ACME+Account&acmeServer=OV+ACME+Server' -i -X GET \
        -H 'login: nick-19962' \
        -H 'password: Password123!' \
        -H 'customerUri: cst19955'

##### Response headers

Name | Description
--- | ---
`X-Total-Count` | Total count of filtered ACME accounts existing on Sectigo public CA side

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | List of ACME accounts
`[].id` | `Number` | ACME account entity ID
`[].name` | `String` | ACME account name
`[].macKey` | `String` | ACME account HMAC key
`[].macId` | `String` | ACME account key ID
`[].acmeServer` | `String` | ACME account server name
`[].organizationId` | `Number` | ACME account organization ID
`[].certValidationType` | `String` | ACME account server validation type. Values: [DV, OV, EV]
`[].accountId` | `String` | ACME account ID
`[].validationId` | `String` | OV anchor certificate ID for OV accounts and EV tracking ID for EV accounts

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 1
    Content-Type: application/json
    Content-Length: 338

    [{"id":97,"accountId":"7df9646f-631c-44f4-a0bd-cd30bec66846","macId":"7df9646f-631c-44f4-a0bd-cd30bec66846","macKey":"58da39fc-cea4-44ad-a56e-1db0dc7fd2d1","acmeServer":"OV ACME Server","name":"OV ACME Account","organizationId":2679,"certValidationType":"OV","ovOrderNumber":686756872,"ovAnchorID":"686756872","validationId":"686756872"}]

`V1` - Deprecated

##### Query parameters

Parameter | Description
--- | ---
`position` | the first position (entry) to return from the results of the query
`size` | Count of entries
`organizationId` | Organization ID. You can append '%2C-2' (e.g. organizationId=105%2C-2) URL-encoded suffix for none departments selection, only organization(e.g. with ID=105) itself.
`name` | ACME account name
`acmeServer` | ACME account server name
`certValidationType` | ACME account server validation type. Values: [DV, OV, EV]

##### Example request

    $ curl 'https://cert-manager.com/api/acme/v1/account?position=0&size=10&organizationId=2733&name=OV+ACME+Account&acmeServer=OV+ACME+Server' -i -X GET \
        -H 'login: nick-20306' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20299'

##### Response headers

Name | Description
--- | ---
`X-Total-Count` | Total count of filtered ACME accounts existing on SASP public CA side

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | List of ACME accounts
`[].id` | `Number` | ACME account entity ID
`[].name` | `String` | ACME account name
`[].macKey` | `String` | ACME account HMAC key
`[].macId` | `String` | ACME account key ID
`[].acmeServer` | `String` | ACME account server name
`[].organizationId` | `Number` | ACME account organization ID
`[].certValidationType` | `String` | ACME account server validation type. Values: [DV, OV, EV]
`[].accountId` | `String` | ACME account ID
`[].ovOrderNumber` | `Number` | OV order number (deprecated, see 'ovAnchorID')
`[].ovAnchorID` | `String` | OV anchor certificate ID.
`[].validationId` | `String` | ACME account’s organization pre-validation ID.
`[].domains[]` | `Array` | ACME account domains
`[].domains[].name` | `String` | ACME account domain name

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 1
    Content-Type: application/json
    Content-Length: 414

    [{"id":150,"accountId":"4c230117-e9b2-4c9c-9241-86b4e7e93647","macId":"4c230117-e9b2-4c9c-9241-86b4e7e93647","macKey":"9da014d0-f065-473f-80bb-54b11fc940ba","acmeServer":"OV ACME Server","name":"OV ACME Account","organizationId":2733,"certValidationType":"OV","ovOrderNumber":2121298300,"ovAnchorID":"2121298300","validationId":"2121298300","domains":[{"name":"domain.ccmqa.com"},{"name":"sub.domain.ccmqa.com"}]}]

#### Get Sectigo Public ACME account details

`V2`

##### Path parameters

Table 1. /api/acme/v2/account/{id}
Parameter | Description
--- | ---
`id` | ACME account entity ID

##### Example request

    $ curl 'https://cert-manager.com/api/acme/v2/account/93' -i -X GET \
        -H 'login: nick-19948' \
        -H 'password: Password123!' \
        -H 'customerUri: cst19941' \
        -H 'Accept: application/json'

##### Response fields

Path | Type | Description
--- | --- | ---
`id` | `Number` | ACME account entity ID
`name` | `String` | ACME account name
`macKey` | `String` | ACME account HMAC key
`macId` | `String` | ACME account key ID
`acmeServer` | `String` | ACME account server name
`organizationId` | `Number` | ACME account organization ID
`certValidationType` | `String` | ACME account server validation type. Values: [DV, OV, EV]
`accountId` | `String` | ACME account ID
`validationId` | `String` | OV anchor certificate ID for OV accounts and EV tracking ID for EV accounts

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 333

    {"id":93,"accountId":"3157542e-215d-4166-9712-ffab6f80b950","macId":"3157542e-215d-4166-9712-ffab6f80b950","macKey":"bd4d8b1c-afa5-4005-b8fa-deeb796705e7","acmeServer":"EV ACME Server","name":"EV ACME Account","organizationId":2677,"certValidationType":"EV","ovOrderNumber":65690742,"ovAnchorID":"65690742","validationId":"65690742"}

`V1` - Deprecated

##### Path parameters

Table 1. /api/acme/v1/account/{id}
Parameter | Description
--- | ---
`id` | ACME account entity ID

##### Example request

    $ curl 'https://cert-manager.com/api/acme/v1/account/146' -i -X GET \
        -H 'login: nick-20292' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20285' \
        -H 'Accept: application/json'

##### Response fields

Path | Type | Description
--- | --- | ---
`id` | `Number` | ACME account entity ID
`name` | `String` | ACME account name
`macKey` | `String` | ACME account HMAC key
`macId` | `String` | ACME account key ID
`acmeServer` | `String` | ACME account server name
`organizationId` | `Number` | ACME account organization ID
`certValidationType` | `String` | ACME account server validation type. Values: [DV, OV, EV]
`accountId` | `String` | ACME account ID
`ovOrderNumber` | `Number` | For OV accounts only: OV order number (deprecated, see 'ovAnchorID')
`ovAnchorID` | `String` | For OV accounts only: OV anchor certificate ID.
`validationId` | `String` | ACME account’s organization pre-validation ID.
`domains[]` | `Array` | ACME account domains
`domains[].name` | `String` | ACME account domain name

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 374

    {"id":146,"accountId":"c65f387f-5e4e-4389-8494-1cf6f68c46a9","macId":"c65f387f-5e4e-4389-8494-1cf6f68c46a9","macKey":"1367eafe-c323-4df8-9f08-7191b32364fe","acmeServer":"EV ACME Server","name":"EV ACME Account","organizationId":2731,"certValidationType":"EV","ovOrderNumber":24117951,"ovAnchorID":"24117951","validationId":"24117951","domains":[{"name":"domain.ccmqa.com"}]}

#### Create Sectigo Public ACME account

`V2`

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | ACME account name | []
acmeServer | String | ACME account server name | []
organizationId | Number | ACME account organization ID | []

##### Example request

    $ curl 'https://cert-manager.com/api/acme/v2/account' -i -X POST \
        -H 'Content-Type: application/json' \
        -H 'login: nick-19831' \
        -H 'password: Password123!' \
        -H 'customerUri: cst19824' \
        -d '{"acmeServer":"EV ACME Server","name":"EV ACME Account","organizationId":2661}'

##### Response headers

Name | Description
--- | ---
`Location` | New ACME account resource added on Private CA

##### Example response

    HTTP/1.1 201 Created
    Location: https://cert-manager.com/api/acme/v2/account/71

`V1` - Deprecated

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | ACME account name | []
acmeServer | String | ACME account server name | []
organizationId | Number | ACME account organization ID | []

##### Example request

    $ curl 'https://cert-manager.com/api/acme/v1/account' -i -X POST \
        -H 'Content-Type: application/json' \
        -H 'login: nick-20249' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20242' \
        -d '{"acmeServer":"EV ACME Server","name":"EV ACME Account","organizationId":2725}'

##### Response headers

Name | Description
--- | ---
`Location` | New ACME account resource added on Private CA

##### Example response

    HTTP/1.1 201 Created
    Location: https://cert-manager.com/api/acme/v1/account/139

#### Update Sectigo Public ACME account details

`V2`

##### Path parameters

Table 1. /api/acme/v2/account/{id}
Parameter | Description
--- | ---
`id` | ACME account entity ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | ACME account name | []

##### Example request

    $ curl 'https://cert-manager.com/api/acme/v2/account/78' -i -X PUT \
        -H 'Content-Type: application/json' \
        -H 'login: nick-19874' \
        -H 'password: Password123!' \
        -H 'customerUri: cst19867' \
        -d '{"name":"EV ACME Account Updated"}'

##### Example response

    HTTP/1.1 200 OK

`V1` - Deprecated

##### Path parameters

Table 1. /api/acme/v1/account/{id}
Parameter | Description
--- | ---
`id` | ACME account entity ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | ACME account name | []

##### Example request

    $ curl 'https://cert-manager.com/api/acme/v1/account/155' -i -X PUT \
        -H 'Content-Type: application/json' \
        -H 'login: nick-20334' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20327' \
        -d '{"name":"EV ACME Account Updated"}'

##### Example response

    HTTP/1.1 200 OK

#### Delete Sectigo Public ACME account

`V2`

##### Path parameters

Table 1. /api/acme/v2/account/{id}
Parameter | Description
--- | ---
`id` | ID of ACME account that being deleted

##### Example request

    $ curl 'https://cert-manager.com/api/acme/v2/account/73' -i -X DELETE \
        -H 'login: nick-19846' \
        -H 'password: Password123!' \
        -H 'customerUri: cst19839'

##### Example response

    HTTP/1.1 204 No Content

`V1` - Deprecated

##### Path parameters

Table 1. /api/acme/v1/account/{id}
Parameter | Description
--- | ---
`id` | ID of ACME account that being deleted

##### Example request

    $ curl 'https://cert-manager.com/api/acme/v1/account/141' -i -X DELETE \
        -H 'login: nick-20264' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20257'

##### Example response

    HTTP/1.1 204 No Content

#### Add domains to Sectigo Public ACME account

`V2`

##### Path parameters

Table 1. /api/acme/v2/account/{id}/domain
Parameter | Description
--- | ---
`id` | ACME account entity ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
domains[] | Array | Domains list | [Must not be empty]
domains[].name | String | Domain name | [Must not be blank, Size must be between 1 and 1024 inclusive]

##### Example request

    $ curl 'https://cert-manager.com/api/acme/v2/account/83/domain' -i -X POST \
        -H 'Content-Type: application/json' \
        -H 'login: nick-19888' \
        -H 'password: Password123!' \
        -H 'customerUri: cst19881' \
        -d '{"domains":[{"name":"domain.ccmqa.com"},{"name":"sub.domain.ccmqa.com"}]}'

##### Response fields

Path | Type | Description
--- | --- | ---
`notAddedDomains[]` | `Array` | Domains not added to the ACME account upon update operation

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 2

    {}

`V1` - Deprecated

##### Path parameters

Table 1. /api/acme/v1/account/{id}/domains
Parameter | Description
--- | ---
`id` | ACME account entity ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
domains[] | Array | Domains list | [Must not be empty]
domains[].name | String | Domain name | [Must not be blank, Size must be between 1 and 1024 inclusive]

##### Example request

    $ curl 'https://cert-manager.com/api/acme/v1/account/131/domains' -i -X POST \
        -H 'Content-Type: application/json' \
        -H 'login: nick-20217' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20210' \
        -d '{"domains":[{"name":"domain.ccmqa.com"},{"name":"sub.domain.ccmqa.com"}]}'

##### Response fields

Path | Type | Description
--- | --- | ---
`notAddedDomains[]` | `Array` | Domains not added to the ACME account upon update operation

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 2

    {}

#### Remove domains from Sectigo Public ACME account

`V2`

##### Path parameters

Table 1. /api/acme/v2/account/{id}/domain
Parameter | Description
--- | ---
`id` | ACME account entity ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
domains[] | Array | Domains list | [Must not be empty]
domains[].name | String | Domain name | [Must not be blank, Size must be between 1 and 1024 inclusive]

##### Example request

    $ curl 'https://cert-manager.com/api/acme/v2/account/91/domain' -i -X DELETE \
        -H 'Content-Type: application/json' \
        -H 'login: nick-19934' \
        -H 'password: Password123!' \
        -H 'customerUri: cst19927' \
        -d '{"domains":[{"name":"domain.ccmqa.com.ua"},{"name":"sub.domain.ccmqa.com"},{"name":"unknown.ccmqa.com"}]}'

##### Response fields

Path | Type | Description
--- | --- | ---
`notRemovedDomains[]` | `Array` | Domains not removed from the ACME account upon update operation

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 65

    {"notRemovedDomains":["domain.ccmqa.com.ua","unknown.ccmqa.com"]}

`V1` - Deprecated

##### Path parameters

Table 1. /api/acme/v1/account/{id}/domains
Parameter | Description
--- | ---
`id` | ACME account entity ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
domains[] | Array | Domains list | [Must not be empty]
domains[].name | String | Domain name | [Must not be blank, Size must be between 1 and 1024 inclusive]

##### Example request

    $ curl 'https://cert-manager.com/api/acme/v1/account/144/domains' -i -X DELETE \
        -H 'Content-Type: application/json' \
        -H 'login: nick-20278' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20271' \
        -d '{"domains":[{"name":"domain.ccmqa.com.ua"},{"name":"sub.domain.ccmqa.com"},{"name":"unknown.ccmqa.com"}]}'

##### Response fields

Path | Type | Description
--- | --- | ---
`notRemovedDomains[]` | `Array` | Domains not removed from the ACME account upon update operation

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 65

    {"notRemovedDomains":["domain.ccmqa.com.ua","unknown.ccmqa.com"]}

#### List Sectigo Public ACME account’s domains

##### Path parameters

Table 1. /api/acme/v2/account/{id}/domain
Parameter | Description
--- | ---
`id` | SCM internal ID of ACME account whose domains are requested.

##### Query parameters

Parameter | Description
--- | ---
`position` | the first position (entry) to return from the results of the query
`size` | Count of entries
`name` | The RegExp that can be used as a filter to get ACME account domains whose names match against. Special characters should be URL-encoded e.g. \. ⇒ %5C%2E

`expiresWithinNextDays`

Number of days(from current date) that is used as a filter to get ACME account’s domains whose 'validUntil' field(date) falls within the specifies time period, so during which ACME account’s domain validation will be or already has(in case of negative number) expired.Zero number of days means today, negative number of days means before today, positive number of days means after today.

`stickyExpiresWithinNextDays`

Number of days(from current date) that is used as a filter to get ACME account’s domains whose 'stickyUntil' field(date) falls within the specifies time period, so during which ACME account domain validation sticky will be or already has(in case of negative number) expired. Zero number of days means today, negative number of days means before today, positive number of days means after today.

##### Example request

    $ curl 'https://cert-manager.com/api/acme/v2/account/106/domain?position=0&size=10&name=.*&expiresWithinNextDays=365&stickyExpiresWithinNextDays=365' -i -X GET \
        -H 'login: nick-20004' \
        -H 'password: Password123!' \
        -H 'customerUri: cst19997'

##### Response headers

Name | Description
--- | ---
`X-Total-Count` | Total count of filtered ACME account’s domains existing on Sectigo public CA side

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | ACME account’s domains
`[].name` | `String` | ACME account domain name
`[].validUntil` | `String` | ACME account domain validation until date in ISO-8601 format
`[].stickyUntil` | `String` | ACME account domain validation sticky until date in ISO-8601 format.
`[].validationId` | `String` | ACME account validated domain OV/EV order number from Sectigo public CA

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 2
    Content-Type: application/json
    Content-Length: 391

    [{"name":"domain.ccmqa.com","validUntil":"2026-08-15T09:19:52.732Z","stickyUntil":"2026-08-15T09:19:52.732Z","ovAnchorOrderNumber":116084230,"ovAnchorID":"116084230","validationId":"116084230"},{"name":"sub.domain.ccmqa.com","validUntil":"2026-08-15T09:19:52.732Z","stickyUntil":"2026-08-15T09:19:52.732Z","ovAnchorOrderNumber":116084230,"ovAnchorID":"116084230","validationId":"116084230"}]

#### List Sectigo Public ACME account’s clients

##### Path parameters

Table 1. /api/acme/v2/account/{id}/client
Parameter | Description
--- | ---
`id` | SCM internal ID of ACME account whose clients are requested.

##### Query parameters

Parameter | Description
--- | ---
`position` | the first position (entry) to return from the results of the query
`size` | Count of entries
`userAgent` | The any substring of ACME account client’s 'userAgent' field to match against
`ipAddress` | The any substring of ACME account client’s 'ipAddress' field to match against
`status` | The status string of ACME account client’s 'status' field to equal
`lastActivityWithinPrevDays` | Number of days(from end of the current day to the past) that is used as a filter to get ACME account’s clients whose 'lastActivity' field(date) falls within the specifies time period, so during which ACME account’s client was last active (connected/requested the Sectigo public CA).
`contacts` | The any substring of ACME account client’s 'contacts' field to match against

##### Example request

    $ curl 'https://cert-manager.com/api/acme/v2/account/100/client?position=0&size=10&userAgent=acme&ipAddress=10.1&contacts=%40contact.test&status=valid&lastActivityWithinPrevDays=1' -i -X GET \
        -H 'login: nick-19976' \
        -H 'password: Password123!' \
        -H 'customerUri: cst19969'

##### Response headers

Name | Description
--- | ---
`X-Total-Count` | Total count of filtered ACME account’s clients existing on Sectigo public CA side

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | ACME account’s clients
`[].accountId` | `String` | ACME account client’s accountID. Note this identifier is concerning to the ACME client itself, but not to its parent ACME account.
`[].userAgent` | `String` | ACME account client’s user agent name
`[].ipAddress` | `String` | IP address of host from where the ACME account’s client was last active
`[].status` | `String` | ACME account client’s status
`[].lastActivity` | `String` | Date when ACME account’s client was last active
`[].contacts` | `String` | ACME account client’s contacts

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 2
    Content-Type: application/json
    Content-Length: 415

    [{"accountId":"7f237ca1-fd84-4a0b-85e7-237398bc4d0a","ipAddress":"1.1.1.1","userAgent":"lego-cli/4.2.0 xenolf-acme/4.2.0 (release; windows; amd64)","status":"valid","lastActivity":"2025-08-15T09:19:51.978Z"},{"accountId":"4063b8fe-deaf-4b1a-9772-1cfde9eb2e89","ipAddress":"1.1.1.1","userAgent":"lego-cli/4.2.0 xenolf-acme/4.2.0 (release; windows; amd64)","status":"valid","lastActivity":"2025-08-15T09:19:51.978Z"}]

#### Delete Sectigo Public ACME account’s client

Method is no longer supported. Please, use "Deactivate Sectigo Public ACME account’s client" method instead.

#### Deactivate Sectigo Public ACME account’s client

##### Path parameters

Table 1. /api/acme/v2/account/{id}/client/{clientId}
Parameter | Description
--- | ---
`id` | ID of ACME account whose client will be deactivated
`clientId` | UUID of ACME account’s client that being deactivated (accountId)

##### Example request

    $ curl 'https://cert-manager.com/api/acme/v2/account/85/client/9a13ae55-35dd-4d21-8592-42e85bb14a48' -i -X PUT \
        -H 'login: nick-19906' \
        -H 'password: Password123!' \
        -H 'customerUri: cst19899'

##### Example response

    HTTP/1.1 204 No Content

### Universal ACME

#### List Universal ACME accounts

##### Query parameters

Parameter | Description
--- | ---
`position` | the first position (entry) to return from the results of the query
`size` | Count of entries
`organizationId` | Organization ID
`name` | Universal ACME account name
`acmeServer` | Universal ACME account server name

##### Example request

    $ curl 'https://cert-manager.com/api/acme/v1/pca/account?position=0&size=10&organizationId=2713&name=Universal+ACME+Account&acmeServer=Universal+ACME+Server' -i -X GET \
        -H 'login: nick-20175' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20170'

##### Response headers

Name | Description
--- | ---
`X-Total-Count` | Total count of filtered ACME accounts existing on Private CA side

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | List of Universal ACME accounts
`[].id` | `Number` | Universal ACME account entity ID
`[].name` | `String` | Universal ACME account name
`[].macKey` | `String` | Universal ACME account HMAC key
`[].macId` | `String` | Universal ACME account key ID
`[].acmeServer` | `String` | Universal ACME account server name
`[].organizationId` | `Number` | Universal ACME account organization ID
`[].accountId` | `String` | Universal ACME account ID
`[].profileName` | `String` | Universal ACME account profile name

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 1
    Content-Type: application/json
    Content-Length: 218

    [{"id":81,"accountId":"339a6a64-8411-41f4-a857-1fd653d628a5","macId":"","macKey":"","acmeServer":"Universal ACME Server","name":"Universal ACME Account","organizationId":2713,"profileName":"SSL PRIVATE_CA 1011280548"}]

#### Get Universal ACME account details

##### Path parameters

Table 1. /api/acme/v1/pca/account/{id}
Parameter | Description
--- | ---
`id` | Universal ACME account entity ID

##### Example request

    $ curl 'https://cert-manager.com/api/acme/v1/pca/account/80' -i -X GET \
        -H 'login: nick-20165' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20160' \
        -H 'Accept: application/json'

##### Response fields

Path | Type | Description
--- | --- | ---
`id` | `Number` | Universal ACME account entity ID
`name` | `String` | Universal ACME account name
`macKey` | `String` | Universal ACME account HMAC key
`macId` | `String` | Universal ACME account key ID
`acmeServer` | `String` | Universal ACME account server name
`organizationId` | `Number` | Universal ACME account organization ID
`accountId` | `String` | Universal ACME account ID
`profileName` | `String` | Universal ACME account profile name

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 216

    {"id":80,"accountId":"b1ddd55e-e80d-4788-8bfb-1ae6f6c0532e","macId":"","macKey":"","acmeServer":"Universal ACME Server","name":"Universal ACME Account","organizationId":2711,"profileName":"SSL PRIVATE_CA 2100617111"}

#### Create Universal ACME account

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Universal ACME account name | [Must not be blank, Size must be between 1 and 128 inclusive]
acmeServer | String | Universal ACME account server name | [Must not be blank, Size must be between 1 and 1024 inclusive]
organizationId | Number | Universal ACME account organization ID | [Must be at least 1, Must not be null]
profileName | String | Universal ACME account profile name | [Must not be empty]

##### Example request

    $ curl 'https://cert-manager.com/api/acme/v1/pca/account' -i -X POST \
        -H 'Content-Type: application/json' \
        -H 'login: nick-20126' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20121' \
        -d '{"acmeServer":"Universal ACME Server","name":"Universal ACME Account","organizationId":2703,"profileName":"SSL PRIVATE_CA 1607375404"}'

##### Response headers

Name | Description
--- | ---
`Location` | New ACME account resource added on Private CA

##### Example response

    HTTP/1.1 201 Created
    Location: https://cert-manager.com/api/acme/v1/pca/account/76

#### Update Universal ACME account details

##### Path parameters

Table 1. /api/acme/v1/pca/account/{id}
Parameter | Description
--- | ---
`id` | Universal ACME account entity ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Universal ACME account name | []

##### Example request

    $ curl 'https://cert-manager.com/api/acme/v1/pca/account/84' -i -X PUT \
        -H 'Content-Type: application/json' \
        -H 'login: nick-20205' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20200' \
        -d '{"name":"Universal ACME Account Updated"}'

##### Example response

    HTTP/1.1 200 OK

#### Delete Universal ACME account

##### Path parameters

Table 1. /api/acme/v1/pca/account/{id}
Parameter | Description
--- | ---
`id` | ID of Universal ACME account that being deleted

##### Example request

    $ curl 'https://cert-manager.com/api/acme/v1/pca/account/78' -i -X DELETE \
        -H 'login: nick-20145' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20140'

##### Example response

    HTTP/1.1 204 No Content

#### List Universal ACME account’s clients

##### Path parameters

Table 1. /api/acme/v1/pca/account/{id}/client
Parameter | Description
--- | ---
`id` | SCM internal ID of Universal ACME account whose clients are requested.

##### Query parameters

Parameter | Description
--- | ---
`position` | the first position (entry) to return from the results of the query
`size` | Count of entries
`userAgent` | The any substring of Universal ACME account client’s 'userAgent' field to match against
`ipAddress` | The any substring of Universal ACME account client’s 'ipAddress' field to match against
`status` | The status string of Universal ACME account client’s 'status' field to equal
`lastActivityWithinPrevDays` | Number of days(from end of the current day to the past) that is used as a filter to get Universal ACME account’s clients whose 'lastActivity' field(date) falls within the specifies time period, so during which Universal ACME account’s client was last active (connected/requested the private CA).

##### Example request

    $ curl 'https://cert-manager.com/api/acme/v1/pca/account/82/client?position=0&size=10&userAgent=acme&ipAddress=10.1&status=valid&status=pending&lastActivityWithinPrevDays=1' -i -X GET \
        -H 'login: nick-20185' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20180'

##### Response headers

Name | Description
--- | ---
`X-Total-Count` | Total count of filtered ACME account’s clients existing on Private CA side

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | Universal ACME account’s clients
`[].accountId` | `String` | Universal ACME account client’s accountID. Note this identifier is concerning to the ACME client itself, but not to its parent Universal ACME account.
`[].userAgent` | `String` | Universal ACME account client’s user agent name
`[].ipAddress` | `String` | IP address of host from where the Universal ACME account’s client was last active
`[].status` | `String` | Universal ACME account client’s status
`[].lastActivity` | `String` | Date when Universal ACME account’s client was last active
`[].contacts` | `String` | Contact(s) concerning of ACME client operations

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 2
    Content-Type: application/json
    Content-Length: 525

    [{"accountId":"FmcZgzSqt6TpAtQFAAAAAA==","ipAddress":"10.17.7.152","userAgent":"lego-cli/4.2.0 xenolf-acme/4.2.0 (release; windows; amd64)","status":"valid","lastActivity":"2025-08-15T09:05:54.985Z","contacts":"email@ccmqa.com"},{"accountId":"FswPwHxLUh-caoO3AAAAAA==","ipAddress":"10.18.8.143","userAgent":"CertbotACMEClient/1.22.0 (certbot; Ubuntu 18.04.6 LTS) Authenticator/standalone Installer/None (certonly; flags: n) Py/3.6.9","status":"pending","lastActivity":"2025-08-15T09:05:54.985Z","contacts":"email@ccmqa.com"}]

#### Delete Universal ACME account’s client

Method is no longer supported. Please, use "Deactivate Universal ACME account’s client" method instead.

#### Deactivate Universal ACME account’s client

##### Path parameters

Table 1. /api/acme/v1/pca/account/{id}/client/{clientId}
Parameter | Description
--- | ---
`id` | ID of Universal ACME account whose client will being deleted
`clientId` | UUID of Universal ACME account’s client that being deleted (accountId)

##### Example request

    $ curl 'https://cert-manager.com/api/acme/v1/pca/account/77/client/FmcZgzSqt6TpAtQFAAAAAA==' -i -X PUT \
        -H 'login: nick-20135' \
        -H 'password: Password123!' \
        -H 'customerUri: cst20130'

##### Example response

    HTTP/1.1 204 No Content

## Network Agents

Used to perform operations on Network Agents.

### View Network Agents

#### List Network Agents

List all Network Agents that match the requested filter.

##### Query parameters

Parameter | Description
--- | ---
`position` | The start position (offset) to get sub-list (page) of Network agents starting from. Optional.
`size` | The max count (page size) of Network agents to be returned in sub-list (page) starting from 'position'. Max value = 200. Optional.
`name` | The whole or part of Network agent name to match against to anywhere in the name with insensitive case compare when listing. Optional.
`orgId` | Matching against ID of Organization to which the Network agent belongs. Optional.
`includeDepOfOrg` | Denotes whether need to consider the departments of organization specified by 'orgId' parameters (if any) to match against when listing. Optional.
`active` | Return active Network agents only (if =true), not active (if = false), or all (if not specified at all). Optional.
`version` | The whole or part of Network agent version to match against to anywhere in the version. Optional.
`status` | Return Network agents with specified status only. Optional. Allowed values: [NOT_AVAILABLE, NOT_CONNECTED, CONNECTED]

##### Example request

    $ curl 'https://cert-manager.com/api/agent/v1/network?size=200&position=0&orgId=1054&includeDepOfOrg=false&version=1&status=CONNECTED&active=true&name=-' -i -X GET \
        -H 'Content-Type: */*;charset=UTF-8' \
        -H 'login: nick-1797' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1796'

##### Response headers

Name | Description
--- | ---
`X-Total-Count` | Total count of filtered Network agents.

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | List of Network agents according to filter request parameters
`[].id` | `Number` | Network agent entity ID
`[].version` | `String` | Network agent version
`[].name` | `String` | Network agent name
`[].active` | `Boolean` | Whether Network agent active(=true), or disabled(=false)
`[].status` | `String` | Network agent current status. Possible values: [NOT_AVAILABLE, NOT_CONNECTED, CONNECTED]

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 3
    Content-Type: application/json;charset=UTF-8
    Content-Length: 258

    [{"version":"1.5","status":"CONNECTED","id":107,"active":true,"name":"NetworkAgent-15"},{"version":"1.3","status":"CONNECTED","id":95,"active":true,"name":"NetworkAgent-3"},{"version":"1.6","status":"CONNECTED","id":98,"active":true,"name":"NetworkAgent-6"}]

#### Count Network Agents

Count all Network Agents that match the requested filter.

##### Query parameters

Parameter | Description
--- | ---
`countOnly` | Denotes that expecting a total count only to be returned in 'X-Total-Count' response header, without return a really data in response body. Required with value =true.
`name` | The whole or part of Network agent name to match against to anywhere in the name with insensitive case compare when counting. Optional.
`orgId` | Matching against ID of Organization to which the Network agent belongs. Optional.
`includeDepOfOrg` | Denotes whether need to consider the departments of organization specified by 'orgId' parameters (if any) to match against when counting. Optional.
`active` | Count active Network agents only (if =true), not active (if = false), or all (if not specified at all). Optional.
`version` | The whole or part of Network agent version to match against to anywhere in the version. Optional.
`status` | Return Network agents with specified status only. Optional. Allowed values: [NOT_AVAILABLE, NOT_CONNECTED, CONNECTED]

##### Example request

    $ curl 'https://cert-manager.com/api/agent/v1/network?countOnly=true&orgId=1027&includeDepOfOrg=false&version=1&status=CONNECTED&active=true&name=-' -i -X GET \
        -H 'Content-Type: */*;charset=UTF-8' \
        -H 'login: nick-1764' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1763'

##### Response headers

Name | Description
--- | ---
`X-Total-Count` | Total count of filtered Network agents.

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 3

#### Get Network Agent details

##### Path parameters

Table 1. /api/agent/v1/network/{id}
Parameter | Description
--- | ---
`id` | ID(90) of existed Network agent to get its details. Must be zero or positive integer.

##### Example request

    $ curl 'https://cert-manager.com/api/agent/v1/network/90' -i -X GET \
        -H 'Content-Type: */*;charset=UTF-8' \
        -H 'login: nick-1788' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1787'

##### Response fields

Path | Type | Description
--- | --- | ---
`id` | `Number` | Network agent ID
`version` | `String` | Network agent version
`os` | `String` | Operating system on host where Network agent installed
`name` | `String` | Network agent name
`comments` | `String` | Comments about Network agent
`active` | `Boolean` | Either Network agent active or not(disabled)
`status` | `String` | Network agent current status. Possible values: [NOT_AVAILABLE, NOT_CONNECTED, CONNECTED]
`localIp` | `String` | IP addresses list Network agent installed on
`lastActivity` | `String` | Last Network agent activity timestamp. Optional.
`orgId` | `Number` | The ID of organization the Network agent belongs to
`autoUpdate` | `Boolean` | Enabled or disabled Network agent auto update
`secretKey` | `String` | Secret key to authenticate Network agent on SCM
`installationToken` | `String` | The token which can be used during an installation of Network agent at client’s environment. Provided for new Network agents only or those which were not connected to SCM yet. Optional.

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json;charset=UTF-8
    Content-Length: 467

    {"id":90,"version":"1.1","os":"WINDOWS","autoUpdate":false,"localIp":"192.168.2.1","status":"NOT_AVAILABLE","installationToken":"eyJzY21VcmwiOiJodHRwczovL2NlcnQtbWFuYWdlci5jb20iLCJjdXN0b21lclVyaSI6ImNzdDE3ODciLCJzZWNyZXQiOiJTb21lVmFsdWVPZlNlY3JldEtleTEiLCJrZXlzdG9yZVBhc3N3b3JkIjoiUFVjZVFRZjBHdnU5N3huV2VaWjJ3czNrVHY1SHp0aEsifQ==","secretKey":"SomeValueOfSecretKey1","orgId":1046,"comments":"Some comments about Network agent 1","active":true,"name":"NetworkAgent 1"}

### Manage Network Agents

#### Add Network Agent

Adds a new Network Agent and returns the installation token needed for agent installation.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Network agent name | [Must match the regular expression `((?!.[>|<|!|@|#|\$|\%|\|\|\(|\)|~|\?|/|\|\&|\_|\+|=|\"|:|;|,|\{|\}|\[|\]|||`].).)$`, Must not be blank, Size must be between 1 and 128 inclusive]
comments | String | Network agent comments | [Maximum length is 256 characters or can be empty, Optional]
orgId | Number | Network agent organization ID | [Must be at least 0, Must not be null]
active | Boolean | Denotes either Network agent active or not. | [Must not be null]

##### Example request

    $ curl 'https://cert-manager.com/api/agent/v1/network' -i -X POST \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: nick-1773' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1772' \
        -d '{"name":"NetworkAgent-1","active":true,"comments":"This is the first network agent discovered on sub-net ... and located at ...","orgId":1036}'

##### Response headers

Name | Description
--- | ---
`Location` | The location of the newly added network agent resource in SCM.

##### Response fields

Path | Type | Description
--- | --- | ---
`installationToken` | `String` | The token which can be used during an installation of Network agent at client’s environment.

##### Example response

    HTTP/1.1 201 Created
    Location: https://cert-manager.com/api/agent/v1/network/85
    Content-Type: application/json;charset=UTF-8
    Content-Length: 212

    {"installationToken":"eyJzY21VcmwiOiJodHRwczovL2NlcnQtbWFuYWdlci5jb20iLCJjdXN0b21lclVyaSI6ImNzdDE3NzIiLCJzZWNyZXQiOiJjeXlhb3dRNTl2WkR4LU11VWhDWiIsImtleXN0b3JlUGFzc3dvcmQiOiJxUUVnOFU5YzE4ZnE2UTJrU1NEQllBPT0ifQ=="}

#### Update Network Agent details

##### Path parameters

Table 1. /api/agent/v1/network/{id}
Parameter | Description
--- | ---
`id` | ID(115) of existed Network agent to update. Must be zero or positive integer.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | New name for Network agent. | [Must be null or not blank, Must match the regular expression `((?!.[>|<|!|@|#|\$|\%|\|\|\(|\)|~|\?|/|\|\&|\_|\+|=|\"|:|;|,|\{|\}|\[|\]|||`].).)$`, Size must be between 1 and 128 inclusive, Optional]
comments | String | New comments for Network agent. | [Maximum length is 256 characters or can be empty, Optional]
active | Boolean | New state of Network agent that denotes either it should be active or not. | [Optional]
secretKey | String | New secret key used for Network agent lookup and authorization. | [Size must be between 10 and 128 inclusive, Optional]
keystorePwd | String | New password for the local keystore where Network agent stores certificates and keys. | [Size must be between 10 and 128 inclusive, Optional]

##### Example request

    $ curl 'https://cert-manager.com/api/agent/v1/network/115' -i -X PUT \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: nick-1806' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1805' \
        -d '{"name":"NetworkAgent-2","active":true,"comments":"This is the second network agent discovered on sub-net ... and located at ...","secretKey":"Ap@rticul@rZecretQey","keystorePwd":"Ap@rticul@rQeySt0rePwd"}'

##### Example response

    HTTP/1.1 200 OK

#### Delete Network Agent

##### Path parameters

Table 1. /api/agent/v1/network/{id}
Parameter | Description
--- | ---
`id` | ID(88) of existed Network agent to delete. Must be zero or positive integer.

##### Example request

    $ curl 'https://cert-manager.com/api/agent/v1/network/88' -i -X DELETE \
        -H 'Content-Type: */*;charset=UTF-8' \
        -H 'login: nick-1782' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1781'

##### Example response

    HTTP/1.1 200 OK

### Manage servers

#### List servers

List all servers that match the requested filter.

##### Path parameters

Table 1. /api/agent/v1/network/{agentId}/server
Parameter | Description
--- | ---
`agentId` | ID(114) of existed Network agent to get count of its discovered servers.

##### Query parameters

Parameter | Description
--- | ---
`position` | The start position (offset) to get a sub-list (page) of servers discovered by Network agent. Optional.
`size` | The max count (page size) of servers discovered by Network agent to be returned in sub-list (page) starting from 'position'. Max value = 200. Optional.
`name` | The whole or part of name of server discovered by Network agent to match against to anywhere in the server name with insensitive case compare when counting. Optional.
`vendor` | To match against a Vendor of server discovered by Network agent. Possible values: [APACHE_2, IIS, TOMCAT, F5_BIG_IP]. Optional.
`status` | To match against a State of server discovered by Network agent. Possible values: [INIT, ACTIVE, INACTIVE, RESTART_REQUIRED, RESTARTING]. Optional.

##### Example request

    $ curl 'https://cert-manager.com/api/agent/v1/network/114/server?size=200&position=0&name=1&vendor=TOMCAT&status=INIT' -i -X GET \
        -H 'Content-Type: */*;charset=UTF-8' \
        -H 'login: nick-1803' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1802'

##### Response headers

Name | Description
--- | ---
`X-Total-Count` | Total count of filtered servers discovered by Network agent.

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | List of servers discovered by Network agent according to filter request parameters.
`[].id` | `Number` | ID of server discovered by Network agent
`[].name` | `String` | Name of server discovered by Network agent
`[].active` | `Boolean` | Whether server discovered by Network agent active(=true), or disabled(=false)

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 2
    Content-Type: application/json;charset=UTF-8
    Content-Length: 109

    [{"id":96,"active":false,"name":"DiscoveredServer 19"},{"id":88,"active":false,"name":"DiscoveredServer 11"}]

#### Count servers

Count all servers that match the requested filter.

##### Path parameters

Table 1. /api/agent/v1/network/{agentId}/server
Parameter | Description
--- | ---
`agentId` | ID(84) of existed Network agent to get count of its discovered servers.

##### Query parameters

Parameter | Description
--- | ---
`countOnly` | Denotes that expecting a total count only to be returned in 'X-Total-Count' response header, without return a really data in response body. Required with value =true.
`name` | The whole or part of name of server discovered by Network agent to match against to anywhere in the server name with insensitive case compare when counting. Optional.
`vendor` | To match against a Vendor of server discovered by Network agent. Possible values: [APACHE_2, IIS, TOMCAT, F5_BIG_IP]Optional.
`status` | To match against a State of server discovered by Network agent. Possible values: [INIT, ACTIVE, INACTIVE, RESTART_REQUIRED, RESTARTING]. Optional.

##### Example request

    $ curl 'https://cert-manager.com/api/agent/v1/network/84/server?countOnly=true&name=1&vendor=TOMCAT&status=INIT' -i -X GET \
        -H 'Content-Type: */*;charset=UTF-8' \
        -H 'login: nick-1770' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1769'

##### Response headers

Name | Description
--- | ---
`X-Total-Count` | Total count of filtered servers discovered by Network agent.

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 2

#### Get server details

##### Path parameters

Table 1. /api/agent/v1/network/{agentId}/server/{id}
Parameter | Description
--- | ---
`agentId` | ID(91) of existed Network agent to get details of its discovered server. Must be zero or positive integer.
`id` | ID(75) of existed server discovered by Network agent to get a few more its details. Must be zero or positive integer.

##### Example request

    $ curl 'https://cert-manager.com/api/agent/v1/network/91/server/75' -i -X GET \
        -H 'Content-Type: */*;charset=UTF-8' \
        -H 'login: nick-1791' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1790'

##### Response fields

Path | Type | Description
--- | --- | ---
`id` | `Number` | ID of server discovered by Network agent
`name` | `String` | Name of server discovered by Network agent
`vendor` | `String` | Vendor of server discovered by Network agent. Possible values: [APACHE_2, IIS, TOMCAT, F5_BIG_IP]
`connectionType` | `String` | Connection type to server discovered by Network agent. Possible values: [LOCAL, LOCAL_LEGACY_NATIVE_API, REMOTE_REST_API, REMOTE_SSH, REMOTE_WIN_RM, REMOTE_LEGACY_NATIVE_API], vendor dependent
`status` | `String` | The state of server discovered by Network agent. Possible values: [INIT, ACTIVE, INACTIVE, RESTART_REQUIRED, RESTARTING]
`ip` | `String` | Hostname or IP of server discovered by Network agent
`port` | `Number` | Port number on server discovered by Network agent
`path` | `String` | Path to root directory where server discovered by Network agent is installed.
`altPathForCert` | `String` | Alternative path to a directory where server discovered by Network agent stores certificates.
`privateKeyPath` | `String` | Path to a directory where Network agent stores private key to authenticate on discovered server.
`username` | `String` | Username(login) to gain access to server discovered by Network agent.
`errorMessage` | `String` | The error occurred when Network agent was executing a command intended for this discovered server.

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json;charset=UTF-8
    Content-Length: 314

    {"id":75,"vendor":"APACHE_2","connectionType":"LOCAL","name":"DiscoveredServer 1","path":"C:\\Windows\\System32\\inetsrv\\1","status":"INIT","errorMessage":"Some 1 error(s) occurred.","ip":"192.168.2.101","port":8081,"altPathForCert":"C:\\Users\\SomeUser\\Certs\\1","privateKeyPath":"C:\\Users\\SomeUser\\.ssh\\1"}

#### Add server

Add a new server to a Network Agent.

##### Path parameters

Table 1. /api/agent/v1/network/{agentId}/server
Parameter | Description
--- | ---
`agentId` | ID(86) of existed Network agent to add a newly created server to it as discovered one.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Name of server discovered by Network agent | [Must match the regular expression `((?!.[>|<|!|@|#|\$|\%|\|\|\(|\)|~|\?|/|\|\&|\_|\+|=|\"|:|;|,|\{|\}|\[|\]|||`].).)$`, Must not be blank, Size must be between 1 and 512 inclusive]
vendor | String | Vendor of server discovered by Network agent | [Must not be null, Possible values: [APACHE_2, IIS, TOMCAT, F5_BIG_IP]]
connectionType | String | Connection type to server discovered by Network agent | [Possible values: [LOCAL, LOCAL_LEGACY_NATIVE_API, REMOTE_REST_API, REMOTE_SSH, REMOTE_WIN_RM, REMOTE_LEGACY_NATIVE_API], vendor related.]
ip | String | Hostname or IP address of server that’s creating as one discovered by Network agent | [Maximum length is 255 characters or can be empty, Required for a remote server.]
port | Number | Port number on server discovered by Network agent | [Must be at least 0, Required for a remote server and for all except 'IIS' vendors.]
path | String | Path to root directory(in case of 'TOMCAT' vendor) or to the 'apachectl' executable(in case of 'APACHE_2' vendor) of server discovered by Network agent. | [Maximum length is 512 characters or can be empty, Can be specified for 'APACHE_2' and 'TOMCAT' vendors only. Optional.]
altPathForCert | String | Alternative path to a directory where server discovered by Network agent stores certificates. | [Can be specified for a remote server and for 'APACHE_2' vendor only. Optional.]

privateKeyPath

String

Path to a directory where Network agent stores private key to authenticate on discovered server.

[Maximum length is 128 characters or can be empty, Can be specified for a remote server and for 'APACHE_2' and 'TOMCAT' vendors only. Must be used in conjunction with 'passPhrase' but not with 'username'/'password' parameters and not with 'storeName'/'storeCredId' parameters. Optional.]

passPhrase | String | Passphrase to gain access to keystore where Network agent preserves the private key to authenticate on discovered server. | [Can be specified for a remote server and for 'APACHE_2' and 'TOMCAT' vendors only. Used together with 'privateKeyPath' but not with 'username'/'password' parameters and not with 'storeName'/'storeCredId' parameters. Optional.]
username | String | Username(login) to gain access to server discovered by Network agent. | [Maximum length is 64 characters or can be empty, Can be specified for a remote server and for all vendors. Must be used in conjunction with 'password' but not with 'privateKeyPath'/'passPhrase' parameters and not with 'storeName'/'storeCredId' parameters. Optional.]
password | String | Password for username to gain access to server discovered by Network agent. | [Can be specified for a remote server and for all vendors. Used together with 'username' but not with 'privateKeyPath'/'passPhrase' parameters and not with 'storeName'/'storeCredId' parameters. Optional.]
storeName | String | Store name to gain access to server discovered by Network agent. | [Can be specified for a remote server and for 'APACHE_2' and 'TOMCAT' vendors only. Must be used in conjunction with 'storeCredId' but not with 'username'/'password' parameters and not with 'privateKeyPath'/'passPhrase' parameters. Optional.]
storeCredId | String | Store credential ID to gain access to server discovered by Network agent. | [Can be specified for a remote server and for 'APACHE_2' and 'TOMCAT' vendors only. Must be used in conjunction with 'storeName' but not with 'username'/'password' parameters and not with 'privateKeyPath'/'passPhrase' parameters. Optional.]

##### Example request

    $ curl 'https://cert-manager.com/api/agent/v1/network/86/server' -i -X POST \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: nick-1776' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1775' \
        -d '{"name":"NetworkAgent-1","vendor":"TOMCAT","connectionType":"LOCAL_LEGACY_NATIVE_API","path":"C:\\Windows\\System32\\inetsrv","username":"SomeUser","password":"S0meYserPwB"}'

##### Response headers

Name | Description
--- | ---
`Location` | The location of the newly created server resource added to the Network agent as one discovered on client side.

##### Example response

    HTTP/1.1 201 Created
    Location: https://cert-manager.com/api/agent/v1/network/86/server/73

#### Update server details

##### Path parameters

Table 1. /api/agent/v1/network/{agentId}/server/{id}
Parameter | Description
--- | ---
`agentId` | ID(116) of existed Network agent to update details of its discovered server. Must be zero or positive integer.
`id` | ID(98) of existed server discovered by Network agent to update. Must be zero or positive integer.

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Name of server discovered by Network agent | [Must match the regular expression `((?!.[>|<|!|@|#|\$|\%|\|\|\(|\)|~|\?|/|\|\&|\_|\+|=|\"|:|;|,|\{|\}|\[|\]|||`].).)$`, Must not be blank, Size must be between 1 and 512 inclusive]
vendor | String | Vendor of server discovered by Network agent | [Must not be null, Possible values: [APACHE_2, IIS, TOMCAT, F5_BIG_IP]]
connectionType | String | Connection type to server discovered by Network agent | [Possible values: [LOCAL, LOCAL_LEGACY_NATIVE_API, REMOTE_REST_API, REMOTE_SSH, REMOTE_WIN_RM, REMOTE_LEGACY_NATIVE_API], vendor related.]
ip | String | Hostname or IP address of server that’s creating as one discovered by Network agent | [Maximum length is 255 characters or can be empty, Required for a remote server.]
port | Number | Port number on server discovered by Network agent | [Must be at least 0, Required for a remote server and for all except 'IIS' vendors.]
path | String | Path to root directory(in case of 'TOMCAT' vendor) or to the 'apachectl' executable(in case of 'APACHE_2' vendor) of server discovered by Network agent. | [Maximum length is 512 characters or can be empty, Can be specified for 'APACHE_2' and 'TOMCAT' vendors only. Optional.]
altPathForCert | String | Alternative path to a directory where server discovered by Network agent stores certificates. | [Can be specified for a remote server and for 'APACHE_2' vendor only. Optional.]
privateKeyPath | String | Path to a directory where Network agent stores private key to authenticate on discovered server. | [Maximum length is 128 characters or can be empty, Can be specified for a remote server and for 'APACHE_2' and 'TOMCAT' vendors only. Must be used in conjunction with 'passPhrase' but not with 'username'/'password' parameters. Optional.]
passPhrase | String | Passphrase to gain access to keystore where Network agent preserves the private key to authenticate on discovered server. | [Can be specified for a remote server and for 'APACHE_2' and 'TOMCAT' vendors only. Used together with 'privateKeyPath' but not with 'username' parameter. Optional.]
username | String | Username(login) to gain access to server discovered by Network agent. | [Maximum length is 64 characters or can be empty, Can be specified for a remote server and for all vendors. Must be used in conjunction with 'password' but not with 'privateKeyPath'/'passPhrase' parameters. Optional.]
password | String | Password for username to gain access to server discovered by Network agent. | [Can be specified for a remote server and for all vendors. Used together with 'username' but not with 'privateKeyPath' parameter. Optional.]
storeName | String | Store name to gain access to server discovered by Network agent. | [Can be specified for a remote server and for 'APACHE_2' and 'TOMCAT' vendors only. Must be used in conjunction with 'storeCredId' but not with 'username'/'password' parameters and not with 'privateKeyPath'/'passPhrase' parameters. Optional.]
storeCredId | String | Store credential ID to gain access to server discovered by Network agent. | [Can be specified for a remote server and for 'APACHE_2' and 'TOMCAT' vendors only. Must be used in conjunction with 'storeName' but not with 'username'/'password' parameters and not with 'privateKeyPath'/'passPhrase' parameters. Optional.]

##### Example request

    $ curl 'https://cert-manager.com/api/agent/v1/network/116/server/98' -i -X PUT \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: nick-1809' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1808' \
        -d '{"name":"NetworkAgent-1","vendor":"TOMCAT","connectionType":"LOCAL_LEGACY_NATIVE_API","path":"C:\\Windows\\System32\\inetsrv","username":"SomeUser","password":"S0meYserPwB"}'

##### Example response

    HTTP/1.1 200 OK

#### Delete server

##### Path parameters

Table 1. /api/agent/v1/network/{agentId}/server/{id}
Parameter | Description
--- | ---
`agentId` | ID(89) of existed Network agent to delete its discovered server. Must be zero or positive integer.
`id` | ID(74) of existed server discovered by Network agent to delete. Must be zero or positive integer.

##### Example request

    $ curl 'https://cert-manager.com/api/agent/v1/network/89/server/74' -i -X DELETE \
        -H 'Content-Type: */*;charset=UTF-8' \
        -H 'login: nick-1785' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1784'

##### Example response

    HTTP/1.1 200 OK

### View server nodes

#### List server nodes

List all nodes that match the requested filter.

##### Path parameters

Table 1. /api/agent/v1/network/{agentId}/server/{serverId}/node
Parameter | Description
--- | ---
`agentId` | ID(113) of existed Network agent to get count of its discovered servers.
`serverId` | ID(77) of existed server discovered by Network agent to get a total count of its nodes with using filtering.Must be zero or positive integer.

##### Query parameters

Parameter | Description
--- | ---
`position` | The start position (offset) to get a sub-list (page) of nodes in server discovered by Network agent. Optional.
`size` | The max count (page size) of nodes in server discovered by Network agent to be returned in sub-list (page) starting from 'position'. Max value = 200. Optional.
`alias` | The whole or part of name of node in server discovered by Network agent to match against to anywhere in the node name with insensitive case compare when counting. Optional.
`name` | The whole or part of full name of node in server discovered by Network agent to match against to anywhere in the node full name with insensitive case compare when counting. Optional.
`protocol` | To match against a Schema of protocol used to connect to node in server discovered by Network agent. Possible values: [HTTP, HTTPS, UNKNOWN]
`address` | To match against an IP address of node in server discovered by Network agent
`port` | To match against a Port number listening by node in server discovered by Network agent
`sslId` | To match against an ID of entity of SSL certificate installed on server node and discovered by Network agent either from SSL connection or from server configuration

##### Example request

    $ curl 'https://cert-manager.com/api/agent/v1/network/113/server/77/node?size=200&position=0&name=full&alias=%201&protocol=HTTP&address=192.168.2.1' -i -X GET \
        -H 'Content-Type: */*;charset=UTF-8' \
        -H 'login: nick-1800' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1799'

##### Response headers

Name | Description
--- | ---
`X-Total-Count` | Total count of filtered nodes in server discovered by Network agent.

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | List of nodes in the specified server discovered by Network agent according to filter request parameters.
`[].id` | `Number` | ID of node in server discovered by Network agent
`[].name` | `String` | Name of node in server discovered by Network agent

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 5
    Content-Type: application/json;charset=UTF-8
    Content-Length: 215

    [{"id":93,"name":"DiscoveredServerNode 19"},{"id":90,"name":"DiscoveredServerNode 16"},{"id":87,"name":"DiscoveredServerNode 13"},{"id":84,"name":"DiscoveredServerNode 10"},{"id":75,"name":"DiscoveredServerNode 1"}]

#### Count server nodes

Count all Network Agents that match the requested filter.

##### Path parameters

Table 1. /api/agent/v1/network/{agentId}/server/{serverId}/node
Parameter | Description
--- | ---
`agentId` | ID(83) of existed Network agent to get count of its discovered servers.
`serverId` | ID(52) of existed server discovered by Network agent to get a total count of its nodes with using filtering.Must be zero or positive integer.

##### Query parameters

Parameter | Description
--- | ---
`countOnly` | Denotes that expecting a total count only to be returned in 'X-Total-Count' response header, without return a really data in response body. Required with value =true.
`alias` | The whole or part of name of node in server discovered by Network agent to match against to anywhere in the node name with insensitive case compare when counting. Optional.
`name` | The whole or part of full name of node in server discovered by Network agent to match against to anywhere in the node full name with insensitive case compare when counting. Optional.
`protocol` | To match against a Schema of protocol used to connect to node in server discovered by Network agent. Possible values: [HTTP, HTTPS, UNKNOWN]
`address` | To match against an IP address of node in server discovered by Network agent
`port` | To match against a Port number listening by node in server discovered by Network agent
`sslId` | To match against an ID of entity of SSL certificate installed on server node and discovered by Network agent either from SSL connection or from server configuration

##### Example request

    $ curl 'https://cert-manager.com/api/agent/v1/network/83/server/52/node?countOnly=true&name=full&alias=%201&protocol=HTTP&address=192.168.2.1' -i -X GET \
        -H 'Content-Type: */*;charset=UTF-8' \
        -H 'login: nick-1767' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1766'

##### Response headers

Name | Description
--- | ---
`X-Total-Count` | Total count of filtered nodes in server discovered by Network agent.

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 5

#### Get server node details

##### Path parameters

Table 1. /api/agent/v1/network/{agentId}/server/{serverId}/node/{id}
Parameter | Description
--- | ---
`agentId` | ID(92) of existed Network agent to get details of its discovered server. Must be zero or positive integer.
`serverId` | ID(76) of existed server discovered by Network agent to get a few more details of its node. Must be zero or positive integer.
`id` | ID(74) of existed node in server discovered by Network agent to get a few more its details. Must be zero or positive integer.

##### Example request

    $ curl 'https://cert-manager.com/api/agent/v1/network/92/server/76/node/74' -i -X GET \
        -H 'Content-Type: */*;charset=UTF-8' \
        -H 'login: nick-1794' \
        -H 'password: Password123!' \
        -H 'customerUri: cst1793'

##### Response fields

Path | Type | Description
--- | --- | ---
`id` | `Number` | ID of node in server discovered by Network agent
`alias` | `String` | Name of node in server discovered by Network agent
`name` | `String` | Full name of node in server discovered by Network agent
`protocol` | `String` | Schema of protocol used to connect to node in server discovered by Network agent. Possible values: [HTTP, HTTPS, UNKNOWN]
`address` | `String` | IP address of node in server discovered by Network agent
`port` | `Number` | Port number listening by node in server discovered by Network agent
`errorMessage` | `String` | The error occurred when Network agent was executing a command intended for node in server discovered by Network agent
`sslId` | `Number` | ID of entity of SSL certificate installed on server node and discovered by Network agent either from SSL connection or from server configuration

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json;charset=UTF-8
    Content-Length: 173

    {"id":74,"alias":"DiscoveredServerNode 1","name":"SomeFullName","protocol":"HTTP","address":"192.168.2.1","port":8091,"errorMessage":"Some 1 error(s) occurred.","sslId":207}

## MS Agents

Used to perform operations on MS Agents.

### View MS Agents

#### List MS Agents

List all MS Agents that match the requested filter.

##### Query parameters

Parameter | Description
--- | ---
`size` | Number of returned entries
`position` | Position shift
`name` | Filter by Agent name
`active` | Filter by active
`status` | Filter by status. Allowed values: [NOT_AVAILABLE, NOT_CONNECTED, CONNECTED]
`version` | Filter by Agent version

##### Example request

    $ curl 'https://cert-manager.com/api/agent/v1/ms?position=0&size=10' -i -X GET \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer1820' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Response headers

Name | Description
--- | ---
`X-Total-Count` | Total count of filtered MS Agents

##### Response fields

Path | Type | Description
--- | --- | ---
`[].id` | `Number` | MS Agent ID
`[].name` | `String` | MS Agent name
`[].active` | `Boolean` | MS Agent active state
`[].version` | `String` | MS Agent version
`[].status` | `String` | MS Agent current status

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 1
    Content-Type: application/json
    Content-Length: 109

    [{"id":87,"name":"853677a7-4524-4e22-93de-852984813a07","active":true,"version":"3.11","status":"CONNECTED"}]

#### Get MS Agent details

##### Path parameters

Table 1. /api/agent/v1/ms/{id}
Parameter | Description
--- | ---
`id` | MS Agent ID

##### Example request

    $ curl 'https://cert-manager.com/api/agent/v1/ms/86' -i -X GET \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer1817' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Response fields

Path | Type | Description
--- | --- | ---
`id` | `Number` | MS Agent ID
`name` | `String` | MS Agent name
`active` | `Boolean` | MS Agent active state
`version` | `String` | MS Agent version
`status` | `String` | MS Agent current status
`comments` | `String` | MS Agent comments
`installationToken` | `String` | The token which can be used during MS Agent installation
`secretKey` | `String` | MS Agent secret key
`autoUpdate` | `Boolean` | Enabled or disabled MS Agent auto update
`localIp` | `String` | IP addresses list Agent installed on
`lastActivity` | `String` | Last Agent activity timestamp
`caProxyEnabled` | `Boolean` | Is MS Agent installed as MS CA or not
`adDomainsListRestricted` | `Boolean` | If true domains from list will be excluded from discovery. If false - only specified domains will be included to discovery
`adDomainsList` | `String` | List of domains to include or exclude from discovery
`defaultEnrollmentOrgId` | `Number` | Default Organization/Department to enroll certificates by MS Agent

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 361

    {"installationToken":"token","id":86,"name":"4b626ce4-29ea-4d84-8a96-551db3375a4e","active":true,"version":"3.11","status":"CONNECTED","secretKey":"testsecretkey","comments":"","autoUpdate":true,"localIp":"10.10.10.10","lastActivity":"2025-08-15T09:10:29Z","caProxyEnabled":false,"adDomainsList":"","adDomainsListRestricted":false,"defaultEnrollmentOrgId":1070}

### Manage MS Agents

#### Add MS Agent

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | MS Agent name | [Must not be blank, Maximum length is 128 characters or can be empty]
comments | String | MS Agent comments | [Maximum length is 256 characters or can be empty]
active | Boolean | MS Agent active state | []
adDomainsListRestricted | Boolean | If true domains from list will be excluded from discovery. If false - only specified domains will be included to discovery | []
adDomainsList | String | List of domains to include or exclude from discovery. Comma separated | [Maximum length is 1024 characters or can be empty]
defaultEnrollmentOrgId | Number | Default Organization/Department to enroll certificates by MS Agent | [Must be at least 1]

##### Example request

    $ curl 'https://cert-manager.com/api/agent/v1/ms/' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer1811' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{"name":"Agent name","comments":"Comments","active":true,"adDomainsList":"ad\\domain, ad\\otherdomain","adDomainsListRestricted":false,"defaultEnrollmentOrgId":123}'

##### Response fields

Path | Type | Description
--- | --- | ---
`installationToken` | `String` | The token which can be used during MS Agent installation

##### Example response

    HTTP/1.1 201 Created
    Location: https://cert-manager.com/api/agent/v1/ms/84
    Content-Type: application/json
    Content-Length: 29

    {"installationToken":"token"}

#### Update MS Agent details

##### Path parameters

Table 1. /api/agent/v1/ms/{id}
Parameter | Description
--- | ---
`id` | MS Agent ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | MS Agent name | [Must be null or not blank, Maximum length is 128 characters or can be empty]
comments | String | MS Agent comments | [Maximum length is 256 characters or can be empty]
active | Boolean | MS Agent active state | []
adDomainsListRestricted | Boolean | If true domains from list will be excluded from discovery. If false - only specified domains will be included to discovery | []
adDomainsList | String | List of domains to include or exclude from discovery. Comma separated | [Maximum length is 1024 characters or can be empty]
defaultEnrollmentOrgId | Number | Default Organization/Department to enroll certificates by MS Agent | [Must be at least 1]

##### Example request

    $ curl 'https://cert-manager.com/api/agent/v1/ms/88' -i -X PUT \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer1823' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{"name":"Agent name","comments":"Comments","active":true,"adDomainsList":"ad\\domain, ad\\otherdomain","adDomainsListRestricted":false,"defaultEnrollmentOrgId":123}'

##### Example response

    HTTP/1.1 200 OK

#### Delete MS Agent

##### Path parameters

Table 1. /api/agent/v1/ms/{id}
Parameter | Description
--- | ---
`id` | MS Agent ID

##### Example request

    $ curl 'https://cert-manager.com/api/agent/v1/ms/85' -i -X DELETE \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer1814' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Example response

    HTTP/1.1 200 OK

## DNS Connectors

### View DNS Connector

#### List DNS Connectors

##### Query parameters

Parameter | Description
--- | ---
`size` | Number of returned entries
`position` | Position shift
`name` | Filter by Connector name (contains)
`status` | Filter by status
`orgIds` | Filter by organization ID (comma separated)

##### Example request

    $ curl 'https://cert-manager.com/api/connector/v1/dns?position=0&size=2&name=test&status=CONNECTED&orgIds=1%2C1079' -i -X GET \
        -H 'login: admin_customer1829' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -H 'Accept: application/json'

##### Response headers

Name | Description
--- | ---
`X-Total-Count` | Total count

##### Response fields

Path | Type | Description
--- | --- | ---
`[].id` | `String` | Connector ID
`[].name` | `String` | Connector name
`[].comments` | `String` | Connector comments
`[].version` | `String` | Connector version
`[].revision` | `String` | Connector revision
`[].hostname` | `String` | Connector hostname
`[].status` | `String` | Connector current status. Possible values:[NOT_AVAILABLE, NOT_CONNECTED, CONNECTED]
`[].os` | `String` | Connector os
`[].delegationMode` | `String` | Connector delegationMode. Possible values:[GLOBAL_FOR_CUSTOMER, CUSTOMIZED]

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 3
    Content-Type: application/json;charset=UTF-8
    Content-Length: 584

    [ {
      "name" : "test 855e82a1a42047349e6b2cf519549fb5",
      "comments" : "test connector",
      "id" : "855e82a1a42047349e6b2cf519549fb5",
      "version" : "1.0",
      "revision" : "aabbccee",
      "hostname" : "localhost",
      "os" : "Windows",
      "status" : "CONNECTED",
      "delegationMode" : "CUSTOMIZED"
    }, {
      "name" : "test acf1ff538cac407eb631af0c2c6cb9e0",
      "comments" : "test connector",
      "id" : "acf1ff538cac407eb631af0c2c6cb9e0",
      "version" : "1.0",
      "revision" : "aabbccee",
      "hostname" : "localhost",
      "os" : "Windows",
      "status" : "CONNECTED",
      "delegationMode" : "CUSTOMIZED"
    } ]

#### Get DNS Connector details

##### Path parameters

Table 1. /api/connector/v1/dns/{id}
Parameter | Description
--- | ---
`id` | Connector ID

##### Example request

    $ curl 'https://cert-manager.com/api/connector/v1/dns/ec209ef034c44f54896a65f59f1f00f9' -i -X GET \
        -H 'login: admin_customer1826' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -H 'Accept: application/json'

##### Response fields

Path | Type | Description
--- | --- | ---
`id` | `String` | Connector ID
`name` | `String` | Connector name
`comments` | `String` | Connector comments
`version` | `String` | Connector version
`revision` | `String` | Connector revision
`hostname` | `String` | Connector hostname
`status` | `String` | Connector current status. Possible values:[NOT_AVAILABLE, NOT_CONNECTED, CONNECTED]
`os` | `String` | Connector os
`delegationMode` | `String` | Connector delegationMode. Possible values:[GLOBAL_FOR_CUSTOMER, CUSTOMIZED]
`delegatedOrganizations` | `Array` | Connector delegated organizations ID and name

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json;charset=UTF-8
    Content-Length: 370

    {
      "name" : "test ec209ef034c44f54896a65f59f1f00f9",
      "comments" : "test connector",
      "id" : "ec209ef034c44f54896a65f59f1f00f9",
      "version" : "1.0",
      "revision" : "aabbccee",
      "hostname" : "localhost",
      "os" : "Windows",
      "status" : "CONNECTED",
      "delegationMode" : "CUSTOMIZED",
      "delegatedOrganizations" : [ {
        "id" : 1076,
        "name" : "org4Test"
      } ]
    }

#### List DNS Connector’s providers

##### Path parameters

Table 1. /api/connector/v1/dns/{id}/provider
Parameter | Description
--- | ---
`id` | Connector ID

##### Example request

    $ curl 'https://cert-manager.com/api/connector/v1/dns/7fbd4c61c6ac4989b8643efff1808dbb/provider' -i -X GET \
        -H 'login: admin_customer1832' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -H 'Accept: application/json'

##### Response headers

Name | Description
--- | ---
`X-Total-Count` | Total count

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | List of providers

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 2
    Content-Type: application/json;charset=UTF-8
    Content-Length: 23

    [ "ovh", "cloudflare" ]

## Azure Key Vault Accounts

Manage Azure Key Vault resources.

### Create Azure Key Vault account

#### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Azure account name | [Must not be null, Size must be between 1 and 128 inclusive]
applicationId | String | Azure application ID | [Must not be null, Size must be between 1 and 36 inclusive]
directoryId | String | Azure directory ID | [Must not be null, Size must be between 1 and 36 inclusive]
environment | String | Azure environment. Values: [AZURE, AZURE_US_GOVERNMENT, AZURE_GERMANY, AZURE_CHINA] | []
applicationSecret | String | Azure application (client) secret | [Must not be null, Size must be between 1 and 40 inclusive]

#### Example request

    $ curl 'https://cert-manager.com/api/azure/v1/accounts' -i -X POST \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer21166' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d ' {
       "name": "Azure Account",
       "directoryId": "tenantId",
       "applicationId": "applicationId",
       "applicationSecret": "secret",
       "environment": "AZURE"
     }
    '

#### Response headers

Name | Description
--- | ---
`Location` | URL location of created Azure account

#### Example response

    HTTP/1.1 201 Created
    Location: https://cert-manager.com/api/azure/v1/accounts/42

### Update Azure Key Vault account

#### Path parameters

Table 1. /api/azure/v1/accounts/{accountId}
Parameter | Description
--- | ---
`accountId` | Azure account ID

#### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Azure account name | [Maximum length is 128 characters or can be empty]
applicationId | String | Azure application ID | [Maximum length is 36 characters or can be empty]
directoryId | String | Azure directory ID | [Maximum length is 36 characters or can be empty]
environment | String | Azure environment. Values: [AZURE, AZURE_US_GOVERNMENT, AZURE_GERMANY, AZURE_CHINA] | []
applicationSecret | String | Azure application (client) secret | [Size must be between 1 and 40 inclusive]

#### Example request

    $ curl 'https://cert-manager.com/api/azure/v1/accounts/42' -i -X PUT \
        -H 'Content-Type: application/json;charset=utf-8' \
        -H 'login: admin_customer21190' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{"name":"Azure Account","applicationId":"applicationId","directoryId":"tenantId","environment":"AZURE","applicationSecret":"applicationSecret"}'

#### Example response

    HTTP/1.1 200 OK

### Get Azure Key Vault account details

#### Path parameters

Table 1. /api/azure/v1/accounts/{accountId}
Parameter | Description
--- | ---
`accountId` | Azure account ID

#### Example request

    $ curl 'https://cert-manager.com/api/azure/v1/accounts/42' -i -X GET \
        -H 'login: admin_customer21178' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

#### Response fields

Path | Type | Description
--- | --- | ---
`delegationMode` | `String` | Delegation mode
`name` | `String` | Azure account name
`applicationId` | `String` | Azure application ID
`directoryId` | `String` | Azure directory ID
`environment` | `String` | Azure environment
`orgDelegations` | `Array` | Delegated organization IDs

#### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 159

    {"name":"Azure Account","applicationId":"applicationId","directoryId":"tenantId","environment":"AZURE","delegationMode":"CUSTOMIZED","orgDelegations":[100500]}

### Delegate organizations to existing Azure Key Vault account

#### Path parameters

Table 1. /api/azure/v1/accounts/{accountId}/delegations
Parameter | Description
--- | ---
`accountId` | Azure account ID

#### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
delegationMode | String | Allowed values: [GLOBAL_FOR_CUSTOMER, CUSTOMIZED] | [Must not be null]
orgDelegations | Array | Delegated organization IDs. Will be ignored for GLOBAL_FOR_CUSTOMER delegation mode | []

#### Example request

    $ curl 'https://cert-manager.com/api/azure/v1/accounts/42/delegations' -i -X PUT \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer21172' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{"delegationMode": "CUSTOMIZED", "orgDelegations": [100500]}'

#### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 27

    {"orgDelegations":[100500]}

### Delete Azure Key Vault account

#### Path parameters

Table 1. /api/azure/v1/accounts/{accountId}
Parameter | Description
--- | ---
`accountId` | Azure account ID

#### Example request

    $ curl 'https://cert-manager.com/api/azure/v1/accounts/42' -i -X DELETE \
        -H 'login: admin_customer21175' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

#### Example response

    HTTP/1.1 204 No Content

### Check Azure Key Vault account configuration

#### Path parameters

Table 1. /api/azure/v1/accounts/{accountId}/check
Parameter | Description
--- | ---
`accountId` | Azure account ID

#### Example request

    $ curl 'https://cert-manager.com/api/azure/v1/accounts/42/check' -i -X GET \
        -H 'login: admin_customer21163' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

#### Response fields

Path | Type | Description
--- | --- | ---
`[].checkName` | `String` | Name of the account configuration to be checked
`[].message` | `String` | Account check result message

#### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 101

    [{"checkName":"Intune SCEP","message":"success"},{"checkName":"Azure Key Vault","message":"success"}]

### List Azure Key Vault accounts

#### Query parameters

Parameter | Description
--- | ---
`size` | Number of returned entries
`position` | the first position (entry) to return from the results of the query

#### Example request

    $ curl 'https://cert-manager.com/api/azure/v1/accounts?position=0&size=10' -i -X GET \
        -H 'login: admin_customer21181' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

#### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 2
    Content-Type: application/json
    Content-Length: 254

    [{"name":"Azure Account","applicationId":"applicationId","directoryId":"tenantId","id":42,"delegationMode":"CUSTOMIZED"},{"name":"Azure Account Custom","applicationId":"applicationId2","directoryId":"tenantId2","id":100500,"delegationMode":"CUSTOMIZED"}]

#### Response fields

Path | Type | Description
--- | --- | ---
`[].id` | `Number` | Azure account ID
`[].delegationMode` | `String` | Delegation mode
`[].name` | `String` | Azure account name
`[].applicationId` | `String` | Azure application ID
`[].directoryId` | `String` | Azure directory ID

#### Response headers

Name | Description
--- | ---
`X-Total-Count` | Total count of Azure accounts

### List Azure Key Vault resource groups

#### Path parameters

Table 1. /api/azure/v1/accounts/{accountId}/resource-groups
Parameter | Description
--- | ---
`accountId` | Azure account ID

#### Example request

    $ curl 'https://cert-manager.com/api/azure/v1/accounts/42/resource-groups' -i -X GET \
        -H 'login: admin_customer21184' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

#### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 199

    [{"name":"name1","key":"key1","skuName":"","subscriptionId":"25da10ca-2f90-4ba0-a3e1-66a6da80309b"},{"name":"name2","key":"key2","skuName":"","subscriptionId":"6781b3dc-37e5-41bb-b29a-532f3cad6610"}]

#### Response fields

Path | Type | Description
--- | --- | ---
`[].key` | `String` | Azure resource group key
`[].name` | `String` | Azure resource group name
`[].skuName` | `String` | Azure resource group SKU name
`[].subscriptionId` | `String` | Azure resource group subscription ID

### List Azure Key Vaults

#### Path parameters

Table 1. /api/azure/v1/accounts/{accountId}/subscriptions/{subscriptionId}/resource-groups/{resourceGroups}/vaults
Parameter | Description
--- | ---
`accountId` | Azure account ID
`subscriptionId` | Azure subscriptionId ID
`resourceGroups` | Azure resource group name

#### Example request

    $ curl 'https://cert-manager.com/api/azure/v1/accounts/42/subscriptions/68791814-d9ea-4687-97de-a9b29560259a/resource-groups/ResourceGroupName/vaults' -i -X GET \
        -H 'login: admin_customer21187' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

#### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 293

    [{"name":"name1-kv","key":"subscriptions/68791814-d9ea-4687-97de-a9b29560259a/resource-groups/ResourceGroupName/vaults/name1-kv","skuName":"PREMIUM"},{"name":"name2-kv","key":"subscriptions/68791814-d9ea-4687-97de-a9b29560259a/resource-groups/ResourceGroupName/name2-kv","skuName":"STANDARD"}]

#### Response fields

Path | Type | Description
--- | --- | ---
`[].key` | `String` | Azure vault key
`[].name` | `String` | Azure vault name
`[].skuName` | `String` | Azure vault SKU name

## Enrollment Endpoints

Management of Enrollment endpoints, Delegations and Endpoint accounts.

Endpoints of any type can be viewed. Delegations management is supported for any endpoint type where applicable. Following endpoints and accounts only can be created, updated and deleted:

Type | Description
--- | ---
`SSL_WEB_FORM` | SSL certificates Web Forms
`SMIME_WEB_FORM` | Client certifictes (S/MIME) Web Forms
`DEVICE_WEB_FORM` | Device certificates Web Forms
`CODE_SIGN_WEB_FORM` | Code Sign certificates Web Forms

### View enrollment endpoints

#### List enrollment endpoints

##### Query parameters

Parameter | Description
--- | ---
`size` | Count of entries
`position` | the first position (entry) to return from the results of the query
`name` | Name of the endpoint
`uriExtension` | URI extension
`endpointTypes[]` | Endpoint types, allowed values: [SSL_WEB_FORM, SMIME_WEB_FORM, DEVICE_WEB_FORM, CODE_SIGN_WEB_FORM, BULK_ENROLLMENT_WEB_FORM, PUBLIC_ACME, PRIVATE_ACME, SMIME_SCEP, DEVICE_SCEP, SMIME_SCEP_INTUNE, DEVICE_SCEP_INTUNE, SSL_EST, SMIME_EST, DEVICE_EST, SSL_REST_API, CLIENT_REST_API, DEVICE_REST_API, CODE_SIGN_REST_API]

##### Example request

    $ curl 'https://cert-manager.com/api/endpoint/v1?size=10&position=0&name=Best&uriExtension=my-own-wf&endpointTypes%5B%5D=SSL_WEB_FORM&endpointTypes%5B%5D=SMIME_WEB_FORM' -i -X GET \
        -H 'login: nick' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Response headers

Name | Description
--- | ---
`X-Total-Count` | Total count of filtered Enrollment endpoints existing in the system

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | List of Enrollment endpoints
`[].id` | `Number` | Endpoint ID
`[].name` | `String` | Endpoint name
`[].type` | `String` | Endpoint type
`[].delegationMode` | `String` | Delegation mode

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 2
    Content-Type: application/json
    Content-Length: 201

    [{"id":198,"name":"Best-test SMIME_WEB_FORM569","type":"SMIME_WEB_FORM","delegationMode":"CUSTOMIZED"},{"id":197,"name":"Best-test SSL_WEB_FORM568","type":"SSL_WEB_FORM","delegationMode":"CUSTOMIZED"}]

#### Get details of enrollment endpoint

##### Path parameters

Table 1. /api/endpoint/v1/{id}
Parameter | Description
--- | ---
`id` | Enrollment endpoint ID

##### Example request

    $ curl 'https://cert-manager.com/api/endpoint/v1/195' -i -X GET \
        -H 'login: nick' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Response fields

Path | Type | Description
--- | --- | ---
`id` | `Number` | Endpoint ID
`name` | `String` | Endpoint name
`type` | `String` | Endpoint type
`delegationMode` | `String` | Delegation mode
`url` | `String` | Endpoint URL
`uriExtension` | `String` | Endpoint URI extension
`webFormAuthTypes` | `Array` | Web Form authentication methods. IDP is available for any supported endpoint type except CODE_SIGN_WEB_FORM and SECRET_ID is available for SMIME_WEB_FORM only
`organizations` | `Array` | Delegated organizations
`organizations.[].id` | `Number` | Organization ID
`organizations.[].name` | `String` | Organization name

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 318

    {"id":195,"name":"Best-test SSL_WEB_FORM566","type":"SSL_WEB_FORM","delegationMode":"CUSTOMIZED","url":"https://cert-manager.com/customer/test/ssl/my-own-wf-195","uriExtension":"my-own-wf-195","organizations":[{"id":433,"name":"department4Test"},{"id":431,"name":"org4Test"}],"webFormAuthTypes":["EMAIL_CONFIRMATION"]}

### Get config by endpoint id

Get Enrollment Endpoint config by Enrollment Endpoint id

#### Example request

    $ curl 'https://cert-manager.com/api/endpoint/v1/168/config' -i -X GET \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: nick' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

#### HTTP request

    GET /api/endpoint/v1/168/config HTTP/1.1
    Content-Type: application/json;charset=UTF-8
    login: nick
    password: Password123!
    customerUri: test
    Host: cert-manager.com

#### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 378

    {"enrollmentHelp":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. In quis quam mauris. Morbi dui mi, viverra vel dictum eget, portitor a risus. Pellentesque nec tellus fermentum, vulputate augue sit amet.","enrollmentLinkAddress":"https://it-msp.com/support","contactName":"Andrey Leonidas","contactEmail":"andrey.leonidas@it-msp.com","contactPhone":"+1 613 889 0008"}

#### Response fields

Path | Type | Description
--- | --- | ---
`enrollmentHelp` | `String` | Enrollment endpoint help instructions
`enrollmentLinkAddress` | `String` | Enrollment endpoint support URL
`enrollmentLinkName` | `String` | Enrollment endpoint support URL label text
`webFormAuthTypes` | `String` | Enrollment endpoint authentication types. Possible values: [EMAIL_CONFIRMATION, IDP, SECRET_ID]
`contactName` | `String` | Enrollment endpoint responsive person name
`contactEmail` | `String` | Enrollment endpoint responsive person e-mail
`contactPhone` | `String` | Enrollment endpoint responsive person phone number

### Manage enrollment endpoints

#### Create enrollment endpoint

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Endpoint name | [Must not be blank, Size must be between 1 and 256 inclusive]
endpointType | String | Endpoint type | [Must not be null, Allowed values: [SSL_WEB_FORM, SMIME_WEB_FORM, DEVICE_WEB_FORM, CODE_SIGN_WEB_FORM]]
uriExtension | String | Endpoint URI extension | [Must not be blank, Size must be between 1 and 58 inclusive]
config | Object | Endpoint configuration | [Must not be null]
config.enrollmentHelp | String | Endpoint enrollment instructions | [Maximum length is 2048 characters or can be empty]
config.enrollmentLinkName | String | Endpoint enrollment external instructions URL name | [Maximum length is 1024 characters or can be empty]
config.enrollmentLinkAddress | String | Endpoint enrollment external instructions URL | [Must match the regular expression `(?!.\S)|((https?|ftps?|gopher|telnet|nntp)://)|(0-9A-Fa-f{2}|[-()_.!~';/?:@&=$,A-Za-z0-9]))([).!';/?:,])?$`, Maximum length is 2048 characters or can be empty]
config.webFormAuthTypes[] | Array | Web Form authentication methods. IDP is available for any supported endpoint type except CODE_SIGN_WEB_FORM and SECRET_ID is available for SMIME_WEB_FORM only | [Allowed values: [EMAIL_CONFIRMATION, IDP, SECRET_ID]]
orgDelegations | Array | Delegated organizations IDs. Non-delegated endpoint is available for all organizations. Can be managed any time later via delegations resource | [Must be null or not empty]

##### Example request

    $ curl 'https://cert-manager.com/api/endpoint/v1' -i -X POST \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: nick' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{"name":"SSL Form Endpoint","endpointType":"SSL_WEB_FORM","uriExtension":"ssl-wf","config":{"enrollmentHelp":"Please contact support for enrollment help.","enrollmentLinkName":"Additional information","enrollmentLinkAddress":"https://example.com/additional-information","webFormAuthTypes":["EMAIL_CONFIRMATION","IDP"]},"orgDelegations":[407,409]}'

##### Response headers

Name | Description
--- | ---
`Location` | New endpoint location

##### Example response

    HTTP/1.1 201 Created
    Location: https://cert-manager.com/api/endpoint/v1/183

#### Update enrollment endpoint

##### Path parameters

Table 1. /api/endpoint/v1/{id}
Parameter | Description
--- | ---
`id` | Enrollment endpoint ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Endpoint name | [Must be null or not blank, Size must be between 1 and 256 inclusive]
config | Object | Endpoint configuration | []
config.enrollmentHelp | String | Endpoint enrollment instructions | [Maximum length is 2048 characters or can be empty]
config.enrollmentLinkName | String | Endpoint enrollment external instructions URL name | [Maximum length is 1024 characters or can be empty]
config.enrollmentLinkAddress | String | Endpoint enrollment external instructions URL | [Must match the regular expression `(?!.\S)|((https?|ftps?|gopher|telnet|nntp)://)|(0-9A-Fa-f{2}|[-()_.!~';/?:@&=$,A-Za-z0-9]))([).!';/?:,])?$`, Maximum length is 2048 characters or can be empty]
config.webFormAuthTypes[] | Array | Web Form authentication methods. IDP is available for any supported endpoint type except CODE_SIGN_WEB_FORM and SECRET_ID is available for SMIME_WEB_FORM only | [Must be null or not empty, Allowed values: [EMAIL_CONFIRMATION, IDP, SECRET_ID]]

##### Example request

    $ curl 'https://cert-manager.com/api/endpoint/v1/212' -i -X PUT \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: nick' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '{"name":"SSL Form Updated Endpoint","config":{"enrollmentHelp":"Please contact support for enrollment help.","enrollmentLinkName":"Additional information","enrollmentLinkAddress":"https://example.com/additional-information","webFormAuthTypes":["EMAIL_CONFIRMATION","IDP"]}}'

##### Example response

    HTTP/1.1 204 No Content

### Update config by endpoint id

Update Enrollment Endpoint config by Enrollment Endpoint id

#### Example request

    $ curl 'https://cert-manager.com/api/endpoint/v1/200/config' -i -X PUT \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: nick' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '            {
                "enrollmentHelp":"Please contact support in case of issues.",
                "enrollmentLinkAddress":"https://support.global/requests",
                "contactName":"Global Support",
                "contactEmail":"global.support@support.global",
                "contactPhone":"+10050042"
                }
    '

#### HTTP request

    PUT /api/endpoint/v1/200/config HTTP/1.1
    Content-Type: application/json;charset=UTF-8
    login: nick
    password: Password123!
    customerUri: test
    Content-Length: 316
    Host: cert-manager.com

                {
                "enrollmentHelp":"Please contact support in case of issues.",
                "enrollmentLinkAddress":"https://support.global/requests",
                "contactName":"Global Support",
                "contactEmail":"global.support@support.global",
                "contactPhone":"+10050042"
                }

#### Example response

    HTTP/1.1 200 OK

#### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
enrollmentHelp | String | Enrollment endpoint help instructions | [Maximum length is 2048 characters or can be empty]
enrollmentLinkAddress | String | Enrollment endpoint support URL | [Must match the regular expression `(?!.\S)|((https?|ftps?|gopher|telnet|nntp)://)|(0-9A-Fa-f{2}|[-()_.!~';/?:@&=$,A-Za-z0-9]))([).!';/?:,])?$`, Maximum length is 2048 characters or can be empty]
enrollmentLinkName | String | Enrollment endpoint support URL label text | [Maximum length is 1024 characters or can be empty]
webFormAuthTypes | String | Enrollment endpoint authentication types. Possible values: [EMAIL_CONFIRMATION, IDP, SECRET_ID] | [Must be null or not empty]
contactName | String | Enrollment endpoint responsive person name | [Maximum length is 1024 characters or can be empty]
contactEmail | String | Enrollment endpoint responsive person e-mail | [Maximum length is 1024 characters or can be empty]
contactPhone | String | Enrollment endpoint responsive person phone number | [Maximum length is 32 characters or can be empty]

#### Delete enrollment endpoint

##### Path parameters

Table 1. /api/endpoint/v1/{id}
Parameter | Description
--- | ---
`id` | Enrollment endpoint ID

##### Example request

    $ curl 'https://cert-manager.com/api/endpoint/v1/190' -i -X DELETE \
        -H 'login: nick' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Example response

    HTTP/1.1 204 No Content

### Delegate enrollment endpoint

#### Create or update enrollment endpoint delegations

Subsequent requests add new delegations, existing delegations are not removed.

##### Path parameters

Table 1. /api/endpoint/v1/{id}/delegations
Parameter | Description
--- | ---
`id` | Enrollment endpoint ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
[] | Array | Delegated organization IDs | Positive integer values

##### Example request

    $ curl 'https://cert-manager.com/api/endpoint/v1/178/delegations' -i -X PUT \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: nick' \
        -H 'password: Password123!' \
        -H 'customerUri: test' \
        -d '[396,398]'

##### Example response

    HTTP/1.1 204 No Content

#### Delete enrollment endpoint delegations

Allowed only for MRAO role admins. Remove all delegations. The endpoint will be available for all existing organizations.

##### Path parameters

Table 1. /api/endpoint/v1/{id}/delegations
Parameter | Description
--- | ---
`id` | Enrollment endpoint ID

##### Example request

    $ curl 'https://cert-manager.com/api/endpoint/v1/188/delegations' -i -X DELETE \
        -H 'login: nick' \
        -H 'password: Password123!' \
        -H 'customerUri: test'

##### Example response

    HTTP/1.1 204 No Content

### Endpoint Accounts

#### List endpoint accounts

##### Path parameters

Table 1. /api/endpoint/v1/{eeid}/account
Parameter | Description
--- | ---
`eeid` | Enrollment endpoint ID

##### Query parameters

Parameter | Description
--- | ---
`size` | Count of entries
`position` | the first position (entry) to return from the results of the query

##### Example request

    $ curl 'https://cert-manager.com/api/endpoint/v1/163/account?size=10&position=0' -i -X GET \
        -H 'login: admin_customer514' \
        -H 'password: Password123!' \
        -H 'customerUri: cst514'

##### Response headers

Name | Description
--- | ---
`X-Total-Count` | Total count of filtered Endpoint accounts existing in the system

##### Response fields

Path | Type | Description
--- | --- | ---
`[]` | `Array` | List of Endpoint accounts
`[].id` | `Number` | Account ID
`[].name` | `String` | Account name
`[].type` | `String` | Endpoint type
`[].organization` | `Object` | Account organization
`[].organization.id` | `Number` | Organization ID
`[].organization.name` | `String` | Organization name
`[].organization.department` | `Object` | Account organization department
`[].organization.department.id` | `Number` | Organization department ID
`[].organization.department.name` | `String` | Organization department name
`[].idToken` | `String` | Account ID token

##### Example response

    HTTP/1.1 200 OK
    X-Total-Count: 2
    Content-Type: application/json
    Content-Length: 358

    [{"id":14,"name":"My account 2","type":"SSL_WEB_FORM","idToken":"eyJpZCI6MTQsInR5cGUiOiJTU0xfV0VCX0ZPUk0ifQ==","organization":{"id":351,"name":"org4Test"}},{"id":13,"name":"My account","type":"SSL_WEB_FORM","idToken":"eyJpZCI6MTMsInR5cGUiOiJTU0xfV0VCX0ZPUk0ifQ==","organization":{"id":352,"name":"org4Test","department":{"id":353,"name":"department4Test"}}}]

#### Get details of endpoint account

##### Path parameters

Table 1. /api/endpoint/v1/{eeid}/account/{id}
Parameter | Description
--- | ---
`eeid` | Enrollment endpoint ID
`id` | Enrollment account ID

##### Example request

    $ curl 'https://cert-manager.com/api/endpoint/v1/162/account/12' -i -X GET \
        -H 'login: admin_customer510' \
        -H 'password: Password123!' \
        -H 'customerUri: cst510'

##### Response fields

Path | Type | Description
--- | --- | ---
`name` | `String` | Account name
`type` | `String` | Endpoint type
`organization` | `Object` | Account organization
`organization.id` | `Number` | Organization ID
`organization.name` | `String` | Organization name
`organization.department` | `Object` | Account organization department
`organization.department.id` | `Number` | Organization department ID
`organization.department.name` | `String` | Organization department name
`idToken` | `String` | Account ID token
`profileIds` | `Array` | Delegated profile IDs
`accessCode` | `String` | Access code
`csrGenerationMethod` | `String` | CSR Generation method
`accountAuthMethod` | `String` | Account authentication method
`autoApprove` | `Boolean` | Automatically approve requests
`allowAutoRenew` | `Boolean` | Allow auto renew
`allowEmptyPin` | `Boolean` | Allow empty PKCS12 password
`preferredKeyProtectionAlgorithm` | `String` | Preferred Key Protection Algorithm
`idMappingRules[]` | `Array` | Idp Mapping Rules
`idMappingRules[].key` | `String` | Attribute name
`idMappingRules[].matchType` | `String` | Match type
`idMappingRules[].values[]` | `Array` | Attribute values

##### Example response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 419

    {"name":"My account","type":"SSL_WEB_FORM","organization":{"id":349,"name":"org4Test","department":{"id":350,"name":"department4Test"}},"idToken":"eyJpZCI6MTIsInR5cGUiOiJTU0xfV0VCX0ZPUk0ifQ==","profileIds":[1105,1106],"accessCode":"1234","csrGenerationMethod":"BROWSER","accountAuthMethod":"ACCESS_CODE","preferredKeyProtectionAlgorithm":"AES256-SHA256","autoApprove":false,"allowAutoRenew":false,"allowEmptyPin":false}

#### Create endpoint account

##### Path parameters

Table 1. /api/endpoint/v1/{eeid}/account
Parameter | Description
--- | ---
`eeid` | Enrollment endpoint ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Account name | [Must not be null, Size must be between 3 and 128 inclusive]
type | String | Endpoint type | [Must not be null, Allowed values: [SSL_WEB_FORM, SMIME_WEB_FORM, DEVICE_WEB_FORM, CODE_SIGN_WEB_FORM]]
organizationId | Number | Account organization ID | [Must not be null]
profileIds | Array | Delegated profile IDs. Only one profile ID is allowed for CODE_SIGN_WEB_FORM account type | [Must not be empty]
csrGenerationMethod | String | CSR Generation method. SERVER is available for any supported endpoint type except SSL_WEB_FORM, SECTIGOGEN is available for any except CODE_SIGN_WEB_FORM and TOKEN is available for CODE_SIGN_WEB_FORM only | [Must not be null, Allowed values: [BROWSER, SERVER, PROVIDED, SECTIGOGEN, TOKEN]]
autoApprove | Boolean | Automatically approve requests. Not applicable for SMIME_WEB_FORM and CODE_SIGN_WEB_FORM types. Must be explicitly set to 'true' for SECTIGOGEN CSR generation method | []
allowAutoRenew | Boolean | Allow auto renew. Applicable for SSL_WEB_FORM type only | []
allowEmptyPin | Boolean | Allow empty PKCS12 password | []
accountAuthMethod | String | Account authentication method. Not applicable for CODE_SIGN_WEB_FORM type | [Must not be null, Allowed values: [ACCESS_CODE, IDP_ASSERTIONS_MAPPING, NONE]]
accessCode | String | Access code (mandatory and relevant for ACCESS_CODE authentication method only) | [Must be null or not blank, Maximum length is 255 characters or can be empty]
idpMappingRules | Array | IDP assertion mapping rules (mandatory and relevant for IDP_ASSERTIONS_MAPPING authentication method only) | [Must be null or not empty]
idpMappingRules[].key | String | Attribute name | [Must not be blank, Allowed values are: [cn, displayname, entitlement, eppn, givenname, groups, mail, schachomeorganization, sn, uid]]. Allowed values can vary depending on the system configuration
idpMappingRules[].matchType | String | Match type | [Must not be null, Allowed values are: [MATCHES, CONTAINS]]
idpMappingRules[].values | Array | Attribute values | [Must not be empty]
preferredKeyProtectionAlgorithm | String | Preferred key protection algorithm | [Allowed values: [AES256-SHA256, TripleDES-SHA1]]

##### Example request

    $ curl 'https://cert-manager.com/api/endpoint/v1/158/account' -i -X POST \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer492' \
        -H 'password: Password123!' \
        -H 'customerUri: cst492' \
        -d '{"type":"SSL_WEB_FORM","name":"My account","type":"SSL_WEB_FORM","organizationId":334,"profileIds":[1097,1098],"csrGenerationMethod":"PROVIDED","autoApprove":true,"allowAutoRenew":true,"accountAuthMethod":"IDP_ASSERTIONS_MAPPING","idpMappingRules":[{"key":"groups","matchType":"CONTAINS","values":["admin","user"]}],"preferredKeyProtectionAlgorithm":"TripleDES-SHA1"}'

##### Response headers

Name | Description
--- | ---
`Location` | New account location

##### Example response

    HTTP/1.1 201 Created
    Location: https://cert-manager.com/api/endpoint/v1/158/account/8

#### Update endpoint account

##### Path parameters

Table 1. /api/endpoint/v1/{eeid}/account/{id}
Parameter | Description
--- | ---
`eeid` | Enrollment endpoint ID
`id` | Enrollment account ID

##### Request fields

Path | Type | Description | Constraints
--- | --- | --- | ---
name | String | Account name | [Size must be between 3 and 128 inclusive]
type | String | Endpoint type. Type can’t be updated once account is created | [Must not be null, Allowed values: [SSL_WEB_FORM, SMIME_WEB_FORM, DEVICE_WEB_FORM, CODE_SIGN_WEB_FORM]]
profileIds | Array | Delegated profile IDs. Only one profile ID is allowed for CODE_SIGN_WEB_FORM account type. If provided, all existing profile delegations will be replaced | [Must be null or not empty]
csrGenerationMethod | String | CSR Generation method. SERVER is available for any supported endpoint type except SSL_WEB_FORM, SECTIGOGEN is available for any except CODE_SIGN_WEB_FORM and TOKEN is available for CODE_SIGN_WEB_FORM only | [Allowed values: [BROWSER, SERVER, PROVIDED, SECTIGOGEN, TOKEN]]
autoApprove | Boolean | Automatically approve requests. Not applicable for SMIME_WEB_FORM and CODE_SIGN_WEB_FORM types. Must be explicitly set to 'true' for SECTIGOGEN CSR generation method | []
allowAutoRenew | Boolean | Allow auto renew. Applicable for SSL_WEB_FORM type only | []
allowEmptyPin | Boolean | Allow empty PKCS12 password | []
accountAuthMethod | String | Account authentication method. Not applicable for CODE_SIGN_WEB_FORM type | [Allowed values: [ACCESS_CODE, IDP_ASSERTIONS_MAPPING, NONE]]
accessCode | String | Access code (mandatory and relevant for ACCESS_CODE authentication method only) | [Must be null or not blank, Maximum length is 255 characters or can be empty]
idpMappingRules | Array | IDP assertion mapping rules (mandatory and relevant for IDP_ASSERTIONS_MAPPING authentication method only). If provided, all existing rules will be replaced | [Must be null or not empty]
idpMappingRules[].key | String | Attribute name | [Must not be blank, Allowed values are: [cn, displayname, entitlement, eppn, givenname, groups, mail, schachomeorganization, sn, uid]]. Allowed values can vary depending on the system configuration
idpMappingRules[].matchType | String | Match type | [Must not be null, Allowed values are: [MATCHES, CONTAINS]]
idpMappingRules[].values | Array | Attribute values | [Must not be empty]
preferredKeyProtectionAlgorithm | String | Preferred key protection algorithm | [Allowed values: [AES256-SHA256, TripleDES-SHA1]]

##### Example request

    $ curl 'https://cert-manager.com/api/endpoint/v1/167/account/18' -i -X PUT \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'login: admin_customer531' \
        -H 'password: Password123!' \
        -H 'customerUri: cst531' \
        -d '{"type":"SSL_WEB_FORM","name":"My updated account","type":"SSL_WEB_FORM","profileIds":[1117,1118],"csrGenerationMethod":"BROWSER","autoApprove":true,"allowEmptyPin":true,"allowAutoRenew":false,"accountAuthMethod":"ACCESS_CODE","accessCode":"1234","preferredKeyProtectionAlgorithm":"TripleDES-SHA1"}'

##### Example response

    HTTP/1.1 204 No Content

#### Delete endpoint account

##### Path parameters

Table 1. /api/endpoint/v1/{eeid}/account/{id}
Parameter | Description
--- | ---
`eeid` | Enrollment endpoint ID
`id` | Enrollment account ID

##### Example request

    $ curl 'https://cert-manager.com/api/endpoint/v1/160/account/10' -i -X DELETE \
        -H 'Content-Type: application/json' \
        -H 'login: admin_customer501' \
        -H 'password: Password123!' \
        -H 'customerUri: cst501'

##### Example response

    HTTP/1.1 204 No Content