API Documentation
/
No Results Found
Contacts API

Contacts API

The Contacts API provides programmatic access to manage Active Directory (AD) contact records. The ADManager Plus API offers endpoints to create, update, list, and delete contacts using structured requests with support for filtering, sorting, and pagination. Contact entries typically store information about people or external entities without logon permissions, and the API enables them to be maintained efficiently for address lists, mail routing, and directory organization.

Download Contacts API OpenAPI Document
End Points
List AD Contacts
Create AD Contacts
Update AD contacts
Delete AD contacts

List AD Contacts

This endpoint retrieves AD contact objects. You can refine results using filters, sorting, and pagination, and select only the fields you need. It is useful for generating reports, integrating contacts into other systems, or keeping external directories synchronized.

Scope : Read contact action, All contacts management actions
Delegated role : All Contacts Report

Query Parameters

from
integer
The starting index for pagination. Enables pagination through large result sets.
limit
integer
The maximum number of contacts records to return per request.
domains
string
(Required)
A comma-separated list of domains from which to fetch contacts.
Example: domain1.com,domain2.com
fields
string
The attributes to be returned in the response.
filter
string
A SCIM filter query to refine which objects are returned. See Filter section for details.
eg: (FIRST_NAME eq John) and (LAST_NAME eq Doe)
sort
string
This field is used to sort results. The default sort order is ascending. To sort in descending order, prefix the field with a hyphen (-).
eg: FIRST_NAME,-LAST_NAME
refresh
boolean
If set to true, triggers a sync before fetching results, ensuring that the data reflects the latest state of AD.

Headers

Accept
string
The response format that the client accepts.
X-Module
string
The module name to be recorded in the audit logs. If not provided, the default module is recorded as Rest API.
X-Date-Time-Format
string
The date-time format to be used for parsing date values returned in the response. If not provided, the default ISO format is used (yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]).

Request Example

Click to copy
headers_data = Map(); headers_data.put("Accept", "application/json"); headers_data.put("X-Module", "External API"); headers_data.put("X-Date-Time-Format", "SOME_STRING_VALUE"); headers_data.put("Authorization", "REPLACE_KEY_VALUE"); response = invokeUrl [ url: "http://admanagerplus:8080/api/v2/contacts?domains=domain1.com" type: GET headers: headers_data connection: <connection_name> ]; info response;
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("http://admanagerplus:8080/api/v2/contacts?domains=domain1.com") .get() .addHeader("Accept", "application/json") .addHeader("X-Module", "External API") .addHeader("X-Date-Time-Format", "SOME_STRING_VALUE") .addHeader("Authorization", "REPLACE_KEY_VALUE") .build(); Response response = client.newCall(request).execute();
const options = { method: 'GET', headers: { Accept: 'application/json', 'X-Module': 'External API', 'X-Date-Time-Format': 'SOME_STRING_VALUE', Authorization: 'REPLACE_KEY_VALUE' } }; fetch('http://admanagerplus:8080/api/v2/contacts?domains=domain1.com', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPConnection("admanagerplus:8080") headers = { 'Accept': "application/json", 'X-Module': "External API", 'X-Date-Time-Format': "SOME_STRING_VALUE", 'Authorization': "REPLACE_KEY_VALUE" } conn.request("GET", "/api/v2/contacts?domains=domain1.com", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("http"); const options = { "method": "GET", "hostname": "admanagerplus", "port": "8080", "path": "/api/v2/contacts?domains=domain1.com", "headers": { "Accept": "application/json", "X-Module": "External API", "X-Date-Time-Format": "SOME_STRING_VALUE", "Authorization": "REPLACE_KEY_VALUE" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.end();
curl --request GET \ --url 'http://admanagerplus:8080/api/v2/contacts?domains=domain1.com' \ --header 'Accept: application/json' \ --header 'Authorization: REPLACE_KEY_VALUE' \ --header 'X-Date-Time-Format: SOME_STRING_VALUE' \ --header 'X-Module: External API'

Response Example

{ "data": [ { "DISTINGUISHED_NAME": "CN=APIContact1,OU=Contacts,DC=xcross,DC=com", "OU_NAME": "Contacts", "EMAIL_ADDRESS": "-", "COMMON_NAME": "APIContact1", "FULL_NAME": "APIContact1", "LAST_NAME": "-", "DOMAIN_NAME": "xcross.com", "FIRST_NAME": "API", "DISPLAY_NAME": "Contact1" }, { "DISTINGUISHED_NAME": "CN=APIContact2,OU=Contacts,DC=xcross,DC=com", "OU_NAME": "Contacts", "EMAIL_ADDRESS": "-", "COMMON_NAME": "APIContact2", "FULL_NAME": "APIContact2", "LAST_NAME": "-", "DOMAIN_NAME": "xcross.com", "FIRST_NAME": "API", "DISPLAY_NAME": "Contact2" }, { "DISTINGUISHED_NAME": "CN=APIContact3,OU=Contacts,DC=xcross,DC=com", "OU_NAME": "Contacts", "EMAIL_ADDRESS": "-", "COMMON_NAME": "APIContact3", "FULL_NAME": "APIContact3", "LAST_NAME": "-", "DOMAIN_NAME": "xcross.com", "FIRST_NAME": "API", "DISPLAY_NAME": "Contact3" } ], "meta": { "start_index": 1, "limit": 100, "total_no_of_objects": 3 } }
{ "code": "00000100", "detail": "Some columns given in fields parameter are invalid", "title": "Bad Request." }
{ "code": "00000101", "detail": "The given Authtoken is invalid.", "title": "Unauthorized." }
{ "code": "00000000", "detail": "An internal server error occurred.", "title": "Internal Server Error." }

Create AD Contacts

This endpoint creates new AD contact objects. You can use default or custom templates to standardize attributes such as organizational details, contact information, and Exchange settings. It is commonly used when adding external entities to address books or bulk-creating contacts.

Scope : Create contact action, All contacts management actions
Delegated role : Create Bulk Contacts

Arguments

template
object
The template to be used for creating the contact. If not specified, the default
Show Sub-Attributes arrow
template_name
string
The name of the template used to create the contact.
template_id
integer
The ID of the template used to create the contact.
data
array
The data and attributes used for contact creation.
Show Sub-Attributes arrow
attributes
object
The attributes of the contact to be created.
Show Sub-Attributes arrow
givenName
string
First name of the contact.
sn
string
Last name of the contact.
initials
string
Initials of the contact.
description
string
Description of the contact.
cn
string
Common Name of the contact.
name
string
Name of the contact.
displayNamePrintable
string
Printable display name of the contact.
memberOf
string
Groups that the contact is a member of.
mail
string
Email address of the contact.
postOfficeBox
string
Post Office Box of the contact.
l
string
City of the contact.
st
string
State or province of the contact.
postalCode
string
Postal code of the contact.
country
string
Country of the contact.
telephoneNumber
string
Telephone number of the contact.
homePhone
string
Home phone number of the contact.
pager
string
Pager number of the contact.
mobile
string
Mobile number of the contact.
facsimileTelephoneNumber
string
Facsimile (fax) number of the contact.
ipPhone
string
IP phone number of the contact.
wWWHomePage
string
Web page of the contact.
title
string
Title of the contact.
department
string
Department of the contact.
company
string
Company of the contact.
physicalDeliveryOfficeName
string
Office name of the contact.
manager
string
Manager of the contact.
info
string
Notes about the contact.
streetAddress
string
Street address of the contact.
c
string
Two-letter country code of the contact.
exchange
object
Exchange attributes of the contact.
Show Sub-Attributes arrow
msExchAdminGroup
string
The administrative group associated with Exchange.
mailNickname
string
Email alias of the contact.
authOrig
string
List of senders who can send messages to the contact
unauthOrig
string
List of senders who cannot send messages to the contact.
proxyAddresses
string
Proxy addresses of the contact.
targetAddress
string
The target address of the contact.

Query Parameters

domain
string
(Required)
The AD domain where the requested operation is performed.
eg: domain1.com

Request Example

Click to copy
parameters_data='{"field1":"value1","field2":"value2"}'; headers_data = Map(); headers_data.put("Authorization", "REPLACE_KEY_VALUE"); response = invokeUrl [ url: "http://admanagerplus:8080/api/v2/contacts?domain=domain1.com" type: POST headers: headers_data content-type: application/json parameters: parameters_data connection: <connection_name> ]; info response;
OkHttpClient client = new OkHttpClient(); MediaType mediaType = MediaType.parse("application/json"); RequestBody body = RequestBody.create(mediaType, "{\"field1\":\"value1\",\"field2\":\"value2\"}"); Request request = new Request.Builder() .url("http://admanagerplus:8080/api/v2/contacts?domain=domain1.com") .post(body) .addHeader("Authorization", "REPLACE_KEY_VALUE") .addHeader("content-type", "application/json") .build(); Response response = client.newCall(request).execute();
const options = { method: 'POST', headers: {Authorization: 'REPLACE_KEY_VALUE', 'content-type': 'application/json'}, body: '{"field1":"value1","field2":"value2"}' }; fetch('http://admanagerplus:8080/api/v2/contacts?domain=domain1.com', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPConnection("admanagerplus:8080") payload = "{\"field1\":\"value1\",\"field2\":\"value2\"}" headers = { 'Authorization': "REPLACE_KEY_VALUE", 'content-type': "application/json" } conn.request("POST", "/api/v2/contacts?domain=domain1.com", payload, headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("http"); const options = { "method": "POST", "hostname": "admanagerplus", "port": "8080", "path": "/api/v2/contacts?domain=domain1.com", "headers": { "Authorization": "REPLACE_KEY_VALUE", "content-type": "application/json" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.write(JSON.stringify({field1: 'value1', field2: 'value2'})); req.end();
curl --request POST \ --url 'http://admanagerplus:8080/api/v2/contacts?domain=domain1.com' \ --header 'Authorization: REPLACE_KEY_VALUE' \ --header 'content-type: application/json' \ --data '{"field1":"value1","field2":"value2"}'

Body Parameters

Click to copy
{ "template": { "template_name": "Contact Creation Template" }, "data": [ { "attributes": { "displayName": "APIContact1", "name": "APIContact1", "memberOf": "Test Group3;Test Group4", "co": "India", "exchange": { "msExchAdminGroup": "/o=Contact/ou=Exchange Administrative Group (FY0IB0HF2LPDLT)", "targetAddress": "APIContact1", "mailNickname": "APIContact1" }, "manager": "Manager 1" } }, { "attributes": { "displayName": "APIContact2", "name": "APIContact2", "description": "API", "OUName": "OU=Contacts,DC=xcross,DC=com", "memberOf": "Test Group3;Test Group4", "manager": "Manager 1" } } ] }

Response Example

{ "data": [ { "object": { "Name": "APIContact1", "Manager(AD)": "Manager 1", "Manager(Microsoft 365)": "Manager 1", "Description": "Computer created via API", "Email Address": "test@contact.com" }, "status": { "status_code": 1, "status_message": "Successfully created the contact." } }, { "object": { "Full Name": "APIContact2" }, "status": { "status_code": 0, "status_message": "Value for managedBy attribute could not be found in AD. Value for the managedBy attribute must be specified in DN format or mail or displayName" } } ], "meta": { "start_index": 1, "limit": 2, "total_no_of_objects": 2 } }
{ "code": "00000100", "detail": "Some columns given in fields parameter are invalid", "title": "Bad Request." }
{ "code": "00000101", "detail": "The given Authtoken is invalid.", "title": "Unauthorized." }
{ "code": "00000000", "detail": "An internal server error occurred.", "title": "Internal Server Error." }

Update AD contacts

This endpoint updates existing AD contacts with the specified payload. You can modify personal details, organizational attributes, Exchange settings, and membership. It is typically used for keeping contact records up to date or applying changes across multiple contacts.

Scope : Modify contacts action, All contacts management actions
Delegated role : Modify Bulk Contact, Bulk Contact Modification

Arguments

data
object
Data and attributes to be used for the contact modification.
Show Sub-Attributes arrow
attributes
object
Attributes of the contacts to be updated.
Show Sub-Attributes arrow
givenName
string
First name of the contact.
sn
string
Last name of the contact.
initials
string
Initials of the contact.
description
string
Description of the contact.
cn
string
Common Name of the contact.
name
string
Name of the contact.
displayNamePrintable
string
Printable display name of the contact.
memberOf
string
Groups that the contact is a member of.
mail
string
Email address of the contact.
postOfficeBox
string
Post Office Box of the contact.
l
string
City of the contact.
st
string
State or province of the contact.
postalCode
string
Postal code of the contact.
country
string
Country of the contact.
telephoneNumber
string
Telephone number of the contact.
homePhone
string
Home phone number of the contact.
pager
string
Pager number of the contact.
mobile
string
Mobile number of the contact.
facsimileTelephoneNumber
string
Facsimile (fax) number of the contact.
ipPhone
string
IP phone number of the contact.
wWWHomePage
string
Web page of the contact.
title
string
Title of the contact.
department
string
Department of the contact.
company
string
Company of the contact.
physicalDeliveryOfficeName
string
Office name of the contact.
manager
string
Manager of the contact.
info
string
Notes about the contact.
streetAddress
string
Street address of the contact.
c
string
Two-letter country code of the contact.
exchange
object
Exchange attributes of the contact.
Show Sub-Attributes arrow
msExchAdminGroup
string
The administrative group associated with Exchange.
mailNickname
string
Email alias of the contact.
authOrig
string
List of senders who can send messages to the contact
unauthOrig
string
List of senders who cannot send messages to the contact.
proxyAddresses
string
Proxy addresses of the contact.
targetAddress
string
The target address of the contact.

Query Parameters

from
integer
The starting index for pagination. Enables pagination through large result sets.
limit
integer
The maximum number of contacts records to return per request.
domain
string
(Required)
The AD domain where the requested operation is performed.
eg: domain1.com
filter
string
A SCIM filter query to refine which objects are returned. See Filter section for details.
eg: (FIRST_NAME eq John) and (LAST_NAME eq Doe)
sort
string
This field is used to sort results. The default sort order is ascending. To sort in descending order, prefix the field with a hyphen (-).
eg: FIRST_NAME,-LAST_NAME
refresh
boolean
If set to true, triggers a sync before fetching results, ensuring that the data reflects the latest state of AD.

Headers

Accept
string
The response format that the client accepts.
X-Module
string
The module name to be recorded in the audit logs. If not provided, the default module is recorded as Rest API.

Request Example

Click to copy
parameters_data='{"data":{"attributes":{"name":"UpdatedContact1","OUName":"OU=Contacts,DC=test,DC=com","description":"Updated description for the contact","memberOf":"Updated Group1;Updated Group2","managedBy":"Updated Manager","extensionAttribute1":"Updated Attribute"}}}'; headers_data = Map(); headers_data.put("Accept", "application/json"); headers_data.put("X-Module", "External API"); headers_data.put("Authorization", "REPLACE_KEY_VALUE"); response = invokeUrl [ url: "http://admanagerplus:8080/api/v2/contacts?domain=domain1.com" type: PATCH headers: headers_data content-type: application/json parameters: parameters_data connection: <connection_name> ]; info response;
OkHttpClient client = new OkHttpClient(); MediaType mediaType = MediaType.parse("application/json"); RequestBody body = RequestBody.create(mediaType, "{\"data\":{\"attributes\":{\"name\":\"UpdatedContact1\",\"OUName\":\"OU=Contacts,DC=test,DC=com\",\"description\":\"Updated description for the contact\",\"memberOf\":\"Updated Group1;Updated Group2\",\"managedBy\":\"Updated Manager\",\"extensionAttribute1\":\"Updated Attribute\"}}}"); Request request = new Request.Builder() .url("http://admanagerplus:8080/api/v2/contacts?domain=domain1.com") .patch(body) .addHeader("Accept", "application/json") .addHeader("X-Module", "External API") .addHeader("Authorization", "REPLACE_KEY_VALUE") .addHeader("content-type", "application/json") .build(); Response response = client.newCall(request).execute();
const options = { method: 'PATCH', headers: { Accept: 'application/json', 'X-Module': 'External API', Authorization: 'REPLACE_KEY_VALUE', 'content-type': 'application/json' }, body: '{"data":{"attributes":{"name":"UpdatedContact1","OUName":"OU=Contacts,DC=test,DC=com","description":"Updated description for the contact","memberOf":"Updated Group1;Updated Group2","managedBy":"Updated Manager","extensionAttribute1":"Updated Attribute"}}}' }; fetch('http://admanagerplus:8080/api/v2/contacts?domain=domain1.com', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPConnection("admanagerplus:8080") payload = "{\"data\":{\"attributes\":{\"name\":\"UpdatedContact1\",\"OUName\":\"OU=Contacts,DC=test,DC=com\",\"description\":\"Updated description for the contact\",\"memberOf\":\"Updated Group1;Updated Group2\",\"managedBy\":\"Updated Manager\",\"extensionAttribute1\":\"Updated Attribute\"}}}" headers = { 'Accept': "application/json", 'X-Module': "External API", 'Authorization': "REPLACE_KEY_VALUE", 'content-type': "application/json" } conn.request("PATCH", "/api/v2/contacts?domain=domain1.com", payload, headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("http"); const options = { "method": "PATCH", "hostname": "admanagerplus", "port": "8080", "path": "/api/v2/contacts?domain=domain1.com", "headers": { "Accept": "application/json", "X-Module": "External API", "Authorization": "REPLACE_KEY_VALUE", "content-type": "application/json" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.write(JSON.stringify({ data: { attributes: { name: 'UpdatedContact1', OUName: 'OU=Contacts,DC=test,DC=com', description: 'Updated description for the contact', memberOf: 'Updated Group1;Updated Group2', managedBy: 'Updated Manager', extensionAttribute1: 'Updated Attribute' } } })); req.end();
curl --request PATCH \ --url 'http://admanagerplus:8080/api/v2/contacts?domain=domain1.com' \ --header 'Accept: application/json' \ --header 'Authorization: REPLACE_KEY_VALUE' \ --header 'X-Module: External API' \ --header 'content-type: application/json' \ --data '{"data":{"attributes":{"name":"UpdatedContact1","OUName":"OU=Contacts,DC=test,DC=com","description":"Updated description for the contact","memberOf":"Updated Group1;Updated Group2","managedBy":"Updated Manager","extensionAttribute1":"Updated Attribute"}}}'

Body Parameters

Click to copy
{ "data": { "attributes": { "name": "UpdatedContact1", "OUName": "OU=Contacts,DC=test,DC=com", "description": "Updated description for the contact", "memberOf": "Updated Group1;Updated Group2", "managedBy": "Updated Manager", "extensionAttribute1": "Updated Attribute" } } }

Response Example

{ "data": [ { "object": { "Distinguished Name": "CN=UpdatedContact1,OU=Contacts,DC=test,DC=com", "Description": "Updated description for the contact", "Member of": "Updated Group1;Updated Group2" }, "status": { "status_code": 1, "status_message": "Successfully updated the contact." } }, { "object": { "Distinguished Name": "CN=UpdatedContact2,OU=Contacts,DC=test,DC=com", "Description": "Updated description for the Contacts" }, "status": { "status_code": 0, "status_message": "Value for managedBy attribute could not be found in AD. Value for the managedBy attribute must be specified in DN format or mail or displayName" } } ], "meta": { "start_index": 1, "limit": 2, "total_no_of_objects": 20 } }
{ "code": "00000100", "detail": "Some columns given in fields parameter are invalid", "title": "Bad Request." }
{ "code": "00000101", "detail": "The given Authtoken is invalid.", "title": "Unauthorized." }
{ "code": "00000000", "detail": "An internal server error occurred.", "title": "Internal Server Error." }

Delete AD contacts

This endpoint deletes AD contacts that match the specified filters. Deletion removes the object from the directory permanently, making it unavailable for address lists or mail distribution. It is often used for cleaning up unused or outdated contacts.

Scope : Delete contact action, All contacts management actions
Delegated role : Delete Contacts

Query Parameters

from
integer
The starting index for pagination. Enables pagination through large result sets.
limit
integer
The maximum number of contacts records to return per request.
domain
string
(Required)
The AD domain where the requested operation is performed.
eg: domain1.com
filter
string
A SCIM filter query to refine which objects are returned. See Filter section for details.
eg: (FIRST_NAME eq John) and (LAST_NAME eq Doe)
sort
string
This field is used to sort results. The default sort order is ascending. To sort in descending order, prefix the field with a hyphen (-).
eg: FIRST_NAME,-LAST_NAME
refresh
boolean
If set to true, triggers a sync before fetching results, ensuring that the data reflects the latest state of AD.

Headers

Accept
string
The response format that the client accepts.
X-Module
string
The module name to be recorded in the audit logs. If not provided, the default module is recorded as Rest API.

Request Example

Click to copy
headers_data = Map(); headers_data.put("Accept", "application/json"); headers_data.put("X-Module", "External API"); headers_data.put("Authorization", "REPLACE_KEY_VALUE"); response = invokeUrl [ url: "http://admanagerplus:8080/api/v2/contacts?domain=domain1.com" type: DELETE headers: headers_data connection: <connection_name> ]; info response;
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("http://admanagerplus:8080/api/v2/contacts?domain=domain1.com") .delete(null) .addHeader("Accept", "application/json") .addHeader("X-Module", "External API") .addHeader("Authorization", "REPLACE_KEY_VALUE") .build(); Response response = client.newCall(request).execute();
const options = { method: 'DELETE', headers: { Accept: 'application/json', 'X-Module': 'External API', Authorization: 'REPLACE_KEY_VALUE' } }; fetch('http://admanagerplus:8080/api/v2/contacts?domain=domain1.com', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPConnection("admanagerplus:8080") headers = { 'Accept': "application/json", 'X-Module': "External API", 'Authorization': "REPLACE_KEY_VALUE" } conn.request("DELETE", "/api/v2/contacts?domain=domain1.com", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("http"); const options = { "method": "DELETE", "hostname": "admanagerplus", "port": "8080", "path": "/api/v2/contacts?domain=domain1.com", "headers": { "Accept": "application/json", "X-Module": "External API", "Authorization": "REPLACE_KEY_VALUE" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.end();
curl --request DELETE \ --url 'http://admanagerplus:8080/api/v2/contacts?domain=domain1.com' \ --header 'Accept: application/json' \ --header 'Authorization: REPLACE_KEY_VALUE' \ --header 'X-Module: External API'

Response Example

{ "data": [ { "object": { "Object GUID": "{C7029F98-E9D8-49B1-B7B4-B7744A730E90}", "Common Name": "APIContact1", "Full Name": "APIContact1", "Distinguished Name": "CN=APIContact1,OU=Contacts,DC=xcross,DC=com", "Email Address": "-", "Domain Name": "xcross.com" }, "status": { "status_code": 1, "status_message": "Successfully deleted the contact." } } ], "meta": { "start_index": 1, "limit": 1, "total_no_of_objects": 10 } }
{ "code": "00000100", "detail": "Some columns given in fields parameter are invalid", "title": "Bad Request." }
{ "code": "00000101", "detail": "The given Authtoken is invalid.", "title": "Unauthorized." }
{ "code": "00000000", "detail": "An internal server error occurred.", "title": "Internal Server Error." }