curl --request POST \
--url https://api.voucher-staging.allride.io/partner/v1/sso-connections \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"protocol": "saml",
"displayName": "Example Transit SSO",
"emailDomains": [
"example-transit.example.com"
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
protocol: 'saml',
displayName: 'Example Transit SSO',
emailDomains: ['example-transit.example.com']
})
};
fetch('https://api.voucher-staging.allride.io/partner/v1/sso-connections', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.voucher-staging.allride.io/partner/v1/sso-connections"
payload = {
"protocol": "saml",
"displayName": "Example Transit SSO",
"emailDomains": ["example-transit.example.com"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)HttpResponse<String> response = Unirest.post("https://api.voucher-staging.allride.io/partner/v1/sso-connections")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"protocol\": \"saml\",\n \"displayName\": \"Example Transit SSO\",\n \"emailDomains\": [\n \"example-transit.example.com\"\n ]\n}")
.asString();package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.voucher-staging.allride.io/partner/v1/sso-connections"
payload := strings.NewReader("{\n \"protocol\": \"saml\",\n \"displayName\": \"Example Transit SSO\",\n \"emailDomains\": [\n \"example-transit.example.com\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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))
}<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.voucher-staging.allride.io/partner/v1/sso-connections",
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([
'protocol' => 'saml',
'displayName' => 'Example Transit SSO',
'emailDomains' => [
'example-transit.example.com'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}Create an SSO connection
Creates a connection in draft. Publish the returned TXT records and configure serviceProvider in your identity provider, then call :verify. SSO is configured only by dashboard users. See Members and groups.
Required permissions: manage-sso · API keys: not allowed · Recent sign-in: required for dashboard users (15 minutes)
curl --request POST \
--url https://api.voucher-staging.allride.io/partner/v1/sso-connections \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"protocol": "saml",
"displayName": "Example Transit SSO",
"emailDomains": [
"example-transit.example.com"
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
protocol: 'saml',
displayName: 'Example Transit SSO',
emailDomains: ['example-transit.example.com']
})
};
fetch('https://api.voucher-staging.allride.io/partner/v1/sso-connections', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.voucher-staging.allride.io/partner/v1/sso-connections"
payload = {
"protocol": "saml",
"displayName": "Example Transit SSO",
"emailDomains": ["example-transit.example.com"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)HttpResponse<String> response = Unirest.post("https://api.voucher-staging.allride.io/partner/v1/sso-connections")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"protocol\": \"saml\",\n \"displayName\": \"Example Transit SSO\",\n \"emailDomains\": [\n \"example-transit.example.com\"\n ]\n}")
.asString();package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.voucher-staging.allride.io/partner/v1/sso-connections"
payload := strings.NewReader("{\n \"protocol\": \"saml\",\n \"displayName\": \"Example Transit SSO\",\n \"emailDomains\": [\n \"example-transit.example.com\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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))
}<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.voucher-staging.allride.io/partner/v1/sso-connections",
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([
'protocol' => 'saml',
'displayName' => 'Example Transit SSO',
'emailDomains' => [
'example-transit.example.com'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}Authorizations
Your API key in Authorization: Bearer <key>. Use vk_test_… keys against the sandbox and vk_live_… keys against production.
Headers
Optional key (1-255 printable ASCII characters, no spaces; a UUID is ideal) that makes this POST safe to retry: the same key with the same request replays the stored response for 24 hours. See Idempotency.
1 - 255^[\x21-\x7E]{1,255}$Body
New SSO connection.
Protocol.
saml, oidc Name (1-120 characters).
1 - 120Email domains (1-10); public mailbox domains are refused.
1 - 10 elementsSAML settings (required when protocol is saml).
Show child attributes
Show child attributes
OIDC settings (required when protocol is oidc).
Show child attributes
Show child attributes
Create memberships on first sign-in (default false).
Group for provisioned members (not owners or administrators).
0 <= x <= 18446744073709552000Response
Created
Single-object envelope around a SsoConnection.
A SAML or OIDC single sign-on connection.
Show child attributes
Show child attributes