Set Up an Identity Provider
Sets up an identity provider (SAML or OIDC) for your organization, including login/logout URLs, certificates, client credentials, and security settings, enabling Single Sign-On (SSO) authentication.
curl --request POST \
--url https://api-trial.cognigy.ai/new/v2.0/identityprovider/configure \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"idpType": "saml",
"idpIssuer": "<string>",
"idpLoginEndpoint": "<string>",
"idpLogoutEndpoint": "<string>",
"idpCertificate": "<string>",
"wantAuthnResponseSigned": true,
"decryptionPrivateKey": "<string>",
"idpDisableRequestedAuthnContext": false
}
'import requests
url = "https://api-trial.cognigy.ai/new/v2.0/identityprovider/configure"
payload = {
"idpType": "saml",
"idpIssuer": "<string>",
"idpLoginEndpoint": "<string>",
"idpLogoutEndpoint": "<string>",
"idpCertificate": "<string>",
"wantAuthnResponseSigned": True,
"decryptionPrivateKey": "<string>",
"idpDisableRequestedAuthnContext": False
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
idpType: 'saml',
idpIssuer: '<string>',
idpLoginEndpoint: '<string>',
idpLogoutEndpoint: '<string>',
idpCertificate: '<string>',
wantAuthnResponseSigned: true,
decryptionPrivateKey: '<string>',
idpDisableRequestedAuthnContext: false
})
};
fetch('https://api-trial.cognigy.ai/new/v2.0/identityprovider/configure', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-trial.cognigy.ai/new/v2.0/identityprovider/configure",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'idpType' => 'saml',
'idpIssuer' => '<string>',
'idpLoginEndpoint' => '<string>',
'idpLogoutEndpoint' => '<string>',
'idpCertificate' => '<string>',
'wantAuthnResponseSigned' => true,
'decryptionPrivateKey' => '<string>',
'idpDisableRequestedAuthnContext' => false
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-trial.cognigy.ai/new/v2.0/identityprovider/configure"
payload := strings.NewReader("{\n \"idpType\": \"saml\",\n \"idpIssuer\": \"<string>\",\n \"idpLoginEndpoint\": \"<string>\",\n \"idpLogoutEndpoint\": \"<string>\",\n \"idpCertificate\": \"<string>\",\n \"wantAuthnResponseSigned\": true,\n \"decryptionPrivateKey\": \"<string>\",\n \"idpDisableRequestedAuthnContext\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api-trial.cognigy.ai/new/v2.0/identityprovider/configure")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"idpType\": \"saml\",\n \"idpIssuer\": \"<string>\",\n \"idpLoginEndpoint\": \"<string>\",\n \"idpLogoutEndpoint\": \"<string>\",\n \"idpCertificate\": \"<string>\",\n \"wantAuthnResponseSigned\": true,\n \"decryptionPrivateKey\": \"<string>\",\n \"idpDisableRequestedAuthnContext\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-trial.cognigy.ai/new/v2.0/identityprovider/configure")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"idpType\": \"saml\",\n \"idpIssuer\": \"<string>\",\n \"idpLoginEndpoint\": \"<string>\",\n \"idpLogoutEndpoint\": \"<string>\",\n \"idpCertificate\": \"<string>\",\n \"wantAuthnResponseSigned\": true,\n \"decryptionPrivateKey\": \"<string>\",\n \"idpDisableRequestedAuthnContext\": false\n}"
response = http.request(request)
puts response.read_body{
"type": "Bad Request",
"title": "Bad Request Error",
"status": 400,
"detail": "Validation failed. Missing payload.",
"instance": "/v2.0/flows/5ce7c2d833ea1e04d7e6c432",
"code": 1000,
"traceId": "api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f",
"details": {}
}{
"type": "Unauthorized",
"title": "Unauthorized Error",
"status": 401,
"detail": "<string>",
"instance": "/v2.0/flows/5ce7c2d833ea1e04d7e6c432",
"code": 401,
"traceId": "api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f",
"details": {}
}{
"type": "Payment Required",
"title": "Payment Required Error",
"status": 402,
"detail": "Validation failed. Missing payload.",
"instance": "/v2.0/flows/5ce7c2d833ea1e04d7e6c432",
"code": 402,
"traceId": "api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f",
"details": {}
}{
"type": "Forbidden",
"title": "Forbidden Error",
"status": 403,
"detail": "<string>",
"instance": "/v2.0/flows/5ce7c2d833ea1e04d7e6c432",
"code": 1000,
"traceId": "api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f",
"details": {}
}{
"type": "Not Found",
"title": "Not Found Error",
"status": 404,
"detail": "<string>",
"instance": "/v2.0/flows/5ce7c2d833ea1e04d7e6c432",
"code": 1000,
"traceId": "api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f",
"details": {},
"logLevel": "error"
}{
"type": "Method Not Allowed",
"title": "Method Not Allowed Error",
"status": 405,
"detail": "<string>",
"instance": "/v2.0/flows/5ce7c2d833ea1e04d7e6c432",
"code": 1000,
"traceId": "api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f",
"details": {}
}{
"type": "Conflict",
"title": "Conflict Error",
"status": 409,
"detail": "<string>",
"instance": "/v2.0/flows/5ce7c2d833ea1e04d7e6c432",
"code": 1004,
"traceId": "api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f",
"details": {}
}{
"type": "Payload Too Large",
"title": "Payload Too Large Error",
"status": 413,
"detail": "<string>",
"instance": "/v2.0/flows/5ce7c2d833ea1e04d7e6c432",
"code": 1000,
"traceId": "api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f",
"details": {}
}{
"type": "Internal Server Error",
"title": "Internal Server Error",
"status": 500,
"detail": "<string>",
"instance": "/v2.0/flows/5ce7c2d833ea1e04d7e6c432",
"code": 1000,
"traceId": "api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f",
"details": {}
}{
"type": "Not Implemented",
"title": "Not Implemented Error",
"status": 501,
"detail": "<string>",
"instance": "/v2.0/flows/5ce7c2d833ea1e04d7e6c432",
"code": 1009,
"traceId": "api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f",
"details": {}
}{
"type": "Bad Gateway",
"title": "Bad Gateway Error",
"status": 502,
"detail": "<string>",
"instance": "/v2.0/flows/5ce7c2d833ea1e04d7e6c432",
"code": 1000,
"traceId": "api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f",
"details": {}
}{
"type": "Service Unavailable",
"title": "Service Unavailable Error",
"status": 503,
"detail": "<string>",
"instance": "/v2.0/flows/5ce7c2d833ea1e04d7e6c432",
"code": 503,
"traceId": "api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f",
"details": {}
}{
"type": "Gateway Timeout",
"title": "Gateway Timeout Error",
"status": 504,
"detail": "<string>",
"instance": "/v2.0/flows/5ce7c2d833ea1e04d7e6c432",
"code": 1000,
"traceId": "api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f",
"details": {}
}Authorizations
Supply the API Key in the HTTP-Header
Headers
The Accept header specifies the media type that the client expects in the response. Available options: application/json, application/hal+json, application/xml, text/xml, text/csv. The default value is application/json.
application/json, application/hal+json, application/xml, text/xml, text/csv Body
- Option 1
- Option 2
saml The value that will be in the issuer field in the SAML request.
The URL to use to login in the IDP. Used in the SP initiated Flow.
The URL to send SLO requests against. Not all identity providers support this.
The certificate from the ID used to sign the SAML requests. It is base64 encoded.
If the SAML authentification response should be signed, not all providers support this.
An optional decryption key. This is necessary if the SAML request is encoded.
For some providers, e.g. Azure on-prem, it might be necessary to disable the authn context field in the SAML request.
Response
The identity provider was configured for your organisation.
curl --request POST \
--url https://api-trial.cognigy.ai/new/v2.0/identityprovider/configure \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"idpType": "saml",
"idpIssuer": "<string>",
"idpLoginEndpoint": "<string>",
"idpLogoutEndpoint": "<string>",
"idpCertificate": "<string>",
"wantAuthnResponseSigned": true,
"decryptionPrivateKey": "<string>",
"idpDisableRequestedAuthnContext": false
}
'import requests
url = "https://api-trial.cognigy.ai/new/v2.0/identityprovider/configure"
payload = {
"idpType": "saml",
"idpIssuer": "<string>",
"idpLoginEndpoint": "<string>",
"idpLogoutEndpoint": "<string>",
"idpCertificate": "<string>",
"wantAuthnResponseSigned": True,
"decryptionPrivateKey": "<string>",
"idpDisableRequestedAuthnContext": False
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
idpType: 'saml',
idpIssuer: '<string>',
idpLoginEndpoint: '<string>',
idpLogoutEndpoint: '<string>',
idpCertificate: '<string>',
wantAuthnResponseSigned: true,
decryptionPrivateKey: '<string>',
idpDisableRequestedAuthnContext: false
})
};
fetch('https://api-trial.cognigy.ai/new/v2.0/identityprovider/configure', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-trial.cognigy.ai/new/v2.0/identityprovider/configure",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'idpType' => 'saml',
'idpIssuer' => '<string>',
'idpLoginEndpoint' => '<string>',
'idpLogoutEndpoint' => '<string>',
'idpCertificate' => '<string>',
'wantAuthnResponseSigned' => true,
'decryptionPrivateKey' => '<string>',
'idpDisableRequestedAuthnContext' => false
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-trial.cognigy.ai/new/v2.0/identityprovider/configure"
payload := strings.NewReader("{\n \"idpType\": \"saml\",\n \"idpIssuer\": \"<string>\",\n \"idpLoginEndpoint\": \"<string>\",\n \"idpLogoutEndpoint\": \"<string>\",\n \"idpCertificate\": \"<string>\",\n \"wantAuthnResponseSigned\": true,\n \"decryptionPrivateKey\": \"<string>\",\n \"idpDisableRequestedAuthnContext\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api-trial.cognigy.ai/new/v2.0/identityprovider/configure")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"idpType\": \"saml\",\n \"idpIssuer\": \"<string>\",\n \"idpLoginEndpoint\": \"<string>\",\n \"idpLogoutEndpoint\": \"<string>\",\n \"idpCertificate\": \"<string>\",\n \"wantAuthnResponseSigned\": true,\n \"decryptionPrivateKey\": \"<string>\",\n \"idpDisableRequestedAuthnContext\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-trial.cognigy.ai/new/v2.0/identityprovider/configure")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"idpType\": \"saml\",\n \"idpIssuer\": \"<string>\",\n \"idpLoginEndpoint\": \"<string>\",\n \"idpLogoutEndpoint\": \"<string>\",\n \"idpCertificate\": \"<string>\",\n \"wantAuthnResponseSigned\": true,\n \"decryptionPrivateKey\": \"<string>\",\n \"idpDisableRequestedAuthnContext\": false\n}"
response = http.request(request)
puts response.read_body{
"type": "Bad Request",
"title": "Bad Request Error",
"status": 400,
"detail": "Validation failed. Missing payload.",
"instance": "/v2.0/flows/5ce7c2d833ea1e04d7e6c432",
"code": 1000,
"traceId": "api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f",
"details": {}
}{
"type": "Unauthorized",
"title": "Unauthorized Error",
"status": 401,
"detail": "<string>",
"instance": "/v2.0/flows/5ce7c2d833ea1e04d7e6c432",
"code": 401,
"traceId": "api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f",
"details": {}
}{
"type": "Payment Required",
"title": "Payment Required Error",
"status": 402,
"detail": "Validation failed. Missing payload.",
"instance": "/v2.0/flows/5ce7c2d833ea1e04d7e6c432",
"code": 402,
"traceId": "api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f",
"details": {}
}{
"type": "Forbidden",
"title": "Forbidden Error",
"status": 403,
"detail": "<string>",
"instance": "/v2.0/flows/5ce7c2d833ea1e04d7e6c432",
"code": 1000,
"traceId": "api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f",
"details": {}
}{
"type": "Not Found",
"title": "Not Found Error",
"status": 404,
"detail": "<string>",
"instance": "/v2.0/flows/5ce7c2d833ea1e04d7e6c432",
"code": 1000,
"traceId": "api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f",
"details": {},
"logLevel": "error"
}{
"type": "Method Not Allowed",
"title": "Method Not Allowed Error",
"status": 405,
"detail": "<string>",
"instance": "/v2.0/flows/5ce7c2d833ea1e04d7e6c432",
"code": 1000,
"traceId": "api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f",
"details": {}
}{
"type": "Conflict",
"title": "Conflict Error",
"status": 409,
"detail": "<string>",
"instance": "/v2.0/flows/5ce7c2d833ea1e04d7e6c432",
"code": 1004,
"traceId": "api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f",
"details": {}
}{
"type": "Payload Too Large",
"title": "Payload Too Large Error",
"status": 413,
"detail": "<string>",
"instance": "/v2.0/flows/5ce7c2d833ea1e04d7e6c432",
"code": 1000,
"traceId": "api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f",
"details": {}
}{
"type": "Internal Server Error",
"title": "Internal Server Error",
"status": 500,
"detail": "<string>",
"instance": "/v2.0/flows/5ce7c2d833ea1e04d7e6c432",
"code": 1000,
"traceId": "api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f",
"details": {}
}{
"type": "Not Implemented",
"title": "Not Implemented Error",
"status": 501,
"detail": "<string>",
"instance": "/v2.0/flows/5ce7c2d833ea1e04d7e6c432",
"code": 1009,
"traceId": "api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f",
"details": {}
}{
"type": "Bad Gateway",
"title": "Bad Gateway Error",
"status": 502,
"detail": "<string>",
"instance": "/v2.0/flows/5ce7c2d833ea1e04d7e6c432",
"code": 1000,
"traceId": "api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f",
"details": {}
}{
"type": "Service Unavailable",
"title": "Service Unavailable Error",
"status": 503,
"detail": "<string>",
"instance": "/v2.0/flows/5ce7c2d833ea1e04d7e6c432",
"code": 503,
"traceId": "api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f",
"details": {}
}{
"type": "Gateway Timeout",
"title": "Gateway Timeout Error",
"status": 504,
"detail": "<string>",
"instance": "/v2.0/flows/5ce7c2d833ea1e04d7e6c432",
"code": 1000,
"traceId": "api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f",
"details": {}
}