Create Role
curl --request POST \
--url https://api.xenia.team/api/v1/mgt/workspaces/{workspaceId}/roles \
--header 'Content-Type: application/json' \
--header 'x-client-key: <api-key>' \
--header 'x-client-secret: <api-key>' \
--data '
{
"title": "New Role Title",
"description": "New Role test description",
"permissions": [
"dbf2e476-c880-4f1c-9ac6-a44bc3c0c9a7",
"7790c9eb-8d55-4fe0-a52d-2e5e769e9588"
],
"users": [
"a437857a-463f-4ab7-997e-0e7b98e2b779",
"08c25f22-c894-4d9d-bba2-ced36b8191bd"
],
"reportTo": "43bc03d0-e0c5-41a1-bc13-2d232a40a728",
"homepage": {
"mobile": "DEFAULT",
"web": "DEFAULT",
"dashboard": {}
}
}
'import requests
url = "https://api.xenia.team/api/v1/mgt/workspaces/{workspaceId}/roles"
payload = {
"title": "New Role Title",
"description": "New Role test description",
"permissions": ["dbf2e476-c880-4f1c-9ac6-a44bc3c0c9a7", "7790c9eb-8d55-4fe0-a52d-2e5e769e9588"],
"users": ["a437857a-463f-4ab7-997e-0e7b98e2b779", "08c25f22-c894-4d9d-bba2-ced36b8191bd"],
"reportTo": "43bc03d0-e0c5-41a1-bc13-2d232a40a728",
"homepage": {
"mobile": "DEFAULT",
"web": "DEFAULT",
"dashboard": {}
}
}
headers = {
"x-client-key": "<api-key>",
"x-client-secret": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-client-key': '<api-key>',
'x-client-secret': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
title: 'New Role Title',
description: 'New Role test description',
permissions: ['dbf2e476-c880-4f1c-9ac6-a44bc3c0c9a7', '7790c9eb-8d55-4fe0-a52d-2e5e769e9588'],
users: ['a437857a-463f-4ab7-997e-0e7b98e2b779', '08c25f22-c894-4d9d-bba2-ced36b8191bd'],
reportTo: '43bc03d0-e0c5-41a1-bc13-2d232a40a728',
homepage: {mobile: 'DEFAULT', web: 'DEFAULT', dashboard: {}}
})
};
fetch('https://api.xenia.team/api/v1/mgt/workspaces/{workspaceId}/roles', 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.xenia.team/api/v1/mgt/workspaces/{workspaceId}/roles",
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([
'title' => 'New Role Title',
'description' => 'New Role test description',
'permissions' => [
'dbf2e476-c880-4f1c-9ac6-a44bc3c0c9a7',
'7790c9eb-8d55-4fe0-a52d-2e5e769e9588'
],
'users' => [
'a437857a-463f-4ab7-997e-0e7b98e2b779',
'08c25f22-c894-4d9d-bba2-ced36b8191bd'
],
'reportTo' => '43bc03d0-e0c5-41a1-bc13-2d232a40a728',
'homepage' => [
'mobile' => 'DEFAULT',
'web' => 'DEFAULT',
'dashboard' => [
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-client-key: <api-key>",
"x-client-secret: <api-key>"
],
]);
$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.xenia.team/api/v1/mgt/workspaces/{workspaceId}/roles"
payload := strings.NewReader("{\n \"title\": \"New Role Title\",\n \"description\": \"New Role test description\",\n \"permissions\": [\n \"dbf2e476-c880-4f1c-9ac6-a44bc3c0c9a7\",\n \"7790c9eb-8d55-4fe0-a52d-2e5e769e9588\"\n ],\n \"users\": [\n \"a437857a-463f-4ab7-997e-0e7b98e2b779\",\n \"08c25f22-c894-4d9d-bba2-ced36b8191bd\"\n ],\n \"reportTo\": \"43bc03d0-e0c5-41a1-bc13-2d232a40a728\",\n \"homepage\": {\n \"mobile\": \"DEFAULT\",\n \"web\": \"DEFAULT\",\n \"dashboard\": {}\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-client-key", "<api-key>")
req.Header.Add("x-client-secret", "<api-key>")
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.xenia.team/api/v1/mgt/workspaces/{workspaceId}/roles")
.header("x-client-key", "<api-key>")
.header("x-client-secret", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"New Role Title\",\n \"description\": \"New Role test description\",\n \"permissions\": [\n \"dbf2e476-c880-4f1c-9ac6-a44bc3c0c9a7\",\n \"7790c9eb-8d55-4fe0-a52d-2e5e769e9588\"\n ],\n \"users\": [\n \"a437857a-463f-4ab7-997e-0e7b98e2b779\",\n \"08c25f22-c894-4d9d-bba2-ced36b8191bd\"\n ],\n \"reportTo\": \"43bc03d0-e0c5-41a1-bc13-2d232a40a728\",\n \"homepage\": {\n \"mobile\": \"DEFAULT\",\n \"web\": \"DEFAULT\",\n \"dashboard\": {}\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.xenia.team/api/v1/mgt/workspaces/{workspaceId}/roles")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-client-key"] = '<api-key>'
request["x-client-secret"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"New Role Title\",\n \"description\": \"New Role test description\",\n \"permissions\": [\n \"dbf2e476-c880-4f1c-9ac6-a44bc3c0c9a7\",\n \"7790c9eb-8d55-4fe0-a52d-2e5e769e9588\"\n ],\n \"users\": [\n \"a437857a-463f-4ab7-997e-0e7b98e2b779\",\n \"08c25f22-c894-4d9d-bba2-ced36b8191bd\"\n ],\n \"reportTo\": \"43bc03d0-e0c5-41a1-bc13-2d232a40a728\",\n \"homepage\": {\n \"mobile\": \"DEFAULT\",\n \"web\": \"DEFAULT\",\n \"dashboard\": {}\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"createdAt": "2025-06-22T11:38:55.045Z",
"updatedAt": "2025-06-22T11:38:55.045Z",
"id": "198a9961-c365-46d4-8962-7f9720f21fae",
"isActive": true,
"order": 1,
"title": "New Role Title",
"description": "New Role test description",
"editable": true,
"reportTo": "43bc03d0-e0c5-41a1-bc13-2d232a40a728",
"homepage": {
"mobile": "DEFAULT",
"web": "DEFAULT",
"dashboard": {}
},
"workspaceId": "cb363f7e-c52a-4478-911d-f6a6f791090e",
"createdBy": "dfea8b8a-5b22-4668-b68d-dc641eb3a101",
"updatedBy": "dfea8b8a-5b22-4668-b68d-dc641eb3a101",
"deletedAt": null
},
"meta": {}
}Roles
Create Role
Creates a new role in the specified workspace
POST
/
api
/
v1
/
mgt
/
workspaces
/
{workspaceId}
/
roles
Create Role
curl --request POST \
--url https://api.xenia.team/api/v1/mgt/workspaces/{workspaceId}/roles \
--header 'Content-Type: application/json' \
--header 'x-client-key: <api-key>' \
--header 'x-client-secret: <api-key>' \
--data '
{
"title": "New Role Title",
"description": "New Role test description",
"permissions": [
"dbf2e476-c880-4f1c-9ac6-a44bc3c0c9a7",
"7790c9eb-8d55-4fe0-a52d-2e5e769e9588"
],
"users": [
"a437857a-463f-4ab7-997e-0e7b98e2b779",
"08c25f22-c894-4d9d-bba2-ced36b8191bd"
],
"reportTo": "43bc03d0-e0c5-41a1-bc13-2d232a40a728",
"homepage": {
"mobile": "DEFAULT",
"web": "DEFAULT",
"dashboard": {}
}
}
'import requests
url = "https://api.xenia.team/api/v1/mgt/workspaces/{workspaceId}/roles"
payload = {
"title": "New Role Title",
"description": "New Role test description",
"permissions": ["dbf2e476-c880-4f1c-9ac6-a44bc3c0c9a7", "7790c9eb-8d55-4fe0-a52d-2e5e769e9588"],
"users": ["a437857a-463f-4ab7-997e-0e7b98e2b779", "08c25f22-c894-4d9d-bba2-ced36b8191bd"],
"reportTo": "43bc03d0-e0c5-41a1-bc13-2d232a40a728",
"homepage": {
"mobile": "DEFAULT",
"web": "DEFAULT",
"dashboard": {}
}
}
headers = {
"x-client-key": "<api-key>",
"x-client-secret": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-client-key': '<api-key>',
'x-client-secret': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
title: 'New Role Title',
description: 'New Role test description',
permissions: ['dbf2e476-c880-4f1c-9ac6-a44bc3c0c9a7', '7790c9eb-8d55-4fe0-a52d-2e5e769e9588'],
users: ['a437857a-463f-4ab7-997e-0e7b98e2b779', '08c25f22-c894-4d9d-bba2-ced36b8191bd'],
reportTo: '43bc03d0-e0c5-41a1-bc13-2d232a40a728',
homepage: {mobile: 'DEFAULT', web: 'DEFAULT', dashboard: {}}
})
};
fetch('https://api.xenia.team/api/v1/mgt/workspaces/{workspaceId}/roles', 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.xenia.team/api/v1/mgt/workspaces/{workspaceId}/roles",
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([
'title' => 'New Role Title',
'description' => 'New Role test description',
'permissions' => [
'dbf2e476-c880-4f1c-9ac6-a44bc3c0c9a7',
'7790c9eb-8d55-4fe0-a52d-2e5e769e9588'
],
'users' => [
'a437857a-463f-4ab7-997e-0e7b98e2b779',
'08c25f22-c894-4d9d-bba2-ced36b8191bd'
],
'reportTo' => '43bc03d0-e0c5-41a1-bc13-2d232a40a728',
'homepage' => [
'mobile' => 'DEFAULT',
'web' => 'DEFAULT',
'dashboard' => [
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-client-key: <api-key>",
"x-client-secret: <api-key>"
],
]);
$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.xenia.team/api/v1/mgt/workspaces/{workspaceId}/roles"
payload := strings.NewReader("{\n \"title\": \"New Role Title\",\n \"description\": \"New Role test description\",\n \"permissions\": [\n \"dbf2e476-c880-4f1c-9ac6-a44bc3c0c9a7\",\n \"7790c9eb-8d55-4fe0-a52d-2e5e769e9588\"\n ],\n \"users\": [\n \"a437857a-463f-4ab7-997e-0e7b98e2b779\",\n \"08c25f22-c894-4d9d-bba2-ced36b8191bd\"\n ],\n \"reportTo\": \"43bc03d0-e0c5-41a1-bc13-2d232a40a728\",\n \"homepage\": {\n \"mobile\": \"DEFAULT\",\n \"web\": \"DEFAULT\",\n \"dashboard\": {}\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-client-key", "<api-key>")
req.Header.Add("x-client-secret", "<api-key>")
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.xenia.team/api/v1/mgt/workspaces/{workspaceId}/roles")
.header("x-client-key", "<api-key>")
.header("x-client-secret", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"New Role Title\",\n \"description\": \"New Role test description\",\n \"permissions\": [\n \"dbf2e476-c880-4f1c-9ac6-a44bc3c0c9a7\",\n \"7790c9eb-8d55-4fe0-a52d-2e5e769e9588\"\n ],\n \"users\": [\n \"a437857a-463f-4ab7-997e-0e7b98e2b779\",\n \"08c25f22-c894-4d9d-bba2-ced36b8191bd\"\n ],\n \"reportTo\": \"43bc03d0-e0c5-41a1-bc13-2d232a40a728\",\n \"homepage\": {\n \"mobile\": \"DEFAULT\",\n \"web\": \"DEFAULT\",\n \"dashboard\": {}\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.xenia.team/api/v1/mgt/workspaces/{workspaceId}/roles")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-client-key"] = '<api-key>'
request["x-client-secret"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"New Role Title\",\n \"description\": \"New Role test description\",\n \"permissions\": [\n \"dbf2e476-c880-4f1c-9ac6-a44bc3c0c9a7\",\n \"7790c9eb-8d55-4fe0-a52d-2e5e769e9588\"\n ],\n \"users\": [\n \"a437857a-463f-4ab7-997e-0e7b98e2b779\",\n \"08c25f22-c894-4d9d-bba2-ced36b8191bd\"\n ],\n \"reportTo\": \"43bc03d0-e0c5-41a1-bc13-2d232a40a728\",\n \"homepage\": {\n \"mobile\": \"DEFAULT\",\n \"web\": \"DEFAULT\",\n \"dashboard\": {}\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"createdAt": "2025-06-22T11:38:55.045Z",
"updatedAt": "2025-06-22T11:38:55.045Z",
"id": "198a9961-c365-46d4-8962-7f9720f21fae",
"isActive": true,
"order": 1,
"title": "New Role Title",
"description": "New Role test description",
"editable": true,
"reportTo": "43bc03d0-e0c5-41a1-bc13-2d232a40a728",
"homepage": {
"mobile": "DEFAULT",
"web": "DEFAULT",
"dashboard": {}
},
"workspaceId": "cb363f7e-c52a-4478-911d-f6a6f791090e",
"createdBy": "dfea8b8a-5b22-4668-b68d-dc641eb3a101",
"updatedBy": "dfea8b8a-5b22-4668-b68d-dc641eb3a101",
"deletedAt": null
},
"meta": {}
}Authorizations
Client API key for authentication
Client secret for authentication
Path Parameters
Workspace ID where the role will be created
Body
application/json
⌘I