Create new role¶
POST/
Organization API · Organization role management
Create a new organization role.
Parameters¶
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Organization-ID | header | string (uuid) | Yes | Organization ID. |
fields | query | array of string | No | The fields to return in a partial response. |
Request body¶
Content type: application/json
Request body fields
namestringrequiredRole name.
Must be at most 100 characters long.
Must be at most 100 characters long.
descriptionstringRole description.
Must be at most 1000 characters long.
Must be at most 1000 characters long.
principalTypestring (enum)requiredPrincipal type of role.
Must be one of:
Must be one of:
user, service.permissionSetsarray of stringrequiredList of permission sets.
Must contain at least 1 item. Items must be unique.
Must contain at least 1 item. Items must be unique.
Request samples¶
curl -X POST "https://api.central.sophos.com/organization/v1/roles" -H "Authorization: Bearer <access-token>" -H "X-Organization-ID: <organization-id>" -H "Content-Type: application/json" -d "{
\"name\": \"Organization custom role\",
\"description\": \"Organization custom role\",
\"principalType\": \"user\",
\"permissionSets\": [
\"enterprise_admin\",
\"endpoint_product_admin\"
]
}"
import requests
response = requests.post(
"https://api.central.sophos.com/organization/v1/roles",
headers={
"Authorization": "Bearer <access-token>",
"X-Organization-ID": "<organization-id>",
"Content-Type": "application/json",
},
json={ 'name': 'Organization custom role',
'description': 'Organization custom role',
'principalType': 'user',
'permissionSets': ['enterprise_admin', 'endpoint_product_admin']},
)
print(response.json())
$headers = @{
"Authorization" = "Bearer <access-token>"
"X-Organization-ID" = "<organization-id>"
"Content-Type" = "application/json"
}
$body = '{
"name": "Organization custom role",
"description": "Organization custom role",
"principalType": "user",
"permissionSets": [
"enterprise_admin",
"endpoint_product_admin"
]
}'
Invoke-RestMethod -Method POST -Uri "https://api.central.sophos.com/organization/v1/roles" -Headers $headers -Body $body -ContentType "application/json"
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
req, err := http.NewRequest("POST", "https://api.central.sophos.com/organization/v1/roles", strings.NewReader(`{
"name": "Organization custom role",
"description": "Organization custom role",
"principalType": "user",
"permissionSets": [
"enterprise_admin",
"endpoint_product_admin"
]
}`))
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer <access-token>")
req.Header.Set("X-Organization-ID", "<organization-id>")
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
const response = await fetch("https://api.central.sophos.com/organization/v1/roles", {
method: "POST",
headers: {
"Authorization": "Bearer <access-token>",
"X-Organization-ID": "<organization-id>",
"Content-Type": "application/json",
},
body: JSON.stringify({
"name": "Organization custom role",
"description": "Organization custom role",
"principalType": "user",
"permissionSets": [
"enterprise_admin",
"endpoint_product_admin"
]
}),
});
const data = await response.json();
console.log(data);
Responses¶
201 — Requested role created.¶
Response fields
idstring (uuid)requiredRole UUID.
namestringrequiredRole name.
descriptionstringRole description.
typestring (enum)requiredRole type.
Must be one of:
Must be one of:
predefined, custom.principalTypestring (enum)requiredPrincipal type of role.
Must be one of:
Must be one of:
user, service.permissionSetsarray of stringrequiredList of permission sets.
Must contain at least 1 item. Items must be unique.
Must contain at least 1 item. Items must be unique.
createdAtstring (datetime)Date and time the organization role was created.
updatedAtstring (datetime)Date and time the organization role was last updated.
Errors¶
| Status | Meaning |
|---|---|
409 | Role name already in use or is a pre-defined role name. |
500 | Internal server error. |
All error responses share the same shape — see the error response object.
See the guide for a narrative walkthrough of this API.