Domains and Certificates
We are currently in the process of improving our domain and certificate management features, and as a result some of the information provided in this section will change in upcoming releases of Jahia Cloud. We recommend contacting Jahia Support if you are unable to find the information you need to construct the API call.
Bind a custom domain
Binds a custom (external) domain to an existing environment. You can call this action multiple times to attach several domains.
Make sure the DNS record for extDomain (CNAME or A) points to the environment before calling this action, otherwise traffic will not reach Jahia.
Endpoint
POST <CLOUD_URL>/modules/cloudAction/bindExtDomain.do
Example
CLOUD_URL="https://jahia.cloud" # Base URL of your Jahia Cloud instance
CLOUD_ENVNAME="my-env" # Must be unique across your organization, and can only contain lowercase letters, numbers and hyphens
CLOUD_ORG="jahiacloud" # Assigned to your organization by Jahia, used to construct the shortDomain
CLOUD_SHORTDOMAIN="${CLOUD_ENVNAME}-${CLOUD_ORG}" # Short domain for the new environment
JAHIA_EXT_DOMAIN="my-custom-jahia.domain.com" # The custom domain to bind to the environment
CLOUD_PAT="PRIVATE_TOKEN" # Cloud Perstonal API Token generated from the Jahia Cloud UI.
curl -i "${CLOUD_URL}/modules/cloudAction/bindExtDomain.do" \
-X POST \
-H "Authorization: APIToken ${CLOUD_PAT}" \
-H "Accept: application/json" \
-H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" \
--data-raw "orgName=${CLOUD_ORG}&envName=${CLOUD_SHORTDOMAIN}&extDomain=${JAHIA_EXT_DOMAIN}"
Expected result
HTTP 200 on success. Any other status code means the domain binding failed.
Install an SSL certificate
You can install (or upload) an SSL certificate to secure custom domains attached to your environment. This action is used to install a certificate in your organization's list of available certificates. Once the certificate is installed, you can attach it to a custom domain with the bindSslCert.do action.
Endpoint
POST <CLOUD_URL>/modules/cloudAction/addSslCert.do
Example
CLOUD_URL="https://jahia.cloud" # Base URL of your Jahia Cloud instance
CLOUD_ENVNAME="my-env" # Must be unique across your organization, and can only contain lowercase letters, numbers and hyphens
CLOUD_ORG="jahiacloud" # Assigned to your organization by Jahia, used to construct the shortDomain
CLOUD_SHORTDOMAIN="${CLOUD_ENVNAME}-${CLOUD_ORG}" # Short domain for the new environment
CLOUD_PAT="PRIVATE_TOKEN" # Cloud Perstonal API Token generated from the Jahia Cloud UI.
CERT=$(cat <<'EOF'
-----BEGIN CERTIFICATE-----
MIIDdzCCAl+gAwIBAgIUQ2xvdWRBY3Rpb25zU2FtcGxlQ2VydDAeFw0yNjAxMDEwMDAwMDBaFw0yNzAxMDEwMDAwMDBa
MEUxCzAJBgNVBAYTAkZSMQ4wDAYDVQQIDAVQYXJpczEOMAwGA1UEBwwFUGFyaXMxFjAUBgNVBAMMDW15LWVudi5leGFt
cGxlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArandomsamplebase64valuefordocumentationonly123
anotherlineofsamplebase64dataforcertificateexample4567890abcdefghijklmnopqrstuv==
-----END CERTIFICATE-----
EOF
)
PRIVATE_KEY=$(cat <<'EOF'
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDsampleprivatekeycontentfordocs000111222333
samplelineprivatekeybase64abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890+/==
-----END PRIVATE KEY-----
EOF
)
INTERMEDIATE_CERT=$(cat <<'EOF'
-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIUSW50ZXJtZWRpYXRlQ2VydFNhbXBsZTAeFw0yNjAxMDEwMDAwMDBaFw0yNzAxMDEwMDAwMDBa
ME8xCzAJBgNVBAYTAkZSMQ4wDAYDVQQIDAVQYXJpczEOMAwGA1UEBwwFUGFyaXMxIDAeBgNVBAMMF2ludGVybWVkaWF0
ZS5leGFtcGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALoremipsumsampleintermediatecert
samplebase64lineforintermediatecertificatecontentonlynotvalidcert==
-----END CERTIFICATE-----
EOF
)
curl -i "${CLOUD_URL}/modules/cloudAction/addSslCert.do" \
-X POST \
-H "Authorization: APIToken ${CLOUD_PAT}" \
-H "Accept: application/json" \
-H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" \
--data-raw "orgName=${CLOUD_ORG}&envName=${CLOUD_SHORTDOMAIN}&cert=${CERT}&key=${PRIVATE_KEY}&interm=${INTERMEDIATE_CERT}"
Expected result
HTTP 200 if your call was successful, note that you will also receive a 200 if the certificate couldn't be installed properly, in such a case you will also receive a JSON response with an error field describing the issue.
{
"result": 3001,
"source": "JEL",
"jcResponse": 1,
"error": "Could not parse certificate"
}
Update an SSL certificate
You can update an existing SSL certificate in your organization's list of available certificates. This action is used to update a certificate in your organization's list of available certificates. Once the certificate is updated, any custom domain attached to it will use the new certificate.
Endpoint
POST <CLOUD_URL>/modules/cloudAction/updateSslCert.do
Example
CLOUD_URL="https://jahia.cloud" # Base URL of your Jahia Cloud instance
CLOUD_ENVNAME="my-env" # Must be unique across your organization, and can only contain lowercase letters, numbers and hyphens
CLOUD_ORG="jahiacloud" # Assigned to your organization by Jahia, used to construct the shortDomain
CLOUD_SHORTDOMAIN="${CLOUD_ENVNAME}-${CLOUD_ORG}" # Short domain for the new environment
CERTIFICATE_ID="18" # The ID of the certificate you want to update
CLOUD_PAT="PRIVATE_TOKEN" # Cloud Perstonal API Token generated from the Jahia Cloud UI.
CERT=$(cat <<'EOF'
-----BEGIN CERTIFICATE-----
MIIDdzCCAl+gAwIBAgIUQ2xvdWRBY3Rpb25zU2FtcGxlQ2VydDAeFw0yNjAxMDEwMDAwMDBaFw0yNzAxMDEwMDAwMDBa
MEUxCzAJBgNVBAYTAkZSMQ4wDAYDVQQIDAVQYXJpczEOMAwGA1UEBwwFUGFyaXMxFjAUBgNVBAMMDW15LWVudi5leGFt
cGxlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArandomsamplebase64valuefordocumentationonly123
anotherlineofsamplebase64dataforcertificateexample4567890abcdefghijklmnopqrstuv==
-----END CERTIFICATE-----
EOF
)
PRIVATE_KEY=$(cat <<'EOF'
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDsampleprivatekeycontentfordocs000111222333
samplelineprivatekeybase64abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890+/==
-----END PRIVATE KEY-----
EOF
)
INTERMEDIATE_CERT=$(cat <<'EOF'
-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIUSW50ZXJtZWRpYXRlQ2VydFNhbXBsZTAeFw0yNjAxMDEwMDAwMDBaFw0yNzAxMDEwMDAwMDBa
ME8xCzAJBgNVBAYTAkZSMQ4wDAYDVQQIDAVQYXJpczEOMAwGA1UEBwwFUGFyaXMxIDAeBgNVBAMMF2ludGVybWVkaWF0
ZS5leGFtcGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALoremipsumsampleintermediatecert
samplebase64lineforintermediatecertificatecontentonlynotvalidcert==
-----END CERTIFICATE-----
EOF
)
curl -i "${CLOUD_URL}/modules/cloudAction/updateSslCert.do" \
-X POST \
-H "Authorization: APIToken ${CLOUD_PAT}" \
-H "Accept: application/json" \
-H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" \
--data-raw "orgName=${CLOUD_ORG}&envName=${CLOUD_SHORTDOMAIN}&certificateId=${CERTIFICATE_ID}&cert=${CERT}&key=${PRIVATE_KEY}&interm=${INTERMEDIATE_CERT}"
Expected result
HTTP 200 if your call was successful, note that you will also receive a 200 if the certificate couldn't be installed properly, in such a case you will also receive a JSON response with an error field describing the issue.
{
"result": 3001,
"source": "JEL",
"jcResponse": 1,
"error": "Could not parse certificate"
}
Bind an SSL certificate
Attaches an SSL certificate to a custom domain that was previously bound with bindExtDomain.do.
Endpoint
POST <CLOUD_URL>/modules/cloudAction/bindSslCert.do
Example
CLOUD_URL="https://jahia.cloud" # Base URL of your Jahia Cloud instance
CLOUD_ENVNAME="my-env" # Must be unique across your organization, and can only contain lowercase letters, numbers and hyphens
CLOUD_ORG="jahiacloud" # Assigned to your organization by Jahia, used to construct the shortDomain
CLOUD_SHORTDOMAIN="${CLOUD_ENVNAME}-${CLOUD_ORG}" # Short domain for the new environment
JAHIA_EXT_DOMAIN="my-custom-jahia.domain.com" # The custom domain bound via bindExtDomain.do
JAHIA_EXT_DOMAINS_CERTIFICATE_ID="18"
CLOUD_PAT="PRIVATE_TOKEN" # Cloud Perstonal API Token generated from the Jahia Cloud UI.
curl -i "${CLOUD_URL}/modules/cloudAction/bindSslCert.do" \
-X POST \
-H "Authorization: APIToken ${CLOUD_PAT}" \
-H "Accept: application/json" \
-H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" \
--data-raw "orgName=${CLOUD_ORG}&envName=${CLOUD_SHORTDOMAIN}&extDomain=${JAHIA_EXT_DOMAIN}&certificateId=${JAHIA_EXT_DOMAINS_CERTIFICATE_ID}"
Expected result
HTTP 200 on success. Any other status code means the certificate binding failed.
Delete an SSL certificate
Deletes an SSL certificate from your organization.
Endpoint
POST <CLOUD_URL>/modules/cloudAction/deleteSslCert.do
Example
CLOUD_URL="https://jahia.cloud" # Base URL of your Jahia Cloud instance
CLOUD_ENVNAME="my-env" # Must be unique across your organization, and can only contain lowercase letters, numbers and hyphens
CLOUD_ORG="jahiacloud" # Assigned to your organization by Jahia, used to construct the shortDomain
CLOUD_SHORTDOMAIN="${CLOUD_ENVNAME}-${CLOUD_ORG}" # Short domain for the new environment
CLOUD_PAT="PRIVATE_TOKEN" # Cloud Perstonal API Token generated from the Jahia Cloud UI.
CERTIFICATE_ID="18" # The ID of the certificate you want to delete
curl -i "${CLOUD_URL}/modules/cloudAction/deleteSslCert.do" \
-X POST \
-H "Authorization: APIToken ${CLOUD_PAT}" \
-H "Accept: application/json" \
-H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" \
--data-raw "orgName=${CLOUD_ORG}&envName=${CLOUD_SHORTDOMAIN}&certificateId=${CERTIFICATE_ID}"
Expected result
HTTP 200 on success. Any other status code means the certificate deletion failed.
{
"result": 0,
"infos": [
{
"result": 0,
"id": 359
}
]
}