KeyTalk logo
KeyTalk API Reference Certificate & Key Management

KeyTalk API (2.8.9)

Download OpenAPI specification:

KeyTalk certificate and key management & enrolment virtual appliance - REST API.

This specification covers five distinct API groups exposed by a KeyTalk server, extracted from the "KeyTalk - Protocols" reference document (document version 2.8.9, last updated 2026-07-15):

  1. Certificate Retrieval API (RCDPv2) - /rcdp/... - the protocol used by KeyTalk end-user agents to obtain certificates. Session-based (cookie keytalkcookie), 3 phases: handshake, authentication, service provision.
  2. Public API - /public/... - unauthenticated (or certificate-parameter-based) informational calls.
  3. Administrator API - /admapi/... - management calls used by the KeyTalk Web Admin Interface, authenticated with either a username/password pair supplied as request body fields, or a TLS client certificate.
  4. Self-Service API - /ssapi/... - S/MIME enrolment for external parties, authenticated purely via TLS client certificate + key.
  5. Certificate Authority Retrieval API (CA API) - /ca/... - fetch KeyTalk's internal trust chain certificates, unauthenticated.

Notes on authentication modeling

  • RCDPv2 uses a session cookie keytalkcookie, returned by /rcdp/hello in a Set-Cookie header and required on every subsequent RCDPv2 call in this session (except hello itself). This is modeled as the keytalkCookieAuth API-key (cookie) security scheme.
  • The Administrator API is not documented as using the standard HTTP Authorization: Basic header. Per section 4.2: "All the API calls should be authenticated using credentials of the Web Admin Interface (username/password or a client certificate)" - and every example in the document passes credentials as the ordinary POST body fields auth-username / auth-password (see each operation's request body), OR alternatively via a mutual-TLS client certificate (curl --cert/--key). Because OpenAPI 3.0.3 has no clean way to model "mutual TLS OR body-embedded credentials", a basicAuth (http/basic) security scheme is declared for documentation completeness/tooling compatibility, but it is not actually placed in the security requirement of Administrator operations - the true credential transport is the auth-username/auth-password request-body properties, which are marked optional on every Administrator operation ("required if the webserver is configured with username/password authentication"; otherwise a client certificate presented at the TLS layer is used). This is flagged explicitly because it deviates from conventional HTTP Basic auth.
  • The Self-Service API requires a TLS client certificate + private key for the whole connection (mutual TLS) - there is no bearer/basic header either. This is documented in each Self-Service operation's description; OpenAPI 3.0.3 has no first-class mutual-TLS security scheme, so this is captured as a textual requirement rather than a security block.
  • The Public API and CA API require no authentication at all (some Public API calls take a certificate as a regular request parameter, purely for identification purposes, not as an auth credential).

Notes on <version> path segments

RCDPv2, Public API and Administrator API all support two forms of every path: /xxx/<action> (uses the latest protocol version supported by the server) and /xxx/<version>/<action> (pins a specific protocol version). Both forms are modeled below as sibling paths: a version-less "latest" alias and a {version}-templated path.

Live Validation (2026-07-30)

This specification was live-tested against a real KeyTalk demo deployment across two passes, each using a disposable KeyTalk-provided test seat account (account names/passwords intentionally omitted from this public document). Results:

  • Target: https://demo1.keytalkdemo.com - KeyTalk server v8.1.4, RCDP protocol v2.8.5.
  • Full RCDPv2 certificate-retrieval flow confirmed end-to-end and working, twice, with two different test seat accounts: hellohandshakeauth-requirements (service=Internal_server_auth) → authentication (credential types USERID, HWSIG, PASSWD; server returned auth-status: "OK" both times) → last-messagescsr-requirementscert (format=PEM; server returned a real issued X.509 certificate plus a private key both times). Second pass also confirmed the flow works when calling the version-less host with no explicit port (https://demo1.keytalkdemo.com/), matching the servers entry below exactly.
  • Public API confirmed working: /public/version (returned {"status":"version","version":"8.1.4"}), /public/health-check (returned {"status":"health-check","check-result":"operational"}), /public/cn-customization-policy, /public/cert-expiration-margin.
  • Administrator API (/admapi/list-templates) is reachable at the correct path and port (https://demo1.keytalkdemo.com:3000), but the test account's template does not have Administrator REST API access enabled, so the call returned a scoped HTTP 400 ({"status":"error","error":"Administrator REST API calls are disabled for the given template"}) rather than data. The request/response shape still matched this spec - this is a real business-logic rejection, not a routing/404 failure, and it confirms the path + port are correct.
  • Both test accounts authenticate as RCDPv2 seats under the template Internal_server_auth - neither is an Administrator API or Web Admin GUI user/credential. Nothing elsewhere in this spec should be read as implying either account works for /admapi/... calls.
  • Certificate-based seat-wide re-authentication confirmed working (2026-07-30, third pass), using a previously-issued seat certificate/key pair supplied out of band (the RCDPv2 session cookie needed to decrypt a certificate's private key in-band is HttpOnly and inaccessible to browser-based automation, so this step used a certificate provided directly rather than one decrypted live): auth-requirements (seat mode: USERID + computer-name, then HWSIG) returned encrypted-challenge → decrypted per the OpenSSL recipe in the RESPONSE field's description → authentication with only RESPONSE (no USERID/PASSWD at all) returned auth-status: "OK" → a subsequent /rcdp/cert call on that same session issued a fresh certificate. Found and corrected a real documentation bug in the process: see the RESPONSE property description under AuthenticationRequest for the exact fix (the decrypted challenge's size# prefix must be stripped before sending, contrary to the source document's wording). This is KeyTalk's certificate-based re-authentication mode - it runs over ordinary HTTPS, using the certificate only to decrypt an application-layer challenge, not as a TLS client certificate presented during the handshake (RCDPv2 has no genuine mutual-TLS mode; true mTLS is used only by the Self-Service API and optionally the Administrator API, per their respective sections above).
  • Templates present on the demo server (for reference): ACME_DigiCert_GeoTrust_demo, ACME_GeoTrust, ALSTOMGROUP-TRAIN-CERT-DEMO, Demo-TLS-PrivateCA, Digicert_Basic_OV, Internal_server_auth (used above), Internal_server_auth_II, KeyTalk_Demo_SMIMI_DigiCert, User_Certificate.
  • https://demo1.keytalk.com:3000 (note: keytalk.com, not keytalkdemo.com) - one of the three URLs originally supplied for validation - is completely unreachable (DNS/connection failure, no HTTP response at all; confirmed via direct browser navigation showing a connection-error page). This appears to be a typo for demo1.keytalkdemo.com:3000 and has been excluded from the servers list below; do not use it as a target host.

RCDPv2

Certificate Retrieval API (RCDPv2) - handshake, authentication and service-provision phases used by KeyTalk end-user agents.

End of communication (latest protocol version)

Ends RCDPv2 communication. Can be sent at any time by either side. Alias of /rcdp/{version}/eoc using the latest protocol version supported by the server.

Authorizations:
keytalkCookieAuth
query Parameters
reason
string
Example: reason=bye, server

Optional reason for ending communication.

Responses

Response samples

Content type
application/json
{
  • "status": "eoc",
  • "reason": "string"
}

End of communication

Ends RCDPv2 communication. Can be sent at any time, initiated by any communication side.

Authorizations:
keytalkCookieAuth
path Parameters
version
required
string
Enum: "2.7.4" "2.7.5" "2.7.6" "2.7.7" "2.7.8" "2.7.9" "2.8.0" "2.8.1" "2.8.2" "2.8.3" "2.8.4" "2.8.5"
Example: 2.8.5

RCDPv2 protocol version to use. Documented versions (see section 2.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

query Parameters
reason
string
Example: reason=bye, server

Optional reason for ending communication.

Responses

Response samples

Content type
application/json
{
  • "status": "eoc",
  • "reason": "string"
}

Report/receive an error (latest protocol version)

Typically sent by the server to notify the caller of an error. The client can also send this to the server when it cannot handle the server's response. Alias of /rcdp/{version}/error using the latest protocol version supported by the server.

Authorizations:
keytalkCookieAuth
query Parameters
code
required
integer
Example: code=1066

Numeric error code.

description
string
Example: description=invalid response

Optional error description. Might be required for certain error codes.

Responses

Response samples

Content type
application/json
{
  • "status": "error",
  • "code": 1066,
  • "description": "string"
}

Report/receive an error

Errors are typically sent by the server to notify the caller of an error while processing its request. The client can also send errors to the server when it can't handle the server's response.

Known error codes

code name direction remarks
1001 ErrResolvedIpInvalid server -> client Sent when none of the IPs resolved by the client and by the server match.
1002 ErrDigestInvalid server -> client Sent when the client's calculated executable digest does not match the digest stored on the server.
1003 ErrTimeOutOfSync server -> client Sent when the client time is out of sync with the server's time (by the given number of seconds).
1004 ErrMaxLicensedUsersReached server -> client Sent when no certificate can be supplied because the max number of licensed users has been reached.
1005 ErrPasswordExpired server -> client Sent when the user's password is expired and the caller is not supposed to change it.
1006 ErrIncompatibleProtocolVersion server -> client Sent when further communication is not possible because the client's API version is not supported (normally too old).
1007 ErrTpmEkCertNotIssuedByEkCa server -> client Sent to indicate the TPM Endorsement certificate presented in a TPM attestation request is not issued by the TPM Endorsement CA configured on the server.
1008 ErrTpmEkCertMismatchEkPubBlob server -> client Sent to indicate the TPM Endorsement certificate and the public BLOB presented in a TPM attestation request do not correspond to each other.
1009 ErrInvalidSeat server -> client [as of v2.7.7] Sent to indicate the seat supplied by the caller cannot be used for authentication, typically because the seat does not exist, is archived, or lacks a valid certificate.
Authorizations:
keytalkCookieAuth
path Parameters
version
required
string
Enum: "2.7.4" "2.7.5" "2.7.6" "2.7.7" "2.7.8" "2.7.9" "2.8.0" "2.8.1" "2.8.2" "2.8.3" "2.8.4" "2.8.5"
Example: 2.8.5

RCDPv2 protocol version to use. Documented versions (see section 2.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

query Parameters
code
required
integer
Example: code=1066

Numeric error code.

description
string
Example: description=invalid response

Optional error description. Might be required for certain error codes.

Responses

Response samples

Content type
application/json
{
  • "status": "error",
  • "code": 1066,
  • "description": "string"
}

Hello (latest protocol version)

Agree on RCDP API version and establish a session ID. Alias of /rcdp/{version}/hello using the latest protocol version supported by the server. Does NOT require the keytalkcookie session cookie (it is issued by this call).

query Parameters
caller-app-description
string
Example: caller-app-description=Demo KeyTalk Agent

Optional description of the caller application.

Responses

Response samples

Content type
application/json
{
  • "status": "hello",
  • "version": "string"
}

Hello

Agree on RCDP API version and establish a session ID. The RCDP API version proposed by the caller is sent as part of the HTTP GET path. The session ID is returned in the keytalkcookie HTTP cookie via the Set-Cookie response header, and must be sent back (as a Cookie request header) on every subsequent RCDPv2 call in this session.

path Parameters
version
required
string
Enum: "2.7.4" "2.7.5" "2.7.6" "2.7.7" "2.7.8" "2.7.9" "2.8.0" "2.8.1" "2.8.2" "2.8.3" "2.8.4" "2.8.5"
Example: 2.8.5

RCDPv2 protocol version to use. Documented versions (see section 2.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

query Parameters
caller-app-description
string
Example: caller-app-description=Demo KeyTalk Agent

Optional description of the caller application.

Responses

Response samples

Content type
application/json
{
  • "status": "hello",
  • "version": "string"
}

Handshake (latest protocol version)

Confirm the version handshake and exchange time information. Alias of /rcdp/{version}/handshake using the latest protocol version supported by the server.

Authorizations:
keytalkCookieAuth
query Parameters
caller-utc
required
string <date-time>
Example: caller-utc=2023-04-14T10:44:35Z

Caller UTC time, ISO 8601 format including date and time.

Responses

Response samples

Content type
application/json
{
  • "status": "handshake",
  • "server-utc": "2019-08-24T14:15:22Z"
}

Handshake

Confirm version handshake and exchange time information. If the caller agrees with the API version proposed by the server on the previous (hello) step, it proceeds with this version by putting it in the path here. Otherwise, the caller ends communication (eoc).

Authorizations:
keytalkCookieAuth
path Parameters
version
required
string
Enum: "2.7.4" "2.7.5" "2.7.6" "2.7.7" "2.7.8" "2.7.9" "2.8.0" "2.8.1" "2.8.2" "2.8.3" "2.8.4" "2.8.5"
Example: 2.8.5

RCDPv2 protocol version to use. Documented versions (see section 2.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

query Parameters
caller-utc
required
string <date-time>
Example: caller-utc=2023-04-14T10:44:35Z

Caller UTC time, ISO 8601 format including date and time.

Responses

Response samples

Content type
application/json
{
  • "status": "handshake",
  • "server-utc": "2019-08-24T14:15:22Z"
}

Request authentication requirements (latest protocol version)

Alias of /rcdp/{version}/auth-requirements using the latest protocol version supported by the server. See that operation for the full description of all three usage modes.

Authorizations:
keytalkCookieAuth
query Parameters
service
string
Example: service=DEMO_SERVICE

KeyTalk TEMPLATE (service) name. Required for the template-wide and seat-wide-step-1 usage modes.

USERID
string
Example: USERID=Jos

[as of v2.8.1] User ID of the caller. Required (together with computer-name) for the seat-wide authentication requirements usage mode (step 1).

computer-name
string
Example: computer-name=joscomp

[as of v2.8.1] Caller's machine/device name. Required (together with USERID) for the seat-wide authentication requirements usage mode (step 1).

HWSIG
string
Example: HWSIG=CS-123456

[as of v2.8.1] Hardware Signature of the caller's device, calculated over the formula returned in hwsig_formula by the seat-wide auth-requirements step 1 call. Required for the seat-wide authentication requirements usage mode (step 2).

Responses

Response samples

Content type
application/json
Example
{}

Request authentication requirements (template-wide or seat-wide)

This single endpoint serves three distinct request/response shapes, distinguished by which query parameters are supplied:

  1. Template-wide authentication requirements (section 2.6.1) - pass only service (the KeyTalk TEMPLATE name). Returns credential-types and associated hints (hwsig_formula, password-prompt, service-uris, resolve-service-uris, calc-service-uris-digest, use-tpm-vsc-authentication, use-kerberos-authentication, supply-computer-name, mfa-settings).
  2. Seat-wide authentication requirements, step 1 ([as of v2.8.1], section 2.6.2) - pass service, USERID and computer-name. Returns either hwsig_formula (when an HWSIG formula is configured for the TEMPLATE) or encrypted-challenge (when it is not).
  3. Seat-wide authentication requirements, step 2 (section 2.6.2, continued) - pass HWSIG (the hardware signature calculated over the formula returned in step 1). Returns encrypted-challenge: a random string S/MIME-encrypted with the public key of the latest issued certificate for the resolved seat, base64-encoded. The seat must exist, not be archived, and have a valid, non-revoked certificate, otherwise ErrInvalidSeat (error code 1009) is returned. The caller decrypts the challenge with the private key of the seat's certificate and sends it back in the subsequent /authentication (seat-wide authentication) request as the RESPONSE credential.
Authorizations:
keytalkCookieAuth
path Parameters
version
required
string
Enum: "2.7.4" "2.7.5" "2.7.6" "2.7.7" "2.7.8" "2.7.9" "2.8.0" "2.8.1" "2.8.2" "2.8.3" "2.8.4" "2.8.5"
Example: 2.8.5

RCDPv2 protocol version to use. Documented versions (see section 2.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

query Parameters
service
string
Example: service=DEMO_SERVICE

KeyTalk TEMPLATE (service) name. Required for the template-wide and seat-wide-step-1 usage modes.

USERID
string
Example: USERID=Jos

[as of v2.8.1] User ID of the caller. Required (together with computer-name) for the seat-wide authentication requirements usage mode (step 1).

computer-name
string
Example: computer-name=joscomp

[as of v2.8.1] Caller's machine/device name. Required (together with USERID) for the seat-wide authentication requirements usage mode (step 1).

HWSIG
string
Example: HWSIG=CS-123456

[as of v2.8.1] Hardware Signature of the caller's device, calculated over the formula returned in hwsig_formula by the seat-wide auth-requirements step 1 call. Required for the seat-wide authentication requirements usage mode (step 2).

Responses

Response samples

Content type
application/json
Example
{}

Authenticate (latest protocol version)

Alias of /rcdp/{version}/authentication using the latest protocol version supported by the server. See that operation for the full description of all four usage modes.

Authorizations:
keytalkCookieAuth
Request Body schema: application/x-www-form-urlencoded
required
service
string

KeyTalk service (template) name. Used by the template-wide and start-OTP/MFA modes.

caller-hw-description
string

Caller HW description, unique per device (e.g. BIOS serial number or iOS device UDID). Used by template-wide, seat-wide and start-OTP/MFA modes.

USERID
string

ID of the user. Required if previously set by the server in auth-requirements.

HWSIG
string

Hardware Signature calculated with the formula from the preceding auth-requirements response.

PASSWD
string

User password. Required if previously requested by the server.

PIN
string

User pincode. Required if previously requested by the server.

OTP/MFA
string

[as of v2.7.5] OTP acquired via an alternative channel, or MFA Access Token. Can only be used once per positive authentication.

resolved
string

JSON-encoded array of {uri, ips} objects (RFC 3986 URI plus resolved IPv4/IPv6 addresses). Required if resolve-service-uris was set in auth-requirements.

digests
string

JSON-encoded array of {uri, digest} objects (file URI plus SHA-256 hex digest). Required if calc-service-uris-digest was set in auth-requirements.

object

Kerberos TGT. Present if use-kerberos-authentication was requested; if omitted, remaining credentials are used instead.

computer-name
string

Caller's machine/device name. Required if supply-computer-name was requested.

retired-computer-name
string

Only passed when supply-computer-name was requested AND the current machine/device name differs from the one in the latest valid certificate (found via SAN DNS values matching CN).

RESPONSE
string

Seat-wide authentication: the value of encrypted-challenge decrypted with the private key of the caller's latest valid seat certificate.

Live-tested correction (2026-07-30): decrypting encrypted-challenge (per the OpenSSL recipe on that field) yields a plaintext of the form size#challenge (e.g. 32#19a406b44dbe4b379cddebe16063cb32) - that size# prefix is part of the decrypted plaintext itself, not an instruction to re-encode the value yourself. Submit only the substring after the # separator (e.g. 19a406b44dbe4b379cddebe16063cb32) as RESPONSE. Submitting the full size#challenge string - which is what the source document's own wording ("encoded as size#challenge") suggests - was live-tested and rejected with auth-status: "DELAY" even though decryption itself succeeded correctly against the right key. This flow was confirmed end-to-end live: auth-requirements (seat mode, with a matching HWSIG) → decrypt encrypted-challenge → strip the size# prefix → authentication (RESPONSE only, no USERID/PASSWD) returned auth-status: "OK" → a subsequent /rcdp/cert call on that session issued a certificate, all without ever supplying a password. This is KeyTalk's certificate-based re-authentication mode; it happens over ordinary HTTPS (the certificate's private key is used only to decrypt a challenge value, not presented as a TLS client certificate) - see the ## Live Validation section in the top-level info.description for more context.

responses
string

Challenge-response authentication: JSON-encoded array of {name, value} response objects, answering a previously received CHALLENGE. Names should match those returned by the server.

Responses

Request samples

Content type
application/x-www-form-urlencoded
Example
service=DEMO_SERVICE&caller-hw-description=Windows%2011%2C%20BIOS%20s%2Fn%201234567890&USERID=DemoUser&HWSIG=CS-123456&PASSWD=change%21&resolved=%5B%7B%22uri%22%3A%22https%3A%2F%2Fdemo.keytalk.com%2F%22%2C%22ips%22%3A%5B%2281.175.103.107%22%5D%7D%5D

Response samples

Content type
application/json
{
  • "status": "auth-result",
  • "auth-status": "OK"
}

Authenticate the caller (template-wide, seat-wide, challenge-response, or start OTP/MFA)

This single endpoint serves four distinct request/response flows, distinguished by which form fields are supplied. Content-Type is always application/x-www-form-urlencoded.

  1. Template-wide authentication (section 2.6.3) - authenticate against the selected TEMPLATE/service using the supplied set of credentials (service, caller-hw-description, and whichever of USERID/HWSIG/PASSWD/PIN/OTP/MFA/resolved/digests/kerberos-ticket/ computer-name/retired-computer-name were requested by the preceding /auth-requirements call).
  2. Seat-wide authentication ([as of v2.8.1], section 2.6.4) - pass RESPONSE (the decrypted encrypted-challenge from the seat-wide /auth-requirements flow, encoded as size#challenge) and caller-hw-description.
  3. Challenge-response authentication (section 2.6.5) - pass responses, a JSON array of {name, value} objects answering a previously-received CHALLENGE.
  4. Start OTP or MFA authentication ([as of v2.7.5], section 2.6.6) - pass service, caller-hw-description, and whichever of USERID/HWSIG/computer-name were requested, after receiving "OTP/MFA" in credential-types. On success the caller receives WAIT-FOR-OTP and should obtain an OTP via an alternative channel (email/SMS) or trigger the MFA flow, then re-submit template-wide authentication with the OTP/Access Token supplied as the OTP/MFA credential.

auth-status values (used across all four flows)

  • OK - authentication successful.
  • DELAY - authentication was not successful; delay gives the number of seconds before retrying (can be 0).
  • LOCKED - cannot log in because the user is locked on the server; delay gives remaining lock time.
  • EXPIRED - authentication not successful because the user's password is expired.
  • CHALLENGE - the server supplied a challenge; challenges and optionally response-names are set.
  • KERBEROS-AUTH-NOK - Kerberos ticket validation failed (e.g. expired); the caller may retry with remaining credentials (no user lock is applied).
  • WAIT-FOR-OTP - the caller's identity was verified; wait for the OTP (or trigger MFA) and resubmit with it as a credential. Can only be used once per positive authentication.
Authorizations:
keytalkCookieAuth
path Parameters
version
required
string
Enum: "2.7.4" "2.7.5" "2.7.6" "2.7.7" "2.7.8" "2.7.9" "2.8.0" "2.8.1" "2.8.2" "2.8.3" "2.8.4" "2.8.5"
Example: 2.8.5

RCDPv2 protocol version to use. Documented versions (see section 2.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Request Body schema: application/x-www-form-urlencoded
required
service
string

KeyTalk service (template) name. Used by the template-wide and start-OTP/MFA modes.

caller-hw-description
string

Caller HW description, unique per device (e.g. BIOS serial number or iOS device UDID). Used by template-wide, seat-wide and start-OTP/MFA modes.

USERID
string

ID of the user. Required if previously set by the server in auth-requirements.

HWSIG
string

Hardware Signature calculated with the formula from the preceding auth-requirements response.

PASSWD
string

User password. Required if previously requested by the server.

PIN
string

User pincode. Required if previously requested by the server.

OTP/MFA
string

[as of v2.7.5] OTP acquired via an alternative channel, or MFA Access Token. Can only be used once per positive authentication.

resolved
string

JSON-encoded array of {uri, ips} objects (RFC 3986 URI plus resolved IPv4/IPv6 addresses). Required if resolve-service-uris was set in auth-requirements.

digests
string

JSON-encoded array of {uri, digest} objects (file URI plus SHA-256 hex digest). Required if calc-service-uris-digest was set in auth-requirements.

object

Kerberos TGT. Present if use-kerberos-authentication was requested; if omitted, remaining credentials are used instead.

computer-name
string

Caller's machine/device name. Required if supply-computer-name was requested.

retired-computer-name
string

Only passed when supply-computer-name was requested AND the current machine/device name differs from the one in the latest valid certificate (found via SAN DNS values matching CN).

RESPONSE
string

Seat-wide authentication: the value of encrypted-challenge decrypted with the private key of the caller's latest valid seat certificate.

Live-tested correction (2026-07-30): decrypting encrypted-challenge (per the OpenSSL recipe on that field) yields a plaintext of the form size#challenge (e.g. 32#19a406b44dbe4b379cddebe16063cb32) - that size# prefix is part of the decrypted plaintext itself, not an instruction to re-encode the value yourself. Submit only the substring after the # separator (e.g. 19a406b44dbe4b379cddebe16063cb32) as RESPONSE. Submitting the full size#challenge string - which is what the source document's own wording ("encoded as size#challenge") suggests - was live-tested and rejected with auth-status: "DELAY" even though decryption itself succeeded correctly against the right key. This flow was confirmed end-to-end live: auth-requirements (seat mode, with a matching HWSIG) → decrypt encrypted-challenge → strip the size# prefix → authentication (RESPONSE only, no USERID/PASSWD) returned auth-status: "OK" → a subsequent /rcdp/cert call on that session issued a certificate, all without ever supplying a password. This is KeyTalk's certificate-based re-authentication mode; it happens over ordinary HTTPS (the certificate's private key is used only to decrypt a challenge value, not presented as a TLS client certificate) - see the ## Live Validation section in the top-level info.description for more context.

responses
string

Challenge-response authentication: JSON-encoded array of {name, value} response objects, answering a previously received CHALLENGE. Names should match those returned by the server.

Responses

Request samples

Content type
application/x-www-form-urlencoded
Example
service=DEMO_SERVICE&caller-hw-description=Windows%2011%2C%20BIOS%20s%2Fn%201234567890&USERID=DemoUser&HWSIG=CS-123456&PASSWD=change%21&resolved=%5B%7B%22uri%22%3A%22https%3A%2F%2Fdemo.keytalk.com%2F%22%2C%22ips%22%3A%5B%2281.175.103.107%22%5D%7D%5D

Response samples

Content type
application/json
{
  • "status": "auth-result",
  • "auth-status": "OK"
}

Change password (latest protocol version)

Alias of /rcdp/{version}/change-password using the latest protocol version supported by the server.

Authorizations:
keytalkCookieAuth
Request Body schema: application/x-www-form-urlencoded
required
old-password
required
string

Current (old) user password.

new-password
required
string

New user password.

Responses

Request samples

Content type
application/x-www-form-urlencoded
old-password=changeme&new-password=changed

Response samples

Content type
application/json
{
  • "status": "auth-result",
  • "auth-status": "OK"
}

Change user password

Changes the user's password. Password-change must be supported by the server's backend (e.g. Active Directory). A caller should normally change the password after an EXPIRED authentication result, or proactively when password-validity hints the password is about to expire.

The response uses the same AuthResult shape as /authentication, but auth-status is limited to OK (password changed, caller must re-authenticate with the new password), DELAY (change did not succeed, e.g. incorrect old password or too-short new password; retry after delay seconds), or LOCKED.

Authorizations:
keytalkCookieAuth
path Parameters
version
required
string
Enum: "2.7.4" "2.7.5" "2.7.6" "2.7.7" "2.7.8" "2.7.9" "2.8.0" "2.8.1" "2.8.2" "2.8.3" "2.8.4" "2.8.5"
Example: 2.8.5

RCDPv2 protocol version to use. Documented versions (see section 2.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Request Body schema: application/x-www-form-urlencoded
required
old-password
required
string

Current (old) user password.

new-password
required
string

New user password.

Responses

Request samples

Content type
application/x-www-form-urlencoded
old-password=changeme&new-password=changed

Response samples

Content type
application/json
{
  • "status": "auth-result",
  • "auth-status": "OK"
}

Check for the last server messages (latest protocol version)

Alias of /rcdp/{version}/last-messages using the latest protocol version supported by the server.

Authorizations:
keytalkCookieAuth
query Parameters
from-utc
string <date-time>
Example: from-utc=2023-04-26T06:49:55.614010Z

UTC (ISO 8601) to request messages from. Defaults to requesting all server messages.

Responses

Response samples

Content type
application/json
{
  • "status": "last-messages",
  • "messages": [
    ]
}

Check for the last server messages

Check for the last server messages. Server messages are meant for KeyTalk users, e.g. to indicate planned server maintenance.

Authorizations:
keytalkCookieAuth
path Parameters
version
required
string
Enum: "2.7.4" "2.7.5" "2.7.6" "2.7.7" "2.7.8" "2.7.9" "2.8.0" "2.8.1" "2.8.2" "2.8.3" "2.8.4" "2.8.5"
Example: 2.8.5

RCDPv2 protocol version to use. Documented versions (see section 2.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

query Parameters
from-utc
string <date-time>
Example: from-utc=2023-04-26T06:49:55.614010Z

UTC (ISO 8601) to request messages from. Defaults to requesting all server messages.

Responses

Response samples

Content type
application/json
{
  • "status": "last-messages",
  • "messages": [
    ]
}

Generate a certificate, server-generated key or client CSR (latest protocol version)

Alias of /rcdp/{version}/cert using the latest protocol version supported by the server. See that operation for the full description.

Authorizations:
keytalkCookieAuth
Request Body schema: application/x-www-form-urlencoded
required
format
string
Enum: "PEM" "P12" "P12v2"

Server-generated-keypair flow only. PEM - PEM-encoded cert+key. P12 - PKCS#12, private key encrypted with legacy 3DES-CBC (kept for backward compatibility with mobile agents; considered insecure since end-2022). P12v2 - PKCS#12, private key encrypted with AES256-CBC (recommended).

out-of-band
boolean
Default: false

When set, the server returns a download URL for the certificate instead of the certificate itself.

response
string

JSON-encoded {type, data} object (type of the previously received challenge; base64-encoded response data), sent after a cert-challenge status was previously received.

object

Cookie received in a previous submitted/in-progress/cert-challenge response, to be echoed back.

common-name
string

Common Name to use in the certificate. Only honored if allowed by the server (see Public API cn-customization-policy, should return ALLOWED).

given-name
string

[as of v2.8.2] Given name (first name), used in the certificate and CN. Only honored if cn-customization-policy returns ALLOWED-AS-GIVENNAME_SURNAME.

surname
string

[as of v2.8.2] Surname (second name), used in the certificate and CN. Only honored if cn-customization-policy returns ALLOWED-AS-GIVENNAME_SURNAME.

san-domains
Array of strings

[as of v2.8.3] Extra SAN domains to use in the certificate.

csr
string

Client-supplied-CSR flow only. Base64-encoded PKCS#10 certificate signing request.

tpm-evidence
string

[as of v2.7.2] Client-supplied-CSR flow only. Required when TPM attestation is in effect (i.e. use-tpm-vsc-authentication was yes-with-attestation). TPM evidence calculated from the challenge received via /tpm-attestation; verified server-side before signing the CSR.

Responses

Request samples

Content type
application/x-www-form-urlencoded
Example
format=P12v2

Response samples

Content type
application/json
Example
{
  • "status": "cert",
  • "cert": "string",
  • "execute-sync": false,
  • "store-to-system": "true",
  • "apply-address-books": "true",
  • "address-books": [
    ],
  • "apply-smime-settings": "true",
  • "set-disclaimer": "true",
  • "historical-certs": [
    ],
  • "historical-certs-url-templ": "string"
}

Generate a certificate - server-generated keypair (2.7.2) or client-supplied CSR (2.7.5)

This single endpoint serves two related enrolment flows plus a shared multi-step challenge/polling protocol. Content-Type is always application/x-www-form-urlencoded.

  1. Generate certificate on the server (section 2.7.2) - the server creates the keypair. Pass format (PEM, P12, or P12v2), and optionally out-of-band, common-name, given-name/surname ([as of v2.8.2]), san-domains ([as of v2.8.3]), or a previous cert-challenge/submitted/in-progress continuation via response/cookie.
  2. Generate certificate from the client CSR (section 2.7.5) - the client creates the keypair and CSR (using parameters from GET /csr-requirements). Pass csr (base64-encoded PKCS#10), and optionally out-of-band and tpm-evidence ([as of v2.7.2], required when TPM attestation is in effect).

Both flows can return one of four response shapes (see CertOperationResponse):

  • cert - the certificate (and optionally address books / disclaimer / historical certs) is returned immediately, or a cert-url-templ for out-of-band download.
  • cert-challenge - extra info is required from the client before issuing (e.g. select-globalsign-domainssl-approver-email); resend /cert with response and cookie.
  • submitted / in-progress - the request needs time or an extra external action; poll /cert again using the returned cookie.
  • pending-approval - the request requires manual approval; poll /cert again.

PEM-encoded certificates/keys are encrypted with the first 30 characters of the session ID (keytalkcookie); PKCS#12 packages are likewise encrypted and then base64-encoded for JSON transport. Note JSON-serialized PEM blocks must escape / as \/.

Authorizations:
keytalkCookieAuth
path Parameters
version
required
string
Enum: "2.7.4" "2.7.5" "2.7.6" "2.7.7" "2.7.8" "2.7.9" "2.8.0" "2.8.1" "2.8.2" "2.8.3" "2.8.4" "2.8.5"
Example: 2.8.5

RCDPv2 protocol version to use. Documented versions (see section 2.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Request Body schema: application/x-www-form-urlencoded
required
format
string
Enum: "PEM" "P12" "P12v2"

Server-generated-keypair flow only. PEM - PEM-encoded cert+key. P12 - PKCS#12, private key encrypted with legacy 3DES-CBC (kept for backward compatibility with mobile agents; considered insecure since end-2022). P12v2 - PKCS#12, private key encrypted with AES256-CBC (recommended).

out-of-band
boolean
Default: false

When set, the server returns a download URL for the certificate instead of the certificate itself.

response
string

JSON-encoded {type, data} object (type of the previously received challenge; base64-encoded response data), sent after a cert-challenge status was previously received.

object

Cookie received in a previous submitted/in-progress/cert-challenge response, to be echoed back.

common-name
string

Common Name to use in the certificate. Only honored if allowed by the server (see Public API cn-customization-policy, should return ALLOWED).

given-name
string

[as of v2.8.2] Given name (first name), used in the certificate and CN. Only honored if cn-customization-policy returns ALLOWED-AS-GIVENNAME_SURNAME.

surname
string

[as of v2.8.2] Surname (second name), used in the certificate and CN. Only honored if cn-customization-policy returns ALLOWED-AS-GIVENNAME_SURNAME.

san-domains
Array of strings

[as of v2.8.3] Extra SAN domains to use in the certificate.

csr
string

Client-supplied-CSR flow only. Base64-encoded PKCS#10 certificate signing request.

tpm-evidence
string

[as of v2.7.2] Client-supplied-CSR flow only. Required when TPM attestation is in effect (i.e. use-tpm-vsc-authentication was yes-with-attestation). TPM evidence calculated from the challenge received via /tpm-attestation; verified server-side before signing the CSR.

Responses

Request samples

Content type
application/x-www-form-urlencoded
Example
format=P12v2

Response samples

Content type
application/json
Example
{
  • "status": "cert",
  • "cert": "string",
  • "execute-sync": false,
  • "store-to-system": "true",
  • "apply-address-books": "true",
  • "address-books": [
    ],
  • "apply-smime-settings": "true",
  • "set-disclaimer": "true",
  • "historical-certs": [
    ],
  • "historical-certs-url-templ": "string"
}

Query CSR requirements (latest protocol version)

Alias of /rcdp/{version}/csr-requirements using the latest protocol version supported by the server.

Authorizations:
keytalkCookieAuth

Responses

Response samples

Content type
application/json
{
  • "status": "csr-requirements",
  • "subject": {
    },
  • "san": [
    ]
}

Query CSR requirements

A client might want to generate a key pair itself and submit the resulting CSR to the KeyTalk server for signing (see /cert, flow 2). Before doing that, the client should query the server for the initial parameters to use in the CSR: certificate subject and Subject Alternative Names. [as of v2.8.5] key-size and signing-algo are no longer included in the response. [as of server v7.4.1] empty subject attribute values / an empty san array should be treated by the caller as "any" rather than a literal empty value. [as of server v7.7.11] the single-value subject.ou was replaced by the multi-value subject.ous.

Authorizations:
keytalkCookieAuth
path Parameters
version
required
string
Enum: "2.7.4" "2.7.5" "2.7.6" "2.7.7" "2.7.8" "2.7.9" "2.8.0" "2.8.1" "2.8.2" "2.8.3" "2.8.4" "2.8.5"
Example: 2.8.5

RCDPv2 protocol version to use. Documented versions (see section 2.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Responses

Response samples

Content type
application/json
{
  • "status": "csr-requirements",
  • "subject": {
    },
  • "san": [
    ]
}

Start TPM attestation (latest protocol version)

Alias of /rcdp/{version}/tpm-attestation using the latest protocol version supported by the server.

Authorizations:
keytalkCookieAuth
Request Body schema: application/x-www-form-urlencoded
required
ek-cert
required
string

PEM-encoded TPM Endorsement Certificate.

ek-pub-blob
required
string

Base64-encoded Endorsement Public Key BLOB.

ak-name
required
string

TPM Attestation Key name.

Responses

Response samples

Content type
application/json
{
  • "status": "tpm-attestation",
  • "challenge": "string"
}

Start TPM attestation

[as of v2.7.2] Starts the TPM attestation procedure with the server. On successful verification of the supplied TPM Endorsement Certificate/Public Key BLOB, the server returns a challenge to be used by the TPM for calculating evidence, which is then supplied back in the tpm-evidence parameter of a subsequent /cert (client CSR flow) request.

Authorizations:
keytalkCookieAuth
path Parameters
version
required
string
Enum: "2.7.4" "2.7.5" "2.7.6" "2.7.7" "2.7.8" "2.7.9" "2.8.0" "2.8.1" "2.8.2" "2.8.3" "2.8.4" "2.8.5"
Example: 2.8.5

RCDPv2 protocol version to use. Documented versions (see section 2.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Request Body schema: application/x-www-form-urlencoded
required
ek-cert
required
string

PEM-encoded TPM Endorsement Certificate.

ek-pub-blob
required
string

Base64-encoded Endorsement Public Key BLOB.

ak-name
required
string

TPM Attestation Key name.

Responses

Response samples

Content type
application/json
{
  • "status": "tpm-attestation",
  • "challenge": "string"
}

Store certificates to the server (latest protocol version)

Alias of /rcdp/{version}/store-certs using the latest protocol version supported by the server.

Authorizations:
keytalkCookieAuth
Request Body schema: application/x-www-form-urlencoded
required
certificates
required
string

Concatenated list of PEM certificates with private keys.

common-name
string

[as of v2.8.4] Common Name to use in the certificate. Only honored if allowed by the server (see the Public API cn-customization-policy call, should return ALLOWED).

given-name
string

[as of v2.8.4] Given name (first name), used in the certificate and CN. Only honored if the CN policy returns ALLOWED-AS-GIVENNAME_SURNAME.

surname
string

[as of v2.8.4] Surname (second name), used in the certificate and CN. Only honored if the CN policy returns ALLOWED-AS-GIVENNAME_SURNAME.

Responses

Response samples

Content type
application/json
{
  • "status": "store-certificates",
  • "stored-this-seat": [
    ],
  • "stored-other-seats": [
    ],
  • "skipped": [
    ]
}

Store certificates (with private keys) to the server

[as of v2.7.4] Stores certificates along with their private keys to the server. [as of v2.8.4] the response differentiates certificates stored under the authenticated seat vs. under other seats, and the request additionally honors common-name/given-name/surname overrides (subject to the CN customization policy, see the Public API cn-customization-policy call).

Authorizations:
keytalkCookieAuth
path Parameters
version
required
string
Enum: "2.7.4" "2.7.5" "2.7.6" "2.7.7" "2.7.8" "2.7.9" "2.8.0" "2.8.1" "2.8.2" "2.8.3" "2.8.4" "2.8.5"
Example: 2.8.5

RCDPv2 protocol version to use. Documented versions (see section 2.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Request Body schema: application/x-www-form-urlencoded
required
certificates
required
string

Concatenated list of PEM certificates with private keys.

common-name
string

[as of v2.8.4] Common Name to use in the certificate. Only honored if allowed by the server (see the Public API cn-customization-policy call, should return ALLOWED).

given-name
string

[as of v2.8.4] Given name (first name), used in the certificate and CN. Only honored if the CN policy returns ALLOWED-AS-GIVENNAME_SURNAME.

surname
string

[as of v2.8.4] Surname (second name), used in the certificate and CN. Only honored if the CN policy returns ALLOWED-AS-GIVENNAME_SURNAME.

Responses

Response samples

Content type
application/json
{
  • "status": "store-certificates",
  • "stored-this-seat": [
    ],
  • "stored-other-seats": [
    ],
  • "skipped": [
    ]
}

Retrieve seat shared-mailbox certificates (latest protocol version)

Alias of /rcdp/{version}/smbcerts using the latest protocol version supported by the server.

Authorizations:
keytalkCookieAuth
Request Body schema: application/x-www-form-urlencoded
required
format
required
string
Enum: "P12" "PEM" "P12v2"

Format of the SMB certificates (same semantics as /cert's format parameter).

out-of-band
boolean
Default: false

[as of v2.7.9] When set, the server sends back a download URL instead of the certificate itself.

Responses

Response samples

Content type
application/json
{
  • "status": "smbcerts",
  • "apply-smime-settings": true,
  • "smbcerts": [
    ]
}

Retrieve seat shared mailbox (SMB) certificates

[as of v2.8.1] Retrieves the list of Shared Mailboxes (SMBs), along with their certificates, that belong to the seat previously resolved from the USERID and computer-name submitted during the authentication phase. [as of v2.7.9] supports out-of-band delivery (a download URL template instead of the certificate data). [as of v2.8.4] the response communicates the apply-smime-settings flag. [as of v2.7.7] this allows retrieving certificates for all Shared Mailboxes of the given seat. [as of v2.7.9] adds support for out-of-band retrieval of SMB certificates.

Authorizations:
keytalkCookieAuth
path Parameters
version
required
string
Enum: "2.7.4" "2.7.5" "2.7.6" "2.7.7" "2.7.8" "2.7.9" "2.8.0" "2.8.1" "2.8.2" "2.8.3" "2.8.4" "2.8.5"
Example: 2.8.5

RCDPv2 protocol version to use. Documented versions (see section 2.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Request Body schema: application/x-www-form-urlencoded
required
format
required
string
Enum: "P12" "PEM" "P12v2"

Format of the SMB certificates (same semantics as /cert's format parameter).

out-of-band
boolean
Default: false

[as of v2.7.9] When set, the server sends back a download URL instead of the certificate itself.

Responses

Response samples

Content type
application/json
{
  • "status": "smbcerts",
  • "apply-smime-settings": true,
  • "smbcerts": [
    ]
}

Query certificate and keys scraping settings (latest protocol version)

Alias of /rcdp/{version}/cert-scraping-settings using the latest protocol version supported by the server.

Authorizations:
keytalkCookieAuth

Responses

Response samples

Content type
application/json
{
  • "status": "cert-scraping-settings",
  • "schedule": "never",
  • "cert-purposes": [
    ],
  • "cert-store-types": [
    ]
}

Query certificate and keys scraping settings

[as of v2.7.8] Queries the settings for the caller (typically the KeyTalk Windows Certificate Scanner agent) to scan for certificates and keys and send them to the KeyTalk server using the /store-certs call (section 2.7.6).

Authorizations:
keytalkCookieAuth
path Parameters
version
required
string
Enum: "2.7.4" "2.7.5" "2.7.6" "2.7.7" "2.7.8" "2.7.9" "2.8.0" "2.8.1" "2.8.2" "2.8.3" "2.8.4" "2.8.5"
Example: 2.8.5

RCDPv2 protocol version to use. Documented versions (see section 2.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Responses

Response samples

Content type
application/json
{
  • "status": "cert-scraping-settings",
  • "schedule": "never",
  • "cert-purposes": [
    ],
  • "cert-store-types": [
    ]
}

Public API

Unauthenticated informational endpoints.

Retrieve self-service availability (latest API version)

Alias of /public/{version}/self-service-availability using the latest Public API version.

Request Body schema: application/x-www-form-urlencoded
required
cert
required
string

PEM-encoded X.509 user certificate previously received from KeyTalk, identifying the caller.

Responses

Response samples

Content type
application/json
{
  • "status": "self-service-availability",
  • "available": true
}

Retrieve self-service availability

Retrieves whether self-service is available for the given account, identified by a previously-issued KeyTalk PEM certificate.

path Parameters
version
required
string
Enum: "1.6.6" "1.6.7" "1.6.8" "1.6.9" "1.6.10"
Example: 1.6.10

Public API version to use. Documented versions (see section 3.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Request Body schema: application/x-www-form-urlencoded
required
cert
required
string

PEM-encoded X.509 user certificate previously received from KeyTalk, identifying the caller.

Responses

Response samples

Content type
application/json
{
  • "status": "self-service-availability",
  • "available": true
}

Retrieve address book URLs (latest API version)

Alias of /public/{version}/address-book-list using the latest Public API version.

query Parameters
service
required
string
Example: service=DEMO_SERVICE

KeyTalk service (TEMPLATE) name.

Responses

Response samples

Content type
application/json
{
  • "status": "address-book-list",
  • "apply-address-books": true,
  • "address-books": [
    ]
}

Retrieve address book URLs

Retrieves URLs of address books used by back-end LDAP/AD servers, for the given KeyTalk service (template).

path Parameters
version
required
string
Enum: "1.6.6" "1.6.7" "1.6.8" "1.6.9" "1.6.10"
Example: 1.6.10

Public API version to use. Documented versions (see section 3.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

query Parameters
service
required
string
Example: service=DEMO_SERVICE

KeyTalk service (TEMPLATE) name.

Responses

Response samples

Content type
application/json
{
  • "status": "address-book-list",
  • "apply-address-books": true,
  • "address-books": [
    ]
}

Retrieve S/MIME external-party enrolment availability (latest API version)

Alias of /public/{version}/smime-cert-enrollment-availability using the latest Public API version.

Request Body schema: application/x-www-form-urlencoded
required
cert
required
string

PEM-encoded X.509 S/MIME certificate previously received from KeyTalk, identifying the caller as a self-service-eligible user.

synchronous
boolean
Default: true

When true, checks whether an immediate enrolment is possible. When false, checks whether it's possible to place a certificate order without yielding a certificate immediately (currently only supported for KeyTalk services bound to GlobalSign PersonalSign products).

Responses

Response samples

Content type
application/json
{
  • "status": "smime-cert-enrollment-availability",
  • "available": true,
  • "mobile-required": true,
  • "reason": "string"
}

Retrieve availability of S/MIME certificate enrolment to external parties for self-service

Checks the availability and requirements for S/MIME certificate enrolment to external parties for the given self-service account, identified by a previously-issued S/MIME PEM certificate. synchronous (default true) selects between an immediate enrolment check and an order-placement-only check (asynchronous S/MIME orders are currently only supported by KeyTalk services bound to GlobalSign PersonalSign products).

path Parameters
version
required
string
Enum: "1.6.6" "1.6.7" "1.6.8" "1.6.9" "1.6.10"
Example: 1.6.10

Public API version to use. Documented versions (see section 3.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Request Body schema: application/x-www-form-urlencoded
required
cert
required
string

PEM-encoded X.509 S/MIME certificate previously received from KeyTalk, identifying the caller as a self-service-eligible user.

synchronous
boolean
Default: true

When true, checks whether an immediate enrolment is possible. When false, checks whether it's possible to place a certificate order without yielding a certificate immediately (currently only supported for KeyTalk services bound to GlobalSign PersonalSign products).

Responses

Response samples

Content type
application/json
{
  • "status": "smime-cert-enrollment-availability",
  • "available": true,
  • "mobile-required": true,
  • "reason": "string"
}

Query the certificate store to place the certificate (latest API version)

Alias of /public/{version}/should-cert-go-to-system-store using the latest Public API version.

query Parameters
service
required
string
Example: service=DEMO_SERVICE

KeyTalk service (TEMPLATE) name.

Responses

Response samples

Content type
application/json
{
  • "status": "should-cert-go-to-system-store",
  • "system-store": true
}

Query the certificate store to place the certificate

Queries the type of certificate store to place a certificate received via the Certificate Retrieval API. Identical result to the store-to-system flag returned from POST /rcdp/cert, but obtainable without going through the entire handshake-authentication procedure.

path Parameters
version
required
string
Enum: "1.6.6" "1.6.7" "1.6.8" "1.6.9" "1.6.10"
Example: 1.6.10

Public API version to use. Documented versions (see section 3.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

query Parameters
service
required
string
Example: service=DEMO_SERVICE

KeyTalk service (TEMPLATE) name.

Responses

Response samples

Content type
application/json
{
  • "status": "should-cert-go-to-system-store",
  • "system-store": true
}

Request a disclaimer to install to the mail client (latest API version)

Alias of /public/{version}/set-disclaimer-for-smime-cert-email using the latest Public API version.

query Parameters
service
required
string
Example: service=DEMO_SERVICE

KeyTalk service (TEMPLATE) name.

email
required
string <email>

Email address for which to request a disclaimer.

Responses

Response samples

Content type
application/json
{
  • "status": "set-disclaimer-for-smime-cert-email",
  • "set-disclaimer": true,
  • "disclaimer": {
    }
}

Request a disclaimer to install to the mail client

Requests an email disclaimer based on the provided email address for the provided service. If the service is set up to supply a disclaimer, the response contains a disclaimer to be applied to the mail client.

path Parameters
version
required
string
Enum: "1.6.6" "1.6.7" "1.6.8" "1.6.9" "1.6.10"
Example: 1.6.10

Public API version to use. Documented versions (see section 3.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

query Parameters
service
required
string
Example: service=DEMO_SERVICE

KeyTalk service (TEMPLATE) name.

email
required
string <email>

Email address for which to request a disclaimer.

Responses

Response samples

Content type
application/json
{
  • "status": "set-disclaimer-for-smime-cert-email",
  • "set-disclaimer": true,
  • "disclaimer": {
    }
}

Query certificate approver emails (latest API version)

Alias of /public/{version}/cert-approver-emails using the latest Public API version.

query Parameters
service
required
string
Example: service=DEMO_SERVICE

KeyTalk service (TEMPLATE) name.

user
required
string

User name. Should match the USERID used in the RCDP authentication request.

computer-name
required
string

Caller's machine/device name. Should match the computer name used in the RCDP authentication request.

Responses

Response samples

Content type
application/json
{
  • "status": "cert-approver-emails",
  • "emails": [
    ]
}

Query certificate approver emails

Queries approver emails for the certificate. Typically used by services configured with a 3rd-party CA, e.g. GlobalSign DomainSSL or GlobalSign AlphaSSL.

path Parameters
version
required
string
Enum: "1.6.6" "1.6.7" "1.6.8" "1.6.9" "1.6.10"
Example: 1.6.10

Public API version to use. Documented versions (see section 3.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

query Parameters
service
required
string
Example: service=DEMO_SERVICE

KeyTalk service (TEMPLATE) name.

user
required
string

User name. Should match the USERID used in the RCDP authentication request.

computer-name
required
string

Caller's machine/device name. Should match the computer name used in the RCDP authentication request.

Responses

Response samples

Content type
application/json
{
  • "status": "cert-approver-emails",
  • "emails": [
    ]
}

Query KeyTalk server version (latest API version)

Alias of /public/{version}/version using the latest Public API version.

Responses

Response samples

Content type
application/json
{
  • "status": "version",
  • "version": "string"
}

Query KeyTalk server version

Queries the KeyTalk server version.

path Parameters
version
required
string
Enum: "1.6.6" "1.6.7" "1.6.8" "1.6.9" "1.6.10"
Example: 1.6.10

Public API version to use. Documented versions (see section 3.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Responses

Response samples

Content type
application/json
{
  • "status": "version",
  • "version": "string"
}

Query Common Name customization policy (latest API version)

Alias of /public/{version}/cn-customization-policy using the latest Public API version.

query Parameters
service
required
string
Example: service=DEMO_SERVICE

KeyTalk service (TEMPLATE) name.

user
required
string

User name. Should match the USERID used in the RCDP authentication request.

computer-name
required
string

Caller's machine/device name. Should match the computer name used in the RCDP authentication request.

Responses

Response samples

Content type
application/json
{
  • "status": "cn-customization-policy",
  • "policy": "ALLOWED"
}

Query Common Name customization policy

Queries the Common Name customization policy for the given user, used to decide whether common-name/given-name/surname may be supplied on /rcdp/cert or /rcdp/store-certs.

path Parameters
version
required
string
Enum: "1.6.6" "1.6.7" "1.6.8" "1.6.9" "1.6.10"
Example: 1.6.10

Public API version to use. Documented versions (see section 3.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

query Parameters
service
required
string
Example: service=DEMO_SERVICE

KeyTalk service (TEMPLATE) name.

user
required
string

User name. Should match the USERID used in the RCDP authentication request.

computer-name
required
string

Caller's machine/device name. Should match the computer name used in the RCDP authentication request.

Responses

Response samples

Content type
application/json
{
  • "status": "cn-customization-policy",
  • "policy": "ALLOWED"
}

Query which templates participate in auto-renewal of seat certificates (latest API version)

Alias of /public/{version}/templates-to-auto-renew-seat-certs using the latest Public API version.

Request Body schema: application/x-www-form-urlencoded
required
template-names
required
string

JSON-encoded array of template names to check.

Responses

Response samples

Content type
application/json
{
  • "status": "templates-to-auto-renew-seat-certs",
  • "template-names": [
    ]
}

Query which templates participate in auto-renewal of seat certificates

Checks which of the submitted templates (services) seat-certificate auto-renewal should be applied to. When no templates are configured (an empty list is returned), the agent should fall back to the old behavior of renewing certificates for a single template only.

path Parameters
version
required
string
Enum: "1.6.6" "1.6.7" "1.6.8" "1.6.9" "1.6.10"
Example: 1.6.10

Public API version to use. Documented versions (see section 3.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Request Body schema: application/x-www-form-urlencoded
required
template-names
required
string

JSON-encoded array of template names to check.

Responses

Response samples

Content type
application/json
{
  • "status": "templates-to-auto-renew-seat-certs",
  • "template-names": [
    ]
}

Query certificate expiration margin (latest API version)

Alias of /public/{version}/cert-expiration-margin using the latest Public API version.

query Parameters
service
required
string
Example: service=DEMO_SERVICE

KeyTalk service (TEMPLATE) name.

user
string

User name (seat name). Should match the USERID used in the RCDP authentication request. When omitted or unknown, the TEMPLATE-wide setting is used.

computer-name
string

Caller's machine/device name. Should match the computer name used in the RCDP authentication request. Only needed when user is supplied.

Responses

Response samples

Content type
application/json
{
  • "status": "cert-expiration-margin",
  • "threshold-seconds": "172800"
}

Query certificate expiration margin

Queries the minimal number of seconds (margin) before certificate expiration at which the certificate is still considered valid and does not require renewal. When the remaining time until expiry falls below this margin, KeyTalk agents ought to renew the certificate.

path Parameters
version
required
string
Enum: "1.6.6" "1.6.7" "1.6.8" "1.6.9" "1.6.10"
Example: 1.6.10

Public API version to use. Documented versions (see section 3.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

query Parameters
service
required
string
Example: service=DEMO_SERVICE

KeyTalk service (TEMPLATE) name.

user
string

User name (seat name). Should match the USERID used in the RCDP authentication request. When omitted or unknown, the TEMPLATE-wide setting is used.

computer-name
string

Caller's machine/device name. Should match the computer name used in the RCDP authentication request. Only needed when user is supplied.

Responses

Response samples

Content type
application/json
{
  • "status": "cert-expiration-margin",
  • "threshold-seconds": "172800"
}

Download client configuration files (latest API version)

Alias of /public/{version}/rccd using the latest Public API version.

query Parameters
uid
required
string

Client configuration UID. Retrievable from the KeyTalk template page.

Responses

Response samples

Content type
application/json
{
  • "status": "error",
  • "error": "string"
}

Download client configuration files

Downloads a client configuration file (RCCD - Real Client Communication Data), used for customizing KeyTalk agents, identified by its UID.

path Parameters
version
required
string
Enum: "1.6.6" "1.6.7" "1.6.8" "1.6.9" "1.6.10"
Example: 1.6.10

Public API version to use. Documented versions (see section 3.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

query Parameters
uid
required
string

Client configuration UID. Retrievable from the KeyTalk template page.

Responses

Response samples

Content type
application/json
{
  • "status": "error",
  • "error": "string"
}

Check server health status (latest API version)

Alias of /public/{version}/health-check using the latest Public API version.

Responses

Response samples

Content type
application/json
{
  • "status": "health-check",
  • "check-result": "operational",
  • "error": "string"
}

Check server health status

Performs a server health check. Initially made for load balancers to select the right KeyTalk backend server.

path Parameters
version
required
string
Enum: "1.6.6" "1.6.7" "1.6.8" "1.6.9" "1.6.10"
Example: 1.6.10

Public API version to use. Documented versions (see section 3.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Responses

Response samples

Content type
application/json
{
  • "status": "health-check",
  • "check-result": "operational",
  • "error": "string"
}

Retrieve message shown on KeyTalk agent automatic popup (latest API version)

Alias of /public/{version}/ktagent-unattended-popup-msg-template using the latest Public API version.

Responses

Response samples

Content type
application/json
{
  • "status": "ktagent-unattended-popup-msg-template",
  • "msg-template": "string"
}

Retrieve message shown on KeyTalk agent automatic popup

[as of v1.6.6] Retrieves the notification template for the message shown to end-users when the KeyTalk agent automatically pops up.

path Parameters
version
required
string
Enum: "1.6.6" "1.6.7" "1.6.8" "1.6.9" "1.6.10"
Example: 1.6.10

Public API version to use. Documented versions (see section 3.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Responses

Response samples

Content type
application/json
{
  • "status": "ktagent-unattended-popup-msg-template",
  • "msg-template": "string"
}

Retrieve keep-alive interval (latest API version)

Alias of /public/{version}/keep-alive-interval using the latest Public API version.

query Parameters
template-name
required
string

KeyTalk service (TEMPLATE) name.

Responses

Response samples

Content type
application/json
{
  • "status": "keep-alive-interval",
  • "interval": "string"
}

Retrieve keep-alive interval

[as of v1.6.7] Retrieves the interval at which the agent is supposed to send a periodic keep-alive message to the server.

path Parameters
version
required
string
Enum: "1.6.6" "1.6.7" "1.6.8" "1.6.9" "1.6.10"
Example: 1.6.10

Public API version to use. Documented versions (see section 3.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

query Parameters
template-name
required
string

KeyTalk service (TEMPLATE) name.

Responses

Response samples

Content type
application/json
{
  • "status": "keep-alive-interval",
  • "interval": "string"
}

Send keep-alive (latest API version)

Alias of /public/{version}/i-am-alive using the latest Public API version.

query Parameters
template-name
required
string

KeyTalk service (TEMPLATE) name.

user
required
string

User name. Should match the USERID used in the RCDP authentication request.

computer-name
required
string

Caller's machine/device name. Should match the computer name used in the RCDP authentication request.

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "interval": "string"
}

Send keep-alive

[as of v1.6.7] Sends a keep-alive message for the given KeyTalk user (seat). Normally sent by agents periodically according to the keep-alive interval retrieved via /keep-alive-interval. [as of v1.6.9] the response piggy-backs the current keep-alive interval.

path Parameters
version
required
string
Enum: "1.6.6" "1.6.7" "1.6.8" "1.6.9" "1.6.10"
Example: 1.6.10

Public API version to use. Documented versions (see section 3.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

query Parameters
template-name
required
string

KeyTalk service (TEMPLATE) name.

user
required
string

User name. Should match the USERID used in the RCDP authentication request.

computer-name
required
string

Caller's machine/device name. Should match the computer name used in the RCDP authentication request.

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "interval": "string"
}

Check whether a seat certificate is known to have TPM key attestation (latest API version)

Alias of /public/{version}/is-cert-tpm-attested using the latest Public API version.

query Parameters
cert-sha1-fingerprint
required
string

SHA-1 fingerprint of the seat certificate to look up.

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "attested": "yes"
}

Check whether a seat certificate is known to have TPM key attestation

[as of v1.6.8] Checks whether the given seat certificate is known to have TPM key attestation, i.e. was previously attested by one of KeyTalk's TPM endorsement CAs.

path Parameters
version
required
string
Enum: "1.6.6" "1.6.7" "1.6.8" "1.6.9" "1.6.10"
Example: 1.6.10

Public API version to use. Documented versions (see section 3.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

query Parameters
cert-sha1-fingerprint
required
string

SHA-1 fingerprint of the seat certificate to look up.

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "attested": "yes"
}

Check whether a seat certificate exists (latest API version)

Alias of /public/{version}/does-seat-cert-exist using the latest Public API version.

query Parameters
cert-sha1-fingerprint
required
string

SHA-1 fingerprint of the seat certificate to look up.

template-name
string

Optional seat TEMPLATE name to restrict the lookup to.

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "found": "yes"
}

Check whether a seat certificate exists

[as of v1.6.10] Checks whether the given seat certificate is known on the KeyTalk server.

path Parameters
version
required
string
Enum: "1.6.6" "1.6.7" "1.6.8" "1.6.9" "1.6.10"
Example: 1.6.10

Public API version to use. Documented versions (see section 3.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

query Parameters
cert-sha1-fingerprint
required
string

SHA-1 fingerprint of the seat certificate to look up.

template-name
string

Optional seat TEMPLATE name to restrict the lookup to.

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "found": "yes"
}

Administrator API

Management endpoints used by the KeyTalk Web Admin Interface / integrators.

Enroll seat from a server-generated keypair (latest API version)

Alias of /admapi/{version}/cert-enrollment using the latest Administrator API version.

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username. Required if the webserver is configured with username/password authentication (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password. Required if the webserver is configured with username/password authentication (alternative to a TLS client certificate).

service
required
string

Name of the KeyTalk service (template) of the seat to enroll.

deviduser
required
string

Name of the KeyTalk DevID user (seat) to enroll.

san
string

JSON-encoded array of Subject Alternative Names to use in the certificate, e.g. ["DNS:test.server.com","IP:192.168.1.2"].

Responses

Response samples

Content type
application/json
Example
{
  • "status": "cert-enrollment",
  • "cert": "string",
  • "created-user-auth-password": "string"
}

Enroll seat from a server-generated keypair

Enrolls a certificate for the given seat, creating the seat if it does not exist. The keypair is created server-side. The enrolled certificate is returned either immediately, or - if immediate enrolment is not possible (typically because the TEMPLATE is configured with Domain Validation, e.g. a DigiCert DV signer) - order-id is returned [as of v1.9.6] and the caller should poll /placed-order to get the order status and eventually download the certificate.

path Parameters
version
required
string
Enum: "1.9.4" "1.9.5" "1.9.6" "1.9.7" "1.9.8"
Example: 1.9.8

Administrator API version to use. Documented versions (see section 4.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username. Required if the webserver is configured with username/password authentication (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password. Required if the webserver is configured with username/password authentication (alternative to a TLS client certificate).

service
required
string

Name of the KeyTalk service (template) of the seat to enroll.

deviduser
required
string

Name of the KeyTalk DevID user (seat) to enroll.

san
string

JSON-encoded array of Subject Alternative Names to use in the certificate, e.g. ["DNS:test.server.com","IP:192.168.1.2"].

Responses

Response samples

Content type
application/json
Example
{
  • "status": "cert-enrollment",
  • "cert": "string",
  • "created-user-auth-password": "string"
}

Query CSR requirements for enrolment (latest API version)

Alias of /admapi/{version}/csr-enrolment-requirements using the latest Administrator API version.

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

service
required
string

Name of the KeyTalk service (template) of the seat to create a CSR for.

deviduser
required
string

Name of the KeyTalk DevID user (seat) to create a CSR for.

Responses

Response samples

Content type
application/json
{
  • "status": "csr-requirements",
  • "subject": {
    },
  • "san": [
    ]
}

Query CSR requirements for enrolment (step 1 of "Enroll seat with caller's CSR")

Part of the 3-step "enroll seat with caller's CSR" flow (section 4.2.2): query the server for the initial parameters to use in the CSR (certificate subject and SAN) before generating the CSR client-side and submitting it via /cert-enrollment-for-csr. [as of server v7.4.1] empty subject attribute values / an empty san array should be treated as "any". [as of API v1.9.8] key-size and signing-algo are no longer included in the response.

path Parameters
version
required
string
Enum: "1.9.4" "1.9.5" "1.9.6" "1.9.7" "1.9.8"
Example: 1.9.8

Administrator API version to use. Documented versions (see section 4.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

service
required
string

Name of the KeyTalk service (template) of the seat to create a CSR for.

deviduser
required
string

Name of the KeyTalk DevID user (seat) to create a CSR for.

Responses

Response samples

Content type
application/json
{
  • "status": "csr-requirements",
  • "subject": {
    },
  • "san": [
    ]
}

Enroll seat with caller's CSR (latest API version)

Alias of /admapi/{version}/cert-enrollment-for-csr using the latest Administrator API version.

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

service
required
string

Name of the KeyTalk template (former "service") of the seat to enroll.

deviduser
required
string

Name of the KeyTalk seat (former "DevID user") to enroll.

csr
required
string

Base64-encoded PKCS#10 certificate signing request.

Responses

Response samples

Content type
application/json
Example
{
  • "status": "cert-enrollment",
  • "cert": "string",
  • "created-user-auth-password": "string"
}

Enroll seat with caller's CSR (step 2 - submit CSR)

Part of the 3-step "enroll seat with caller's CSR" flow (section 4.2.2, step 4.2.2.2): enrolls a certificate for the given seat (creating it if necessary) from a client-supplied CSR obeying the requirements retrieved via /csr-enrolment-requirements. The enrolled certificate is returned either immediately, or - if immediate enrolment is not possible (e.g. Domain Validation) - order-id is returned [as of v1.9.7] for polling via /placed-order.

path Parameters
version
required
string
Enum: "1.9.4" "1.9.5" "1.9.6" "1.9.7" "1.9.8"
Example: 1.9.8

Administrator API version to use. Documented versions (see section 4.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

service
required
string

Name of the KeyTalk template (former "service") of the seat to enroll.

deviduser
required
string

Name of the KeyTalk seat (former "DevID user") to enroll.

csr
required
string

Base64-encoded PKCS#10 certificate signing request.

Responses

Response samples

Content type
application/json
Example
{
  • "status": "cert-enrollment",
  • "cert": "string",
  • "created-user-auth-password": "string"
}

Query status of the placed order and download certificate (latest API version)

Alias of /admapi/{version}/placed-order using the latest Administrator API version.

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

order-id
required
string

ID of the certificate order placed with /cert-enrollment or /cert-enrollment-for-csr.

Responses

Response samples

Content type
application/json
{
  • "status": "issued",
  • "cert": "string"
}

Query status of the placed order and download certificate

[as of v1.9.7] Checks the status of a certificate order previously placed via /cert-enrollment or /cert-enrollment-for-csr, and downloads the resulting certificate once ready. While not ready, status holds a signer-specific order status string; once ready, status is "issued" and cert holds the certificate/key in PEM format.

path Parameters
version
required
string
Enum: "1.9.4" "1.9.5" "1.9.6" "1.9.7" "1.9.8"
Example: 1.9.8

Administrator API version to use. Documented versions (see section 4.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

order-id
required
string

ID of the certificate order placed with /cert-enrollment or /cert-enrollment-for-csr.

Responses

Response samples

Content type
application/json
{
  • "status": "issued",
  • "cert": "string"
}

Revoke seat certificates (latest API version)

Alias of /admapi/{version}/cert-revocation using the latest Administrator API version.

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

service
required
string

Name of the KeyTalk service of the user whose certificates are to be revoked.

deviduser
required
string

Name of the KeyTalk DevID user (seat) whose certificates are to be revoked.

Responses

Response samples

Content type
application/json
{
  • "status": "cert-revocation",
  • "num-revoked-certs": 0,
  • "warning": "string"
}

Revoke seat certificates

Revokes certificates of the given seat. Requires a valid system/cluster admin, manager, or operator privilege.

path Parameters
version
required
string
Enum: "1.9.4" "1.9.5" "1.9.6" "1.9.7" "1.9.8"
Example: 1.9.8

Administrator API version to use. Documented versions (see section 4.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

service
required
string

Name of the KeyTalk service of the user whose certificates are to be revoked.

deviduser
required
string

Name of the KeyTalk DevID user (seat) whose certificates are to be revoked.

Responses

Response samples

Content type
application/json
{
  • "status": "cert-revocation",
  • "num-revoked-certs": 0,
  • "warning": "string"
}

Download KeyTalk settings (latest API version)

Alias of /admapi/{version}/settings using the latest Administrator API version.

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

include-hsm-connection-settings
boolean
Default: false

Include HSM Connection Settings.

include-keytalk-cert-tree
boolean
Default: false

Include KeyTalk Certificate Tree.

Responses

Response samples

Content type
application/json
{
  • "status": "error",
  • "error": "string"
}

Download KeyTalk settings

Downloads KeyTalk settings. Counterpart of saving settings under the System -> Settings page of the KeyTalk Web Admin Interface.

path Parameters
version
required
string
Enum: "1.9.4" "1.9.5" "1.9.6" "1.9.7" "1.9.8"
Example: 1.9.8

Administrator API version to use. Documented versions (see section 4.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

include-hsm-connection-settings
boolean
Default: false

Include HSM Connection Settings.

include-keytalk-cert-tree
boolean
Default: false

Include KeyTalk Certificate Tree.

Responses

Response samples

Content type
application/json
{
  • "status": "error",
  • "error": "string"
}

Retrieve SCEP configuration (latest API version)

Alias of /admapi/{version}/intune-scep-config using the latest Administrator API version.

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

Responses

Response samples

Content type
application/json
{
  • "status": "scep-config",
  • "enabled": true,
  • "service-name": "string",
  • "recipient-cert": "string",
  • "recipient-key": "string",
  • "signing-cert": "string",
  • "signing-key": "string",
  • "issuer-certs": "string"
}

Retrieve SCEP configuration

Retrieves Intune SCEP configuration. Counterpart of the Certificate and Keys -> Intune SCEP page of the KeyTalk Web Admin Interface.

path Parameters
version
required
string
Enum: "1.9.4" "1.9.5" "1.9.6" "1.9.7" "1.9.8"
Example: 1.9.8

Administrator API version to use. Documented versions (see section 4.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

Responses

Response samples

Content type
application/json
{
  • "status": "scep-config",
  • "enabled": true,
  • "service-name": "string",
  • "recipient-cert": "string",
  • "recipient-key": "string",
  • "signing-cert": "string",
  • "signing-key": "string",
  • "issuer-certs": "string"
}

Copy KeyTalk TEMPLATE (latest API version)

Alias of /admapi/{version}/copy-template using the latest Administrator API version.

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

src-template-name
required
string

Name of the TEMPLATE to copy.

new-template-name
required
string

Name of the new TEMPLATE.

digicert-central-settings
string

JSON-encoded object of DigiCert Central CA settings to alter in the new TEMPLATE (only applicable if the source TEMPLATE uses a DigiCert Central CA source). Shape: {product, api-key, account-region ([as of 1.9.4] "US"|"Europe"), cert-validity-months, organization-id, approver-user-id}. product is one of ssl_basic, ssl_ev_basic, class1_smime, client_premium, ssl_securesite_flex, ssl_ev_securesite_flex, ssl_geotrust_truebizid, ssl_thawte_webserver, ssl_ev_thawte_webserver.

external-customer-settings
string

[as of 1.9.5] JSON-encoded external customer settings: {customer-id, auth-username, auth-password, order-ids: [...]} where auth-username/ auth-password are HTTP Basic credentials for the external customer certificate order API endpoint.

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "external-customer-reserved-seats": {
    }
}

Copy KeyTalk TEMPLATE

Copies a KeyTalk TEMPLATE along with all its properties but without seats. Requires system admin, cluster admin, or manager authorization. The copied template is automatically assigned to the manager who performed the call, and automatically becomes a member of each tenant assigned to that manager. [as of v1.9.5] supports external-customer-settings and DigiCert account-region.

path Parameters
version
required
string
Enum: "1.9.4" "1.9.5" "1.9.6" "1.9.7" "1.9.8"
Example: 1.9.8

Administrator API version to use. Documented versions (see section 4.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

src-template-name
required
string

Name of the TEMPLATE to copy.

new-template-name
required
string

Name of the new TEMPLATE.

digicert-central-settings
string

JSON-encoded object of DigiCert Central CA settings to alter in the new TEMPLATE (only applicable if the source TEMPLATE uses a DigiCert Central CA source). Shape: {product, api-key, account-region ([as of 1.9.4] "US"|"Europe"), cert-validity-months, organization-id, approver-user-id}. product is one of ssl_basic, ssl_ev_basic, class1_smime, client_premium, ssl_securesite_flex, ssl_ev_securesite_flex, ssl_geotrust_truebizid, ssl_thawte_webserver, ssl_ev_thawte_webserver.

external-customer-settings
string

[as of 1.9.5] JSON-encoded external customer settings: {customer-id, auth-username, auth-password, order-ids: [...]} where auth-username/ auth-password are HTTP Basic credentials for the external customer certificate order API endpoint.

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "external-customer-reserved-seats": {
    }
}

Import certificates (latest API version)

Alias of /admapi/{version}/import-certs using the latest Administrator API version.

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

template-name
required
string

Target KeyTalk TEMPLATE name.

owner-name
string
Default: "no owner"

Certificate owner name, used to notify on revocation/expiration.

certificates
required
string

Concatenated list of PEM certificates.

Responses

Response samples

Content type
application/json
{
  • "status": "import-certs",
  • "imported": [
    ],
  • "skipped": [
    ]
}

Import certificates

[changed in v1.9.8] Imports certificates into KeyTalk under the given TEMPLATE. Target seat names are derived from the Common Name or SAN of the certificates. In addition to system admin/cluster admin, an SSL Discovery Manager assigned to the given TEMPLATE is also eligible. [as of v1.9.8] the custom. prefix was removed from request arguments, and the request is x-www-form-urlencoded instead of JSON-encoded.

path Parameters
version
required
string
Enum: "1.9.4" "1.9.5" "1.9.6" "1.9.7" "1.9.8"
Example: 1.9.8

Administrator API version to use. Documented versions (see section 4.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

template-name
required
string

Target KeyTalk TEMPLATE name.

owner-name
string
Default: "no owner"

Certificate owner name, used to notify on revocation/expiration.

certificates
required
string

Concatenated list of PEM certificates.

Responses

Response samples

Content type
application/json
{
  • "status": "import-certs",
  • "imported": [
    ],
  • "skipped": [
    ]
}

Create or update seat (latest API version)

Alias of /admapi/{version}/create-seat using the latest Administrator API version.

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

template-name
required
string

Name of the KeyTalk TEMPLATE (service) the seat belongs to.

seat-name
required
string

Name of the KeyTalk seat to create/update.

cn
string
Default: ""

Seat common name.

san
string
Default: ""

JSON-encoded array of Seat Subject Alternative Names, e.g. ["DNS:test.server1.com","DNS:test2.server.com"].

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "result": "created"
}

Create or update seat

[as of v1.9.6] Creates a new seat, or updates an existing one, under the given TEMPLATE.

path Parameters
version
required
string
Enum: "1.9.4" "1.9.5" "1.9.6" "1.9.7" "1.9.8"
Example: 1.9.8

Administrator API version to use. Documented versions (see section 4.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

template-name
required
string

Name of the KeyTalk TEMPLATE (service) the seat belongs to.

seat-name
required
string

Name of the KeyTalk seat to create/update.

cn
string
Default: ""

Seat common name.

san
string
Default: ""

JSON-encoded array of Seat Subject Alternative Names, e.g. ["DNS:test.server1.com","DNS:test2.server.com"].

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "result": "created"
}

Archive seat (latest API version)

Alias of /admapi/{version}/archive-seat using the latest Administrator API version.

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

template-name
required
string

Name of the KeyTalk TEMPLATE (service) the seat belongs to.

seat-name
required
string

Name of the KeyTalk seat (DevID user) to archive.

Responses

Response samples

Content type
application/json
{
  • "status": "archive-seat",
  • "archived": true
}

Archive seat

Archives the given seat. Requires a valid system/cluster admin or manager privilege.

path Parameters
version
required
string
Enum: "1.9.4" "1.9.5" "1.9.6" "1.9.7" "1.9.8"
Example: 1.9.8

Administrator API version to use. Documented versions (see section 4.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

template-name
required
string

Name of the KeyTalk TEMPLATE (service) the seat belongs to.

seat-name
required
string

Name of the KeyTalk seat (DevID user) to archive.

Responses

Response samples

Content type
application/json
{
  • "status": "archive-seat",
  • "archived": true
}

List KeyTalk templates (latest API version)

Alias of /admapi/{version}/list-templates using the latest Administrator API version.

Request Body schema: application/x-www-form-urlencoded
optional
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "templates": [
    ]
}

List KeyTalk templates

Lists available KeyTalk templates.

path Parameters
version
required
string
Enum: "1.9.4" "1.9.5" "1.9.6" "1.9.7" "1.9.8"
Example: 1.9.8

Administrator API version to use. Documented versions (see section 4.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Request Body schema: application/x-www-form-urlencoded
optional
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "templates": [
    ]
}

Remove KeyTalk template (latest API version)

Alias of /admapi/{version}/remove-template using the latest Administrator API version.

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

template-name
required
string

Name of the template to remove.

Responses

Response samples

Content type
application/json
{
  • "status": "success"
}

Remove KeyTalk template

Removes a KeyTalk template along with all the seats and Registration Authorities bound to it.

path Parameters
version
required
string
Enum: "1.9.4" "1.9.5" "1.9.6" "1.9.7" "1.9.8"
Example: 1.9.8

Administrator API version to use. Documented versions (see section 4.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

template-name
required
string

Name of the template to remove.

Responses

Response samples

Content type
application/json
{
  • "status": "success"
}

Open slot on the seat (latest API version)

Alias of /admapi/{version}/open-slot using the latest Administrator API version.

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

template-name
required
string

Name of the TEMPLATE the seat belongs to.

seat-name
required
string

Name of the seat to open the slot for.

unoccupied-only
boolean
Default: false

Look up the first unoccupied locked slot instead of simply taking the first slot.

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "extra-info": "string"
}

Open slot on the seat

Opens a slot on an existing seat, changing its status from locked to learn-once. No effect if the slot is already learn-once.

path Parameters
version
required
string
Enum: "1.9.4" "1.9.5" "1.9.6" "1.9.7" "1.9.8"
Example: 1.9.8

Administrator API version to use. Documented versions (see section 4.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

template-name
required
string

Name of the TEMPLATE the seat belongs to.

seat-name
required
string

Name of the seat to open the slot for.

unoccupied-only
boolean
Default: false

Look up the first unoccupied locked slot instead of simply taking the first slot.

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "extra-info": "string"
}

Create internal RA user (latest API version)

Alias of /admapi/{version}/create-internal-ra-user using the latest Administrator API version.

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

template-name
required
string

Name of the TEMPLATE to create the user under.

user-name
required
string

Name of the new user.

user-password
string
Default: ""

Password for the new user.

user-password-ttl
integer

Time-to-live in seconds for the user password expiry.

user-pincode
string
Default: ""

Pincode for the new user.

user-cert-subject
string

JSON-encoded certificate subject overrides for the new user. Supported attributes: c (country), st (state), l (city/locality), o (organization), ou (organization unit), e (email).

user-cert-san
string

JSON-encoded certificate Subject Alternative Name overrides for the new user. Supported attributes: DNS, IP, email.

Responses

Response samples

Content type
application/json
{
  • "status": "success"
}

Create internal RA user

Creates a new user in the KeyTalk Internal Registration Authority database.

path Parameters
version
required
string
Enum: "1.9.4" "1.9.5" "1.9.6" "1.9.7" "1.9.8"
Example: 1.9.8

Administrator API version to use. Documented versions (see section 4.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

template-name
required
string

Name of the TEMPLATE to create the user under.

user-name
required
string

Name of the new user.

user-password
string
Default: ""

Password for the new user.

user-password-ttl
integer

Time-to-live in seconds for the user password expiry.

user-pincode
string
Default: ""

Pincode for the new user.

user-cert-subject
string

JSON-encoded certificate subject overrides for the new user. Supported attributes: c (country), st (state), l (city/locality), o (organization), ou (organization unit), e (email).

user-cert-san
string

JSON-encoded certificate Subject Alternative Name overrides for the new user. Supported attributes: DNS, IP, email.

Responses

Response samples

Content type
application/json
{
  • "status": "success"
}

Update seats (latest API version)

Alias of /admapi/{version}/update-seats using the latest Administrator API version.

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

template-name
required
string

Target KeyTalk TEMPLATE name.

seats
required
string

JSON-encoded array of seats with properties to set. A seat is identified by name. At the moment, the only supported seat property is mobile (mobile phone number).

Responses

Response samples

Content type
application/json
{
  • "status": "success"
}

Update seats

Mass-updates some seat properties for the given TEMPLATE. At the moment, the only supported seat property is mobile (the mobile phone number), used per-seat in the seats JSON array.

path Parameters
version
required
string
Enum: "1.9.4" "1.9.5" "1.9.6" "1.9.7" "1.9.8"
Example: 1.9.8

Administrator API version to use. Documented versions (see section 4.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

template-name
required
string

Target KeyTalk TEMPLATE name.

seats
required
string

JSON-encoded array of seats with properties to set. A seat is identified by name. At the moment, the only supported seat property is mobile (mobile phone number).

Responses

Response samples

Content type
application/json
{
  • "status": "success"
}

Remove seat (latest API version)

Alias of /admapi/{version}/remove-seat using the latest Administrator API version.

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

template-name
required
string

Name of the KeyTalk TEMPLATE (service) the seat belongs to.

seat-name
required
string

Name of the KeyTalk seat to remove.

Responses

Response samples

Content type
application/json
{
  • "status": "remove-seat",
  • "removed": true,
  • "warning": "string"
}

Remove seat

Removes a seat, automatically revoking its certificate(s).

path Parameters
version
required
string
Enum: "1.9.4" "1.9.5" "1.9.6" "1.9.7" "1.9.8"
Example: 1.9.8

Administrator API version to use. Documented versions (see section 4.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

template-name
required
string

Name of the KeyTalk TEMPLATE (service) the seat belongs to.

seat-name
required
string

Name of the KeyTalk seat to remove.

Responses

Response samples

Content type
application/json
{
  • "status": "remove-seat",
  • "removed": true,
  • "warning": "string"
}

Create template for enrolling DigiCert DV certs via ACME (latest API version)

Alias of /admapi/{version}/create-digicert-dv-acme-template using the latest Administrator API version.

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

template-name
required
string

Name of the KeyTalk TEMPLATE (service).

digicert-account-region
required
string
Enum: "Europe" "US"

Region the DigiCert account belongs to.

digicert-product
required
string

DigiCert DV product ID, e.g. "ssl_dv_geotrust" or "ssl_dv_rapidssl" (see DigiCert CertCentral API glossary for the full list).

digicert-api-key
required
string

Key to call the DigiCert REST API.

cert-validity-months
required
integer

Desired certificate validity in months.

mail-fetch-proto
required
string
Enum: "o365-msgraph" "o365-imap"

Protocol to access the mailbox where the certificate order approval email is expected to arrive.

azure-client-id
required
string

Azure Client ID to access the Office 365 mailbox where the approval email arrives.

azure-client-secret
required
string

Azure secret to access the Office 365 mailbox where the approval email arrives.

azure-tenant-id
required
string

Azure Tenant ID to access the Office 365 mailbox where the approval email arrives.

approver-email
required
string <email>

Mailbox (email address) where the certificate order approval email is expected to arrive.

Responses

Response samples

Content type
application/json

Create template for enrolling DigiCert DV certs via ACME

[as of v1.9.4] Allows creating templates for enrolling DigiCert DV certificates via ACME. Returns the KeyTalk ACME directory URL to be used in an ACME agent, e.g. certbot.

path Parameters
version
required
string
Enum: "1.9.4" "1.9.5" "1.9.6" "1.9.7" "1.9.8"
Example: 1.9.8

Administrator API version to use. Documented versions (see section 4.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

template-name
required
string

Name of the KeyTalk TEMPLATE (service).

digicert-account-region
required
string
Enum: "Europe" "US"

Region the DigiCert account belongs to.

digicert-product
required
string

DigiCert DV product ID, e.g. "ssl_dv_geotrust" or "ssl_dv_rapidssl" (see DigiCert CertCentral API glossary for the full list).

digicert-api-key
required
string

Key to call the DigiCert REST API.

cert-validity-months
required
integer

Desired certificate validity in months.

mail-fetch-proto
required
string
Enum: "o365-msgraph" "o365-imap"

Protocol to access the mailbox where the certificate order approval email is expected to arrive.

azure-client-id
required
string

Azure Client ID to access the Office 365 mailbox where the approval email arrives.

azure-client-secret
required
string

Azure secret to access the Office 365 mailbox where the approval email arrives.

azure-tenant-id
required
string

Azure Tenant ID to access the Office 365 mailbox where the approval email arrives.

approver-email
required
string <email>

Mailbox (email address) where the certificate order approval email is expected to arrive.

Responses

Response samples

Content type
application/json

Create tenant (latest API version)

Alias of /admapi/{version}/create-tenant using the latest Administrator API version.

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

tenant-name
required
string

Name of the KeyTalk tenant.

assigned-templates
string

JSON-encoded array of KeyTalk template names to assign to this tenant (templates must already exist).

Responses

Response samples

Content type
application/json
{
  • "status": "success"
}

Create tenant

[as of v1.9.5] Allows creating tenants (groups of templates) and assigning templates to them. Assigned templates must already exist.

path Parameters
version
required
string
Enum: "1.9.4" "1.9.5" "1.9.6" "1.9.7" "1.9.8"
Example: 1.9.8

Administrator API version to use. Documented versions (see section 4.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

tenant-name
required
string

Name of the KeyTalk tenant.

assigned-templates
string

JSON-encoded array of KeyTalk template names to assign to this tenant (templates must already exist).

Responses

Response samples

Content type
application/json
{
  • "status": "success"
}

Enable ACME for the template (latest API version)

Alias of /admapi/{version}/enable-acme using the latest Administrator API version.

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

template-name
required
string

Name of the KeyTalk template to enable requesting certs via ACME for.

external-customer-order-id
string

External customer order ID previously submitted using the /copy-template API call. Submitting this only affects the returned ACME URL by incorporating the name of the seat reserved for this order ID.

Responses

Response samples

Content type
application/json

Enable ACME for the template

[as of v1.9.5] Allows requesting certificates via ACME for the template, yielding an ACME directory URL that is either template-wide or, when external-customer-order-id (previously submitted via /copy-template) is supplied, tied to the seat name reserved for that order.

path Parameters
version
required
string
Enum: "1.9.4" "1.9.5" "1.9.6" "1.9.7" "1.9.8"
Example: 1.9.8

Administrator API version to use. Documented versions (see section 4.1's changelog table); the server may also support earlier, undocumented versions. When the caller does not need to pin a version, use the sibling path without this segment (the server then uses the latest version it supports).

Request Body schema: application/x-www-form-urlencoded
required
auth-username
string

Caller's Web Admin Interface username (alternative to a TLS client certificate).

auth-password
string

Caller's Web Admin Interface password (alternative to a TLS client certificate).

template-name
required
string

Name of the KeyTalk template to enable requesting certs via ACME for.

external-customer-order-id
string

External customer order ID previously submitted using the /copy-template API call. Submitting this only affects the returned ACME URL by incorporating the name of the seat reserved for this order ID.

Responses

Response samples

Content type
application/json

Self-Service API

S/MIME certificate enrolment for external parties (mutual-TLS authenticated).

Enroll S/MIME certificates for external parties

Enrolls, or places orders for, S/MIME certificates for external parties, i.e. users generally not registered at KeyTalk. Enrolled certificates are communicated to the indicated email addresses. It is strongly recommended to call the Public API smime-cert-enrollment-availability before enrolling, to get detailed diagnostics and minimize the chance of errors.

Authentication: this API requires a TLS client certificate and private key identifying the caller as a KeyTalk self-service user (mutual TLS at the connection level - not a header-based credential; the KeyTalk server must be configured to require certificate-based logins). There is no OpenAPI 3.0.3 security scheme that models this cleanly, so no security block is set on this operation - see the curl example (--cert ./client-cert.pem --key ./client-cert-key.pem).

When multiple recipients are supplied, enrolment/order-placement may succeed for some but fail along the way; if so, the process terminates and the remaining recipients are skipped.

Request Body schema: application/x-www-form-urlencoded
required
recipients
required
string

JSON-encoded array of recipient objects {email, mobile?}. mobile is only required when enforced by the server configuration; otherwise the password is emailed instead of texted.

svr-host-name
string

KeyTalk server hostname to build the certificate download link communicated to the recipient (must be routable for them). Defaults to the hostname/IP extracted from the KeyTalk server's web management certificate.

synchronous
boolean
Default: true

[as of v1.1.0] When false, does not immediately yield a certificate; instead submits a request to a configured CA which communicates the certificate back via e-mail (currently only supported for GlobalSign PersonalSign-bound services).

Responses

Request samples

Content type
application/x-www-form-urlencoded
recipients=%5B%7B%22email%22%3A%22mike.brook%40example.com%22%2C%22mobile%22%3A%22%2B31645610000%22%7D%2C%7B%22email%22%3A%22chuck.norris%40badass.com%22%7D%5D

Response samples

Content type
application/json
Example
{
  • "status": "smime-cert-enrollment",
  • "enrolled-recipients": [
    ],
  • "failed-recipients": [
    ],
  • "skipped-recipients": [
    ],
  • "apply-address-books": true,
  • "address-books": [
    ]
}

CA API

Fetch KeyTalk's internal trust-chain certificates.

Fetch a KeyTalk internal CA certificate by type, or by SHA-1 fingerprint only

Fetches KeyTalk internal CA certificate(s). The identifier path segment is overloaded by the server and is resolved in two possible ways (this spec models both under one path, since OpenAPI cannot express "same URL shape, dispatched by value" as two separate path items - the source document itself defines these as if they were distinct URLs, which most OpenAPI tooling flags as an ambiguous/identical path):

  • If identifier matches one of the known CA type keywords - signing ("Signing CA"), primary ("Primary CA"), communication ("Communication CA"), root ("Root CA") (as labeled on the KeyTalk admin web panel), or extrasigning (yields a list of all extra Signing CAs configured on KeyTalk, concatenated into a single PEM file [as of v1.0.2]) - the CA certificate(s) of that type are returned.
  • Otherwise [as of v1.0.3], identifier is treated as a SHA-1 fingerprint and the matching CA certificate (of any type) is returned, if found.

To fetch a specific certificate of a known type AND fingerprint (avoiding any ambiguity), use /ca/{version}/{ca-type}/{cert-sha1-fingerprint} instead. The non-SSL HTTP communication goes over the standard port 80; HTTPS goes over the standard port 443.

path Parameters
version
required
string
Default: "1.0.3"
Enum: "1.0.0" "1.0.1" "1.0.2" "1.0.3"
Example: 1.0.3

CA API version to use. All documented URL patterns are pinned to 1.0.3 in the source document.

identifier
required
string
Examples:
  • signing - Lookup by CA type
  • a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2 - Lookup by SHA-1 fingerprint [as of v1.0.3]

Either a CA type keyword (signing, primary, communication, root, extrasigning) or a SHA-1 certificate fingerprint ([as of v1.0.3]).

query Parameters
format
string
Enum: "PEM" "DER"

Desired certificate download format. [as of CA API v1.0.1]

Responses

Fetch a specific KeyTalk internal CA certificate by type and SHA-1 fingerprint

[as of v1.0.1] Allows requesting a specific certificate of the given CA type by its SHA-1 fingerprint. [as of v1.0.3] fingerprint-only lookup (across all types) is also available via /ca/{version}/{cert-sha1-fingerprint}.

path Parameters
version
required
string
Default: "1.0.3"
Enum: "1.0.0" "1.0.1" "1.0.2" "1.0.3"
Example: 1.0.3

CA API version to use. All documented URL patterns are pinned to 1.0.3 in the source document.

ca-type
required
string
Enum: "signing" "primary" "communication" "root" "extrasigning"

Which internal CA to fetch.

cert-sha1-fingerprint
required
string

SHA-1 fingerprint of the desired CA certificate.

query Parameters
format
string
Enum: "PEM" "DER"

Desired certificate download format. [as of CA API v1.0.1]

Responses