curl --request POST \
--url https://cloud.cdata.com/api/v1/admin/users \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"email": "jane.doe@example.com",
"first_name": "Jane",
"last_name": "Doe"
}
'import requests
url = "https://cloud.cdata.com/api/v1/admin/users"
payload = {
"email": "jane.doe@example.com",
"first_name": "Jane",
"last_name": "Doe"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({email: 'jane.doe@example.com', first_name: 'Jane', last_name: 'Doe'})
};
fetch('https://cloud.cdata.com/api/v1/admin/users', 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://cloud.cdata.com/api/v1/admin/users",
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([
'email' => 'jane.doe@example.com',
'first_name' => 'Jane',
'last_name' => 'Doe'
]),
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;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://cloud.cdata.com/api/v1/admin/users"
payload := strings.NewReader("{\n \"email\": \"jane.doe@example.com\",\n \"first_name\": \"Jane\",\n \"last_name\": \"Doe\"\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))
}HttpResponse<String> response = Unirest.post("https://cloud.cdata.com/api/v1/admin/users")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"jane.doe@example.com\",\n \"first_name\": \"Jane\",\n \"last_name\": \"Doe\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://cloud.cdata.com/api/v1/admin/users")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"email\": \"jane.doe@example.com\",\n \"first_name\": \"Jane\",\n \"last_name\": \"Doe\"\n}"
response = http.request(request)
puts response.read_body{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"email": "jane.doe@example.com",
"first_name": "Jane",
"last_name": "Doe",
"status": "invited",
"scim_managed": false,
"external_id": null,
"created_at": "2026-01-15T10:00:00Z",
"created_by": "00000000-0000-0000-0000-000000000001"
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Missing required field or invalid value."
}
}{
"error": {
"code": "USER_ALREADY_EXISTS",
"message": "A user with this email already exists."
}
}ユーザーの作成
Create a human user directly, outside of the SCIM provisioning flow. Use this for non-SCIM-managed users (for example, contractors, break-glass accounts, or organizations without SCIM configured). Users created via this endpoint carry scim_managed: false in the response. For SCIM-provisioned users, configure SCIM sync with your IdP. This endpoint is idempotent by external_id: a second POST with the same external_id returns the existing user instead of creating a duplicate.
curl --request POST \
--url https://cloud.cdata.com/api/v1/admin/users \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"email": "jane.doe@example.com",
"first_name": "Jane",
"last_name": "Doe"
}
'import requests
url = "https://cloud.cdata.com/api/v1/admin/users"
payload = {
"email": "jane.doe@example.com",
"first_name": "Jane",
"last_name": "Doe"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({email: 'jane.doe@example.com', first_name: 'Jane', last_name: 'Doe'})
};
fetch('https://cloud.cdata.com/api/v1/admin/users', 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://cloud.cdata.com/api/v1/admin/users",
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([
'email' => 'jane.doe@example.com',
'first_name' => 'Jane',
'last_name' => 'Doe'
]),
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;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://cloud.cdata.com/api/v1/admin/users"
payload := strings.NewReader("{\n \"email\": \"jane.doe@example.com\",\n \"first_name\": \"Jane\",\n \"last_name\": \"Doe\"\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))
}HttpResponse<String> response = Unirest.post("https://cloud.cdata.com/api/v1/admin/users")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"jane.doe@example.com\",\n \"first_name\": \"Jane\",\n \"last_name\": \"Doe\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://cloud.cdata.com/api/v1/admin/users")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"email\": \"jane.doe@example.com\",\n \"first_name\": \"Jane\",\n \"last_name\": \"Doe\"\n}"
response = http.request(request)
puts response.read_body{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"email": "jane.doe@example.com",
"first_name": "Jane",
"last_name": "Doe",
"status": "invited",
"scim_managed": false,
"external_id": null,
"created_at": "2026-01-15T10:00:00Z",
"created_by": "00000000-0000-0000-0000-000000000001"
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Missing required field or invalid value."
}
}{
"error": {
"code": "USER_ALREADY_EXISTS",
"message": "A user with this email already exists."
}
}承認
The access token received from the authorization server in the OAuth 2.0 flow.
ボディ
Must be globally unique across all Connect AI orgs.
The user's first name.
The user's last name. Omit for users with a single name.
Idempotency key supplied by the calling system (for example, an HR system employee ID or Terraform resource ID). A second POST with the same key returns the existing user instead of creating a duplicate. Connect AI does not generate this value; the caller provides it.
レスポンス
Created
User identifier.
The email address of the user.
The user's first name.
The user's last name.
Current lifecycle state of the user.
active, invited, deactivated false for API-created users. true for SCIM-provisioned users.
Idempotency key supplied by the calling system.
ISO 8601 UTC.
User ID of the creator. null for SCIM-provisioned users.
このページは役に立ちましたか?