Default Tenant
Sets the tenant specified in the request body as the default one, resolving all the incoming API request to that tenant when the env SINGLE_TENANT_MODE is set to true. Once set, the default tenant can be overwritten but never unset, although it is only effective when SINGLE_TENANT_MODE is set to true.
Default tenant is useful for development purposes or when the SDP is used by a single organization. This allows the organization to skip specifying the tenant in every request and simplifies the SDP setup operationally by removing the need of providing wildcard TLS certificates for multi-tenant configurations.
curl --request POST \
--url https://api.example.com/tenants/default-tenant \
--header 'Content-Type: */*' \
--data '{
"id": "1736bed3-7b92-4760-8ff2-51fb08ee079f"
}'import requests
url = "https://api.example.com/tenants/default-tenant"
payload = "{\n \"id\": \"1736bed3-7b92-4760-8ff2-51fb08ee079f\"\n}"
headers = {"Content-Type": "*/*"}
response = requests.post(url, data=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': '*/*'},
body: '{\n "id": "1736bed3-7b92-4760-8ff2-51fb08ee079f"\n}'
};
fetch('https://api.example.com/tenants/default-tenant', 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.example.com/tenants/default-tenant",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "{\n \"id\": \"1736bed3-7b92-4760-8ff2-51fb08ee079f\"\n}",
CURLOPT_HTTPHEADER => [
"Content-Type: */*"
],
]);
$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.example.com/tenants/default-tenant"
payload := strings.NewReader("{\n \"id\": \"1736bed3-7b92-4760-8ff2-51fb08ee079f\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "*/*")
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.example.com/tenants/default-tenant")
.header("Content-Type", "*/*")
.body("{\n \"id\": \"1736bed3-7b92-4760-8ff2-51fb08ee079f\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/tenants/default-tenant")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = '*/*'
request.body = "{\n \"id\": \"1736bed3-7b92-4760-8ff2-51fb08ee079f\"\n}"
response = http.request(request)
puts response.read_body{
"id": "840dca45-d1df-44cd-83c1-65c04235c25f",
"name": "redcorp",
"base_url": "https://redcorp-backend.sdp.org",
"sdp_ui_base_url": "https://redcorp.sdp.org",
"status": "TENANT_PROVISIONED",
"distribution_account": "GCQVDMPOEN3HHJJ64V42KUTONOXN7C6V2PSVPALEVJ7PIYOB6M3DJV7N",
"is_default": true,
"created_at": "2024-03-27T17:21:51.000Z",
"updated_at": "2024-03-27T17:21:51.000Z"
}{
"error": "Not authorized",
"extras": {
"status": 401,
"message": "Not authorized"
}
}{
"error": "Forbidden"
}Body
The tenant id.
Response
Default tenant details
"1736bed3-7b92-4760-8ff2-51fb08ee079f"
The tenant name. It should match the pattern ^[a-z-]+$.
"bluecorp"
The SDP backend server's base URL.
"https://bluecorp-backend.sdp.org"
The SDP UI/dashboard Base URL.
"https://bluecorp.sdp.org"
TENANT_CREATED, TENANT_PROVISIONED, TENANT_ACTIVATED, TENANT_DEACTIVATED The Stellar account address used for distributing funds.
"GCXAJ3XJ3VK3JFH3QMDFOSKM2NMMZBSO3VIT6EUPQWSDW2J74M23RRSL"
The Stellar account type used for distributing funds.
DISTRIBUTION_ACCOUNT.STELLAR.ENV, DISTRIBUTION_ACCOUNT.STELLAR.DB_VAULT, DISTRIBUTION_ACCOUNT.CIRCLE.DB_VAULT The status of the distribution account used for distributing funds.
ACTIVE, PENDING_USER_ACTIVATION Boolean flag that shows whether the tenant is the default or not.
"2024-03-27T17:21:51Z"
"2024-03-27T17:21:51Z"
The timestamp when the tenant was (soft) deleted.
"2024-03-27T17:21:51Z"
curl --request POST \
--url https://api.example.com/tenants/default-tenant \
--header 'Content-Type: */*' \
--data '{
"id": "1736bed3-7b92-4760-8ff2-51fb08ee079f"
}'import requests
url = "https://api.example.com/tenants/default-tenant"
payload = "{\n \"id\": \"1736bed3-7b92-4760-8ff2-51fb08ee079f\"\n}"
headers = {"Content-Type": "*/*"}
response = requests.post(url, data=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': '*/*'},
body: '{\n "id": "1736bed3-7b92-4760-8ff2-51fb08ee079f"\n}'
};
fetch('https://api.example.com/tenants/default-tenant', 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.example.com/tenants/default-tenant",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "{\n \"id\": \"1736bed3-7b92-4760-8ff2-51fb08ee079f\"\n}",
CURLOPT_HTTPHEADER => [
"Content-Type: */*"
],
]);
$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.example.com/tenants/default-tenant"
payload := strings.NewReader("{\n \"id\": \"1736bed3-7b92-4760-8ff2-51fb08ee079f\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "*/*")
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.example.com/tenants/default-tenant")
.header("Content-Type", "*/*")
.body("{\n \"id\": \"1736bed3-7b92-4760-8ff2-51fb08ee079f\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/tenants/default-tenant")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = '*/*'
request.body = "{\n \"id\": \"1736bed3-7b92-4760-8ff2-51fb08ee079f\"\n}"
response = http.request(request)
puts response.read_body{
"id": "840dca45-d1df-44cd-83c1-65c04235c25f",
"name": "redcorp",
"base_url": "https://redcorp-backend.sdp.org",
"sdp_ui_base_url": "https://redcorp.sdp.org",
"status": "TENANT_PROVISIONED",
"distribution_account": "GCQVDMPOEN3HHJJ64V42KUTONOXN7C6V2PSVPALEVJ7PIYOB6M3DJV7N",
"is_default": true,
"created_at": "2024-03-27T17:21:51.000Z",
"updated_at": "2024-03-27T17:21:51.000Z"
}{
"error": "Not authorized",
"extras": {
"status": 401,
"message": "Not authorized"
}
}{
"error": "Forbidden"
}