Groups
Create a new group
Create a new group in the user’s account.
Requires authenticated user (usually admin, but enforced via permissions logic if needed). For now, any authenticated user can create groups in their account (or restrict to admin).
POST
/
api
/
v1
/
groups
Create a new group
curl --request POST \
--url https://api.example.com/api/v1/groups \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"description": "<string>",
"account_id": "<string>"
}
'import requests
url = "https://api.example.com/api/v1/groups"
payload = {
"name": "<string>",
"description": "<string>",
"account_id": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({name: '<string>', description: '<string>', account_id: '<string>'})
};
fetch('https://api.example.com/api/v1/groups', 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/api/v1/groups",
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([
'name' => '<string>',
'description' => '<string>',
'account_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"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://api.example.com/api/v1/groups"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"account_id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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.example.com/api/v1/groups")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"account_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/groups")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"account_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"name": "<string>",
"id": "<string>",
"account_id": "<string>",
"account_code": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"description": "<string>",
"member_count": 0,
"users": [
{
"id": "<string>",
"email": "<string>",
"account_id": "<string>",
"account_code": "<string>",
"account_name": "<string>",
"role_id": 123,
"role_name": "<string>",
"is_active": true,
"auth_provider": "<string>",
"email_verified": true,
"created_at": "2023-11-07T05:31:56Z",
"auth_provider_name": "<string>",
"external_id": "<string>",
"external_email": "<string>",
"profile_data": {},
"email_verified_at": "2023-11-07T05:31:56Z",
"last_login": "2023-11-07T05:31:56Z"
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Body
application/json
Response
Successful Response
Schema for detailed group response including users.
Group name
Required string length:
1 - 100Group ID
Account ID (UUID)
Human-readable account code in XX#### format (e.g., AB1234)
Group description
Maximum string length:
500Number of users in the group
List of users in the group
Show child attributes
Show child attributes
⌘I
Create a new group
curl --request POST \
--url https://api.example.com/api/v1/groups \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"description": "<string>",
"account_id": "<string>"
}
'import requests
url = "https://api.example.com/api/v1/groups"
payload = {
"name": "<string>",
"description": "<string>",
"account_id": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({name: '<string>', description: '<string>', account_id: '<string>'})
};
fetch('https://api.example.com/api/v1/groups', 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/api/v1/groups",
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([
'name' => '<string>',
'description' => '<string>',
'account_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"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://api.example.com/api/v1/groups"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"account_id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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.example.com/api/v1/groups")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"account_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/groups")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"account_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"name": "<string>",
"id": "<string>",
"account_id": "<string>",
"account_code": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"description": "<string>",
"member_count": 0,
"users": [
{
"id": "<string>",
"email": "<string>",
"account_id": "<string>",
"account_code": "<string>",
"account_name": "<string>",
"role_id": 123,
"role_name": "<string>",
"is_active": true,
"auth_provider": "<string>",
"email_verified": true,
"created_at": "2023-11-07T05:31:56Z",
"auth_provider_name": "<string>",
"external_id": "<string>",
"external_email": "<string>",
"profile_data": {},
"email_verified_at": "2023-11-07T05:31:56Z",
"last_login": "2023-11-07T05:31:56Z"
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}